From 3e177d7f335b539105785155f02989f5b3b3c45b Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 22:48:29 +0000 Subject: [PATCH 01/15] Added reference results --- ...onversions_Validation_BooleanToInteger.txt | 10 ++++++ ...L_Conversions_Validation_BooleanToReal.txt | 10 ++++++ ...L_Conversions_Validation_IntegerToReal.txt | 10 ++++++ ...L_Conversions_Validation_RealToInteger.txt | 10 ++++++ ...CDL_Discrete_Validation_FirstOrderHold.txt | 10 ++++++ ...ls_OBC_CDL_Discrete_Validation_Sampler.txt | 10 ++++++ ...C_CDL_Discrete_Validation_TriggeredMax.txt | 11 +++++++ ...iscrete_Validation_TriggeredMovingMean.txt | 14 ++++++++ ...L_Discrete_Validation_TriggeredSampler.txt | 12 +++++++ ..._OBC_CDL_Discrete_Validation_UnitDelay.txt | 10 ++++++ ..._CDL_Discrete_Validation_ZeroOrderHold.txt | 10 ++++++ ...L_Integers_Sources_Validation_Constant.txt | 9 +++++ ..._CDL_Integers_Sources_Validation_Pulse.txt | 12 +++++++ ..._Integers_Sources_Validation_TimeTable.txt | 13 ++++++++ ..._Validation_TimeTableNegativeStartTime.txt | 13 ++++++++ ...ntrols_OBC_CDL_Integers_Validation_Abs.txt | 10 ++++++ ...ntrols_OBC_CDL_Integers_Validation_Add.txt | 11 +++++++ ...C_CDL_Integers_Validation_AddParameter.txt | 10 ++++++ ...ols_OBC_CDL_Integers_Validation_Change.txt | 19 +++++++++++ ...rols_OBC_CDL_Integers_Validation_Equal.txt | 11 +++++++ ...ls_OBC_CDL_Integers_Validation_Greater.txt | 11 +++++++ ...C_CDL_Integers_Validation_GreaterEqual.txt | 11 +++++++ ...egers_Validation_GreaterEqualThreshold.txt | 11 +++++++ ...L_Integers_Validation_GreaterThreshold.txt | 11 +++++++ ...trols_OBC_CDL_Integers_Validation_Less.txt | 11 +++++++ ..._OBC_CDL_Integers_Validation_LessEqual.txt | 11 +++++++ ...Integers_Validation_LessEqualThreshold.txt | 11 +++++++ ..._CDL_Integers_Validation_LessThreshold.txt | 11 +++++++ ...ntrols_OBC_CDL_Integers_Validation_Max.txt | 11 +++++++ ...ntrols_OBC_CDL_Integers_Validation_Min.txt | 11 +++++++ ...s_OBC_CDL_Integers_Validation_MultiSum.txt | 12 +++++++ ...s_OBC_CDL_Integers_Validation_Multiply.txt | 11 +++++++ ..._OBC_CDL_Integers_Validation_OnCounter.txt | 11 +++++++ ...rols_OBC_CDL_Integers_Validation_Stage.txt | 14 ++++++++ ...s_OBC_CDL_Integers_Validation_Subtract.txt | 11 +++++++ ...ols_OBC_CDL_Integers_Validation_Switch.txt | 12 +++++++ ...DL_Logical_Sources_Validation_Constant.txt | 9 +++++ ...C_CDL_Logical_Sources_Validation_Pulse.txt | 23 +++++++++++++ ...rces_Validation_PulseNegativeStartTime.txt | 23 +++++++++++++ ...rces_Validation_PulsePositiveStartTime.txt | 23 +++++++++++++ ...gical_Sources_Validation_SampleTrigger.txt | 14 ++++++++ ...idation_SampleTriggerNegativeStartTime.txt | 14 ++++++++ ...idation_SampleTriggerPositiveStartTime.txt | 14 ++++++++ ...L_Logical_Sources_Validation_TimeTable.txt | 14 ++++++++ ..._Validation_TimeTableNegativeStartTime.txt | 14 ++++++++ ...ontrols_OBC_CDL_Logical_Validation_And.txt | 11 +++++++ ...rols_OBC_CDL_Logical_Validation_Change.txt | 12 +++++++ ...ntrols_OBC_CDL_Logical_Validation_Edge.txt | 12 +++++++ ...OBC_CDL_Logical_Validation_FallingEdge.txt | 12 +++++++ ...trols_OBC_CDL_Logical_Validation_Latch.txt | 26 +++++++++++++++ ...ls_OBC_CDL_Logical_Validation_MultiAnd.txt | 20 +++++++++++ ...ols_OBC_CDL_Logical_Validation_MultiOr.txt | 20 +++++++++++ ...ntrols_OBC_CDL_Logical_Validation_Nand.txt | 11 +++++++ ...ontrols_OBC_CDL_Logical_Validation_Nor.txt | 11 +++++++ ...ontrols_OBC_CDL_Logical_Validation_Not.txt | 10 ++++++ ...Controls_OBC_CDL_Logical_Validation_Or.txt | 11 +++++++ ...trols_OBC_CDL_Logical_Validation_Proof.txt | 32 ++++++++++++++++++ ...rols_OBC_CDL_Logical_Validation_Switch.txt | 12 +++++++ ...trols_OBC_CDL_Logical_Validation_Timer.txt | 20 +++++++++++ ...L_Logical_Validation_TimerAccumulating.txt | 22 +++++++++++++ ...ion_TimerAccumulatingNegativeStartTime.txt | 24 ++++++++++++++ ...ical_Validation_TimerNegativeStartTime.txt | 16 +++++++++ ...rols_OBC_CDL_Logical_Validation_Toggle.txt | 26 +++++++++++++++ ...s_OBC_CDL_Logical_Validation_TrueDelay.txt | 26 +++++++++++++++ ...C_CDL_Logical_Validation_TrueFalseHold.txt | 26 +++++++++++++++ ...C_CDL_Logical_Validation_VariablePulse.txt | 22 +++++++++++++ ...ogical_Validation_VariablePulseMinHold.txt | 10 ++++++ ...ontrols_OBC_CDL_Logical_Validation_Xor.txt | 11 +++++++ ...metrics_Validation_DewPoint_TDryBulPhi.txt | 14 ++++++++ ...Validation_SpecificEnthalpy_TDryBulPhi.txt | 10 ++++++ ...ometrics_Validation_WetBulb_TDryBulPhi.txt | 14 ++++++++ ..._Sources_Validation_CalendarTimeMonths.txt | 14 ++++++++ ...ces_Validation_CalendarTimeMonthsMinus.txt | 14 ++++++++ ...rces_Validation_CalendarTimeMonthsPlus.txt | 14 ++++++++ ...CDL_Reals_Sources_Validation_CivilTime.txt | 9 +++++ ..._CDL_Reals_Sources_Validation_Constant.txt | 9 +++++ ...OBC_CDL_Reals_Sources_Validation_Pulse.txt | 9 +++++ ..._OBC_CDL_Reals_Sources_Validation_Ramp.txt | 9 +++++ ...s_OBC_CDL_Reals_Sources_Validation_Sin.txt | 9 +++++ ...CDL_Reals_Sources_Validation_TimeTable.txt | 13 ++++++++ ..._Validation_TimeTableNegativeStartTime.txt | 13 ++++++++ ..._Controls_OBC_CDL_Reals_Validation_Abs.txt | 10 ++++++ ...Controls_OBC_CDL_Reals_Validation_Acos.txt | 10 ++++++ ..._Controls_OBC_CDL_Reals_Validation_Add.txt | 11 +++++++ ..._OBC_CDL_Reals_Validation_AddParameter.txt | 10 ++++++ ...Controls_OBC_CDL_Reals_Validation_Asin.txt | 10 ++++++ ...Controls_OBC_CDL_Reals_Validation_Atan.txt | 10 ++++++ ...ontrols_OBC_CDL_Reals_Validation_Atan2.txt | 11 +++++++ ...trols_OBC_CDL_Reals_Validation_Average.txt | 11 +++++++ ..._Controls_OBC_CDL_Reals_Validation_Cos.txt | 10 ++++++ ...ls_OBC_CDL_Reals_Validation_Derivative.txt | 13 ++++++++ ...ntrols_OBC_CDL_Reals_Validation_Divide.txt | 11 +++++++ ..._Controls_OBC_CDL_Reals_Validation_Exp.txt | 10 ++++++ ...trols_OBC_CDL_Reals_Validation_Greater.txt | 12 +++++++ ..._CDL_Reals_Validation_GreaterThreshold.txt | 12 +++++++ ...ls_OBC_CDL_Reals_Validation_Hysteresis.txt | 14 ++++++++ ...L_Reals_Validation_IntegratorWithReset.txt | 20 +++++++++++ ...Controls_OBC_CDL_Reals_Validation_Less.txt | 12 +++++++ ...OBC_CDL_Reals_Validation_LessThreshold.txt | 12 +++++++ ...OBC_CDL_Reals_Validation_LimitSlewRate.txt | 11 +++++++ ...trols_OBC_CDL_Reals_Validation_Limiter.txt | 10 ++++++ ...Controls_OBC_CDL_Reals_Validation_Line.txt | 12 +++++++ ..._Controls_OBC_CDL_Reals_Validation_Log.txt | 10 ++++++ ...ontrols_OBC_CDL_Reals_Validation_Log10.txt | 10 ++++++ ...ls_OBC_CDL_Reals_Validation_MatrixGain.txt | 17 ++++++++++ ...ols_OBC_CDL_Reals_Validation_MatrixMax.txt | 15 +++++++++ ...ols_OBC_CDL_Reals_Validation_MatrixMin.txt | 16 +++++++++ ..._Controls_OBC_CDL_Reals_Validation_Max.txt | 11 +++++++ ..._Controls_OBC_CDL_Reals_Validation_Min.txt | 11 +++++++ ...ntrols_OBC_CDL_Reals_Validation_Modulo.txt | 11 +++++++ ...OBC_CDL_Reals_Validation_MovingAverage.txt | 20 +++++++++++ ..._Validation_MovingAverage_nonZeroStart.txt | 20 +++++++++++ ...rols_OBC_CDL_Reals_Validation_MultiMax.txt | 14 ++++++++ ...rols_OBC_CDL_Reals_Validation_MultiMin.txt | 14 ++++++++ ...rols_OBC_CDL_Reals_Validation_MultiSum.txt | 19 +++++++++++ ...rols_OBC_CDL_Reals_Validation_Multiply.txt | 11 +++++++ ...L_Reals_Validation_MultiplyByParameter.txt | 10 ++++++ ..._Controls_OBC_CDL_Reals_Validation_PID.txt | 16 +++++++++ ..._Validation_PIDInitialDerivativeOutput.txt | 13 ++++++++ ...C_CDL_Reals_Validation_PIDInitialState.txt | 13 ++++++++ ...rols_OBC_CDL_Reals_Validation_PIDScale.txt | 14 ++++++++ ..._OBC_CDL_Reals_Validation_PIDWithReset.txt | 21 ++++++++++++ ...CDL_Reals_Validation_PIDWithResetScale.txt | 15 +++++++++ ...Controls_OBC_CDL_Reals_Validation_Ramp.txt | 19 +++++++++++ ...ontrols_OBC_CDL_Reals_Validation_Round.txt | 14 ++++++++ ..._Controls_OBC_CDL_Reals_Validation_Sin.txt | 10 ++++++ ...Controls_OBC_CDL_Reals_Validation_Sort.txt | 33 +++++++++++++++++++ ...Controls_OBC_CDL_Reals_Validation_Sqrt.txt | 10 ++++++ ...rols_OBC_CDL_Reals_Validation_Subtract.txt | 11 +++++++ ...ntrols_OBC_CDL_Reals_Validation_Switch.txt | 12 +++++++ ..._Controls_OBC_CDL_Reals_Validation_Tan.txt | 10 ++++++ ...outing_Validation_BooleanExtractSignal.txt | 20 +++++++++++ ...DL_Routing_Validation_BooleanExtractor.txt | 22 +++++++++++++ ...ing_Validation_BooleanScalarReplicator.txt | 12 +++++++ ...Routing_Validation_BooleanVectorFilter.txt | 13 ++++++++ ...ing_Validation_BooleanVectorReplicator.txt | 12 +++++++ ...outing_Validation_IntegerExtractSignal.txt | 20 +++++++++++ ...DL_Routing_Validation_IntegerExtractor.txt | 22 +++++++++++++ ...ing_Validation_IntegerScalarReplicator.txt | 13 ++++++++ ...Routing_Validation_IntegerVectorFilter.txt | 13 ++++++++ ...ing_Validation_IntegerVectorReplicator.txt | 13 ++++++++ ...L_Routing_Validation_RealExtractSignal.txt | 22 +++++++++++++ ...C_CDL_Routing_Validation_RealExtractor.txt | 22 +++++++++++++ ...outing_Validation_RealScalarReplicator.txt | 12 +++++++ ...DL_Routing_Validation_RealVectorFilter.txt | 13 ++++++++ ...outing_Validation_RealVectorReplicator.txt | 12 +++++++ ...ls_OBC_CDL_Utilities_Validation_Assert.txt | 9 +++++ ...BC_CDL_Utilities_Validation_SunRiseSet.txt | 20 +++++++++++ ...Validation_SunRiseSetNegativeStartTime.txt | 20 +++++++++++ ...Validation_SunRiseSetPositiveStartTime.txt | 20 +++++++++++ ...alidation_SupplyReturnTemperatureReset.txt | 14 ++++++++ ...n_SupplyReturnTemperatureResetExponent.txt | 12 +++++++ ...n_OptimalStartCoolingNegativeStartTime.txt | 13 ++++++++ ...n_OptimalStartCoolingPositiveStartTime.txt | 13 ++++++++ ...ilities_Validation_OptimalStartHeating.txt | 13 ++++++++ ..._Validation_OptimalStartHeatingCooling.txt | 18 ++++++++++ ...idation_OptimalStartNoHeatingNoCooling.txt | 14 ++++++++ ...Utilities_Validation_PIDWithInputGains.txt | 17 ++++++++++ 158 files changed, 2194 insertions(+) create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToInteger.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToReal.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_IntegerToReal.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_RealToInteger.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_FirstOrderHold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_Sampler.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMax.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMovingMean.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredSampler.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_UnitDelay.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_ZeroOrderHold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Constant.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Pulse.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTable.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTableNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Abs.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Add.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_AddParameter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Change.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Equal.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Greater.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqual.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqualThreshold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterThreshold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Less.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqual.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqualThreshold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessThreshold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Max.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Min.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_MultiSum.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Multiply.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_OnCounter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Stage.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Subtract.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Switch.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Constant.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Pulse.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulseNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulsePositiveStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTrigger.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerPositiveStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTable.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTableNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_And.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Change.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Edge.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_FallingEdge.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Latch.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiAnd.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiOr.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nand.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nor.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Not.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Or.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Proof.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Switch.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Timer.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulating.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulatingNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Toggle.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueDelay.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueFalseHold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulse.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulseMinHold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Xor.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_DewPoint_TDryBulPhi.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_SpecificEnthalpy_TDryBulPhi.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_WetBulb_TDryBulPhi.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonths.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsMinus.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsPlus.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CivilTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Constant.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Pulse.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Ramp.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Sin.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTable.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTableNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Abs.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Acos.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Add.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_AddParameter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Asin.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan2.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Average.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Cos.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Derivative.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Divide.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Exp.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Greater.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_GreaterThreshold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Hysteresis.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_IntegratorWithReset.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Less.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LessThreshold.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LimitSlewRate.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Limiter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Line.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log10.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixGain.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMax.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMin.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Max.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Min.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Modulo.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage_nonZeroStart.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMax.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMin.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiSum.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Multiply.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiplyByParameter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PID.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialDerivativeOutput.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialState.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDScale.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithReset.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithResetScale.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Ramp.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Round.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sin.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sort.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sqrt.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Subtract.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Switch.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Tan.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractSignal.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractor.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanScalarReplicator.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorFilter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorReplicator.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractSignal.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractor.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerScalarReplicator.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorFilter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorReplicator.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractSignal.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractor.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealScalarReplicator.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorFilter.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorReplicator.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_Assert.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSet.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetPositiveStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureReset.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureResetExponent.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingNegativeStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingPositiveStartTime.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeating.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeatingCooling.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartNoHeatingNoCooling.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_PIDWithInputGains.txt diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToInteger.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToInteger.txt new file mode 100644 index 0000000000..fc2e202fb1 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToInteger.txt @@ -0,0 +1,10 @@ +last-generated=2018-06-26 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +booToInt.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 4e+00] +booToInt.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToReal.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToReal.txt new file mode 100644 index 0000000000..2d2c1d84b7 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_BooleanToReal.txt @@ -0,0 +1,10 @@ +last-generated=2018-06-26 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +booToRea.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 4e+00] +booToRea.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_IntegerToReal.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_IntegerToReal.txt new file mode 100644 index 0000000000..0b44b99cc5 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_IntegerToReal.txt @@ -0,0 +1,10 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +intToRea.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +time=[0e+00, 1e+00] +intToRea.y=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_RealToInteger.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_RealToInteger.txt new file mode 100644 index 0000000000..f84307855e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Conversions_Validation_RealToInteger.txt @@ -0,0 +1,10 @@ +last-generated=2017-04-06 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +reaToInt.u=[-3.5e+00, -3.430000065192561e+00, -3.359999891966595e+00, -3.289999957159187e+00, -3.22000002235177e+00, -3.150000100582814e+00, -3.079999914318365e+00, -3.009999992549414e+00, -2.940000044703563e+00, -2.869999910593299e+00, -2.79999996274703e+00, -2.730000014901188e+00, -2.660000067055026e+00, -2.589999880790923e+00, -2.519999985098812e+00, -2.450000089406701e+00, -2.380000089406701e+00, -2.309999955296437e+00, -2.240000059604325e+00, -2.170000059604467e+00, -2.099999925494416e+00, -2.029999925494487e+00, -1.960000029802305e+00, -1.890000014901223e+00, -1.820000014901081e+00, -1.75e+00, -1.679999880791137e+00, -1.610000089406487e+00, -1.539999970197695e+00, -1.469999970197553e+00, -1.400000059604823e+00, -1.330000059604538e+00, -1.259999940395675e+00, -1.190000149011026e+00, -1.120000029802162e+00, -1.049999910593299e+00, -9.800001192090765e-01, -9.100000596045738e-01, -8.399999403954262e-01, -7.699998807909235e-01, -7.000000298022334e-01, -6.29999970197731e-01, -5.599999105932283e-01, -4.900000596044956e-01, -4.199999701977131e-01, -3.499999105932104e-01, -2.800000596045203e-01, -2.099999850988568e-01, -1.39999925494354e-01, -7.000006705508333e-02, 0e+00, 7.000006705408858e-02, 1.400001341081772e-01, 2.100001937118983e-01, 2.799998509909462e-01, 3.499999105944542e-01, 4.199999701974648e-01, 4.900000596034507e-01, 5.600001192072998e-01, 6.300001788108077e-01, 6.999998211889077e-01, 7.699998807924157e-01, 8.399999403959236e-01, 9.100000596040764e-01, 9.800001192075843e-01, 1.050000119207158e+00, 1.119999821188411e+00, 1.189999940396848e+00, 1.259999940396421e+00, 1.330000059604787e+00, 1.400000059603579e+00, 1.470000178810737e+00, 1.539999761585684e+00, 1.609999880792416e+00, 1.679999880792131e+00, 1.75e+00, 1.820000119207869e+00, 1.890000119207584e+00, 1.960000238414316e+00, 2.029999821189263e+00, 2.099999821187842e+00, 2.170000059604219e+00, 2.240000059603579e+00, 2.310000059602157e+00, 2.380000298019316e+00, 2.449999880794263e+00, 2.519999880792842e+00, 2.589999880791421e+00, 2.660000119208579e+00, 2.730000119207158e+00, 2.800000119205737e+00, 2.869999701980684e+00, 2.939999940397843e+00, 3.009999940396421e+00, 3.079999940395781e+00, 3.150000178812158e+00, 3.220000178810737e+00, 3.289999761585684e+00, 3.359999761584263e+00, 3.430000000000284e+00, 3.5e+00] +reaToInt.y=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_FirstOrderHold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_FirstOrderHold.txt new file mode 100644 index 0000000000..84d6736277 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_FirstOrderHold.txt @@ -0,0 +1,10 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +firOrdHol.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.654508006550342e-01, 9.309017021001379e-01, 8.963525439407923e-01, 8.61803393903822e-01, 8.272542357444763e-01, 7.927050857075059e-01, 7.581559790304299e-01, 7.236068289934239e-01, 6.890576193518444e-01, 6.545085722790579e-01, 6.199593626377979e-01, 5.854102126008275e-01, 5.508611059237515e-01, 5.163118962821363e-01, 4.81762746245166e-01, 4.472136693701992e-01, 4.126644895310485e-01, 3.781153096918267e-01, 3.435661000504246e-01, 3.090170231754578e-01, 2.531153061741589e-01, 1.972135466435526e-01, 1.413119537126491e-01, 8.541020163260561e-02, 2.950845141520063e-02, -2.639313406513727e-02, -8.229488800783058e-02, -1.381966326373023e-01, -1.940982255682059e-01, -2.499999701976776e-01, -3.059017297275162e-01, -3.618034892573547e-01, -4.17705248786767e-01, -4.736066453202155e-01, -5.295084048500541e-01, -5.854101643794954e-01, -6.413119239097306e-01, -6.972136834395691e-01, -7.531154429694077e-01, -8.090168097001076e-01, -8.090169429779053e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -7.53115369296652e-01, -6.972136097664169e-01, -6.413118502365783e-01, -5.854100907067398e-01, -5.295086643713951e-01, -4.736069346438789e-01, -4.177051751140404e-01, -3.618034155842018e-01, -3.059016858566856e-01, -2.499999263268471e-01, -1.940985148924682e-01, -1.381967553628251e-01, -8.229501073412107e-02, -2.639325679185135e-02, 2.950849342434539e-02, 8.541024550362555e-02, 1.413116643883896e-01, 1.97213409017067e-01, 2.531151536458154e-01, 3.090169131755829e-01] +firOrdHol.u=[1e+00, 9.980267285330768e-01, 9.92114722359185e-01, 9.822872272920056e-01, 9.685831651680721e-01, 9.51056541430958e-01, 9.297764865835308e-01, 9.048270591019025e-01, 8.76306707153081e-01, 8.443279385564225e-01, 8.090170080380417e-01, 7.705132341174212e-01, 7.289686086868863e-01, 6.845471043246666e-01, 6.374239950275337e-01, 5.877852741471401e-01, 5.358267832061716e-01, 4.817536869409707e-01, 4.257793533913588e-01, 3.681245604602735e-01, 3.090170203545645e-01, 2.486898648442655e-01, 1.873813346873295e-01, 1.253332904574954e-01, 6.279050918949433e-02, 2.679489696788551e-08, -6.279055046444852e-02, -1.253331379345707e-01, -1.873812750826938e-01, -2.486899108059576e-01, -3.090169014013807e-01, -3.681245008556288e-01, -4.25779293786714e-01, -4.8175357487978e-01, -5.358267236016335e-01, -5.877852741471399e-01, -6.3742386293947e-01, -6.845470447200218e-01, -7.289686406717961e-01, -7.70513293378626e-01, -8.090169207752662e-01, -8.443279385564224e-01, -8.763066922604196e-01, -9.048270389253867e-01, -9.297764951615509e-01, -9.51056503105246e-01, -9.685831532414171e-01, -9.822872294646928e-01, -9.921147307568511e-01, -9.980267244918735e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.04827038925889e-01, -8.763066615344267e-01, -8.443278970741832e-01, -8.090170898698266e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471043249939e-01, -6.374239821493705e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538283042127e-01, -4.257793831930767e-01, -3.68124620064675e-01, -3.090169908094118e-01, -2.486898336217616e-01, -1.873815631169426e-01, -1.253334279713343e-01, -6.279065477168613e-02, -8.038468735094284e-08, 6.27904983094936e-02, 1.253332640585611e-01, 1.873814141051175e-01, 2.486896697091483e-01, 3.090168417977998e-01, 3.681244710530631e-01, 4.257792639837872e-01, 4.817536792926008e-01, 5.358268812191928e-01, 5.877850626424818e-01, 6.374238629400809e-01, 6.84547044720207e-01, 7.289685810669899e-01, 7.70513233773134e-01, 8.090170302644712e-01, 8.443277778656753e-01, 8.763066019297819e-01, 9.048269793210311e-01, 9.297764355570579e-01, 9.510565031049077e-01, 9.685831397019916e-01, 9.822871933156057e-01, 9.921146473576923e-01, 9.980267244919351e-01, 1e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_Sampler.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_Sampler.txt new file mode 100644 index 0000000000..70da889665 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_Sampler.txt @@ -0,0 +1,10 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +sampler1.u=[0e+00, 6.279052189025491e-02, 1.25333237452147e-01, 1.87381316384595e-01, 2.486898953400241e-01, 3.090169981213527e-01, 3.681245524355013e-01, 4.257792813474344e-01, 4.817536869409441e-01, 5.358267832061716e-01, 5.877852363791168e-01, 6.37423995027516e-01, 6.845471385054688e-01, 7.289686406719382e-01, 7.705132341174212e-01, 8.090169803797332e-01, 8.443279385564225e-01, 8.763066475484895e-01, 9.048270389253867e-01, 9.297764951615509e-01, 9.510564745096004e-01, 9.685831765931435e-01, 9.822872294646928e-01, 9.921147192796552e-01, 9.980267305350982e-01, 1e+00, 9.980267244918735e-01, 9.921147307571708e-01, 9.822872294647284e-01, 9.685831532414171e-01, 9.510565627098908e-01, 9.29776495161622e-01, 9.048270389253867e-01, 8.763067518650643e-01, 8.44327938556529e-01, 8.09016980379911e-01, 7.705133529832707e-01, 7.289687002764409e-01, 6.845471043246666e-01, 6.374239225441147e-01, 5.877853337517847e-01, 5.358268428108165e-01, 4.817536344844248e-01, 4.257793831936812e-01, 3.681245902625959e-01, 3.090169610060254e-01, 2.486899853117014e-01, 1.873813495884997e-01, 1.253332124403766e-01, 6.279063242083509e-02, 5.358979038305733e-08, -6.279052811178046e-02, -1.253332938608835e-01, -1.873814290064919e-01, -2.486896995113108e-01, -3.090168716001222e-01, -3.681244710530986e-01, -4.257792639837872e-01, -4.817537090949232e-01, -5.358268812191928e-01, -5.877850626424818e-01, -6.374238629405072e-01, -6.845470447203491e-01, -7.289685810669899e-01, -7.70513233773134e-01, -8.090170302644712e-01, -8.443277778656753e-01, -8.763066019297819e-01, -9.048269793212442e-01, -9.297764355570579e-01, -9.510565031049077e-01, -9.685831993059969e-01, -9.822871933156057e-01, -9.921146473576923e-01, -9.980267244919351e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.048270985303206e-01, -8.763066615349241e-01, -8.443278970749648e-01, -8.090171494737608e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471639296387e-01, -6.374239821497968e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538581065351e-01, -4.257794129953991e-01, -3.681246200647105e-01, -3.090170206117341e-01, -2.486898634240839e-01, -1.87381592919265e-01, -1.253334577736566e-01, -6.279068457400852e-02, -1.07179587871542e-07] +sampler1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMax.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMax.txt new file mode 100644 index 0000000000..68e098daf7 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMax.txt @@ -0,0 +1,11 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +triggeredMax.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01, 9.510565400123596e-01] +triggeredMax.u=[0e+00, 6.279052189025491e-02, 1.25333237452147e-01, 1.87381316384595e-01, 2.486898953400241e-01, 3.090169981213527e-01, 3.681245524355013e-01, 4.257792813474344e-01, 4.817536869409441e-01, 5.358267832061716e-01, 5.877852363791168e-01, 6.37423995027516e-01, 6.845471385054688e-01, 7.289686406719382e-01, 7.705132341174212e-01, 8.090169803797332e-01, 8.443279385564225e-01, 8.763066475484895e-01, 9.048270389253867e-01, 9.297764951615509e-01, 9.510564745096004e-01, 9.685831765931435e-01, 9.822872294646928e-01, 9.921147192796552e-01, 9.980267305350982e-01, 1e+00, 9.980267244918735e-01, 9.921147307571708e-01, 9.822872294647284e-01, 9.685831532414171e-01, 9.510565627098908e-01, 9.29776495161622e-01, 9.048270389253867e-01, 8.763067518650643e-01, 8.44327938556529e-01, 8.09016980379911e-01, 7.705133529832707e-01, 7.289687002764409e-01, 6.845471043246666e-01, 6.374239225441147e-01, 5.877853337517847e-01, 5.358268428108165e-01, 4.817536344844248e-01, 4.257793831936812e-01, 3.681245902625959e-01, 3.090169610060254e-01, 2.486899853117014e-01, 1.873813495884997e-01, 1.253332124403766e-01, 6.279063242083509e-02, 5.358979393577101e-08, -6.279052811178046e-02, -1.253332938608835e-01, -1.873814290064919e-01, -2.486896995113108e-01, -3.090168716001222e-01, -3.681244710530986e-01, -4.257792639837872e-01, -4.817537090949232e-01, -5.358268812191928e-01, -5.877850626424818e-01, -6.374238629405072e-01, -6.845470447203491e-01, -7.289685810669899e-01, -7.70513233773134e-01, -8.090170302644712e-01, -8.443277778656753e-01, -8.763066019297819e-01, -9.048269793212442e-01, -9.297764355570579e-01, -9.510565031049077e-01, -9.685831993059969e-01, -9.822871933156057e-01, -9.921146473576923e-01, -9.980267244919351e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.048270985303206e-01, -8.763066615349241e-01, -8.443278970749648e-01, -8.090171494737608e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471639296387e-01, -6.374239821497968e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538581065351e-01, -4.257794129953991e-01, -3.681246200647105e-01, -3.090170206117341e-01, -2.486898634240839e-01, -1.87381592919265e-01, -1.253334577736566e-01, -6.279068457400852e-02, -1.07179587871542e-07] +time=[0e+00, 1e+00] +triggeredMax.trigger=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMovingMean.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMovingMean.txt new file mode 100644 index 0000000000..9c91fe06e9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredMovingMean.txt @@ -0,0 +1,14 @@ +last-generated=2019-11-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +triMovMea1.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -2.58819043636322e-01, -2.58819043636322e-01, -2.58819043636322e-01, -2.58819043636322e-01, -2.58819043636322e-01, -2.58819043636322e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 9.659258127212524e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 8.660253882408142e-01, 2.588329411686482e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, 2.58819043636322e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -9.659151487697784e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -9.659258127212524e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -8.660253882408142e-01, -2.58819043636322e-01, -2.58819043636322e-01, -2.58819043636322e-01, -2.58819043636322e-01] +triMovMea.u=[5e-01, 6.014664761625028e-01, 6.940303431224256e-01, 7.763215304147594e-01, 8.471218954572036e-01, 9.053836444491157e-01, 9.502442460986447e-01, 9.81039825166185e-01, 9.973144524855669e-01, 9.988273373113585e-01, 9.855560592452735e-01, 9.576970431879718e-01, 9.156625910792943e-01, 8.600749314947155e-01, 7.917568474510011e-01, 7.11719658129379e-01, 6.211477634337024e-01, 5.213820273864654e-01, 4.138989770374305e-01, 3.002895806922236e-01, 1.822354502526237e-01, 6.148414336605637e-02, -6.017741160777051e-02, -1.809482429551963e-01, -2.990407728508002e-01, -4.127070307731628e-01, -5.202645849902316e-01, -6.201214543432193e-01, -7.107995024713668e-01, -7.909566712565899e-01, -8.59406372571603e-01, -9.151357344746229e-01, -9.573194890543621e-01, -9.853335904124509e-01, -9.987631445789033e-01, -9.97409471884688e-01, -9.812926527540375e-01, -9.506512597456115e-01, -9.059385797843665e-01, -8.478167964622497e-01, -7.771458861072825e-01, -6.949721681218675e-01, -6.025119066129268e-01, -5.011331773993932e-01, -3.923372369748858e-01, -2.777337604438136e-01, -1.590197822870765e-01, -3.795167372273422e-02, 8.367779838870022e-02, 2.040690749453934e-01, 3.214394748210907e-01, 4.340520498189372e-01, 5.402403849040974e-01, 6.384319327476536e-01, 7.271740449482663e-01, 8.051528293793221e-01, 8.712136735627454e-01, 9.243796350130378e-01, 9.63863360403877e-01, 9.890801929538597e-01, 9.996573271530925e-01, 9.954379136508218e-01, 9.764844757927637e-01, 9.430777104161433e-01, 8.957118055813571e-01, 8.35087871074764e-01, 7.621033811027919e-01, 6.778390522139012e-01, 5.835411899253222e-01, 4.806059569398766e-01, 3.70557704302947e-01, 2.550239537545757e-01, 1.357154551069016e-01, 1.439813910256098e-02, -1.071315480732013e-01, -2.270762622356415e-01, -3.436598950159814e-01, -4.551561502577352e-01, -5.599160385472161e-01, -6.563883498595448e-01, -7.431450079442803e-01, -8.189015777244697e-01, -8.825375293645313e-01, -9.331105977372743e-01, -9.698719075143097e-01, -9.922778998577637e-01, -9.99996601962562e-01, -9.92913689373696e-01, -9.711343661248995e-01, -9.349805322352361e-01, -8.849875809445433e-01, -8.21895331384541e-01, -7.466382967631414e-01, -6.60329378754925e-01, -5.642465146045756e-01, -4.598126372729628e-01, -3.485721294190688e-01, -2.32172223260452e-01, -1.123357861520096e-01, 9.162640961086186e-03, 1.305261850357056e-01] +triMovMea.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.329629063606262e-01, 7.329629063606262e-01, 7.329629063606262e-01, 7.329629063606262e-01, 7.329629063606262e-01, 7.329629063606262e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -6.969234347343445e-01, -6.969234347343445e-01, -6.969234347343445e-01, -6.969234347343445e-01, -6.969234347343445e-01, -6.969234347343445e-01, -2.082814872264862e-01, -2.082814872264862e-01, -2.082814872264862e-01, -2.082814872264862e-01, -2.082814872264862e-01, -2.082814872264862e-01, -2.082814872264862e-01, 4.023689329624176e-01, 4.023689329624176e-01, 4.023689329624176e-01, 4.023689329624176e-01, 4.023689329624176e-01, 4.023689329624176e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 7.773170471191406e-01, 6.969252747560057e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 6.969234347343445e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, 2.082814872264862e-01, -4.023549566033692e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -4.023689329624176e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -7.773170471191406e-01, -6.969234347343445e-01, -6.969234347343445e-01, -6.969234347343445e-01, -6.969234347343445e-01] +time=[-5e-01, 1.5e+01] +booPul.y=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 9.999771123400644e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00] +triMovMea2.y=[5e-01, 5e-01, 5e-01, 5e-01, 6.466766595840454e-01, 6.466766595840454e-01, 6.466766595840454e-01, 6.466766595840454e-01, 6.466766595840454e-01, 6.466766595840454e-01, 7.615994215011597e-01, 7.615994215011597e-01, 7.615994215011597e-01, 7.615994215011597e-01, 7.615994215011597e-01, 7.615994215011597e-01, 7.615994215011597e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -7.978495828672888e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -4.8989337682724e-01, -4.8989337682724e-01, -4.8989337682724e-01, -4.8989337682724e-01, -4.8989337682724e-01, -4.8989337682724e-01, 1.050393655896187e-01, 1.050393655896187e-01, 1.050393655896187e-01, 1.050393655896187e-01, 1.050393655896187e-01, 1.050393655896187e-01, 1.050393655896187e-01, 6.384414434432983e-01, 6.384414434432983e-01, 6.384414434432983e-01, 6.384414434432983e-01, 6.384414434432983e-01, 6.384414434432983e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 7.978532314300537e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, 4.8989337682724e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -1.050393655896187e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -6.384414434432983e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01, -7.978532314300537e-01] +booPul1.y=[0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765993563313e-05, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredSampler.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredSampler.txt new file mode 100644 index 0000000000..83be6c844d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_TriggeredSampler.txt @@ -0,0 +1,12 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +booPul.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +sin1.y=[0e+00, 6.279052189025491e-02, 1.25333237452147e-01, 1.87381316384595e-01, 2.486898953400241e-01, 3.090169981213527e-01, 3.681245524355013e-01, 4.257792813474344e-01, 4.817536869409441e-01, 5.358267832061716e-01, 5.877852363791168e-01, 6.37423995027516e-01, 6.845471385054688e-01, 7.289686406719382e-01, 7.705132341174212e-01, 8.090169803797332e-01, 8.443279385564225e-01, 8.763066475484895e-01, 9.048270389253867e-01, 9.297764951615509e-01, 9.510564745096004e-01, 9.685831765931435e-01, 9.822872294646928e-01, 9.921147192796552e-01, 9.980267305350982e-01, 1e+00, 9.980267244918735e-01, 9.921147307571708e-01, 9.822872294647284e-01, 9.685831532414171e-01, 9.510565627098908e-01, 9.29776495161622e-01, 9.048270389253867e-01, 8.763067518650643e-01, 8.44327938556529e-01, 8.09016980379911e-01, 7.705133529832707e-01, 7.289687002764409e-01, 6.845471043246666e-01, 6.374239225441147e-01, 5.877853337517847e-01, 5.358268428108165e-01, 4.817536344844248e-01, 4.257793831936812e-01, 3.681245902625959e-01, 3.090169610060254e-01, 2.486899853117014e-01, 1.873813495884997e-01, 1.253332124403766e-01, 6.279063242083509e-02, 5.358979393577101e-08, -6.279052811178046e-02, -1.253332938608835e-01, -1.873814290064919e-01, -2.486896995113108e-01, -3.090168716001222e-01, -3.681244710530986e-01, -4.257792639837872e-01, -4.817537090949232e-01, -5.358268812191928e-01, -5.877850626424818e-01, -6.374238629405072e-01, -6.845470447203491e-01, -7.289685810669899e-01, -7.70513233773134e-01, -8.090170302644712e-01, -8.443277778656753e-01, -8.763066019297819e-01, -9.048269793212442e-01, -9.297764355570579e-01, -9.510565031049077e-01, -9.685831993059969e-01, -9.822871933156057e-01, -9.921146473576923e-01, -9.980267244919351e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.048270985303206e-01, -8.763066615349241e-01, -8.443278970749648e-01, -8.090171494737608e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471639296387e-01, -6.374239821497968e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538581065351e-01, -4.257794129953991e-01, -3.681246200647105e-01, -3.090170206117341e-01, -2.486898634240839e-01, -1.87381592919265e-01, -1.253334577736566e-01, -6.279068457400852e-02, -1.07179587871542e-07] +triSam.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01] +triSam1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01, -9.510565400123596e-01] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_UnitDelay.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_UnitDelay.txt new file mode 100644 index 0000000000..aec709f133 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_UnitDelay.txt @@ -0,0 +1,10 @@ +last-generated=2024-08-08 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +unitDelay1.u=[0e+00, 6.279052189025491e-02, 1.25333237452147e-01, 1.87381316384595e-01, 2.486898953400241e-01, 3.090169981213527e-01, 3.681245524355013e-01, 4.257792813474344e-01, 4.817536869409441e-01, 5.358267832061716e-01, 5.877852363791168e-01, 6.37423995027516e-01, 6.845471385054688e-01, 7.289686406719382e-01, 7.705132341174212e-01, 8.090169803797332e-01, 8.443279385564225e-01, 8.763066475484895e-01, 9.048270389253867e-01, 9.297764951615509e-01, 9.510564745096004e-01, 9.685831765931435e-01, 9.822872294646928e-01, 9.921147192796552e-01, 9.980267305350982e-01, 1e+00, 9.980267244918735e-01, 9.921147307571708e-01, 9.822872294647284e-01, 9.685831532414171e-01, 9.510565627098908e-01, 9.29776495161622e-01, 9.048270389253867e-01, 8.763067518650643e-01, 8.44327938556529e-01, 8.09016980379911e-01, 7.705133529832707e-01, 7.289687002764409e-01, 6.845471043246666e-01, 6.374239225441147e-01, 5.877853337517847e-01, 5.358268428108165e-01, 4.817536344844248e-01, 4.257793831936812e-01, 3.681245902625959e-01, 3.090169610060254e-01, 2.486899853117014e-01, 1.873813495884997e-01, 1.253332124403766e-01, 6.279063242083509e-02, 5.358979393577101e-08, -6.279052811178046e-02, -1.253332938608835e-01, -1.873814290064919e-01, -2.486896995113108e-01, -3.090168716001222e-01, -3.681244710530986e-01, -4.257792639837872e-01, -4.817537090949232e-01, -5.358268812191928e-01, -5.877850626424818e-01, -6.374238629405072e-01, -6.845470447203491e-01, -7.289685810669899e-01, -7.70513233773134e-01, -8.090170302644712e-01, -8.443277778656753e-01, -8.763066019297819e-01, -9.048269793212442e-01, -9.297764355570579e-01, -9.510565031049077e-01, -9.685831993059969e-01, -9.822871933156057e-01, -9.921146473576923e-01, -9.980267244919351e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.048270985303206e-01, -8.763066615349241e-01, -8.443278970749648e-01, -8.090171494737608e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471639296387e-01, -6.374239821497968e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538581065351e-01, -4.257794129953991e-01, -3.681246200647105e-01, -3.090170206117341e-01, -2.486898634240839e-01, -1.87381592919265e-01, -1.253334577736566e-01, -6.279068457400852e-02, -1.07179587871542e-07] +unitDelay1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 9.510564804077148e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, 5.877853035926819e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01, -5.877851843833923e-01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_ZeroOrderHold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_ZeroOrderHold.txt new file mode 100644 index 0000000000..495ac7086d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Discrete_Validation_ZeroOrderHold.txt @@ -0,0 +1,10 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +zerOrdHol.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, 3.0901700258255e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.090169429779053e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, -8.0901700258255e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01, 3.090169131755829e-01] +zerOrdHol.u=[1e+00, 9.980267285330768e-01, 9.92114722359185e-01, 9.822872272920056e-01, 9.685831651680721e-01, 9.51056541430958e-01, 9.297764865835308e-01, 9.048270591019025e-01, 8.76306707153081e-01, 8.443279385564225e-01, 8.090170080380417e-01, 7.705132341174212e-01, 7.289686086868863e-01, 6.845471043246666e-01, 6.374239950275337e-01, 5.877852741471401e-01, 5.358267832061716e-01, 4.817536869409707e-01, 4.257793533913588e-01, 3.681245604602735e-01, 3.090170203545645e-01, 2.486898648442655e-01, 1.873813346873295e-01, 1.253332904574954e-01, 6.279050918949433e-02, 2.679489519152867e-08, -6.279055046444852e-02, -1.253331379345707e-01, -1.873812750826938e-01, -2.486899108059576e-01, -3.090169014013807e-01, -3.681245008556288e-01, -4.25779293786714e-01, -4.8175357487978e-01, -5.358267236016335e-01, -5.877852741471399e-01, -6.3742386293947e-01, -6.845470447200218e-01, -7.289686406717961e-01, -7.70513293378626e-01, -8.090169207752662e-01, -8.443279385564224e-01, -8.763066922604196e-01, -9.048270389253867e-01, -9.297764951615509e-01, -9.51056503105246e-01, -9.685831532414171e-01, -9.822872294646928e-01, -9.921147307568511e-01, -9.980267244918735e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.04827038925889e-01, -8.763066615344267e-01, -8.443278970741832e-01, -8.090170898698266e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471043249939e-01, -6.374239821493705e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538283042127e-01, -4.257793831930767e-01, -3.68124620064675e-01, -3.090169908094118e-01, -2.486898336217616e-01, -1.873815631169426e-01, -1.253334279713343e-01, -6.279065477168613e-02, -8.038468735094284e-08, 6.27904983094936e-02, 1.253332640585611e-01, 1.873814141051175e-01, 2.486896697091483e-01, 3.090168417977998e-01, 3.681244710530631e-01, 4.257792639837872e-01, 4.817536792926008e-01, 5.358268812191928e-01, 5.877850626424818e-01, 6.374238629400809e-01, 6.84547044720207e-01, 7.289685810669899e-01, 7.70513233773134e-01, 8.090170302644712e-01, 8.443277778656753e-01, 8.763066019297819e-01, 9.048269793210311e-01, 9.297764355570579e-01, 9.510565031049077e-01, 9.685831397019916e-01, 9.822871933156057e-01, 9.921146473576923e-01, 9.980267244919351e-01, 1e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Constant.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Constant.txt new file mode 100644 index 0000000000..b7b9df4f2d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Constant.txt @@ -0,0 +1,9 @@ +last-generated=2017-07-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +con.y=[5e+00, 5e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Pulse.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Pulse.txt new file mode 100644 index 0000000000..0a4bdb3cc8 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_Pulse.txt @@ -0,0 +1,12 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+00] +pul.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pul1.y=[3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +pul2.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +pul3.y=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTable.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTable.txt new file mode 100644 index 0000000000..8a4eae8219 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTable.txt @@ -0,0 +1,13 @@ +last-generated=2020-10-08 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1.5e+01] +intTimTab.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1.999974569266936e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intTimTab.y[2]=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1.999961853900403e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00] +intTimTab1.y[1]=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] +intTimTab1.y[2]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00] +tabOneRow.y[1]=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTableNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTableNegativeStartTime.txt new file mode 100644 index 0000000000..187aaf6ee7 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Sources_Validation_TimeTableNegativeStartTime.txt @@ -0,0 +1,13 @@ +last-generated=2020-10-08 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-5e+00, 1e+01] +intTimTab.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000001589452388e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intTimTab.y[2]=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 3.999996821095224e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00] +intTimTab1.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +intTimTab1.y[2]=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] +tabOneRow.y[1]=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Abs.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Abs.txt new file mode 100644 index 0000000000..c8f69ac5ed --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Abs.txt @@ -0,0 +1,10 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +abs1.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +abs1.y=[4e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Add.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Add.txt new file mode 100644 index 0000000000..c534d2847c --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Add.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +add1.u1=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +add1.u2=[-1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.999994993219981e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +add1.y=[-5e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.999989986439961e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00, 9e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_AddParameter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_AddParameter.txt new file mode 100644 index 0000000000..c45957d4a3 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_AddParameter.txt @@ -0,0 +1,10 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +addPar.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +addPar.y=[1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.999994993219981e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Change.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Change.txt new file mode 100644 index 0000000000..e13770f24c --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Change.txt @@ -0,0 +1,19 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +reaToInt.y=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +cha.u=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +cha.up=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +cha.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +cha.down=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +changeSampler.u=[0e+00, 2.000000074505789e-01, 4.000000149011579e-01, 6.000000372528755e-01, 8.000000298023024e-01, 9.999999850988333e-01, 1.200000074505776e+00, 1.399999970197673e+00, 1.600000059604538e+00, 1.799999880790923e+00, 1.999999970197766e+00, 2.200000059604609e+00, 2.400000149011452e+00, 2.600000000000284e+00, 2.799999940395391e+00, 2.999999880791066e+00, 3.200000119209077e+00, 3.400000059604539e+00, 3.599999761581847e+00, 3.799999999999858e+00, 3.999999940395533e+00, 4.199999940394965e+00, 4.400000119209219e+00, 4.599999821186315e+00, 4.800000298022904e+00, 5e+00, 5.199999999999432e+00, 5.39999988079135e+00, 5.599999880790782e+00, 5.800000357627371e+00, 5.999999761582131e+00, 6.199999761581563e+00, 6.400000238418153e+00, 6.599999642372913e+00, 6.800000119209503e+00, 7.000000119208934e+00, 7.199999523163694e+00, 7.400000000000285e+00, 7.599999999999716e+00, 7.800000476836306e+00, 7.999999880791066e+00, 8.199999880790497e+00, 8.399999880789929e+00, 8.600000238419005e+00, 8.800000238418438e+00, 9.000000238417869e+00, 9.19999964237263e+00, 9.399999642372061e+00, 9.600000596045808e+00, 9.800000000000569e+00, 1e+01, 1.019999999999659e+01, 1.039999999999318e+01, 1.060000095366409e+01, 1.07999997615891e+01, 1.099999976158568e+01, 1.119999976158085e+01, 1.139999976157886e+01, 1.160000071524977e+01, 1.180000071524636e+01, 1.199999952317137e+01, 1.219999952316796e+01, 1.239999952316455e+01, 1.260000047683545e+01, 1.280000047683204e+01, 1.300000047682863e+01, 1.319999928475364e+01, 1.339999928475023e+01, 1.360000023842114e+01, 1.380000023841915e+01, 1.400000023841432e+01, 1.42000002384109e+01, 1.439999904633591e+01, 1.460000000000682e+01, 1.480000000000341e+01, 1.5e+01, 1.519999999999659e+01, 1.539999999999318e+01, 1.560000095366409e+01, 1.57999997615891e+01, 1.599999976158568e+01, 1.620000071525403e+01, 1.639999976158227e+01, 1.660000071524181e+01, 1.679999976158455e+01, 1.699999952316e+01, 1.720000047683545e+01, 1.739999952316682e+01, 1.760000047683318e+01, 1.779999952316455e+01, 1.800000047684e+01, 1.820000023841545e+01, 1.839999928475819e+01, 1.860000023841773e+01, 1.879999928474597e+01, 1.900000023842e+01, 1.920000119207499e+01, 1.939999904634956e+01, 1.959999999999773e+01, 1.979999904633364e+01, 2e+01] +changeSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.000002384145424e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01] +increaseSampler.u=[0e+00, 2.000000074505789e-01, 4.000000149011579e-01, 6.000000372528755e-01, 8.000000298023024e-01, 9.999999850988333e-01, 1.200000074505776e+00, 1.399999970197673e+00, 1.600000059604538e+00, 1.799999880790923e+00, 1.999999970197766e+00, 2.200000059604609e+00, 2.400000149011452e+00, 2.600000000000284e+00, 2.799999940395391e+00, 2.999999880791066e+00, 3.200000119209077e+00, 3.400000059604539e+00, 3.599999761581847e+00, 3.799999999999858e+00, 3.999999940395533e+00, 4.199999940394965e+00, 4.400000119209219e+00, 4.599999821186315e+00, 4.800000298022904e+00, 5e+00, 5.199999999999432e+00, 5.39999988079135e+00, 5.599999880790782e+00, 5.800000357627371e+00, 5.999999761582131e+00, 6.199999761581563e+00, 6.400000238418153e+00, 6.599999642372913e+00, 6.800000119209503e+00, 7.000000119208934e+00, 7.199999523163694e+00, 7.400000000000285e+00, 7.599999999999716e+00, 7.800000476836306e+00, 7.999999880791066e+00, 8.199999880790497e+00, 8.399999880789929e+00, 8.600000238419005e+00, 8.800000238418438e+00, 9.000000238417869e+00, 9.19999964237263e+00, 9.399999642372061e+00, 9.600000596045808e+00, 9.800000000000569e+00, 1e+01, 1.019999999999659e+01, 1.039999999999318e+01, 1.060000095366409e+01, 1.07999997615891e+01, 1.099999976158568e+01, 1.119999976158085e+01, 1.139999976157886e+01, 1.160000071524977e+01, 1.180000071524636e+01, 1.199999952317137e+01, 1.219999952316796e+01, 1.239999952316455e+01, 1.260000047683545e+01, 1.280000047683204e+01, 1.300000047682863e+01, 1.319999928475364e+01, 1.339999928475023e+01, 1.360000023842114e+01, 1.380000023841915e+01, 1.400000023841432e+01, 1.42000002384109e+01, 1.439999904633591e+01, 1.460000000000682e+01, 1.480000000000341e+01, 1.5e+01, 1.519999999999659e+01, 1.539999999999318e+01, 1.560000095366409e+01, 1.57999997615891e+01, 1.599999976158568e+01, 1.620000071525403e+01, 1.639999976158227e+01, 1.660000071524181e+01, 1.679999976158455e+01, 1.699999952316e+01, 1.720000047683545e+01, 1.739999952316682e+01, 1.760000047683318e+01, 1.779999952316455e+01, 1.800000047684e+01, 1.820000023841545e+01, 1.839999928475819e+01, 1.860000023841773e+01, 1.879999928474597e+01, 1.900000023842e+01, 1.920000119207499e+01, 1.939999904634956e+01, 1.959999999999773e+01, 1.979999904633364e+01, 2e+01] +increaseSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6.000047682908479e+00, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01] +decreaseSampler.u=[0e+00, 2.000000074505789e-01, 4.000000149011579e-01, 6.000000372528755e-01, 8.000000298023024e-01, 9.999999850988333e-01, 1.200000074505776e+00, 1.399999970197673e+00, 1.600000059604538e+00, 1.799999880790923e+00, 1.999999970197766e+00, 2.200000059604609e+00, 2.400000149011452e+00, 2.600000000000284e+00, 2.799999940395391e+00, 2.999999880791066e+00, 3.200000119209077e+00, 3.400000059604539e+00, 3.599999761581847e+00, 3.799999999999858e+00, 3.999999940395533e+00, 4.199999940394965e+00, 4.400000119209219e+00, 4.599999821186315e+00, 4.800000298022904e+00, 5e+00, 5.199999999999432e+00, 5.39999988079135e+00, 5.599999880790782e+00, 5.800000357627371e+00, 5.999999761582131e+00, 6.199999761581563e+00, 6.400000238418153e+00, 6.599999642372913e+00, 6.800000119209503e+00, 7.000000119208934e+00, 7.199999523163694e+00, 7.400000000000285e+00, 7.599999999999716e+00, 7.800000476836306e+00, 7.999999880791066e+00, 8.199999880790497e+00, 8.399999880789929e+00, 8.600000238419005e+00, 8.800000238418438e+00, 9.000000238417869e+00, 9.19999964237263e+00, 9.399999642372061e+00, 9.600000596045808e+00, 9.800000000000569e+00, 1e+01, 1.019999999999659e+01, 1.039999999999318e+01, 1.060000095366409e+01, 1.07999997615891e+01, 1.099999976158568e+01, 1.119999976158085e+01, 1.139999976157886e+01, 1.160000071524977e+01, 1.180000071524636e+01, 1.199999952317137e+01, 1.219999952316796e+01, 1.239999952316455e+01, 1.260000047683545e+01, 1.280000047683204e+01, 1.300000047682863e+01, 1.319999928475364e+01, 1.339999928475023e+01, 1.360000023842114e+01, 1.380000023841915e+01, 1.400000023841432e+01, 1.42000002384109e+01, 1.439999904633591e+01, 1.460000000000682e+01, 1.480000000000341e+01, 1.5e+01, 1.519999999999659e+01, 1.539999999999318e+01, 1.560000095366409e+01, 1.57999997615891e+01, 1.599999976158568e+01, 1.620000071525403e+01, 1.639999976158227e+01, 1.660000071524181e+01, 1.679999976158455e+01, 1.699999952316e+01, 1.720000047683545e+01, 1.739999952316682e+01, 1.760000047683318e+01, 1.779999952316455e+01, 1.800000047684e+01, 1.820000023841545e+01, 1.839999928475819e+01, 1.860000023841773e+01, 1.879999928474597e+01, 1.900000023842e+01, 1.920000119207499e+01, 1.939999904634956e+01, 1.959999999999773e+01, 1.979999904633364e+01, 2e+01] +decreaseSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Equal.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Equal.txt new file mode 100644 index 0000000000..07e79cfae6 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Equal.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intEqu.u1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +intEqu.u2=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +intEqu.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Greater.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Greater.txt new file mode 100644 index 0000000000..1d5fb30cc6 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Greater.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intGre.u1=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +intGre.u2=[-2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intGre.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqual.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqual.txt new file mode 100644 index 0000000000..16c87d980d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqual.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intGreEqu.u1=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +intGreEqu.u2=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +intGreEqu.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqualThreshold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqualThreshold.txt new file mode 100644 index 0000000000..b05c270c63 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterEqualThreshold.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intGreEquThr.t=[2e+00, 2e+00] +intGreEquThr.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +intGreEquThr.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterThreshold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterThreshold.txt new file mode 100644 index 0000000000..4938df5950 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_GreaterThreshold.txt @@ -0,0 +1,11 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +intGreThr.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +intGreThr.t=[2e+00, 2e+00] +time=[0e+00, 1e+00] +intGreThr.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Less.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Less.txt new file mode 100644 index 0000000000..5f52d8e2ad --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Less.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intLes.u1=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +intLes.u2=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +intLes.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqual.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqual.txt new file mode 100644 index 0000000000..b9dcc0b270 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqual.txt @@ -0,0 +1,11 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +intLesEqu.u1=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +intLesEqu.u2=[-2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +time=[0e+00, 1e+00] +intLesEqu.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqualThreshold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqualThreshold.txt new file mode 100644 index 0000000000..c4b4741f28 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessEqualThreshold.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intLesEquThr.t=[2e+00, 2e+00] +intLesEquThr.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +intLesEquThr.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessThreshold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessThreshold.txt new file mode 100644 index 0000000000..a1400868b1 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_LessThreshold.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intLesThr.t=[2e+00, 2e+00] +intLesThr.u=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +intLesThr.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Max.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Max.txt new file mode 100644 index 0000000000..8832147591 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Max.txt @@ -0,0 +1,11 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +max1.u2=[-2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +max1.u1=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +max1.y=[-2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Min.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Min.txt new file mode 100644 index 0000000000..cb4ee9bbfc --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Min.txt @@ -0,0 +1,11 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +min1.y=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +min1.u2=[-2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +min1.u1=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.00000596036356e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.000011920727175e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_MultiSum.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_MultiSum.txt new file mode 100644 index 0000000000..e3abd1b3b3 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_MultiSum.txt @@ -0,0 +1,12 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +add1.u[3]=[-2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.999994993219981e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00] +add1.u[1]=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +add1.y=[-7e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -4e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 4.999984979659942e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01] +add1.u[2]=[-1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.999994993219981e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Multiply.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Multiply.txt new file mode 100644 index 0000000000..0ff41f82a1 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Multiply.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +product.u1=[-1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +product.u2=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +product.y=[-0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_OnCounter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_OnCounter.txt new file mode 100644 index 0000000000..44d8af0621 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_OnCounter.txt @@ -0,0 +1,11 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +onCounter.trigger=[1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 2.980226188066309e-06, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 5.960452403888138e-06, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 2e+00] +onCounter.reset=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onCounter.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000002980226188e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.000005960452404e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.000011920727176e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.00000596036356e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Stage.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Stage.txt new file mode 100644 index 0000000000..4bba95643e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Stage.txt @@ -0,0 +1,14 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +sta.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999997392295245e-03, 1.999999478461667e-02, 3.000000409780068e-02, 4.00000014901188e-02, 5.000000074505806e-02, 5.999999627470705e-02, 6.999999552968364e-02, 8.0000002980218e-02, 9.000000596046269e-02, 1.000000014901161e-01, 1.100000089407251e-01, 1.19999992549423e-01, 1.300000000000142e-01, 1.399999910592749e-01, 1.500000059604645e-01, 1.600000059604929e-01, 1.699999970197536e-01, 1.800000119209077e-01, 1.899999880790426e-01, 2.000000029802322e-01, 2.100000029802607e-01, 2.199999940395213e-01, 2.300000089406754e-01, 2.399999850988815e-01, 2.5e-01, 2.600000000000284e-01, 2.700000059604503e-01, 2.800000059604787e-01, 2.899999821185782e-01, 3.00000011920929e-01, 3.100000119209573e-01, 3.200000119209858e-01, 3.299999940394787e-01, 3.399999940395071e-01, 3.499999940395355e-01, 3.600000238417443e-01, 3.700000238419147e-01, 3.799999761580852e-01, 3.899999761582558e-01, 4.000000059604645e-01, 4.100000059604929e-01, 4.200000059605213e-01, 4.299999880790143e-01, 4.399999880790427e-01, 4.49999988079071e-01, 4.600000178814219e-01, 4.700000178814502e-01, 4.799999701976208e-01, 4.899999999999715e-01, 5e-01, 5.100000000001705e-01, 5.200000000003411e-01, 5.299999523165115e-01, 5.400000119207584e-01, 5.50000011920929e-01, 5.600000119208153e-01, 5.7000001192127e-01, 5.799999642374406e-01, 5.899999642373268e-01, 6.000000238418579e-01, 6.100000238417442e-01, 6.200000238416304e-01, 6.299999761583694e-01, 6.399999761582558e-01, 6.499999761581421e-01, 6.600000357626732e-01, 6.700000357625595e-01, 6.799999880787301e-01, 6.899999880791847e-01, 6.99999988079071e-01, 7.099999403967195e-01, 7.200000476830336e-01, 7.300000000001136e-01, 7.400000476823516e-01, 7.5e-01, 7.599999523187068e-01, 7.699999999998862e-01, 7.799999523169664e-01, 7.900000596032806e-01, 8.00000011920929e-01, 8.099999642385773e-01, 8.200000119208154e-01, 8.299999642378953e-01, 8.400000119207014e-01, 8.500000238418579e-01, 8.599999761575364e-01, 8.700000238411757e-01, 8.799999761588243e-01, 8.900000238416306e-01, 8.999999761581421e-01] +sta.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +zerHolTim.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00] +sta1.u=[5e-01, 5.62666594051887e-01, 6.243449431345468e-01, 6.840622951144832e-01, 7.408768501618699e-01, 7.938926219940186e-01, 8.422735222964175e-01, 8.852566527649917e-01, 9.22163959225402e-01, 9.524135055626048e-01, 9.755282402038574e-01, 9.911436408643766e-01, 9.990133620582184e-01, 9.990133620582184e-01, 9.911436408643766e-01, 9.755282402038574e-01, 9.524135055626234e-01, 9.221639790519085e-01, 8.852566286780194e-01, 8.422735222963845e-01, 7.938926219940186e-01, 7.408768005993301e-01, 6.840623298276093e-01, 6.243449158439494e-01, 5.62666654330428e-01, 5e-01, 4.373333158675338e-01, 3.756550841559793e-01, 3.159376999745707e-01, 2.59123229202708e-01, 2.061073780059814e-01, 1.577264085938893e-01, 1.147434011243298e-01, 7.783602094799758e-02, 4.758650075945427e-02, 2.447174116969109e-02, 8.856364283090808e-03, 9.866380581584411e-04, 9.866380581584411e-04, 8.856364283090808e-03, 2.447174116969109e-02, 4.758650075945427e-02, 7.783610216161774e-02, 1.147433065166289e-01, 1.577264085938895e-01, 2.061073780059814e-01, 2.591232292027082e-01, 3.15937839658879e-01, 3.756549393554028e-01, 4.373333158675341e-01, 5e-01, 5.626666543304277e-01, 6.243450606445972e-01, 6.840621901428749e-01, 7.408768005993305e-01, 7.938926219940186e-01, 8.422735765049497e-01, 8.852567232851958e-01, 9.221638978381691e-01, 9.52413473163549e-01, 9.755282402038574e-01, 9.911436543433851e-01, 9.990133703364621e-01, 9.990133703364621e-01, 9.911436543433851e-01, 9.755282402038574e-01, 9.52413473163549e-01, 9.221638978381691e-01, 8.852567232851958e-01, 8.422735765049497e-01, 7.938926219940186e-01, 7.408768005993305e-01, 6.840621901428749e-01, 6.243450606445972e-01, 5.626666543304277e-01, 5e-01, 4.373333158675341e-01, 3.756549393554029e-01, 3.15937839658879e-01, 2.591232292027077e-01, 2.061073780059814e-01, 1.57726628516219e-01, 1.147433065184227e-01, 7.783610216005693e-02, 4.758637525310335e-02, 2.447174116969109e-02, 8.856420791578445e-03, 9.866297802864079e-04, 9.866297802864077e-04, 8.856422635427366e-03, 2.447174116969109e-02, 4.758637525310335e-02, 7.783610216005693e-02, 1.147433065184227e-01, 1.57726628516219e-01, 2.061073780059814e-01, 2.591229668516646e-01, 3.159378396562095e-01, 3.756549393581616e-01, 4.373336133572886e-01, 5e-01] +sta1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +lesHolTim.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1.000050806554093e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.999949193445907e+00, 2e+00, 2e+00, 2e+00, 2e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Subtract.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Subtract.txt new file mode 100644 index 0000000000..ceae9185b2 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Subtract.txt @@ -0,0 +1,11 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +sub.u1=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +sub.u2=[-1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.999994993219981e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +sub.y=[-3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Switch.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Switch.txt new file mode 100644 index 0000000000..28c5701312 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Integers_Validation_Switch.txt @@ -0,0 +1,12 @@ +last-generated=2023-03-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+00] +integerSwitch.u1=[5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 4.99997615811933e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 4.999976158119441e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00] +integerSwitch.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +integerSwitch.u3=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +integerSwitch.y=[5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 4.99997615811933e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Constant.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Constant.txt new file mode 100644 index 0000000000..0ba92d31a9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Constant.txt @@ -0,0 +1,9 @@ +last-generated=2017-07-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +con.y=[1e+00, 1e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Pulse.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Pulse.txt new file mode 100644 index 0000000000..bd79ba9841 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_Pulse.txt @@ -0,0 +1,23 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +booPul_a1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 9.999809269502016e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a2.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 9.999809269502016e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a3.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 9.999809269502016e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a4.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 9.999809269502016e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a5.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 9.999809269502016e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b1.y=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b2.y=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b3.y=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b4.y=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b5.y=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.76837611174551e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c3.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulseNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulseNegativeStartTime.txt new file mode 100644 index 0000000000..78485dfaec --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulseNegativeStartTime.txt @@ -0,0 +1,23 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-1e+01, 1e+00] +booPul_a1.y=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.814700907156521e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a2.y=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.814700907156521e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a3.y=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.814700907156521e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a4.y=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.814700907156521e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a5.y=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.814700907156521e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b1.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b2.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b3.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b4.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b5.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.33486858314694e-06, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booPul_c2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.33486858314694e-06, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booPul_c3.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.33486858314694e-06, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booPul_c4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.33486858314694e-06, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booPul_c5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.33486858314694e-06, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulsePositiveStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulsePositiveStartTime.txt new file mode 100644 index 0000000000..e05c5ae316 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_PulsePositiveStartTime.txt @@ -0,0 +1,23 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[9e+00, 2e+01] +booPul_a1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a3.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_a5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999771123402419e-01, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b3.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_b5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765975810847e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765993563313e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765993563313e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c3.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765993563313e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765993563313e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booPul_c5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.288765993563313e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTrigger.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTrigger.txt new file mode 100644 index 0000000000..8075017218 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTrigger.txt @@ -0,0 +1,14 @@ +last-generated=2020-12-03 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+00] +samTri.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +triggeredSampler.u=[0e+00, 2e-01, 4e-01, 6e-01, 8e-01, 1e+00, 1.2e+00, 1.4e+00, 1.6e+00, 1.8e+00, 2e+00, 2.2e+00, 2.4e+00, 2.6e+00, 2.8e+00, 3e+00, 3.2e+00, 3.4e+00, 3.6e+00, 3.8e+00, 4e+00, 4.2e+00, 4.4e+00, 4.600000000000001e+00, 4.8e+00, 5e+00, 5.2e+00, 5.4e+00, 5.600000000000001e+00, 5.8e+00, 6e+00, 6.2e+00, 6.4e+00, 6.600000000000001e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.4e+00, 7.6e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.22e+01, 1.24e+01, 1.26e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.34e+01, 1.36e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.44e+01, 1.46e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.54e+01, 1.56e+01, 1.58e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] +triggeredSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01] +samTri1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +triggeredSampler1.u=[0e+00, 2e-01, 4e-01, 6e-01, 8e-01, 1e+00, 1.2e+00, 1.4e+00, 1.6e+00, 1.8e+00, 2e+00, 2.2e+00, 2.4e+00, 2.6e+00, 2.8e+00, 3e+00, 3.2e+00, 3.4e+00, 3.6e+00, 3.8e+00, 4e+00, 4.2e+00, 4.4e+00, 4.600000000000001e+00, 4.8e+00, 5e+00, 5.2e+00, 5.4e+00, 5.600000000000001e+00, 5.8e+00, 6e+00, 6.2e+00, 6.4e+00, 6.600000000000001e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.4e+00, 7.6e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.22e+01, 1.24e+01, 1.26e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.34e+01, 1.36e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.44e+01, 1.46e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.54e+01, 1.56e+01, 1.58e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] +triggeredSampler1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200009584434847e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.20000934601736e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.200009346017449e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.200009346017449e+00, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.120000934601745e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.320000934601736e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.920000076293945e+01, 1.920000076293945e+01, 1.920000076293945e+01, 1.920000076293945e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerNegativeStartTime.txt new file mode 100644 index 0000000000..d37c86846d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerNegativeStartTime.txt @@ -0,0 +1,14 @@ +last-generated=2020-12-03 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-2e+00, 3e+00] +samTri.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +triggeredSampler.u=[0e+00, 2.000001937152378e-01, 3.999999105929621e-01, 6.000001192092892e-01, 7.999998211857813e-01, 1e+00, 1.200000238418579e+00, 1.399999880790711e+00, 1.600000119209289e+00, 1.799999761581421e+00, 2e+00, 2.200000238418579e+00, 2.399999999999432e+00, 2.600000000000568e+00, 2.799999761581422e+00, 3e+00, 3.200000238418579e+00, 3.399999999999432e+00, 3.600000000000568e+00, 3.799999761581421e+00, 4e+00, 4.199999761581421e+00, 4.400000000000569e+00, 4.599999999999432e+00, 4.800000238418579e+00, 5e+00, 5.199999761581421e+00, 5.400000000000569e+00, 5.599999999999432e+00, 5.800000238418579e+00, 6e+00, 6.199999761581563e+00, 6.400000119209219e+00, 6.599999880790782e+00, 6.800000238418438e+00, 7e+00, 7.199999821186047e+00, 7.400000119209254e+00, 7.599999910593028e+00, 7.800000193715093e+00, 8e+00, 8.199999806284907e+00, 8.399999612569815e+00, 8.600000357627904e+00, 8.800000178813953e+00, 9e+00, 9.199999761581564e+00, 9.399999642372059e+00, 9.600000357627939e+00, 9.800000238418438e+00, 1e+01, 1.019999976158142e+01, 1.039999952316341e+01, 1.060000047683659e+01, 1.080000023841858e+01, 1.1e+01, 1.119999976158142e+01, 1.139999952316341e+01, 1.160000047683659e+01, 1.180000023841858e+01, 1.2e+01, 1.22e+01, 1.239999952316284e+01, 1.260000047683716e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.339999952316284e+01, 1.360000047683716e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.439999952316284e+01, 1.460000047683716e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.539999952316284e+01, 1.560000047683716e+01, 1.58e+01, 1.6e+01, 1.620000095366977e+01, 1.640000000000909e+01, 1.65999999999909e+01, 1.679999904633023e+01, 1.7e+01, 1.720000095366977e+01, 1.740000000000909e+01, 1.759999999999091e+01, 1.779999904633023e+01, 1.8e+01, 1.820000095366977e+01, 1.84000000000091e+01, 1.859999999999091e+01, 1.879999904633023e+01, 1.9e+01, 1.920000095366977e+01, 1.940000000000909e+01, 1.959999999999091e+01, 1.979999904633023e+01, 2e+01] +triggeredSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01] +samTri1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +triggeredSampler1.u=[0e+00, 2.000001937152378e-01, 3.999999105929621e-01, 6.000001192092892e-01, 7.999998211857813e-01, 1e+00, 1.200000238418579e+00, 1.399999880790711e+00, 1.600000119209289e+00, 1.799999761581421e+00, 2e+00, 2.200000238418579e+00, 2.399999999999432e+00, 2.600000000000568e+00, 2.799999761581422e+00, 3e+00, 3.200000238418579e+00, 3.399999999999432e+00, 3.600000000000568e+00, 3.799999761581421e+00, 4e+00, 4.199999761581421e+00, 4.400000000000569e+00, 4.599999999999432e+00, 4.800000238418579e+00, 5e+00, 5.199999761581421e+00, 5.400000000000569e+00, 5.599999999999432e+00, 5.800000238418579e+00, 6e+00, 6.199999761581563e+00, 6.400000119209219e+00, 6.599999880790782e+00, 6.800000238418438e+00, 7e+00, 7.199999821186047e+00, 7.400000119209254e+00, 7.599999910593028e+00, 7.800000193715093e+00, 8e+00, 8.199999806284907e+00, 8.399999612569815e+00, 8.600000357627904e+00, 8.800000178813953e+00, 9e+00, 9.199999761581564e+00, 9.399999642372059e+00, 9.600000357627939e+00, 9.800000238418438e+00, 1e+01, 1.019999976158142e+01, 1.039999952316341e+01, 1.060000047683659e+01, 1.080000023841858e+01, 1.1e+01, 1.119999976158142e+01, 1.139999952316341e+01, 1.160000047683659e+01, 1.180000023841858e+01, 1.2e+01, 1.22e+01, 1.239999952316284e+01, 1.260000047683716e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.339999952316284e+01, 1.360000047683716e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.439999952316284e+01, 1.460000047683716e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.539999952316284e+01, 1.560000047683716e+01, 1.58e+01, 1.6e+01, 1.620000095366977e+01, 1.640000000000909e+01, 1.65999999999909e+01, 1.679999904633023e+01, 1.7e+01, 1.720000095366977e+01, 1.740000000000909e+01, 1.759999999999091e+01, 1.779999904633023e+01, 1.8e+01, 1.820000095366977e+01, 1.84000000000091e+01, 1.859999999999091e+01, 1.879999904633023e+01, 1.9e+01, 1.920000095366977e+01, 1.940000000000909e+01, 1.959999999999091e+01, 1.979999904633023e+01, 2e+01] +triggeredSampler1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.799999952316284e+00, 2.800002336504624e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800000190734863e+00, 4.800002574915858e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 6.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800000190734863e+00, 8.800002574922964e+00, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.080000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.280000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.480000019073486e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.679999923706055e+01, 1.879999923706055e+01, 1.879999923706055e+01, 1.879999923706055e+01, 1.879999923706055e+01, 1.879999923706055e+01, 1.879999923706055e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerPositiveStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerPositiveStartTime.txt new file mode 100644 index 0000000000..35baf45aa9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_SampleTriggerPositiveStartTime.txt @@ -0,0 +1,14 @@ +last-generated=2023-03-23 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[1e+00, 6e+00] +samTri.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +triggeredSampler.u=[0e+00, 2.000001937152378e-01, 3.999999105929621e-01, 6.000001192092892e-01, 7.999998211857813e-01, 1e+00, 1.200000238418579e+00, 1.399999880790711e+00, 1.600000119209289e+00, 1.799999761581421e+00, 2e+00, 2.200000238418579e+00, 2.399999999999432e+00, 2.600000000000568e+00, 2.799999761581422e+00, 3e+00, 3.200000238418579e+00, 3.399999999999432e+00, 3.600000000000568e+00, 3.799999761581421e+00, 4e+00, 4.199999999999999e+00, 4.400000476837159e+00, 4.599999523162843e+00, 4.800000000000001e+00, 5e+00, 5.199999999999999e+00, 5.400000476837159e+00, 5.599999523162843e+00, 5.800000000000001e+00, 6e+00, 6.199999999999999e+00, 6.400000476837159e+00, 6.599999523162843e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.400000476837159e+00, 7.599999523162841e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.219999904634387e+01, 1.23999999999909e+01, 1.26000000000091e+01, 1.280000095365613e+01, 1.3e+01, 1.319999904634388e+01, 1.33999999999909e+01, 1.36000000000091e+01, 1.380000095365612e+01, 1.4e+01, 1.419999904634387e+01, 1.43999999999909e+01, 1.46000000000091e+01, 1.480000095365613e+01, 1.5e+01, 1.519999904634387e+01, 1.53999999999909e+01, 1.56000000000091e+01, 1.580000095365613e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] +triggeredSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01] +samTri1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +triggeredSampler1.u=[0e+00, 2.000001937152378e-01, 3.999999105929621e-01, 6.000001192092892e-01, 7.999998211857813e-01, 1e+00, 1.200000238418579e+00, 1.399999880790711e+00, 1.600000119209289e+00, 1.799999761581421e+00, 2e+00, 2.200000238418579e+00, 2.399999999999432e+00, 2.600000000000568e+00, 2.799999761581422e+00, 3e+00, 3.200000238418579e+00, 3.399999999999432e+00, 3.600000000000568e+00, 3.799999761581421e+00, 4e+00, 4.199999999999999e+00, 4.400000476837159e+00, 4.599999523162843e+00, 4.800000000000001e+00, 5e+00, 5.199999999999999e+00, 5.400000476837159e+00, 5.599999523162843e+00, 5.800000000000001e+00, 6e+00, 6.199999999999999e+00, 6.400000476837159e+00, 6.599999523162843e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.400000476837159e+00, 7.599999523162841e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.219999904634387e+01, 1.23999999999909e+01, 1.26000000000091e+01, 1.280000095365613e+01, 1.3e+01, 1.319999904634388e+01, 1.33999999999909e+01, 1.36000000000091e+01, 1.380000095365612e+01, 1.4e+01, 1.419999904634387e+01, 1.43999999999909e+01, 1.46000000000091e+01, 1.480000095365613e+01, 1.5e+01, 1.519999904634387e+01, 1.53999999999909e+01, 1.56000000000091e+01, 1.580000095365613e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] +triggeredSampler1.y=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1.999984741196144e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200009584435984e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200000047683716e+00, 3.200009584434802e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.199999809265137e+00, 5.20000934601736e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.199999809265137e+00, 7.200009346017449e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.199999809265137e+00, 9.200009346017449e+00, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.119999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.319999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.519999980926514e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.720000076293945e+01, 1.920000076293945e+01, 1.920000076293945e+01, 1.920000076293945e+01, 1.920000076293945e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTable.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTable.txt new file mode 100644 index 0000000000..21d0723b5c --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTable.txt @@ -0,0 +1,14 @@ +last-generated=2020-10-01 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1.5e+01] +booTimTab.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999872846334678e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTab.y[2]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999872846334678e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booTimTabTwi.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTabTwi.y[2]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTabOneRow.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTabOneRow.y[2]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTableNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTableNegativeStartTime.txt new file mode 100644 index 0000000000..4c6a48ba43 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Sources_Validation_TimeTableNegativeStartTime.txt @@ -0,0 +1,14 @@ +last-generated=2020-10-08 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-5e+00, 1e+01] +booTimTab.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTab.y[2]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.589452387992815e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booTimTabTwi.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTabTwi.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booTimTabOneRow.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +booTimTabOneRow.y[2]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_And.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_And.txt new file mode 100644 index 0000000000..eb4baaa32e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_And.txt @@ -0,0 +1,11 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +and1.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +and1.u1=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00] +and1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 1e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Change.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Change.txt new file mode 100644 index 0000000000..613eb00aae --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Change.txt @@ -0,0 +1,12 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +change.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +change.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] +triggeredSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01] +triggeredSampler.u=[0e+00, 2e-01, 4e-01, 6e-01, 8e-01, 1e+00, 1.2e+00, 1.4e+00, 1.6e+00, 1.8e+00, 2e+00, 2.2e+00, 2.4e+00, 2.6e+00, 2.8e+00, 3e+00, 3.2e+00, 3.4e+00, 3.6e+00, 3.8e+00, 4e+00, 4.2e+00, 4.4e+00, 4.600000000000001e+00, 4.8e+00, 5e+00, 5.2e+00, 5.4e+00, 5.600000000000001e+00, 5.8e+00, 6e+00, 6.2e+00, 6.4e+00, 6.600000000000001e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.4e+00, 7.6e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.22e+01, 1.24e+01, 1.26e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.34e+01, 1.36e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.44e+01, 1.46e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.54e+01, 1.56e+01, 1.58e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Edge.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Edge.txt new file mode 100644 index 0000000000..4b07fc9c8b --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Edge.txt @@ -0,0 +1,12 @@ +last-generated=2019-05-21 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +edge1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +edge1.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] +triggeredSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 8e+00, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01, 1.6e+01] +triggeredSampler.u=[0e+00, 2e-01, 4e-01, 6e-01, 8e-01, 1e+00, 1.2e+00, 1.4e+00, 1.6e+00, 1.8e+00, 2e+00, 2.2e+00, 2.4e+00, 2.6e+00, 2.8e+00, 3e+00, 3.2e+00, 3.4e+00, 3.6e+00, 3.8e+00, 4e+00, 4.2e+00, 4.4e+00, 4.600000000000001e+00, 4.8e+00, 5e+00, 5.2e+00, 5.4e+00, 5.600000000000001e+00, 5.8e+00, 6e+00, 6.2e+00, 6.4e+00, 6.600000000000001e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.4e+00, 7.6e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.22e+01, 1.24e+01, 1.26e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.34e+01, 1.36e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.44e+01, 1.46e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.54e+01, 1.56e+01, 1.58e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_FallingEdge.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_FallingEdge.txt new file mode 100644 index 0000000000..b84460d58a --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_FallingEdge.txt @@ -0,0 +1,12 @@ +last-generated=2019-05-21 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +falEdg.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falEdg.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] +triggeredSampler.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.4e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01, 1.8e+01] +triggeredSampler.u=[0e+00, 2e-01, 4e-01, 6e-01, 8e-01, 1e+00, 1.2e+00, 1.4e+00, 1.6e+00, 1.8e+00, 2e+00, 2.2e+00, 2.4e+00, 2.6e+00, 2.8e+00, 3e+00, 3.2e+00, 3.4e+00, 3.6e+00, 3.8e+00, 4e+00, 4.2e+00, 4.4e+00, 4.600000000000001e+00, 4.8e+00, 5e+00, 5.2e+00, 5.4e+00, 5.600000000000001e+00, 5.8e+00, 6e+00, 6.2e+00, 6.4e+00, 6.600000000000001e+00, 6.800000000000001e+00, 7e+00, 7.199999999999999e+00, 7.4e+00, 7.6e+00, 7.800000000000001e+00, 8e+00, 8.199999999999999e+00, 8.4e+00, 8.6e+00, 8.800000000000001e+00, 9e+00, 9.200000000000001e+00, 9.399999999999999e+00, 9.6e+00, 9.800000000000001e+00, 1e+01, 1.02e+01, 1.04e+01, 1.06e+01, 1.08e+01, 1.1e+01, 1.12e+01, 1.14e+01, 1.16e+01, 1.18e+01, 1.2e+01, 1.22e+01, 1.24e+01, 1.26e+01, 1.28e+01, 1.3e+01, 1.32e+01, 1.34e+01, 1.36e+01, 1.38e+01, 1.4e+01, 1.42e+01, 1.44e+01, 1.46e+01, 1.48e+01, 1.5e+01, 1.52e+01, 1.54e+01, 1.56e+01, 1.58e+01, 1.6e+01, 1.62e+01, 1.64e+01, 1.66e+01, 1.68e+01, 1.7e+01, 1.72e+01, 1.74e+01, 1.76e+01, 1.78e+01, 1.8e+01, 1.82e+01, 1.84e+01, 1.86e+01, 1.88e+01, 1.9e+01, 1.92e+01, 1.94e+01, 1.96e+01, 1.98e+01, 2e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Latch.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Latch.txt new file mode 100644 index 0000000000..f680d3394d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Latch.txt @@ -0,0 +1,26 @@ +last-generated=2020-10-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +falCleTruIni.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falCleTruIni.clr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falCleTruIni.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +falCleFalIni.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +falCleFalIni.clr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falCleFalIni.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleTruIni.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truCleTruIni.clr=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleTruIni.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truCleFalIni.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleFalIni.clr=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleFalIni.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp.clr=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp1.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp1.clr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +swiCleInp1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiAnd.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiAnd.txt new file mode 100644 index 0000000000..36a6688acd --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiAnd.txt @@ -0,0 +1,20 @@ +last-generated=2019-06-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +mulAnd0.y=[0e+00, 0e+00] +mulAnd1.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 1e+01] +mulAnd2.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd2.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd2.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd5.u[4]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +mulAnd5.u[5]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd5.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd5.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulAnd5.u[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +mulAnd5.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiOr.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiOr.txt new file mode 100644 index 0000000000..ed638eae9d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_MultiOr.txt @@ -0,0 +1,20 @@ +last-generated=2019-06-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +mulOr1.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr0.y=[0e+00, 0e+00] +time=[0e+00, 1e+01] +mulOr2.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr2.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr2.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr5.u[5]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr5.u[4]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +mulOr5.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +mulOr5.u[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +mulOr5.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +mulOr5.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nand.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nand.txt new file mode 100644 index 0000000000..8b39e81f29 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nand.txt @@ -0,0 +1,11 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +nand1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +nand1.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +nand1.u1=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nor.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nor.txt new file mode 100644 index 0000000000..e8fb5d1406 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Nor.txt @@ -0,0 +1,11 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +nor1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +nor1.u1=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +nor1.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Not.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Not.txt new file mode 100644 index 0000000000..4c8489f314 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Not.txt @@ -0,0 +1,10 @@ +last-generated=2019-05-21 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +not1.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +not1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Or.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Or.txt new file mode 100644 index 0000000000..c84b2a00a9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Or.txt @@ -0,0 +1,11 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +or1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +or1.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +or1.u1=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 1e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Proof.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Proof.txt new file mode 100644 index 0000000000..12d03b1595 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Proof.txt @@ -0,0 +1,32 @@ +last-generated=2023-04-12 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +pro.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro.yLocFal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro.yLocTru=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro1.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro1.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro1.yLocFal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro1.yLocTru=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro2.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro2.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro2.yLocFal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro2.yLocTru=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro3.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro3.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro3.yLocFal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro3.yLocTru=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro4.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro4.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro4.yLocFal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro4.yLocTru=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pro5.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +pro5.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +pro5.yLocFal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +pro5.yLocTru=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Switch.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Switch.txt new file mode 100644 index 0000000000..59d9815fa1 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Switch.txt @@ -0,0 +1,12 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +logicalSwitch.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999952316238661e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +logicalSwitch.u1=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999952316238661e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999952316238883e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +logicalSwitch.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +logicalSwitch.u3=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Timer.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Timer.txt new file mode 100644 index 0000000000..10e977f7b7 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Timer.txt @@ -0,0 +1,20 @@ +last-generated=2020-08-29 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+00] +noThr.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999976158119219e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +noThr.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 4.5e-01, 5e-01, 5.5e-01, 6e-01, 6.5e-01, 7.000000000000001e-01, 7.5e-01, 8e-01, 8.500000000000001e-01, 8.999999999999999e-01, 9.5e-01, 1e+00, 1.05e+00, 1.1e+00, 1.15e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.35e+00, 1.39999663829489e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842880923e-02, 1.000000968576189e-01, 1.499999105928906e-01, 1.999999552964455e-01, 2.5e-01, 3.00000059604645e-01, 3.50000089407251e-01, 3.999999105927485e-01, 4.499999403953554e-01, 5e-01, 5.500000596046446e-01, 6.000001192092896e-01, 6.499998807907108e-01, 6.999999403953554e-01, 7.5e-01, 8.00000059604645e-01, 8.500001192092892e-01, 8.999998807907104e-01, 9.49999940395355e-01, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.35000011920929e+00, 1.399999880790711e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.99998100145297e-02, 1.000000968553448e-01, 1.499999105951639e-01, 2.000001937105483e-01, 2.5e-01, 2.999998211900444e-01, 3.500000894049773e-01, 3.999999105950227e-01, 4.500001788099556e-01, 5e-01, 5.499998211906129e-01, 6.000001192070163e-01, 6.499998807929845e-01, 7.000001788093863e-01, 7.5e-01, 7.999998211906129e-01, 8.500001192070155e-01, 8.999998807929845e-01, 9.500001788093871e-01, 1e+00] +noThr.t=[0e+00, 0e+00] +noThr.passed=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999976158119219e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTim.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999976158119219e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTim.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 4.5e-01, 5e-01, 5.5e-01, 6e-01, 6.5e-01, 7.000000000000001e-01, 7.5e-01, 8e-01, 8.500000000000001e-01, 8.999999999999999e-01, 9.5e-01, 1e+00, 1.05e+00, 1.1e+00, 1.15e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.35e+00, 1.39999663829489e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842880923e-02, 1.000000968576189e-01, 1.499999105928906e-01, 1.999999552964455e-01, 2.5e-01, 3.00000059604645e-01, 3.50000089407251e-01, 3.999999105927485e-01, 4.499999403953554e-01, 5e-01, 5.500000596046446e-01, 6.000001192092896e-01, 6.499998807907108e-01, 6.999999403953554e-01, 7.5e-01, 8.00000059604645e-01, 8.500001192092892e-01, 8.999998807907104e-01, 9.49999940395355e-01, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.35000011920929e+00, 1.399999880790711e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.99998100145297e-02, 1.000000968553448e-01, 1.499999105951639e-01, 2.000001937105483e-01, 2.5e-01, 2.999998211900444e-01, 3.500000894049773e-01, 3.999999105950227e-01, 4.500001788099556e-01, 5e-01, 5.499998211906129e-01, 6.000001192070163e-01, 6.499998807929845e-01, 7.000001788093863e-01, 7.5e-01, 7.999998211906129e-01, 8.500001192070155e-01, 8.999998807929845e-01, 9.500001788093871e-01, 1e+00] +thrTim.t=[3.00000011920929e-01, 3.00000011920929e-01] +thrTim.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999976158119219e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTim1.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTim1.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842880945e-02, 9.999997764824053e-02, 1.500000298023225e-01, 1.999999552964453e-01, 2.5e-01, 3.000000596046448e-01, 3.499999701976777e-01, 4.000000298023225e-01, 4.499999403953552e-01, 5e-01, 5.500000596046448e-01, 5.99999999999858e-01, 6.500000000001422e-01, 6.999999403953554e-01, 7.5e-01, 8.000000596046446e-01, 8.49999999999858e-01, 9.00000000000142e-01, 9.499999403953554e-01, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.350000119209289e+00, 1.39999988079071e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842880923e-02, 1.000000968576189e-01, 1.499999105928906e-01, 1.999999552964455e-01, 2.5e-01, 3.00000059604645e-01, 3.500000894072515e-01, 3.99999910592749e-01, 4.49999940395355e-01, 5e-01, 5.500000596046446e-01, 6.000001192092892e-01, 6.499998807907104e-01, 6.999999403953554e-01, 7.5e-01, 8.000000596046446e-01, 8.500001192092896e-01, 8.999998807907108e-01, 9.499999403953554e-01, 1e+00, 1.049999761585969e+00, 1.100000119207015e+00, 1.149999880792984e+00, 1.200000238414032e+00, 1.25e+00, 1.299999761585968e+00, 1.350000119207015e+00, 1.399999880792985e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTim1.t=[3.00000011920929e-01, 3.00000011920929e-01] +thrTim1.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376133949992e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.768376156154474e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulating.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulating.txt new file mode 100644 index 0000000000..4f358e7cf9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulating.txt @@ -0,0 +1,22 @@ +last-generated=2020-08-27 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+00] +noThr.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +noThr.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 4.5e-01, 5e-01, 5.5e-01, 6e-01, 6.5e-01, 7.000000000000001e-01, 7.5e-01, 8e-01, 8.500000000000001e-01, 8.999999999999999e-01, 9.5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.350000119209289e+00, 1.39999988079071e+00, 1.45e+00, 1.5e+00, 1.55e+00, 1.60000011920929e+00, 1.649999880790711e+00, 1.7e+00, 1.75e+00, 1.8e+00, 1.850000119209289e+00, 1.89999988079071e+00, 1.95e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.049999761585969e+00, 2.099999999997726e+00, 2.150000000002273e+00, 2.200000238414032e+00, 2.25e+00, 2.299999761585968e+00, 2.349999999997726e+00, 2.400000000002274e+00, 2.450000238414032e+00, 2.5e+00, 2.549999761585968e+00, 2.599999999997727e+00, 2.650000000002274e+00, 2.700000238414031e+00, 2.75e+00, 2.799999761585968e+00, 2.849999999997726e+00, 2.900000000002274e+00, 2.950000238414032e+00, 3e+00] +thrTim.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTim.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTim.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 4.5e-01, 5e-01, 5.5e-01, 6e-01, 6.5e-01, 7.000000000000001e-01, 7.5e-01, 8e-01, 8.500000000000001e-01, 8.999999999999999e-01, 9.5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.350000119209289e+00, 1.39999988079071e+00, 1.45e+00, 1.5e+00, 1.55e+00, 1.60000011920929e+00, 1.649999880790711e+00, 1.7e+00, 1.75e+00, 1.8e+00, 1.850000119209289e+00, 1.89999988079071e+00, 1.95e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.049999761585969e+00, 2.099999999997726e+00, 2.150000000002273e+00, 2.200000238414032e+00, 2.25e+00, 2.299999761585968e+00, 2.349999999997726e+00, 2.400000000002274e+00, 2.450000238414032e+00, 2.5e+00, 2.549999761585968e+00, 2.599999999997727e+00, 2.650000000002274e+00, 2.700000238414031e+00, 2.75e+00, 2.799999761585968e+00, 2.849999999997726e+00, 2.900000000002274e+00, 2.950000238414032e+00, 3e+00] +thrTim.t=[1e+00, 1e+00] +noThrWitRes.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +noThrWitRes.reset=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +noThrWitRes.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 4.5e-01, 5e-01, 5.5e-01, 6e-01, 6.5e-01, 7.000000000000001e-01, 7.5e-01, 8e-01, 8.500000000000001e-01, 8.999999999999999e-01, 9.5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.350000119209289e+00, 1.39999988079071e+00, 1.45e+00, 1.5e+00, 1.55e+00, 1.60000011920929e+00, 1.649999880790711e+00, 1.7e+00, 1.75e+00, 1.8e+00, 1.850000119209289e+00, 1.89999988079071e+00, 1.95e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.99998100145297e-02, 1.000000968553448e-01, 1.499999105951639e-01, 2.000001937105483e-01, 2.5e-01, 2.999998211900444e-01, 3.500000894049773e-01, 3.999999105950227e-01, 4.500001788099556e-01, 5e-01, 5.499998211906129e-01, 6.000001192070163e-01, 6.499998807929845e-01, 7.000001788093863e-01, 7.5e-01, 7.999998211906129e-01, 8.500001192070155e-01, 8.999998807929845e-01, 9.500001788093871e-01, 1e+00] +thrTimWitRes.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTimWitRes.reset=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTimWitRes.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTimWitRes.y=[0e+00, 5e-02, 1e-01, 1.5e-01, 2e-01, 2.5e-01, 3e-01, 3.5e-01, 4e-01, 4.5e-01, 5e-01, 5.5e-01, 6e-01, 6.5e-01, 7.000000000000001e-01, 7.5e-01, 8e-01, 8.500000000000001e-01, 8.999999999999999e-01, 9.5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.350000119209289e+00, 1.39999988079071e+00, 1.45e+00, 1.5e+00, 1.55e+00, 1.60000011920929e+00, 1.649999880790711e+00, 1.7e+00, 1.75e+00, 1.8e+00, 1.850000119209289e+00, 1.89999988079071e+00, 1.95e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.99998100145297e-02, 1.000000968553448e-01, 1.499999105951639e-01, 2.000001937105483e-01, 2.5e-01, 2.999998211900444e-01, 3.500000894049773e-01, 3.999999105950227e-01, 4.500001788099556e-01, 5e-01, 5.499998211906129e-01, 6.000001192070163e-01, 6.499998807929845e-01, 7.000001788093863e-01, 7.5e-01, 7.999998211906129e-01, 8.500001192070155e-01, 8.999998807929845e-01, 9.500001788093871e-01, 1e+00] +thrTimWitRes.t=[1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulatingNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulatingNegativeStartTime.txt new file mode 100644 index 0000000000..a6d1df0b9d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerAccumulatingNegativeStartTime.txt @@ -0,0 +1,24 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-1e+01, 5e+00] +noThr.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +noThr.y=[0e+00, 1.500003874214756e-01, 2.999998211843611e-01, 4.500001788156389e-01, 5.999996423804679e-01, 7.5e-01, 9.000003576195321e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.149999880791469e+00, 1.299999761582937e+00, 1.450000238417063e+00, 1.600000119208531e+00, 1.75e+00, 1.899999880791469e+00, 2.049999761582937e+00, 2.200000238417064e+00, 2.35e+00, 2.5e+00, 2.65e+00, 2.799999761582936e+00, 2.950000238417064e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.05e+00, 3.199999999999999e+00, 3.35e+00, 3.5e+00, 3.65e+00, 3.800000000000001e+00, 3.95e+00, 4.099999880790901e+00, 4.25e+00, 4.400000119209101e+00, 4.55000023841801e+00, 4.699999761581989e+00, 4.849999880790899e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.099999880790899e+00, 5.25e+00, 5.400000119209101e+00, 5.550000238418011e+00, 5.69999976158199e+00, 5.849999880790901e+00, 6e+00, 6.15e+00, 6.300000238418199e+00, 6.449999761581799e+00, 6.6e+00, 6.75e+00, 6.9e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00] +noThr.t=[0e+00, 0e+00] +thrTim.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTim.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTim.y=[0e+00, 1.500003874214756e-01, 2.999998211843611e-01, 4.500001788156389e-01, 5.999996423804679e-01, 7.5e-01, 9.000003576195321e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.149999880791469e+00, 1.299999761582937e+00, 1.450000238417063e+00, 1.600000119208531e+00, 1.75e+00, 1.899999880791469e+00, 2.049999761582937e+00, 2.200000238417064e+00, 2.35e+00, 2.5e+00, 2.65e+00, 2.799999761582936e+00, 2.950000238417064e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3.05e+00, 3.199999999999999e+00, 3.35e+00, 3.5e+00, 3.65e+00, 3.800000000000001e+00, 3.95e+00, 4.099999880790901e+00, 4.25e+00, 4.400000119209101e+00, 4.55000023841801e+00, 4.699999761581989e+00, 4.849999880790899e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5.099999880790899e+00, 5.25e+00, 5.400000119209101e+00, 5.550000238418011e+00, 5.69999976158199e+00, 5.849999880790901e+00, 6e+00, 6.15e+00, 6.300000238418199e+00, 6.449999761581799e+00, 6.6e+00, 6.75e+00, 6.9e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00, 7e+00] +thrTim.t=[1e+00, 1e+00] +noThrWitRes.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +noThrWitRes.reset=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +noThrWitRes.y=[0e+00, 1.500003874214756e-01, 2.999998211843611e-01, 4.500001788156389e-01, 5.999996423804679e-01, 7.5e-01, 9.000003576195321e-01, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.499999105936727e-01, 2.999998211873918e-01, 4.500001788126082e-01, 6.000001192085312e-01, 7.5e-01, 8.999998807914688e-01, 1.049999761582938e+00, 1.200000238417063e+00, 1.350000119208531e+00, 1.5e+00, 1.649999880791469e+00, 1.799999761582937e+00, 1.950000238417063e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842881515e-02, 1.999999552964683e-01, 3.500000894063036e-01, 5e-01, 6.499998807914688e-01, 8.000000596046455e-01, 9.499999403953554e-01, 1.100000000000001e+00, 1.25e+00, 1.4e+00, 5.000004842862479e-02, 1.999999552966578e-01, 3.499999701976536e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.999999999999522e-01, 7.5e-01, 9.000000000000478e-01, 1.050000000000001e+00, 1.200000000000001e+00, 1.350000000000001e+00, 1.5e+00, 1.499999105936727e-01, 3.000000596046911e-01, 4.499999403953072e-01, 6.000001192085312e-01, 7.5e-01, 8.999998807914688e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +noThrWitRes.t=[0e+00, 0e+00] +thrTimWitRes.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTimWitRes.reset=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTimWitRes.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTimWitRes.y=[0e+00, 1.500003874214756e-01, 2.999998211843611e-01, 4.500001788156389e-01, 5.999996423804679e-01, 7.5e-01, 9.000003576195321e-01, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.499999105936727e-01, 2.999998211873918e-01, 4.500001788126082e-01, 6.000001192085312e-01, 7.5e-01, 8.999998807914688e-01, 1.049999761582938e+00, 1.200000238417063e+00, 1.350000119208531e+00, 1.5e+00, 1.649999880791469e+00, 1.799999761582937e+00, 1.950000238417063e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842881515e-02, 1.999999552964683e-01, 3.500000894063036e-01, 5e-01, 6.499998807914688e-01, 8.000000596046455e-01, 9.499999403953554e-01, 1.100000000000001e+00, 1.25e+00, 1.4e+00, 5.000004842862479e-02, 1.999999552966578e-01, 3.499999701976536e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.999999999999522e-01, 7.5e-01, 9.000000000000478e-01, 1.050000000000001e+00, 1.200000000000001e+00, 1.350000000000001e+00, 1.5e+00, 1.499999105936727e-01, 3.000000596046911e-01, 4.499999403953072e-01, 6.000001192085312e-01, 7.5e-01, 8.999998807914688e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +thrTimWitRes.t=[1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerNegativeStartTime.txt new file mode 100644 index 0000000000..ad4188a351 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TimerNegativeStartTime.txt @@ -0,0 +1,16 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-1e+01, 5e+00] +noThr.u=[1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999992052706332e-01, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00] +noThr.y=[0e+00, 1.500003874214756e-01, 2.999998211843611e-01, 0e+00, 0e+00, 0e+00, 0e+00, 4.999981000849017e-02, 2.000001937168001e-01, 3.499996125785244e-01, 5e-01, 6.500003576195321e-01, 7.999998211841716e-01, 9.500001788158284e-01, 1.100000119208531e+00, 1.25e+00, 1.399999880791469e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.499999105936727e-01, 2.999998211873918e-01, 4.500001788126082e-01, 6.000001192085312e-01, 7.5e-01, 8.999998807914688e-01, 1.049999761582938e+00, 1.200000238417063e+00, 1.350000119208531e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000968568614e-01, 2.5e-01, 3.999999105936955e-01, 5.499998211872024e-01, 7.000001788127976e-01, 8.500001192085321e-01, 1e+00, 1.149999880791468e+00, 1.300000000000189e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842881515e-02, 1.999999552964683e-01, 3.500000894063036e-01, 5e-01, 6.499998807914688e-01, 8.000000596046455e-01, 9.499999403953554e-01, 1.100000000000001e+00, 1.25e+00, 1.399998863537047e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.500000298022991e-01, 3.000000000000125e-01, 4.499999999999875e-01, 6.000000298023161e-01, 7.5e-01, 8.9999997764826e-01, 1.049999951571227e+00, 1.200000044703476e+00, 1.350000029802316e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999997764823416e-02, 2.5e-01, 4.000000298023464e-01, 5.50000059604456e-01, 6.999999403955458e-01, 8.49999999999954e-01, 1e+00, 1.149999880791469e+00, 1.300000000000188e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842881604e-02, 1.999999552964683e-01, 3.500000894063036e-01, 5e-01, 6.499998807914688e-01, 8.000000596046455e-01, 9.499999403953563e-01, 1.100000119208531e+00, 1.25e+00, 1.399999880791467e+00, 0e+00, 0e+00, 0e+00, 0e+00] +noThr.t=[0e+00, 0e+00] +noThr.passed=[1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999992052706332e-01, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTim.u=[1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999992052706332e-01, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTim.y=[0e+00, 1.500003874214756e-01, 2.999998211843611e-01, 0e+00, 0e+00, 0e+00, 0e+00, 4.999981000849017e-02, 2.000001937168001e-01, 3.499996125785244e-01, 5e-01, 6.500003576195321e-01, 7.999998211841716e-01, 9.500001788158284e-01, 1.100000119208531e+00, 1.25e+00, 1.399999880791469e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.499999105936727e-01, 2.999998211873918e-01, 4.500001788126082e-01, 6.000001192085312e-01, 7.5e-01, 8.999998807914688e-01, 1.049999761582938e+00, 1.200000238417063e+00, 1.350000119208531e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000968568614e-01, 2.5e-01, 3.999999105936955e-01, 5.499998211872024e-01, 7.000001788127976e-01, 8.500001192085321e-01, 1e+00, 1.149999880791468e+00, 1.300000000000189e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842881515e-02, 1.999999552964683e-01, 3.500000894063036e-01, 5e-01, 6.499998807914688e-01, 8.000000596046455e-01, 9.499999403953554e-01, 1.100000000000001e+00, 1.25e+00, 1.399998863537047e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.500000298022991e-01, 3.000000000000125e-01, 4.499999999999875e-01, 6.000000298023161e-01, 7.5e-01, 8.9999997764826e-01, 1.049999951571227e+00, 1.200000044703476e+00, 1.350000029802316e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.999997764823416e-02, 2.5e-01, 4.000000298023464e-01, 5.50000059604456e-01, 6.999999403955458e-01, 8.49999999999954e-01, 1e+00, 1.149999880791469e+00, 1.300000000000188e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004842881604e-02, 1.999999552964683e-01, 3.500000894063036e-01, 5e-01, 6.499998807914688e-01, 8.000000596046455e-01, 9.499999403953563e-01, 1.100000119208531e+00, 1.25e+00, 1.399999880791467e+00, 0e+00, 0e+00, 0e+00, 0e+00] +thrTim.t=[3.00000011920929e-01, 3.00000011920929e-01] +thrTim.passed=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999992052706332e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Toggle.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Toggle.txt new file mode 100644 index 0000000000..d5edae9d48 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Toggle.txt @@ -0,0 +1,26 @@ +last-generated=2020-10-14 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +falCleTruIni.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falCleTruIni.clr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falCleTruIni.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +falCleFalIni.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +falCleFalIni.clr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falCleFalIni.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleTruIni.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truCleTruIni.clr=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleTruIni.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truCleFalIni.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleFalIni.clr=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truCleFalIni.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp.clr=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp1.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +swiCleInp1.clr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +swiCleInp1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueDelay.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueDelay.txt new file mode 100644 index 0000000000..2525ae76f4 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueDelay.txt @@ -0,0 +1,26 @@ +last-generated=2019-02-11 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +onDelay4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay3.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay7.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay2.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay0.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +onDelay6.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] +onDelay1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay0.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +onDelay66.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay77.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay11.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay55.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay22.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay00.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +onDelay00.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +onDelay44.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onDelay33.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueFalseHold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueFalseHold.txt new file mode 100644 index 0000000000..1e8c5f9d0e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_TrueFalseHold.txt @@ -0,0 +1,26 @@ +last-generated=2024-08-26 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 7.2e+03] +truFalHol.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFalHol.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFalHol1.u=[1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00] +truFalHol1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truFalHol2.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truFalHol2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truFalHol3.u=[0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00] +truFalHol3.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFalHol4.u=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFalHol4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truFalHol5.u=[0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00] +truFalHol5.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00] +truFalHol6.u=[1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +truFalHol6.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFalHol7.u=[1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00] +truFalHol7.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00] +truFalHol8.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFalHol8.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulse.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulse.txt new file mode 100644 index 0000000000..4247cb8392 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulse.txt @@ -0,0 +1,22 @@ +last-generated=2023-03-29 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +fal.u=[0e+00, 0e+00] +fal.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +tru.u=[1e+00, 1e+00] +tru.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +conTru.u=[7.5e-01, 7.5e-01] +conTru.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFal.u=[6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +truFal.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falTru.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 6.499999761581421e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falTru.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +falTru1.u=[3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01] +falTru1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999999999997726e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +conChaWid.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.133333310484886e-02, 5.33333346247673e-02, 8.533333241939545e-02, 1.173333302140236e-01, 1.493333280086517e-01, 1.813333332538605e-01, 2.133333384990692e-01, 2.453333288431168e-01, 2.773333191871643e-01, 3.09333324432373e-01, 3.413333296775818e-01, 3.733333349227905e-01, 4.053333401679993e-01, 4.37333345413208e-01, 4.693333208560944e-01, 5.013333559036255e-01, 5.333333611488342e-01, 5.653333067893982e-01, 5.97333312034607e-01, 6.293333172798158e-01, 6.613333225250244e-01, 6.933333277702332e-01, 7.253333330154419e-01, 7.573333382606506e-01, 7.893333435058594e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] +conChaWid.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulseMinHold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulseMinHold.txt new file mode 100644 index 0000000000..96463eafb3 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_VariablePulseMinHold.txt @@ -0,0 +1,10 @@ +last-generated=2023-04-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+00] +conChaWid.u=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +conChaWid.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999809269502904e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Xor.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Xor.txt new file mode 100644 index 0000000000..042df9cce9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Logical_Validation_Xor.txt @@ -0,0 +1,11 @@ +last-generated=2018-06-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +xor1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +xor1.u1=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +xor1.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_DewPoint_TDryBulPhi.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_DewPoint_TDryBulPhi.txt new file mode 100644 index 0000000000..cf74e4c50e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_DewPoint_TDryBulPhi.txt @@ -0,0 +1,14 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +dewBulPhi.TDryBul=[3.025499877929688e+02, 3.025499877929688e+02] +dewBulPhi.phi=[1.000000047497451e-03, 1.100000016391277e-02, 2.100000016391277e-02, 3.100000016391215e-02, 4.100000202655792e-02, 5.099999830126763e-02, 6.100000202655792e-02, 7.100000202655682e-02, 8.100000202655126e-02, 9.099999457599064e-02, 1.010000020265579e-01, 1.110000020265557e-01, 1.210000020265579e-01, 1.310000020265579e-01, 1.410000020265579e-01, 1.509999871254411e-01, 1.610000020265579e-01, 1.710000020265579e-01, 1.8099998712545e-01, 1.910000020265579e-01, 2.010000020265579e-01, 2.110000020265579e-01, 2.210000020265579e-01, 2.310000020265579e-01, 2.410000020265579e-01, 2.509999871253967e-01, 2.610000169277191e-01, 2.709999871253967e-01, 2.809999871254145e-01, 2.910000169277191e-01, 3.009999871253967e-01, 3.109999871253967e-01, 3.210000169277191e-01, 3.309999871253967e-01, 3.409999871253968e-01, 3.510000169276303e-01, 3.609999871253967e-01, 3.709999871253967e-01, 3.810000169276481e-01, 3.910000169277191e-01, 4.009999871253968e-01, 4.110000169276658e-01, 4.210000169277191e-01, 4.309999871253967e-01, 4.410000169276836e-01, 4.510000169277191e-01, 4.609999871253967e-01, 4.709999871253967e-01, 4.810000169277191e-01, 4.909999871253967e-01, 5.009999871253967e-01, 5.109999871253967e-01, 5.210000467294731e-01, 5.310000467291889e-01, 5.409999871253968e-01, 5.50999987125752e-01, 5.609999871253968e-01, 5.709999871253967e-01, 5.809999871253967e-01, 5.910000467292599e-01, 6.009999871253967e-01, 6.10999987125823e-01, 6.209999871255388e-01, 6.309999871253967e-01, 6.409999871253967e-01, 6.51000046729331e-01, 6.609999871253968e-01, 6.709999871258941e-01, 6.809999871256099e-01, 6.909999871254677e-01, 7.009999871253967e-01, 7.11000046729402e-01, 7.209999871253967e-01, 7.309999871253967e-01, 7.409999871256809e-01, 7.509999871253967e-01, 7.609999871253967e-01, 7.710000467294731e-01, 7.810000467291889e-01, 7.909999871253968e-01, 8.00999987125752e-01, 8.109999871253968e-01, 8.209999871253967e-01, 8.309999871253967e-01, 8.410000467292599e-01, 8.509999871253967e-01, 8.60999987125823e-01, 8.709999871255388e-01, 8.809999871253967e-01, 8.909999871253967e-01, 9.01000046729331e-01, 9.109999871253968e-01, 9.209999871258941e-01, 9.309999871256099e-01, 9.409999871254677e-01, 9.509999871253967e-01, 9.61000046729402e-01, 9.709999871253967e-01, 9.809999871253967e-01, 9.909999871256809e-01, 1.001000046730042e+00] +dewBulPhi.TDewPoi=[2.065773162841797e+02, 2.392031557548283e+02, 2.474015963270481e+02, 2.523485110096366e+02, 2.559273379205333e+02, 2.587463376973915e+02, 2.610800173733468e+02, 2.630761718188159e+02, 2.648235476538915e+02, 2.663796991741048e+02, 2.677841184510048e+02, 2.690651245842417e+02, 2.702437136804986e+02, 2.713358159284534e+02, 2.723539733296003e+02, 2.733081049140503e+02, 2.742061770680951e+02, 2.750548704569849e+02, 2.758595880592341e+02, 2.766249696597002e+02, 2.773549192200448e+02, 2.780527653382751e+02, 2.787213745894622e+02, 2.793632809864289e+02, 2.799806826967808e+02, 2.805754699707031e+02, 2.811493840810134e+02, 2.817039483875499e+02, 2.82240478452488e+02, 2.827601932968819e+02, 2.832642205978712e+02, 2.837535399237388e+02, 2.842290347582305e+02, 2.846914972028692e+02, 2.851417234734694e+02, 2.855803530405896e+02, 2.860080255173247e+02, 2.864252927717175e+02, 2.868327333458724e+02, 2.872308050049894e+02, 2.876199643696896e+02, 2.880006104859673e+02, 2.883731999451037e+02, 2.88738006333028e+02, 2.890954285510159e+02, 2.894457706765816e+02, 2.897893368737501e+02, 2.901264038483204e+02, 2.904572147064602e+02, 2.907820126319718e+02, 2.911010437011719e+02, 2.914145510770854e+02, 2.917226873493539e+02, 2.920256661414605e+02, 2.923236687984134e+02, 2.926168819769795e+02, 2.92905486992152e+02, 2.931895753966712e+02, 2.934693608142692e+02, 2.937449347983372e+02, 2.9401647884864e+02, 2.942840877540939e+02, 2.945478819550065e+02, 2.948079835213991e+02, 2.950645145240208e+02, 2.95317535998828e+02, 2.955672295731312e+02, 2.958135982238379e+02, 2.960568235573767e+02, 2.962969360919458e+02, 2.965340273800928e+02, 2.967681889752118e+02, 2.969994805424178e+02, 2.972279963925321e+02, 2.974537961725182e+02, 2.976769714355469e+02, 2.97897583216629e+02, 2.981156620340701e+02, 2.983312994406048e+02, 2.985445246910535e+02, 2.987554318786176e+02, 2.989640502434552e+02, 2.991704713380871e+02, 2.993746951629088e+02, 2.995767827535876e+02, 2.997768244760599e+02, 2.999747921984574e+02, 3.00170806791635e+02, 3.003648377385237e+02, 3.005570071092179e+02, 3.007472843866486e+02, 3.009357294882586e+02, 3.011224056956905e+02, 3.013073423974587e+02, 3.014905395942193e+02, 3.016720583206516e+02, 3.018519290949924e+02, 3.020301813766213e+02, 3.022068783262569e+02, 3.023819883589196e+02, 3.025555725097656e+02] +dewBulPhi1.TDryBul=[2.751499938964844e+02, 2.755000000078239e+02, 2.758500061191635e+02, 2.762000122304928e+02, 2.765499878242645e+02, 2.768999938704046e+02, 2.772500000469436e+02, 2.776000060930837e+02, 2.779500122695953e+02, 2.782999876678407e+02, 2.78649993844325e+02, 2.790000000208638e+02, 2.793500061974026e+02, 2.797000123738686e+02, 2.800499877721141e+02, 2.803999936878467e+02, 2.807500001251826e+02, 2.811000060409243e+02, 2.814500119566661e+02, 2.817999878764238e+02, 2.821499937921656e+02, 2.825000002295014e+02, 2.828500061452432e+02, 2.832000120609849e+02, 2.835499879807426e+02, 2.838999938964844e+02, 2.842500003338203e+02, 2.846000057279678e+02, 2.849500121653037e+02, 2.852999880850615e+02, 2.856499934792091e+02, 2.859999999165449e+02, 2.863500063538808e+02, 2.867000117480284e+02, 2.870499876678407e+02, 2.873999941051221e+02, 2.877499994992696e+02, 2.881000059366055e+02, 2.884500123738686e+02, 2.887999882936991e+02, 2.891499936878467e+02, 2.895000001251826e+02, 2.898500065625185e+02, 2.902000119566661e+02, 2.905499878764238e+02, 2.908999943137597e+02, 2.912499997079073e+02, 2.916000061452431e+02, 2.919500125824154e+02, 2.92299987459294e+02, 2.926499938964844e+02, 2.930000003338153e+02, 2.933500067711462e+02, 2.937000132080406e+02, 2.940499870422118e+02, 2.943999934792153e+02, 2.947499999165437e+02, 2.951000063538771e+02, 2.954500127909533e+02, 2.957999887109608e+02, 2.961499930619462e+02, 2.964999994992771e+02, 2.96850005936608e+02, 2.972000123738661e+02, 2.975499882936917e+02, 2.978999947310226e+02, 2.982499990820079e+02, 2.986000055193389e+02, 2.989500119566698e+02, 2.992999878764251e+02, 2.996499943137535e+02, 3.000000007510844e+02, 3.003500051020698e+02, 3.007000115394007e+02, 3.01049987459299e+02, 3.013999938964844e+02, 3.017500003338153e+02, 3.021000067711462e+02, 3.024500132080406e+02, 3.027999870422118e+02, 3.031499934792153e+02, 3.034999999165437e+02, 3.038500063538771e+02, 3.042000127909533e+02, 3.045499887109608e+02, 3.048999930619462e+02, 3.052499994992771e+02, 3.05600005936608e+02, 3.059500123738661e+02, 3.062999882936917e+02, 3.066499947310226e+02, 3.069999990820079e+02, 3.073500055193389e+02, 3.077000119566698e+02, 3.080499878764251e+02, 3.083999943137535e+02, 3.087500007510844e+02, 3.091000051020698e+02, 3.094500115394007e+02, 3.09799987459299e+02, 3.101499938964844e+02] +dewBulPhi1.phi=[4.000000059604645e-01, 4.000000059604645e-01] +dewBulPhi1.TDewPoi=[2.626684875488281e+02, 2.629984741284641e+02, 2.633280029444009e+02, 2.636570434790808e+02, 2.639856567676397e+02, 2.643138122314281e+02, 2.646415405712587e+02, 2.64968811025411e+02, 2.652956848728699e+02, 2.656221617485101e+02, 2.65948211621355e+02, 2.662738647654841e+02, 2.665991211809249e+02, 2.669239808677227e+02, 2.672485046193361e+02, 2.675726316427612e+02, 2.678963929380077e+02, 2.682198180574179e+02, 2.685428769663272e+02, 2.688656006628442e+02, 2.691880187027857e+02, 2.695100710118745e+02, 2.698318176652792e+02, 2.701532591432663e+02, 2.704743654065147e+02, 2.707951965332031e+02, 2.711157229616941e+02, 2.714359432600547e+02, 2.717558898544522e+02, 2.720755617900644e+02, 2.723949581153801e+02, 2.727140807344769e+02, 2.730329286947886e+02, 2.733515315648373e+02, 2.736698912435897e+02, 2.73987976263757e+02, 2.743058467132951e+02, 2.746234739696814e+02, 2.749408570848606e+02, 2.752580265766292e+02, 2.755749815005515e+02, 2.758916932284662e+02, 2.762081913329521e+02, 2.765245053889889e+02, 2.768405762472174e+02, 2.771564945169732e+02, 2.774721677054336e+02, 2.777876892465828e+02, 2.781029971643941e+02, 2.784181515549723e+02, 2.787330932617188e+02, 2.79047851862701e+02, 2.793624578755014e+02, 2.796769112996838e+02, 2.799911797457794e+02, 2.803052974770389e+02, 2.806192321029002e+02, 2.809330446578713e+02, 2.812466741072988e+02, 2.815601814860135e+02, 2.818735344090218e+02, 2.821867366126465e+02, 2.824998167452311e+02, 2.828127442897796e+02, 2.831255497636518e+02, 2.834382331669204e+02, 2.837507621199031e+02, 2.840632013830197e+02, 2.843755185754237e+02, 2.846876831799028e+02, 2.84999756231352e+02, 2.853117377297781e+02, 2.856235952990979e+02, 2.859353326573719e+02, 2.862469784624751e+02, 2.865585021972656e+02, 2.868699343790308e+02, 2.871812750077706e+02, 2.87492524083485e+02, 2.878036797523277e+02, 2.881147457228643e+02, 2.884257201407008e+02, 2.887366030055163e+02, 2.890473943173041e+02, 2.893581245940448e+02, 2.896687614663513e+02, 2.899793086378415e+02, 2.902897947738118e+02, 2.906001893569749e+02, 2.909105229049089e+02, 2.91220795417323e+02, 2.915309745286496e+02, 2.918411249705692e+02, 2.921511838602638e+02, 2.924611817145133e+02, 2.92771118533493e+02, 2.930809943169912e+02, 2.93390776701694e+02, 2.937005609326397e+02, 2.940102536108511e+02, 2.943198852539062e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_SpecificEnthalpy_TDryBulPhi.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_SpecificEnthalpy_TDryBulPhi.txt new file mode 100644 index 0000000000..0892662108 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_SpecificEnthalpy_TDryBulPhi.txt @@ -0,0 +1,10 @@ +last-generated=2017-04-09 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +hBulPhi.h=[2.9640759765625e+04, 3.028464845189919e+04, 3.092906057569652e+04, 3.157399418389194e+04, 3.221945122961146e+04, 3.286542963935572e+04, 3.351193368049744e+04, 3.415896482446053e+04, 3.480651964709815e+04, 3.545460133065703e+04, 3.610321084081727e+04, 3.675234769496034e+04, 3.740201189308799e+04, 3.805220343519498e+04, 3.870292964870118e+04, 3.935417929919748e+04, 4.000596507696201e+04, 4.065828113331716e+04, 4.131112843914145e+04, 4.196450796835186e+04, 4.261842168005712e+04, 4.327286761680973e+04, 4.392785164061685e+04, 4.458336691391174e+04, 4.523942222711256e+04, 4.589601171875e+04, 4.655314125200234e+04, 4.721080788791137e+04, 4.786901164026062e+04, 4.852775445622979e+04, 4.918703827632564e+04, 4.984686312388474e+04, 5.050723094130677e+04, 5.116813585183247e+04, 5.182958960711538e+04, 5.24915824260252e+04, 5.315412014567485e+04, 5.381720280871418e+04, 5.448083234784316e+04, 5.514500485683971e+04, 5.580972616616484e+04, 5.647499242553858e+04, 5.714080946727526e+04, 5.780717530447435e+04, 5.847409000283355e+04, 5.914155548356964e+04, 5.98095697548764e+04, 6.047813679848735e+04, 6.114725462449383e+04, 6.181692514238264e+04, 6.24871484375e+04, 6.315793032751267e+04, 6.382926299985565e+04, 6.450115426697307e+04, 6.517359621291071e+04, 6.584660075994636e+04, 6.65201639018541e+04, 6.71942817323983e+04, 6.786896206400871e+04, 6.854419708426464e+04, 6.921999057578044e+04, 6.989635059468597e+04, 7.057327311461593e+04, 7.125075813570071e+04, 7.192880565788444e+04, 7.260741568120437e+04, 7.328658415579832e+04, 7.396632699021196e+04, 7.464663232577112e+04, 7.532750797491542e+04, 7.600895393770488e+04, 7.669096240162606e+04, 7.737353710899083e+04, 7.805667838411749e+04, 7.874039778524997e+04, 7.94246875e+04, 8.010954752847936e+04, 8.07949856830018e+04, 8.148098633867904e+04, 8.216756883873492e+04, 8.28547179305897e+04, 8.354245296097336e+04, 8.423075830504023e+04, 8.491964177523841e+04, 8.560910337155416e+04, 8.629913897928773e+04, 8.698975682423447e+04, 8.768095279529877e+04, 8.837272689253651e+04, 8.906508692839181e+04, 8.975802509047645e+04, 9.045154505559902e+04, 9.11456550912215e+04, 9.184034325296155e+04, 9.253562516585205e+04, 9.323148520493406e+04, 9.392793118263858e+04, 9.462495894264081e+04, 9.53225846064763e+04, 9.602079620889212e+04, 9.671959375e+04] +time=[0e+00, 1e+00] +phi.y=[1.000000047497451e-03, 1.100000016391277e-02, 2.100000016391277e-02, 3.100000016391215e-02, 4.100000202655792e-02, 5.099999830126763e-02, 6.100000202655792e-02, 7.100000202655682e-02, 8.100000202655126e-02, 9.099999457599064e-02, 1.010000020265579e-01, 1.110000020265557e-01, 1.210000020265579e-01, 1.310000020265579e-01, 1.410000020265579e-01, 1.509999871254411e-01, 1.610000020265579e-01, 1.710000020265579e-01, 1.8099998712545e-01, 1.910000020265579e-01, 2.010000020265579e-01, 2.110000020265579e-01, 2.210000020265579e-01, 2.310000020265579e-01, 2.410000020265579e-01, 2.509999871253967e-01, 2.610000169277191e-01, 2.709999871253967e-01, 2.809999871254145e-01, 2.910000169277191e-01, 3.009999871253967e-01, 3.109999871253967e-01, 3.210000169277191e-01, 3.309999871253967e-01, 3.409999871253968e-01, 3.510000169276303e-01, 3.609999871253967e-01, 3.709999871253967e-01, 3.810000169276481e-01, 3.910000169277191e-01, 4.009999871253968e-01, 4.110000169276658e-01, 4.210000169277191e-01, 4.309999871253967e-01, 4.410000169276836e-01, 4.510000169277191e-01, 4.609999871253967e-01, 4.709999871253967e-01, 4.810000169277191e-01, 4.909999871253967e-01, 5.009999871253967e-01, 5.109999871253967e-01, 5.210000467294731e-01, 5.310000467291889e-01, 5.409999871253968e-01, 5.50999987125752e-01, 5.609999871253968e-01, 5.709999871253967e-01, 5.809999871253967e-01, 5.910000467292599e-01, 6.009999871253967e-01, 6.10999987125823e-01, 6.209999871255388e-01, 6.309999871253967e-01, 6.409999871253967e-01, 6.51000046729331e-01, 6.609999871253968e-01, 6.709999871258941e-01, 6.809999871256099e-01, 6.909999871254677e-01, 7.009999871253967e-01, 7.11000046729402e-01, 7.209999871253967e-01, 7.309999871253967e-01, 7.409999871256809e-01, 7.509999871253967e-01, 7.609999871253967e-01, 7.710000467294731e-01, 7.810000467291889e-01, 7.909999871253968e-01, 8.00999987125752e-01, 8.109999871253968e-01, 8.209999871253967e-01, 8.309999871253967e-01, 8.410000467292599e-01, 8.509999871253967e-01, 8.60999987125823e-01, 8.709999871255388e-01, 8.809999871253967e-01, 8.909999871253967e-01, 9.01000046729331e-01, 9.109999871253968e-01, 9.209999871258941e-01, 9.309999871256099e-01, 9.409999871254677e-01, 9.509999871253967e-01, 9.61000046729402e-01, 9.709999871253967e-01, 9.809999871253967e-01, 9.909999871256809e-01, 1.001000046730042e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_WetBulb_TDryBulPhi.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_WetBulb_TDryBulPhi.txt new file mode 100644 index 0000000000..fab40fa8bb --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Psychrometrics_Validation_WetBulb_TDryBulPhi.txt @@ -0,0 +1,14 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +wetBulPhi.TDryBul=[3.025499877929688e+02, 3.025499877929688e+02] +wetBulPhi.phi=[5.000000074505806e-02, 5.950000158324819e-02, 6.899999869614885e-02, 7.850000325962661e-02, 8.800000037252995e-02, 9.749999571591818e-02, 1.07000002048911e-01, 1.164999973922971e-01, 1.26000003725289e-01, 1.354999955296543e-01, 1.449999944120657e-01, 1.54499993294477e-01, 1.640000070780496e-01, 1.735000059604609e-01, 1.829999977648263e-01, 1.924999895691916e-01, 2.020000104307835e-01, 2.115000022351755e-01, 2.209999940395408e-01, 2.304999999999982e-01, 2.399999918043858e-01, 2.495000126659333e-01, 2.590000044703386e-01, 2.684999962747439e-01, 2.780000022352102e-01, 2.874999940395355e-01, 2.970000000000639e-01, 3.064999776483461e-01, 3.160000134110371e-01, 3.255000193714411e-01, 3.349999970196878e-01, 3.445000029802163e-01, 3.540000089406381e-01, 3.634999865890624e-01, 3.729999925494487e-01, 3.824999985099238e-01, 3.919999761582593e-01, 4.014999821186456e-01, 4.110000178813544e-01, 4.205000238417407e-01, 4.300000014900762e-01, 4.395000074505513e-01, 4.490000134109376e-01, 4.584999910593619e-01, 4.679999970197837e-01, 4.775000029803122e-01, 4.869999806285589e-01, 4.964999865889629e-01, 5.059999925494914e-01, 5.15499999999936e-01, 5.249999761581421e-01, 5.345000119208579e-01, 5.440000476830054e-01, 5.535000238416448e-01, 5.630000029803921e-01, 5.724999791384632e-01, 5.820000149011115e-01, 5.9149999105925e-01, 6.010000268219657e-01, 6.105000029800368e-01, 6.199999821187842e-01, 6.294999582772816e-01, 6.389999940395711e-01, 6.485000298021447e-01, 6.580000059603579e-01, 6.675000417223632e-01, 6.769999612579579e-01, 6.864999970198922e-01, 6.959999731781763e-01, 7.055000089407464e-01, 7.1499998509875e-01, 7.245000208614658e-01, 7.340000000002131e-01, 7.434999761582842e-01, 7.53000011921e-01, 7.62499988079071e-01, 7.720000238415027e-01, 7.814999999998579e-01, 7.910000357625737e-01, 8.004999552973158e-01, 8.099999910593921e-01, 8.195000268220405e-01, 8.29000002980179e-01, 8.385000387423973e-01, 8.480000149009658e-01, 8.574999940397131e-01, 8.669999701982105e-01, 8.765000059605e-01, 8.85999982118571e-01, 8.955000178812869e-01, 9.049999940393579e-01, 9.144999731781053e-01, 9.240000089408211e-01, 9.334999850988921e-01, 9.430000208616043e-01, 9.524999970196789e-01, 9.620000327823948e-01, 9.7149995231735e-01, 9.809999880792132e-01, 9.904999642375684e-01, 1e+00] +wetBulPhi.TWetBul=[2.836178894042969e+02, 2.839925842369466e+02, 2.843685913252648e+02, 2.847383423096001e+02, 2.850988769848027e+02, 2.854490966539033e+02, 2.857888184041085e+02, 2.861182556055392e+02, 2.864378052318788e+02, 2.867478941775337e+02, 2.870491027388199e+02, 2.873418579273184e+02, 2.876267395771363e+02, 2.879041444173487e+02, 2.881745605309134e+02, 2.884383543364823e+02, 2.886959839775225e+02, 2.889477233440613e+02, 2.89194000069518e+02, 2.894350586505387e+02, 2.896712340610558e+02, 2.899027711461601e+02, 2.901299133568536e+02, 2.903529356986384e+02, 2.905719910831119e+02, 2.90787353515625e+02, 2.909992067429117e+02, 2.912076718968242e+02, 2.914129638428495e+02, 2.916152040247322e+02, 2.918145749590262e+02, 2.920112304221112e+02, 2.922052308506242e+02, 2.923967587832927e+02, 2.92585906915083e+02, 2.927727662238756e+02, 2.929574582332867e+02, 2.931401061144426e+02, 2.933207398316588e+02, 2.934994814554661e+02, 2.936764220140942e+02, 2.938516235974201e+02, 2.94025146710675e+02, 2.94197082396968e+02, 2.94367462198621e+02, 2.945364076711554e+02, 2.947039183177333e+02, 2.948701172071996e+02, 2.950349733206818e+02, 2.951986082428779e+02, 2.953610534667969e+02, 2.955223085028384e+02, 2.956824954213174e+02, 2.958416142226702e+02, 2.959996944860016e+02, 2.961567991295992e+02, 2.963129577265277e+02, 2.964682007942592e+02, 2.966225893680196e+02, 2.967761234482464e+02, 2.969288631619627e+02, 2.970808103299096e+02, 2.972319945569482e+02, 2.973824768781621e+02, 2.975322572935511e+02, 2.9768136632113e+02, 2.97829803078231e+02, 2.979776608865619e+02, 2.981249083421662e+02, 2.98271575962623e+02, 2.984176942656893e+02, 2.98563293768728e+02, 2.987083736087149e+02, 2.988529660329851e+02, 2.989970701752778e+02, 2.991407165527344e+02, 2.992839356832241e+02, 2.994267275670381e+02, 2.995691227213178e+02, 2.997111203013025e+02, 2.998527525169294e+02, 2.999940490386139e+02, 3.001349488312027e+02, 3.002755739647506e+02, 3.004158328868882e+02, 3.005558163167936e+02, 3.006954954057471e+02, 3.008348998359154e+02, 3.009740296072985e+02, 3.011129152374745e+02, 3.012515567268073e+02, 3.013899532507264e+02, 3.015281369765692e+02, 3.01666107079074e+02, 3.018038635582056e+02, 3.019414369314663e+02, 3.020788271986407e+02, 3.022160335430884e+02, 3.023530576002712e+02, 3.024899595862684e+02, 3.026266784667969e+02] +wetBulPhi1.TDryBul=[2.731499938964844e+02, 2.735499878019114e+02, 2.739500122249096e+02, 2.743500061303332e+02, 2.747500000357568e+02, 2.751499938666871e+02, 2.755499878466244e+02, 2.759500121951078e+02, 2.76350006175029e+02, 2.767499998569731e+02, 2.771499938368898e+02, 2.775499878168156e+02, 2.779500123143014e+02, 2.783500062942181e+02, 2.787499999761622e+02, 2.791499936581063e+02, 2.795499879360502e+02, 2.799500121354906e+02, 2.803500058173528e+02, 2.807500000953513e+02, 2.811499937772953e+02, 2.815499880552847e+02, 2.819500122547068e+02, 2.823500059365873e+02, 2.827500002145403e+02, 2.831499938964844e+02, 2.835499881745192e+02, 2.83950011777787e+02, 2.843500060558218e+02, 2.847500003337293e+02, 2.851499934197282e+02, 2.855499876976175e+02, 2.85950012493085e+02, 2.863500055788838e+02, 2.867499998569731e+02, 2.871499941349534e+02, 2.875499872208613e+02, 2.87950012016256e+02, 2.883500062942181e+02, 2.887500005721074e+02, 2.891499936581063e+02, 2.895499879360502e+02, 2.89950012731463e+02, 2.903500058173528e+02, 2.907500000953513e+02, 2.911499943734224e+02, 2.915499874592394e+02, 2.919500122547068e+02, 2.923500065325962e+02, 2.927499996185951e+02, 2.931499938964844e+02, 2.935499881745135e+02, 2.939500129698297e+02, 2.943500072477133e+02, 2.947499991418517e+02, 2.951499934197353e+02, 2.955499876976161e+02, 2.959500124930807e+02, 2.963500067709643e+02, 2.967500010488479e+02, 2.971499929429863e+02, 2.975499872208699e+02, 2.979500120162589e+02, 2.983500062942152e+02, 2.987500005720989e+02, 2.991499948503463e+02, 2.995499867441208e+02, 2.999500115393279e+02, 3.00350005817357e+02, 3.007500000953527e+02, 3.011499943734153e+02, 3.015499886514444e+02, 3.01950011062397e+02, 3.023500053404261e+02, 3.027499996186008e+02, 3.031499938964844e+02, 3.035499881745135e+02, 3.039500129698297e+02, 3.043500072477133e+02, 3.047499991418517e+02, 3.051499934197353e+02, 3.055499876976161e+02, 3.059500124930807e+02, 3.063500067709643e+02, 3.067500010488479e+02, 3.071499929429863e+02, 3.075499872208699e+02, 3.079500120162589e+02, 3.083500062942152e+02, 3.087500005720989e+02, 3.091499948503463e+02, 3.095499867441208e+02, 3.099500115393279e+02, 3.10350005817357e+02, 3.107500000953527e+02, 3.111499943734153e+02, 3.115499886514444e+02, 3.11950011062397e+02, 3.123500053404261e+02, 3.127499996186008e+02, 3.131499938964844e+02] +wetBulPhi1.phi=[6.000000238418579e-01, 6.000000238418579e-01] +wetBulPhi1.TWetBul=[2.701868591308594e+02, 2.705463256916291e+02, 2.70905822769977e+02, 2.712652893307468e+02, 2.716247864090947e+02, 2.719842529029029e+02, 2.723437500482123e+02, 2.727032165420205e+02, 2.730626831697517e+02, 2.734221800472154e+02, 2.737816466749465e+02, 2.741411133026776e+02, 2.745005799304088e+02, 2.7486004655814e+02, 2.752195129180255e+02, 2.75578979277911e+02, 2.759384461734878e+02, 2.762979125333733e+02, 2.766573788932588e+02, 2.770168457888356e+02, 2.773763121487211e+02, 2.777357790441979e+02, 2.780952148866053e+02, 2.784546812464908e+02, 2.788141481420676e+02, 2.791736145019531e+02, 2.795330508799518e+02, 2.79892516704146e+02, 2.802519530821629e+02, 2.806114199777215e+02, 2.809708858019157e+02, 2.813303221799144e+02, 2.816897890753821e+02, 2.820492243821073e+02, 2.824086607601606e+02, 2.827681276556827e+02, 2.831275629625171e+02, 2.834870298578757e+02, 2.838464662358743e+02, 2.84205902613873e+02, 2.845653379205801e+02, 2.849248048160113e+02, 2.852842411940646e+02, 2.856436765007898e+02, 2.860031128786794e+02, 2.863625492566781e+02, 2.867220150808723e+02, 2.870814514588527e+02, 2.874408878367059e+02, 2.878003231434857e+02, 2.881597595214844e+02, 2.885191958994779e+02, 2.888786322774715e+02, 2.892380686554651e+02, 2.895975028907254e+02, 2.89956939268719e+02, 2.9031637564671e+02, 2.90675812024597e+02, 2.91035248402445e+02, 2.913946847802931e+02, 2.917540884987392e+02, 2.921135248765873e+02, 2.924729612544353e+02, 2.928323976322834e+02, 2.931918340101315e+02, 2.935512398707652e+02, 2.939106741064257e+02, 2.942701104840191e+02, 2.946295468620127e+02, 2.949889527224306e+02, 2.953483891004216e+02, 2.957078254780878e+02, 2.96067229196534e+02, 2.96426665574382e+02, 2.967861019520846e+02, 2.971455078125e+02, 2.975049441903481e+02, 2.978643805681961e+02, 2.982237864289026e+02, 2.985832206641629e+02, 2.989426265247603e+02, 2.993020629025694e+02, 2.996614687629873e+02, 3.000209051407263e+02, 3.003803110013964e+02, 3.007397452366567e+02, 3.010991510972904e+02, 3.014585874750657e+02, 3.018179933354812e+02, 3.021774297132565e+02, 3.025368355738902e+02, 3.028962392919726e+02, 3.03255675669566e+02, 3.036150815300905e+02, 3.039745179079411e+02, 3.043339237682085e+02, 3.046933296288058e+02, 3.050527638640662e+02, 3.054121697247726e+02, 3.057715755850426e+02, 3.061310119628906e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonths.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonths.txt new file mode 100644 index 0000000000..adde9ae02d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonths.txt @@ -0,0 +1,14 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +calTim.year=[2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03] +time=[1.728e+05, 3.456e+05] +calTim.month=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +calTim.day=[3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00] +calTim.weekDay=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +calTim.hour=[0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 2e+00, 2e+00, 3e+00, 3e+00, 4e+00, 4e+00, 5e+00, 5e+00, 6e+00, 6e+00, 7e+00, 7e+00, 8e+00, 8e+00, 9e+00, 9e+00, 1e+01, 1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.2e+01, 1.2e+01, 1.3e+01, 1.3e+01, 1.4e+01, 1.4e+01, 1.5e+01, 1.5e+01, 1.6e+01, 1.6e+01, 1.7e+01, 1.7e+01, 1.8e+01, 1.8e+01, 1.9e+01, 1.9e+01, 2e+01, 2e+01, 2.1e+01, 2.1e+01, 2.2e+01, 2.2e+01, 2.3e+01, 2.3e+01, 2.3e+01, 0e+00, 0e+00, 1e+00, 1e+00, 2e+00, 2e+00, 3e+00, 3e+00, 4e+00, 4e+00, 5e+00, 5e+00, 6e+00, 6e+00, 7e+00, 7e+00, 8e+00, 8e+00, 9e+00, 9e+00, 1e+01, 1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.2e+01, 1.2e+01, 1.3e+01, 1.3e+01, 1.4e+01, 1.4e+01, 1.5e+01, 1.5e+01, 1.6e+01, 1.6e+01, 1.7e+01, 1.7e+01, 1.8e+01, 1.8e+01, 1.9e+01, 1.9e+01, 2e+01, 2e+01, 2.1e+01, 2.1e+01, 2.2e+01, 2.2e+01, 2.3e+01, 2.3e+01, 2.3e+01] +calTim.minute=[0e+00, 2.879999923706055e+01, 5.759999847412109e+01, 2.639999961853027e+01, 5.520000076293945e+01, 2.4e+01, 5.279999923706055e+01, 2.160000038146973e+01, 5.040000152587891e+01, 1.920000076293945e+01, 4.8e+01, 1.679999923706055e+01, 4.559999847412109e+01, 1.439999961853027e+01, 4.320000076293945e+01, 1.2e+01, 4.079999923706055e+01, 9.600000381469727e+00, 3.840000152587891e+01, 7.199999809265137e+00, 3.6e+01, 4.800000190734863e+00, 3.359999847412109e+01, 2.400000095367432e+00, 3.120000076293945e+01, 6e+01, 2.879999923706055e+01, 5.759999847412109e+01, 2.639999961853027e+01, 5.520000076293945e+01, 2.4e+01, 5.279999923706055e+01, 2.160000038146973e+01, 5.040000152587891e+01, 1.920000076293945e+01, 4.8e+01, 1.679999923706055e+01, 4.559999847412109e+01, 1.439999961853027e+01, 4.320000076293945e+01, 1.2e+01, 4.079999923706055e+01, 9.600000381469727e+00, 3.840000152587891e+01, 7.199999809265137e+00, 3.6e+01, 4.800000190734863e+00, 3.359999847412109e+01, 2.400000095367432e+00, 3.120000076293945e+01, 6e+01, 2.879999923706055e+01, 5.759999847412109e+01, 2.639999961853027e+01, 5.520000076293945e+01, 2.4e+01, 5.279999923706055e+01, 2.160000038146973e+01, 5.040000152587891e+01, 1.920000076293945e+01, 4.8e+01, 1.679999923706055e+01, 4.559999847412109e+01, 1.439999961853027e+01, 4.320000076293945e+01, 1.2e+01, 4.079999923706055e+01, 9.600000381469727e+00, 3.840000152587891e+01, 7.199999809265137e+00, 3.6e+01, 4.800000190734863e+00, 3.359999847412109e+01, 2.400000095367432e+00, 3.120000076293945e+01, 6e+01, 2.879999923706055e+01, 5.759999847412109e+01, 2.639999961853027e+01, 5.520000076293945e+01, 2.4e+01, 5.279999923706055e+01, 2.160000038146973e+01, 5.040000152587891e+01, 1.920000076293945e+01, 4.8e+01, 1.679999923706055e+01, 4.559999847412109e+01, 1.439999961853027e+01, 4.320000076293945e+01, 1.2e+01, 4.079999923706055e+01, 9.600000381469727e+00, 3.840000152587891e+01, 7.199999809265137e+00, 3.6e+01, 4.800000190734863e+00, 3.359999847412109e+01, 2.400000095367432e+00, 3.120000076293945e+01, 6e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsMinus.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsMinus.txt new file mode 100644 index 0000000000..90947a15c6 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsMinus.txt @@ -0,0 +1,14 @@ +last-generated=2017-07-18 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +calTim.year=[2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03] +time=[1.72799e+05, 3.45599e+05] +calTim.month=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +calTim.day=[2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00] +calTim.weekDay=[1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +calTim.hour=[2.3e+01, 0e+00, 0e+00, 1e+00, 1e+00, 2e+00, 2e+00, 3e+00, 3e+00, 4e+00, 4e+00, 5e+00, 5e+00, 6e+00, 6e+00, 7e+00, 7e+00, 8e+00, 8e+00, 9e+00, 9e+00, 1e+01, 1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.2e+01, 1.2e+01, 1.3e+01, 1.3e+01, 1.4e+01, 1.4e+01, 1.5e+01, 1.5e+01, 1.6e+01, 1.6e+01, 1.7e+01, 1.7e+01, 1.8e+01, 1.8e+01, 1.9e+01, 1.9e+01, 2e+01, 2e+01, 2.1e+01, 2.1e+01, 2.2e+01, 2.2e+01, 2.3e+01, 2.3e+01, 2.3e+01, 0e+00, 0e+00, 1e+00, 1e+00, 2e+00, 2e+00, 3e+00, 3e+00, 4e+00, 4e+00, 5e+00, 5e+00, 6e+00, 6e+00, 7e+00, 7e+00, 8e+00, 8e+00, 9e+00, 9e+00, 1e+01, 1e+01, 1.1e+01, 1.1e+01, 1.1e+01, 1.2e+01, 1.2e+01, 1.3e+01, 1.3e+01, 1.4e+01, 1.4e+01, 1.5e+01, 1.5e+01, 1.6e+01, 1.6e+01, 1.7e+01, 1.7e+01, 1.8e+01, 1.8e+01, 1.9e+01, 1.9e+01, 2e+01, 2e+01, 2.1e+01, 2.1e+01, 2.2e+01, 2.2e+01, 2.3e+01, 2.3e+01, 2.3e+01] +calTim.minute=[5.998333358764648e+01, 2.878333282470703e+01, 5.758333206176758e+01, 2.638333320617676e+01, 5.518333435058594e+01, 2.398333358764648e+01, 5.278333282470703e+01, 2.158333396911621e+01, 5.038333511352539e+01, 1.91833324432373e+01, 4.798333358764648e+01, 1.678333282470703e+01, 4.558333206176758e+01, 1.438333320617676e+01, 4.318333435058594e+01, 1.198333358764648e+01, 4.078333282470703e+01, 9.583333015441895e+00, 3.838333511352539e+01, 7.183333396911621e+00, 3.598333358764648e+01, 4.783333301544189e+00, 3.358333206176758e+01, 2.383333444595337e+00, 3.11833324432373e+01, 5.998333358764648e+01, 2.878333282470703e+01, 5.758333206176758e+01, 2.638333320617676e+01, 5.518333435058594e+01, 2.398333358764648e+01, 5.278333282470703e+01, 2.158333396911621e+01, 5.038333511352539e+01, 1.91833324432373e+01, 4.798333358764648e+01, 1.678333282470703e+01, 4.558333206176758e+01, 1.438333320617676e+01, 4.318333435058594e+01, 1.198333358764648e+01, 4.078333282470703e+01, 9.583333015441895e+00, 3.838333511352539e+01, 7.183333396911621e+00, 3.598333358764648e+01, 4.783333301544189e+00, 3.358333206176758e+01, 2.383333444595337e+00, 3.11833324432373e+01, 5.998333358764648e+01, 2.878333282470703e+01, 5.758333206176758e+01, 2.638333320617676e+01, 5.518333435058594e+01, 2.398333358764648e+01, 5.278333282470703e+01, 2.158333396911621e+01, 5.038333511352539e+01, 1.91833324432373e+01, 4.798333358764648e+01, 1.678333282470703e+01, 4.558333206176758e+01, 1.438333320617676e+01, 4.318333435058594e+01, 1.198333358764648e+01, 4.078333282470703e+01, 9.583333015441895e+00, 3.838333511352539e+01, 7.183333396911621e+00, 3.598333358764648e+01, 4.783333301544189e+00, 3.358333206176758e+01, 2.383333444595337e+00, 3.11833324432373e+01, 5.998333358764648e+01, 2.878333282470703e+01, 5.758333206176758e+01, 2.638333320617676e+01, 5.518333435058594e+01, 2.398333358764648e+01, 5.278333282470703e+01, 2.158333396911621e+01, 5.038333511352539e+01, 1.91833324432373e+01, 4.798333358764648e+01, 1.678333282470703e+01, 4.558333206176758e+01, 1.438333320617676e+01, 4.318333435058594e+01, 1.198333358764648e+01, 4.078333282470703e+01, 9.583333015441895e+00, 3.838333511352539e+01, 7.183333396911621e+00, 3.598333358764648e+01, 4.783333301544189e+00, 3.358333206176758e+01, 2.383333444595337e+00, 3.11833324432373e+01, 5.998333358764648e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsPlus.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsPlus.txt new file mode 100644 index 0000000000..0b27fc3ede --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CalendarTimeMonthsPlus.txt @@ -0,0 +1,14 @@ +last-generated=2017-07-18 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +calTim.year=[2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03, 2.017e+03] +time=[1.72801e+05, 3.45601e+05] +calTim.month=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +calTim.day=[3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 5e+00] +calTim.weekDay=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 4e+00] +calTim.hour=[0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 2e+00, 2e+00, 3e+00, 3e+00, 4e+00, 4e+00, 5e+00, 5e+00, 6e+00, 6e+00, 7e+00, 7e+00, 8e+00, 8e+00, 9e+00, 9e+00, 1e+01, 1e+01, 1.1e+01, 1.1e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.3e+01, 1.3e+01, 1.4e+01, 1.4e+01, 1.5e+01, 1.5e+01, 1.6e+01, 1.6e+01, 1.7e+01, 1.7e+01, 1.8e+01, 1.8e+01, 1.9e+01, 1.9e+01, 2e+01, 2e+01, 2.1e+01, 2.1e+01, 2.2e+01, 2.2e+01, 2.3e+01, 2.3e+01, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 2e+00, 2e+00, 3e+00, 3e+00, 4e+00, 4e+00, 5e+00, 5e+00, 6e+00, 6e+00, 7e+00, 7e+00, 8e+00, 8e+00, 9e+00, 9e+00, 1e+01, 1e+01, 1.1e+01, 1.1e+01, 1.2e+01, 1.2e+01, 1.2e+01, 1.3e+01, 1.3e+01, 1.4e+01, 1.4e+01, 1.5e+01, 1.5e+01, 1.6e+01, 1.6e+01, 1.7e+01, 1.7e+01, 1.8e+01, 1.8e+01, 1.9e+01, 1.9e+01, 2e+01, 2e+01, 2.1e+01, 2.1e+01, 2.2e+01, 2.2e+01, 2.3e+01, 2.3e+01, 0e+00] +calTim.minute=[1.666666567325592e-02, 2.88166675567627e+01, 5.761666488647461e+01, 2.641666603088379e+01, 5.521666717529297e+01, 2.401666641235352e+01, 5.281666564941406e+01, 2.161666679382324e+01, 5.041666793823242e+01, 1.921666717529297e+01, 4.801666641235352e+01, 1.68166675567627e+01, 4.561666488647461e+01, 1.441666698455811e+01, 4.321666717529297e+01, 1.201666641235352e+01, 4.081666564941406e+01, 9.616666793823242e+00, 3.841666793823242e+01, 7.216666698455811e+00, 3.601666641235352e+01, 4.816666603088379e+00, 3.361666488647461e+01, 2.416666746139526e+00, 3.121666717529297e+01, 1.666666567325592e-02, 2.88166675567627e+01, 5.761666488647461e+01, 2.641666603088379e+01, 5.521666717529297e+01, 2.401666641235352e+01, 5.281666564941406e+01, 2.161666679382324e+01, 5.041666793823242e+01, 1.921666717529297e+01, 4.801666641235352e+01, 1.68166675567627e+01, 4.561666488647461e+01, 1.441666698455811e+01, 4.321666717529297e+01, 1.201666641235352e+01, 4.081666564941406e+01, 9.616666793823242e+00, 3.841666793823242e+01, 7.216666698455811e+00, 3.601666641235352e+01, 4.816666603088379e+00, 3.361666488647461e+01, 2.416666746139526e+00, 3.121666717529297e+01, 1.666666567325592e-02, 2.88166675567627e+01, 5.761666488647461e+01, 2.641666603088379e+01, 5.521666717529297e+01, 2.401666641235352e+01, 5.281666564941406e+01, 2.161666679382324e+01, 5.041666793823242e+01, 1.921666717529297e+01, 4.801666641235352e+01, 1.68166675567627e+01, 4.561666488647461e+01, 1.441666698455811e+01, 4.321666717529297e+01, 1.201666641235352e+01, 4.081666564941406e+01, 9.616666793823242e+00, 3.841666793823242e+01, 7.216666698455811e+00, 3.601666641235352e+01, 4.816666603088379e+00, 3.361666488647461e+01, 2.416666746139526e+00, 3.121666717529297e+01, 1.666666567325592e-02, 2.88166675567627e+01, 5.761666488647461e+01, 2.641666603088379e+01, 5.521666717529297e+01, 2.401666641235352e+01, 5.281666564941406e+01, 2.161666679382324e+01, 5.041666793823242e+01, 1.921666717529297e+01, 4.801666641235352e+01, 1.68166675567627e+01, 4.561666488647461e+01, 1.441666698455811e+01, 4.321666717529297e+01, 1.201666641235352e+01, 4.081666564941406e+01, 9.616666793823242e+00, 3.841666793823242e+01, 7.216666698455811e+00, 3.601666641235352e+01, 4.816666603088379e+00, 3.361666488647461e+01, 2.416666746139526e+00, 3.121666717529297e+01, 1.666666567325592e-02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CivilTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CivilTime.txt new file mode 100644 index 0000000000..b30e8e7d2e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_CivilTime.txt @@ -0,0 +1,9 @@ +last-generated=2017-07-18 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +civTim.y=[-1e+00, -9.8e-01, -9.6e-01, -9.399999999999999e-01, -9.2e-01, -9e-01, -8.8e-01, -8.6e-01, -8.4e-01, -8.200000000000001e-01, -8e-01, -7.8e-01, -7.6e-01, -7.4e-01, -7.2e-01, -7e-01, -6.799999999999999e-01, -6.599999999999999e-01, -6.4e-01, -6.2e-01, -6e-01, -5.800000000000001e-01, -5.600000000000001e-01, -5.4e-01, -5.2e-01, -5e-01, -4.8e-01, -4.6e-01, -4.399999999999999e-01, -4.2e-01, -4e-01, -3.8e-01, -3.6e-01, -3.4e-01, -3.2e-01, -3e-01, -2.8e-01, -2.6e-01, -2.4e-01, -2.2e-01, -2e-01, -1.8e-01, -1.6e-01, -1.4e-01, -1.2e-01, -9.999999999999998e-02, -7.999999999999996e-02, -6.000000000000005e-02, -4.000000000000004e-02, -2.000000000000002e-02, 0e+00, 2.000000000000002e-02, 4.000000000000004e-02, 6.000000000000005e-02, 8.000000000000007e-02, 1.000000000000001e-01, 1.200000000000001e-01, 1.399999999999999e-01, 1.599999999999999e-01, 1.799999999999999e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.200000000000001e-01, 3.400000000000001e-01, 3.600000000000001e-01, 3.799999999999999e-01, 3.999999999999999e-01, 4.199999999999999e-01, 4.399999999999999e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.800000000000001e-01, 6.000000000000001e-01, 6.200000000000001e-01, 6.399999999999999e-01, 6.599999999999999e-01, 6.799999999999999e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.200000000000001e-01, 8.400000000000001e-01, 8.600000000000001e-01, 8.799999999999999e-01, 8.999999999999999e-01, 9.199999999999999e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00] +time=[-1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Constant.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Constant.txt new file mode 100644 index 0000000000..bea4321288 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Constant.txt @@ -0,0 +1,9 @@ +last-generated=2017-07-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +con.y=[2.5e+00, 2.5e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Pulse.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Pulse.txt new file mode 100644 index 0000000000..b239d08724 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Pulse.txt @@ -0,0 +1,9 @@ +last-generated=2017-07-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +pulse.y=[2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.200000047683716e+00, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Ramp.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Ramp.txt new file mode 100644 index 0000000000..b0cb145c68 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Ramp.txt @@ -0,0 +1,9 @@ +last-generated=2017-07-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +ram.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.333333929379781e-01, 5.666666467984518e-01, 6.000000397364299e-01, 6.333332935969035e-01, 6.666666865348816e-01, 7.000000198682149e-01, 7.333333333333334e-01, 7.666666666666667e-01, 7.999999801317851e-01, 8.333333134651184e-01, 8.666667064030965e-01, 8.999999602635702e-01, 9.333333532015483e-01, 9.66666607062022e-01, 1e+00, 1.033333333333333e+00, 1.066666706402812e+00, 1.10000003973643e+00, 1.133333293596904e+00, 1.166666626930237e+00, 1.20000007947286e+00, 1.233333412806193e+00, 1.266666587193807e+00, 1.29999992052714e+00, 1.333333373069763e+00, 1.366666706403097e+00, 1.40000003973643e+00, 1.433333214124044e+00, 1.466666666666667e+00, 1.5e+00, 1.533333333333333e+00, 1.566666785875956e+00, 1.59999996026357e+00, 1.633333293596904e+00, 1.666666626930237e+00, 1.70000007947286e+00, 1.733333412806193e+00, 1.766666587193807e+00, 1.79999992052714e+00, 1.833333373069763e+00, 1.866666706403096e+00, 1.90000003973643e+00, 1.933333214124044e+00, 1.966666666666667e+00, 2e+00, 2.033333333333334e+00, 2.066666666666667e+00, 2.099999841054281e+00, 2.133333412806193e+00, 2.166666746139526e+00, 2.20000007947286e+00, 2.233333412806193e+00, 2.266666587193807e+00, 2.29999992052714e+00, 2.333333253860474e+00, 2.366666587193807e+00, 2.40000015894572e+00, 2.433333333333334e+00, 2.466666666666667e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00] +time=[0e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Sin.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Sin.txt new file mode 100644 index 0000000000..b136676e9b --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_Sin.txt @@ -0,0 +1,9 @@ +last-generated=2017-11-06 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +sin.y=[1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1.020937844191531e+01, 1.088542375831547e+01, 1.154508495330811e+01, 1.217615499983809e+01, 1.276695711517082e+01, 1.330655971069135e+01, 1.378497478677221e+01, 1.419335269927979e+01, 1.452413575474411e+01, 1.477120202508522e+01, 1.492998030863989e+01, 1.499753282656066e+01, 1.49726095199585e+01, 1.485567082839863e+01, 1.464888293689666e+01, 1.435606851073689e+01, 1.398265004032125e+01, 1.35355339050293e+01, 1.302299562735073e+01, 1.245451761687486e+01, 1.18406236406552e+01, 1.119266739404273e+01, 1.052264213562012e+01, 9.842945653499058e+00, 9.16615502928277e+00, 8.504796793679194e+00, 7.871104127302454e+00, 7.27680492401123e+00, 6.732896506003839e+00, 6.249443964584741e+00, 5.8353943567705e+00, 5.498406112116754e+00, 5.244717597961426e+00, 5.079021865315042e+00, 5.004385925595086e+00, 5.022190029644421e+00, 5.132105264581423e+00, 5.332098007202148e+00, 5.618466574446327e+00, 5.985913284854949e+00, 6.427636072230508e+00, 6.935464546737046e+00, 7.5e+00, 8.110794503701614e+00, 8.756551565329634e+00, 9.425313157290061e+00, 1.010471408314757e+01, 1.078217220306396e+01, 1.144515742264974e+01, 1.208140445410804e+01, 1.267913368858324e+01, 1.322728945242029e+01, 1.371572399139404e+01, 1.413540176341901e+01, 1.447855888579827e+01, 1.473884174539232e+01, 1.491143635895027e+01, 1.499314785003662e+01, 1.498246394869636e+01, 1.487958317388968e+01, 1.46864102185187e+01, 1.440651625465307e+01, 1.404508495330811e+01, 1.360880197819251e+01, 1.310573800702992e+01, 1.254520770568006e+01, 1.193757672001069e+01, 1.129409503936768e+01, 1.062666765139302e+01, 9.94764057399416e+00, 9.269585447625662e+00, 8.605042836755585e+00, 7.966316699981689e+00, 7.365222392883537e+00, 6.812879430628213e+00, 6.319515300157358e+00, 5.894252836817939e+00, 5.544967174530029e+00, 5.278118679511505e+00, 5.098644109355609e+00, 5.009866298654381e+00, 5.013427873076e+00, 5.109261989593506e+00, 5.295595602011288e+00, 5.568982504066119e+00, 5.924360775052777e+00, 6.355158008044967e+00, 6.853397846221924e+00, 7.409863547158879e+00, 8.014261029515836e+00, 8.655400463364945e+00, 9.32142416271245e+00, 1e+01] +time=[0e+00, 1.3e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTable.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTable.txt new file mode 100644 index 0000000000..8c66584145 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTable.txt @@ -0,0 +1,13 @@ +last-generated=2020-03-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1.728e+05] +timTabLin.y[1]=[0e+00, 7.999999821186066e-02, 1.599999964237213e-01, 2.39999994635582e-01, 3.199999928474426e-01, 4.000000059604645e-01, 4.799999892711639e-01, 5.600000023841859e-01, 6.399999856948853e-01, 7.200000286102295e-01, 8.00000011920929e-01, 8.799999952316284e-01, 9.599999785423279e-01, 9.900000095367432e-01, 9.700000286102295e-01, 9.49999988079071e-01, 9.300000071525574e-01, 9.100000262260437e-01, 8.899999856948853e-01, 8.700000047683716e-01, 8.500000238418579e-01, 8.299999833106995e-01, 8.100000023841858e-01, 7.900000214576721e-01, 7.699999809265137e-01, 7.5e-01, 7.300000190734863e-01, 7.099999785423279e-01, 6.899999976158141e-01, 6.700000166893005e-01, 6.499999761581421e-01, 6.299999952316284e-01, 6.100000143051147e-01, 5.899999737739563e-01, 5.699999928474425e-01, 5.500000119209291e-01, 5.299999713897705e-01, 5.099999904632568e-01, 4.799999892711639e-01, 4.399999976158142e-01, 4.000000059604645e-01, 3.600000143051147e-01, 3.199999928474426e-01, 2.800000011920929e-01, 2.39999994635582e-01, 2.000000029802322e-01, 1.599999964237213e-01, 1.19999997317791e-01, 7.999999821186066e-02, 3.999999910593033e-02, 0e+00, 7.999999821186066e-02, 1.599999964237213e-01, 2.39999994635582e-01, 3.199999928474426e-01, 4.000000059604651e-01, 4.799999892711646e-01, 5.600000023841851e-01, 6.399999856948853e-01, 7.200000286102295e-01, 8.00000011920929e-01, 8.799999952316284e-01, 9.599999785423279e-01, 9.900000095367432e-01, 9.700000286102295e-01, 9.49999988079071e-01, 9.300000071525574e-01, 9.100000262260437e-01, 8.89999985694885e-01, 8.700000047683718e-01, 8.500000238418581e-01, 8.299999833106995e-01, 8.100000023841858e-01, 7.900000214576721e-01, 7.699999809265137e-01, 7.5e-01, 7.300000190734863e-01, 7.099999785423279e-01, 6.899999976158142e-01, 6.700000166893005e-01, 6.499999761581421e-01, 6.299999952316284e-01, 6.100000143051147e-01, 5.899999737739563e-01, 5.699999928474426e-01, 5.50000011920929e-01, 5.299999713897705e-01, 5.099999904632568e-01, 4.799999892711639e-01, 4.399999976158142e-01, 4.000000059604645e-01, 3.600000143051147e-01, 3.199999928474426e-01, 2.800000011920929e-01, 2.39999994635582e-01, 2.000000029802322e-01, 1.599999964237213e-01, 1.19999997317791e-01, 7.999999821186066e-02, 3.999999910593033e-02, 0e+00] +timTabLinCon.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.900000095367432e-01, 9.700000286102295e-01, 9.49999988079071e-01, 9.300000071525574e-01, 9.100000262260437e-01, 8.899999856948853e-01, 8.700000047683716e-01, 8.500000238418579e-01, 8.299999833106995e-01, 8.100000023841858e-01, 7.900000214576721e-01, 7.699999809265137e-01, 7.5e-01, 7.300000190734863e-01, 7.099999785423279e-01, 6.899999976158141e-01, 6.700000166893005e-01, 6.499999761581421e-01, 6.299999952316284e-01, 6.100000143051147e-01, 5.899999737739563e-01, 5.699999928474425e-01, 5.500000119209291e-01, 5.299999713897705e-01, 5.099999904632568e-01, 4.799999892711639e-01, 4.399999976158142e-01, 4.000000059604645e-01, 3.600000143051147e-01, 3.199999928474426e-01, 2.800000011920929e-01, 2.39999994635582e-01, 2.000000029802322e-01, 1.599999964237213e-01, 1.19999997317791e-01, 7.999999821186066e-02, 3.999999910593033e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.900000095367432e-01, 9.700000286102295e-01, 9.49999988079071e-01, 9.300000071525574e-01, 9.100000262260437e-01, 8.89999985694885e-01, 8.700000047683718e-01, 8.500000238418581e-01, 8.299999833106995e-01, 8.100000023841858e-01, 7.900000214576721e-01, 7.699999809265137e-01, 7.5e-01, 7.300000190734863e-01, 7.099999785423279e-01, 6.899999976158142e-01, 6.700000166893005e-01, 6.499999761581421e-01, 6.299999952316284e-01, 6.100000143051147e-01, 5.899999737739563e-01, 5.699999928474426e-01, 5.50000011920929e-01, 5.299999713897705e-01, 5.099999904632568e-01, 4.799999892711639e-01, 4.399999976158142e-01, 4.000000059604645e-01, 3.600000143051147e-01, 3.199999928474426e-01, 2.800000011920929e-01, 2.39999994635582e-01, 2.000000029802322e-01, 1.599999964237213e-01, 1.19999997317791e-01, 7.999999821186066e-02, 3.999999910593033e-02, 0e+00] +timTabCon.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +timTabLinHol.y[1]=[0e+00, 7.999999821186066e-02, 1.599999964237213e-01, 2.39999994635582e-01, 3.199999928474426e-01, 4.000000059604645e-01, 4.799999892711639e-01, 5.600000023841859e-01, 6.399999856948853e-01, 7.200000286102295e-01, 8.00000011920929e-01, 8.799999952316284e-01, 9.599999785423279e-01, 9.900000095367432e-01, 9.700000286102295e-01, 9.49999988079071e-01, 9.300000071525574e-01, 9.100000262260437e-01, 8.899999856948853e-01, 8.700000047683716e-01, 8.500000238418579e-01, 8.299999833106995e-01, 8.100000023841858e-01, 7.900000214576721e-01, 7.699999809265137e-01, 7.5e-01, 7.300000190734863e-01, 7.099999785423279e-01, 6.899999976158141e-01, 6.700000166893005e-01, 6.499999761581421e-01, 6.299999952316284e-01, 6.100000143051147e-01, 5.899999737739563e-01, 5.699999928474425e-01, 5.500000119209291e-01, 5.299999713897705e-01, 5.099999904632568e-01, 4.799999892711639e-01, 4.399999976158142e-01, 4.000000059604645e-01, 3.600000143051147e-01, 3.199999928474426e-01, 2.800000011920929e-01, 2.39999994635582e-01, 2.000000029802322e-01, 1.599999964237213e-01, 1.19999997317791e-01, 7.999999821186066e-02, 3.999999910593033e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +timTabLinDer.y[1]=[0e+00, 7.999999821186066e-02, 1.599999964237213e-01, 2.39999994635582e-01, 3.199999928474426e-01, 4.000000059604645e-01, 4.799999892711639e-01, 5.600000023841859e-01, 6.399999856948853e-01, 7.200000286102295e-01, 8.00000011920929e-01, 8.799999952316284e-01, 9.599999785423279e-01, 9.900000095367432e-01, 9.700000286102295e-01, 9.49999988079071e-01, 9.300000071525574e-01, 9.100000262260437e-01, 8.899999856948853e-01, 8.700000047683716e-01, 8.500000238418579e-01, 8.299999833106995e-01, 8.100000023841858e-01, 7.900000214576721e-01, 7.699999809265137e-01, 7.5e-01, 7.300000190734863e-01, 7.099999785423279e-01, 6.899999976158141e-01, 6.700000166893005e-01, 6.499999761581421e-01, 6.299999952316284e-01, 6.100000143051147e-01, 5.899999737739563e-01, 5.699999928474425e-01, 5.500000119209291e-01, 5.299999713897705e-01, 5.099999904632568e-01, 4.799999892711639e-01, 4.399999976158142e-01, 4.000000059604645e-01, 3.600000143051147e-01, 3.199999928474426e-01, 2.800000011920929e-01, 2.39999994635582e-01, 2.000000029802322e-01, 1.599999964237213e-01, 1.19999997317791e-01, 7.999999821186066e-02, 3.999999910593033e-02, 0e+00, -3.999999910593033e-02, -7.999999821186066e-02, -1.19999997317791e-01, -1.599999964237213e-01, -2.000000029802326e-01, -2.399999946355823e-01, -2.800000011920926e-01, -3.199999928474426e-01, -3.600000143051147e-01, -4.000000059604645e-01, -4.399999976158142e-01, -4.799999892711639e-01, -5.199999809265137e-01, -5.600000023841858e-01, -6.000000238418579e-01, -6.399999856948853e-01, -6.800000071525574e-01, -7.200000286102298e-01, -7.599999904632565e-01, -8.000000119209286e-01, -8.399999737739563e-01, -8.799999952316284e-01, -9.200000166893005e-01, -9.599999785423279e-01, -1e+00, -1.039999961853027e+00, -1.080000042915344e+00, -1.120000004768372e+00, -1.159999966621399e+00, -1.200000047683716e+00, -1.240000009536743e+00, -1.279999971389771e+00, -1.320000052452087e+00, -1.360000014305115e+00, -1.399999976158142e+00, -1.440000057220459e+00, -1.480000019073486e+00, -1.519999980926514e+00, -1.559999942779541e+00, -1.600000023841858e+00, -1.639999985694885e+00, -1.679999947547913e+00, -1.720000028610229e+00, -1.759999990463257e+00, -1.799999952316284e+00, -1.840000033378601e+00, -1.879999995231628e+00, -1.919999957084656e+00, -1.960000038146973e+00, -2e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTableNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTableNegativeStartTime.txt new file mode 100644 index 0000000000..35d25e5877 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Sources_Validation_TimeTableNegativeStartTime.txt @@ -0,0 +1,13 @@ +last-generated=2020-03-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-1.296e+05, 1.728e+05] +timTabLin.y[1]=[7.5e-01, 7.149999737739563e-01, 6.800000071525574e-01, 6.449999809265137e-01, 6.100000143051147e-01, 5.74999988079071e-01, 5.400000214576721e-01, 5.049999952316284e-01, 4.399999976158142e-01, 3.700000047683716e-01, 3.00000011920929e-01, 2.300000041723251e-01, 1.599999964237213e-01, 9.000000357627869e-02, 1.999999955296516e-02, 1.000000014901161e-01, 2.39999994635582e-01, 3.799999952316284e-01, 5.199999809265137e-01, 6.600000262260437e-01, 8.00000011920929e-01, 9.399999976158142e-01, 9.800000190734863e-01, 9.449999928474426e-01, 9.100000262260437e-01, 8.75e-01, 8.399999737739563e-01, 8.050000071525574e-01, 7.699999809265134e-01, 7.350000143051147e-01, 6.99999988079071e-01, 6.650000214576721e-01, 6.299999952316284e-01, 5.950000286102295e-01, 5.600000023841856e-01, 5.249999761581421e-01, 4.799999892711639e-01, 4.099999964237213e-01, 3.400000035762787e-01, 2.700000107288361e-01, 2.000000029802322e-01, 1.299999952316288e-01, 5.999999865889549e-02, 1.999999955296516e-02, 1.599999964237213e-01, 3.00000011920929e-01, 4.399999976158142e-01, 5.799999833106995e-01, 7.200000286102295e-01, 8.600000143051147e-01, 1e+00, 9.649999737739563e-01, 9.300000071525574e-01, 8.949999809265137e-01, 8.600000143051147e-01, 8.24999988079071e-01, 7.900000214576718e-01, 7.549999952316288e-01, 7.200000286102295e-01, 6.850000023841858e-01, 6.499999761581421e-01, 6.150000095367432e-01, 5.799999833106995e-01, 5.450000166893005e-01, 5.099999904632568e-01, 4.49999988079071e-01, 3.799999952316284e-01, 3.100000023841858e-01, 2.399999946355813e-01, 1.7000000178814e-01, 1.000000014901161e-01, 2.999999932944775e-02, 7.999999821186066e-02, 2.199999988079071e-01, 3.600000143051147e-01, 5e-01, 6.399999856948853e-01, 7.799999713897705e-01, 9.200000166893005e-01, 9.850000143051147e-01, 9.49999988079071e-01, 9.150000214576718e-01, 8.799999952316288e-01, 8.450000286102295e-01, 8.100000023841858e-01, 7.749999761581421e-01, 7.400000095367432e-01, 7.049999833106995e-01, 6.700000166893005e-01, 6.349999904632568e-01, 6.000000238418579e-01, 5.649999976158142e-01, 5.299999713897705e-01, 4.900000095367432e-01, 4.199999868869781e-01, 3.499999940395355e-01, 2.800000011920929e-01, 2.099999934434891e-01, 1.400000005960464e-01, 7.000000029802322e-02, 0e+00] +timTabLinCon.y[1]=[7.5e-01, 7.149999737739563e-01, 6.800000071525574e-01, 6.449999809265137e-01, 6.100000143051147e-01, 5.74999988079071e-01, 5.400000214576721e-01, 5.049999952316284e-01, 4.399999976158142e-01, 3.700000047683716e-01, 3.00000011920929e-01, 2.300000041723251e-01, 1.599999964237213e-01, 9.000000357627869e-02, 1.999999955296516e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.800000190734863e-01, 9.449999928474426e-01, 9.100000262260437e-01, 8.75e-01, 8.399999737739563e-01, 8.050000071525574e-01, 7.699999809265134e-01, 7.350000143051147e-01, 6.99999988079071e-01, 6.650000214576721e-01, 6.299999952316284e-01, 5.950000286102295e-01, 5.600000023841856e-01, 5.249999761581421e-01, 4.799999892711639e-01, 4.099999964237213e-01, 3.400000035762787e-01, 2.700000107288361e-01, 2.000000029802322e-01, 1.299999952316288e-01, 5.999999865889549e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.649999737739563e-01, 9.300000071525574e-01, 8.949999809265137e-01, 8.600000143051147e-01, 8.24999988079071e-01, 7.900000214576718e-01, 7.549999952316288e-01, 7.200000286102295e-01, 6.850000023841858e-01, 6.499999761581421e-01, 6.150000095367432e-01, 5.799999833106995e-01, 5.450000166893005e-01, 5.099999904632568e-01, 4.49999988079071e-01, 3.799999952316284e-01, 3.100000023841858e-01, 2.399999946355813e-01, 1.7000000178814e-01, 1.000000014901161e-01, 2.999999932944775e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.850000143051147e-01, 9.49999988079071e-01, 9.150000214576718e-01, 8.799999952316288e-01, 8.450000286102295e-01, 8.100000023841858e-01, 7.749999761581421e-01, 7.400000095367432e-01, 7.049999833106995e-01, 6.700000166893005e-01, 6.349999904632568e-01, 6.000000238418579e-01, 5.649999976158142e-01, 5.299999713897705e-01, 4.900000095367432e-01, 4.199999868869781e-01, 3.499999940395355e-01, 2.800000011920929e-01, 2.099999934434891e-01, 1.400000005960464e-01, 7.000000029802322e-02, 0e+00] +timTabCon.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +timTabLinHol.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.999999955296516e-02, 1.599999964237213e-01, 3.00000011920929e-01, 4.399999976158142e-01, 5.799999833106995e-01, 7.200000286102295e-01, 8.600000143051147e-01, 1e+00, 9.649999737739563e-01, 9.300000071525574e-01, 8.949999809265137e-01, 8.600000143051147e-01, 8.24999988079071e-01, 7.900000214576718e-01, 7.549999952316288e-01, 7.200000286102295e-01, 6.850000023841858e-01, 6.499999761581421e-01, 6.150000095367432e-01, 5.799999833106995e-01, 5.450000166893005e-01, 5.099999904632568e-01, 4.49999988079071e-01, 3.799999952316284e-01, 3.100000023841858e-01, 2.399999946355813e-01, 1.7000000178814e-01, 1.000000014901161e-01, 2.999999932944775e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +timTabLinDer.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.999999955296516e-02, 1.599999964237213e-01, 3.00000011920929e-01, 4.399999976158142e-01, 5.799999833106995e-01, 7.200000286102295e-01, 8.600000143051147e-01, 1e+00, 9.649999737739563e-01, 9.300000071525574e-01, 8.949999809265137e-01, 8.600000143051147e-01, 8.24999988079071e-01, 7.900000214576718e-01, 7.549999952316288e-01, 7.200000286102295e-01, 6.850000023841858e-01, 6.499999761581421e-01, 6.150000095367432e-01, 5.799999833106995e-01, 5.450000166893005e-01, 5.099999904632568e-01, 4.49999988079071e-01, 3.799999952316284e-01, 3.100000023841858e-01, 2.399999946355813e-01, 1.7000000178814e-01, 1.000000014901161e-01, 2.999999932944775e-02, -3.999999910593033e-02, -1.099999994039536e-01, -1.800000071525574e-01, -2.5e-01, -3.199999928474426e-01, -3.899999856948853e-01, -4.600000083446503e-01, -5.299999713897705e-01, -6.000000238418579e-01, -6.700000166893012e-01, -7.400000095367425e-01, -8.100000023841858e-01, -8.799999952316284e-01, -9.49999988079071e-01, -1.019999980926514e+00, -1.090000033378601e+00, -1.159999966621399e+00, -1.230000019073486e+00, -1.299999952316284e+00, -1.370000004768372e+00, -1.440000057220459e+00, -1.509999990463257e+00, -1.580000042915344e+00, -1.649999976158142e+00, -1.720000028610229e+00, -1.789999961853027e+00, -1.860000014305115e+00, -1.929999947547913e+00, -2e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Abs.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Abs.txt new file mode 100644 index 0000000000..4ecfa8eb58 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Abs.txt @@ -0,0 +1,10 @@ +last-generated=2017-02-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +abs1.y=[1e+00, 9.800000186264507e-01, 9.599999776482565e-01, 9.399999962747084e-01, 9.200000149011579e-01, 8.99999977648261e-01, 8.799999925494144e-01, 8.600000149011634e-01, 8.399999701977309e-01, 8.200000000000001e-01, 8.000000149011612e-01, 7.799999701976954e-01, 7.599999850988388e-01, 7.4e-01, 7.200000298023046e-01, 7e-01, 6.799999999999999e-01, 6.60000029802269e-01, 6.4e-01, 6.2e-01, 6.000000298022335e-01, 5.799999701976777e-01, 5.600000000000001e-01, 5.400000298023224e-01, 5.199999701976776e-01, 5e-01, 4.799999701978197e-01, 4.600000298021625e-01, 4.399999999999999e-01, 4.19999970197802e-01, 4.000000298023224e-01, 3.8e-01, 3.6e-01, 3.400000298023224e-01, 3.2e-01, 3e-01, 2.800000298023224e-01, 2.6e-01, 2.399999850988743e-01, 2.199999701977842e-01, 2.000000149011167e-01, 1.8e-01, 1.599999701977753e-01, 1.400000149011079e-01, 1.199999925494283e-01, 9.99999776483026e-02, 8.000001490113007e-02, 5.999999627471642e-02, 3.999997764829821e-02, 2.000001862641598e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +abs1.u=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Acos.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Acos.txt new file mode 100644 index 0000000000..5e13f343f8 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Acos.txt @@ -0,0 +1,10 @@ +last-generated=2022-01-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +arcCos.u=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 6.661338147750939e-16, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +arcCos.y=[3.141592741012573e+00, 2.941257713080056e+00, 2.857798573236356e+00, 2.793426509802495e+00, 2.73887681510135e+00, 2.690565827960306e+00, 2.646658414959068e+00, 2.606065989716528e+00, 2.568079465034244e+00, 2.532207263155047e+00, 2.498091464263713e+00, 2.465462205896689e+00, 2.434109441162152e+00, 2.40386675375035e+00, 2.374598743254293e+00, 2.346193807174723e+00, 2.318558921620271e+00, 2.291615014079501e+00, 2.265294570507043e+00, 2.239539140357875e+00, 2.21429754049987e+00, 2.189525111341287e+00, 2.165182110774458e+00, 2.14123345414354e+00, 2.117647158478246e+00, 2.094395160675049e+00, 2.071450927001068e+00, 2.048791432734455e+00, 2.026395085131606e+00, 2.004241686569111e+00, 1.982313182166426e+00, 1.960592632684996e+00, 1.939064248976652e+00, 1.917713193192413e+00, 1.896525867387665e+00, 1.875488984017263e+00, 1.854590445775155e+00, 1.833818564760159e+00, 1.813162197784627e+00, 1.792610735188535e+00, 1.772154224169914e+00, 1.751782767656608e+00, 1.731487009191167e+00, 1.711257710603291e+00, 1.691086168255718e+00, 1.670963740233353e+00, 1.650881903227992e+00, 1.630832431312361e+00, 1.610806920513384e+00, 1.590797681813303e+00, 1.570796370506287e+00, 1.550794939990833e+00, 1.530785641637258e+00, 1.510760249982415e+00, 1.490710778366843e+00, 1.470628881569574e+00, 1.450506453547637e+00, 1.430334911200208e+00, 1.41010567143599e+00, 1.389809793536522e+00, 1.369438458451072e+00, 1.348981886614312e+00, 1.328430543227801e+00, 1.307774057043272e+00, 1.287002176028573e+00, 1.266103575279027e+00, 1.245066936501873e+00, 1.223879491985652e+00, 1.202528492035267e+00, 1.180999989118211e+00, 1.159279439637246e+00, 1.137350988735085e+00, 1.115197722188159e+00, 1.092801136966683e+00, 1.070141694802461e+00, 1.047197580337524e+00, 1.023945309212232e+00, 1.000359132197873e+00, 9.764104389779845e-01, 9.520676661910464e-01, 9.27295237723663e-01, 9.020536006546462e-01, 8.762980512963059e-01, 8.499775083571287e-01, 8.230336187344482e-01, 7.953988979548781e-01, 7.669940405851184e-01, 7.377259872617282e-01, 7.074832172945881e-01, 6.761304873158263e-01, 6.435010230962218e-01, 6.093854027893624e-01, 5.735131517807321e-01, 5.355266611127378e-01, 4.949341017145322e-01, 4.510267420696834e-01, 4.027157211501951e-01, 3.48166183816678e-01, 2.837942381117601e-01, 2.003349384995088e-01, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Add.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Add.txt new file mode 100644 index 0000000000..4c93f73093 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Add.txt @@ -0,0 +1,11 @@ +last-generated=2022-01-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +add1.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 1.332267629550188e-15, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +add1.u2=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 6.661338147750939e-16, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +add1.y=[-3e+00, -2.940000055879345e+00, -2.880000111758691e+00, -2.819999929219541e+00, -2.759999985098802e+00, -2.700000052154006e+00, -2.640000096857493e+00, -2.57999992549421e+00, -2.519999970197624e+00, -2.460000059604325e+00, -2.400000104307995e+00, -2.339999910593086e+00, -2.279999955296437e+00, -2.219999999999858e+00, -2.160000089406914e+00, -2.099999940395533e+00, -2.039999940395675e+00, -1.980000029802269e+00, -1.920000000000213e+00, -1.860000000000071e+00, -1.799999970197766e+00, -1.739999970197873e+00, -1.679999940395391e+00, -1.620000029802198e+00, -1.559999910593193e+00, -1.5e+00, -1.439999999999716e+00, -1.380000059604325e+00, -1.320000059604609e+00, -1.259999940395604e+00, -1.200000119208934e+00, -1.139999999999929e+00, -1.079999999999787e+00, -1.020000059604254e+00, -9.599999999999999e-01, -8.99999940395533e-01, -8.400000596046449e-01, -7.8e-01, -7.2e-01, -6.599999403953551e-01, -6.00000059604467e-01, -5.400000000000001e-01, -4.799999105932283e-01, -4.200000298023224e-01, -3.6e-01, -2.999999403953552e-01, -2.400000447034213e-01, -1.80000000000009e-01, -1.199999329449346e-01, -6.000005587923019e-02, 1.998401444325282e-15, 6.000005587837755e-02, 1.200001117567906e-01, 1.800001788109503e-01, 2.399998658917877e-01, 2.999999403964213e-01, 3.599999999997872e-01, 4.200000298016826e-01, 4.800000894054748e-01, 5.400001788108078e-01, 5.999998807928419e-01, 6.599999403966341e-01, 7.200000000004263e-01, 7.799999999995737e-01, 8.400000596033659e-01, 9.000001192071581e-01, 9.599998211891922e-01, 1.0199998807927e+00, 1.080000000000427e+00, 1.140000000000142e+00, 1.200000119207868e+00, 1.260000119206731e+00, 1.319999880792416e+00, 1.379999880792984e+00, 1.440000000000568e+00, 1.5e+00, 1.559999999999432e+00, 1.620000119207016e+00, 1.680000119207584e+00, 1.739999880793269e+00, 1.799999880792132e+00, 1.859999999999858e+00, 1.919999999999573e+00, 1.9800001192073e+00, 2.040000119207726e+00, 2.099999761585684e+00, 2.160000000000852e+00, 2.220000000000284e+00, 2.279999999999716e+00, 2.339999999999148e+00, 2.400000238414316e+00, 2.459999880792274e+00, 2.519999880791705e+00, 2.579999880791989e+00, 2.640000119209289e+00, 2.700000119207158e+00, 2.76000011920801e+00, 2.819999761586537e+00, 2.880000000001137e+00, 2.940000000000568e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_AddParameter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_AddParameter.txt new file mode 100644 index 0000000000..d66377d410 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_AddParameter.txt @@ -0,0 +1,10 @@ +last-generated=2022-02-03 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +addPar.u=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 1.332267629550188e-15, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +addPar.y=[-1.5e+00, -1.460000037252901e+00, -1.419999955296513e+00, -1.379999992549417e+00, -1.340000029802316e+00, -1.299999955296522e+00, -1.259999985098829e+00, -1.220000029802327e+00, -1.179999940395462e+00, -1.14e+00, -1.100000029802322e+00, -1.059999940395391e+00, -1.019999970197678e+00, -9.8e-01, -9.399999999999999e-01, -9e-01, -8.6e-01, -8.2e-01, -7.8e-01, -7.4e-01, -7e-01, -6.6e-01, -6.2e-01, -5.8e-01, -5.4e-01, -5e-01, -4.599999701976776e-01, -4.200000298023223e-01, -3.799999999999999e-01, -3.399999701976777e-01, -3.000000596044672e-01, -2.6e-01, -2.199999701977309e-01, -1.800000596044493e-01, -1.400000149011345e-01, -9.999997764830271e-02, -6.000005587927459e-02, -2.000001862641598e-02, 2.000001862641598e-02, 6.000005587927459e-02, 9.999997764830271e-02, 1.400000149011345e-01, 1.800000596044493e-01, 2.199999701977309e-01, 2.6e-01, 3.000000596044672e-01, 3.399999701976777e-01, 3.799999999999999e-01, 4.200000298023223e-01, 4.599999701976776e-01, 5e-01, 5.400000596037922e-01, 5.80000059603508e-01, 6.200001192075844e-01, 6.599999403966343e-01, 6.999999403960659e-01, 7.399999999998581e-01, 7.799999999995735e-01, 8.200000596036499e-01, 8.600001192069446e-01, 8.99999880792842e-01, 9.399999403962078e-01, 9.800000000002842e-01, 1.019999999999716e+00, 1.059999999999147e+00, 1.100000119207869e+00, 1.139999880792274e+00, 1.1799998807927e+00, 1.220000000000427e+00, 1.260000000000142e+00, 1.299999999999289e+00, 1.34000011920801e+00, 1.379999880792416e+00, 1.419999880791847e+00, 1.460000000000568e+00, 1.5e+00, 1.539999999999432e+00, 1.580000119208153e+00, 1.620000119207584e+00, 1.65999988079199e+00, 1.700000000000711e+00, 1.739999999999858e+00, 1.779999999999573e+00, 1.8200001192073e+00, 1.860000119207726e+00, 1.899999880792131e+00, 1.940000000000853e+00, 1.980000000000284e+00, 2.02e+00, 2.06e+00, 2.1e+00, 2.14e+00, 2.18e+00, 2.22e+00, 2.26e+00, 2.3e+00, 2.34e+00, 2.38e+00, 2.42e+00, 2.46e+00, 2.5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Asin.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Asin.txt new file mode 100644 index 0000000000..b065b8f6d5 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Asin.txt @@ -0,0 +1,10 @@ +last-generated=2022-01-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +arcSin.u=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 6.661338147750939e-16, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +arcSin.y=[-1.570796370506287e+00, -1.370461461783046e+00, -1.287002202730069e+00, -1.222630258505497e+00, -1.168080444595117e+00, -1.119769576663264e+00, -1.075862163661991e+00, -1.035269619210242e+00, -9.972832137371404e-01, -9.614110118579434e-01, -9.272952129666715e-01, -8.946658353904379e-01, -8.633131302604304e-01, -8.33070323639703e-01, -8.038023131433967e-01, -7.753974962729034e-01, -7.477626107185229e-01, -7.208187627823978e-01, -6.944982596058273e-01, -6.687427102471569e-01, -6.435011103889385e-01, -6.187286812307461e-01, -5.943857998727453e-01, -5.704371432417735e-01, -5.468509667852542e-01, -5.235987901687622e-01, -5.006546757033603e-01, -4.779952112388208e-01, -4.555986848230499e-01, -4.334453160631976e-01, -4.115168712647842e-01, -3.897962919810321e-01, -3.682678784706849e-01, -3.469169120928977e-01, -3.257294968813784e-01, -3.04692643313477e-01, -2.837941348735136e-01, -2.630222240561947e-01, -2.423658421794656e-01, -2.218144391877342e-01, -2.01357928169344e-01, -1.809864418538047e-01, -1.606906237843054e-01, -1.404614295039713e-01, -1.202898797057381e-01, -1.001673995295663e-01, -8.008559977683727e-02, -6.003605708078209e-02, -4.001065431476606e-02, -2.000135228497023e-02, 6.661338147750939e-16, 2.000135228468595e-02, 4.001071396793809e-02, 6.003611679874103e-02, 8.008553998537991e-02, 1.001673995299234e-01, 1.202898797056666e-01, 1.404614295037558e-01, 1.606906841687625e-01, 1.809865024645448e-01, 2.013578673515531e-01, 2.218144391881711e-01, 2.423658421796119e-01, 2.630222240560475e-01, 2.837941348730692e-01, 3.046927058202928e-01, 3.257294340032417e-01, 3.469168487185605e-01, 3.682678784709134e-01, 3.897962919811088e-01, 4.115168712643961e-01, 4.334453817705624e-01, 4.555986185153786e-01, 4.779951441326363e-01, 5.006546757036839e-01, 5.235987901687622e-01, 5.468510016896938e-01, 5.704371787037691e-01, 5.943858719236573e-01, 6.187286447105954e-01, 6.435010731779789e-01, 6.687427102470667e-01, 6.944982596055491e-01, 7.208188025445131e-01, 7.477626921679752e-01, 7.753974129467638e-01, 8.038022703169497e-01, 8.330703236399136e-01, 8.633131532115564e-01, 8.94665883190034e-01, 9.272952878061306e-01, 9.614109081122795e-01, 9.972831591214071e-01, 1.035269590184259e+00, 1.075862179384858e+00, 1.119769628436248e+00, 1.168080559950084e+00, 1.22263009728392e+00, 1.287002072789597e+00, 1.370461372402204e+00, 1.570796370506287e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan.txt new file mode 100644 index 0000000000..2065894dac --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +atan1.y=[-1.107148766517639e+00, -1.0990188119943e+00, -1.090621351812926e+00, -1.081943988206564e+00, -1.072973965780339e+00, -1.063697815641912e+00, -1.05410122740032e+00, -1.044169068636603e+00, -1.033885596304824e+00, -1.023234132815382e+00, -1.01219701933794e+00, -1.000755905408125e+00, -9.888911810771551e-01, -9.765826403692707e-01, -9.638086565116331e-01, -9.505468687190282e-01, -9.367735931548569e-01, -9.22464313721024e-01, -9.075933206810939e-01, -8.92133828204941e-01, -8.760580469159053e-01, -8.593371994299389e-01, -8.419415929539554e-01, -8.238407450158989e-01, -8.05003513476979e-01, -7.853981852531433e-01, -7.649928132062604e-01, -7.437556021451456e-01, -7.216548350398088e-01, -6.986598175987283e-01, -6.747409990967537e-01, -6.498704612868826e-01, -6.240230609582326e-01, -5.971767067618984e-01, -5.693131786372668e-01, -5.404195013549542e-01, -5.104883747292748e-01, -4.795192927756186e-01, -4.475199722713827e-01, -4.145068343486408e-01, -3.805063869877695e-01, -3.455555610058534e-01, -3.097028851449942e-01, -2.730087306602546e-01, -2.355449705387405e-01, -1.973955172062573e-01, -1.586552885370904e-01, -1.194289205111713e-01, -7.98299407446374e-02, -3.997872479312041e-02, 0e+00, 3.997872479255309e-02, 7.983005917092731e-02, 1.194290379216803e-01, 1.586551722433081e-01, 1.973955172069418e-01, 2.355449705386062e-01, 2.730087306598599e-01, 3.097029932485999e-01, 3.455556663312599e-01, 3.805062840534133e-01, 4.145068343493573e-01, 4.475199722716144e-01, 4.795192927753956e-01, 5.104883747286278e-01, 5.404195888219018e-01, 5.693130938352052e-01, 5.971766252097778e-01, 6.240230609585146e-01, 6.498704612869722e-01, 6.747409990963219e-01, 6.986598873701168e-01, 7.216547676121809e-01, 7.437555375099892e-01, 7.649928132065574e-01, 7.853981852531433e-01, 8.050035420789962e-01, 8.238407724191776e-01, 8.419416456388799e-01, 8.593371739185012e-01, 8.760580224302341e-01, 8.921338282048848e-01, 9.075933206809328e-01, 9.224643353717441e-01, 9.367736348668148e-01, 9.505468283543695e-01, 9.638086370524414e-01, 9.765826403693602e-01, 9.888911900705063e-01, 1.000755922709291e+00, 1.012197044361474e+00, 1.023234100417966e+00, 1.033885580656301e+00, 1.044169061083531e+00, 1.054101231033373e+00, 1.063697826149318e+00, 1.072973986103858e+00, 1.08194396347844e+00, 1.090621335862628e+00, 1.099018804275053e+00, 1.107148766517639e+00] +atan1.u=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan2.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan2.txt new file mode 100644 index 0000000000..87fe3d5035 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Atan2.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +atan2_1.y=[-1.107148766517639e+00, -1.090955853095073e+00, -1.074373602115301e+00, -1.057397245206463e+00, -1.040022848461721e+00, -1.022246958161654e+00, -1.004067060860941e+00, -9.854819184168422e-01, -9.664908017097033e-01, -9.470946262685302e-01, -9.272952109515764e-01, -9.070959675051451e-01, -8.865015450877187e-01, -8.655182618077993e-01, -8.441540015646369e-01, -8.224182855377882e-01, -8.003224054672364e-01, -7.778795401891816e-01, -7.55104438951444e-01, -7.320138160533928e-01, -7.086262772981726e-01, -6.849620186074287e-01, -6.610431642459091e-01, -6.368932825121129e-01, -6.125375497216634e-01, -5.88002622127533e-01, -5.633162619929432e-01, -5.385074882096702e-01, -5.136060148395397e-01, -4.886423736916999e-01, -4.636476337907034e-01, -4.386528193920278e-01, -4.136892080798879e-01, -3.887877790405355e-01, -3.639789610258892e-01, -3.392926009893542e-01, -3.14757709933531e-01, -2.904019471538156e-01, -2.662520294117404e-01, -2.423331397490194e-01, -2.186689666252732e-01, -1.952813929751658e-01, -1.721907851761704e-01, -1.494157327256636e-01, -1.269727892310898e-01, -1.048769093970772e-01, -8.314124806184417e-02, -6.177695961153368e-02, -4.079366111644264e-02, -2.019929227204247e-02, 0e+00, 1.979941132193068e-02, 3.919563742854829e-02, 5.818672626421933e-02, 7.677185307662303e-02, 9.495168266580074e-02, 1.127276080572337e-01, 1.301020655403405e-01, 1.47078378122337e-01, 1.636606287534715e-01, 1.798534606977788e-01, 1.956624313738925e-01, 2.110933290572728e-01, 2.261524420207489e-01, 2.408464758078542e-01, 2.55182419118823e-01, 2.691674465397719e-01, 2.828091753623007e-01, 2.961151505661267e-01, 3.090930015527286e-01, 3.217505663259429e-01, 3.340956233613556e-01, 3.461359398265901e-01, 3.578793780779167e-01, 3.693336438272593e-01, 3.805063664913177e-01, 3.914051456331692e-01, 4.02037402105978e-01, 4.124104673019413e-01, 4.22531523657847e-01, 4.324077549221939e-01, 4.420460141790477e-01, 4.514530963452202e-01, 4.606355877763165e-01, 4.695999556057429e-01, 4.783524068139772e-01, 4.868992147934879e-01, 4.952462872178486e-01, 5.033993759341433e-01, 5.113641732038533e-01, 5.191461030830482e-01, 5.267504852105495e-01, 5.341825362328996e-01, 5.414472170839578e-01, 5.485494153515377e-01, 5.554937205931376e-01, 5.622848416110154e-01, 5.689269711965954e-01, 5.75424658888304e-01, 5.817818581563068e-01, 5.88002622127533e-01] +atan2_1.u2=[1e+00, 1.019999981373556e+00, 1.039999962747112e+00, 1.059999944120667e+00, 1.08000004470346e+00, 1.100000022351717e+00, 1.120000007450546e+00, 1.139999985098846e+00, 1.159999970197731e+00, 1.179999940395462e+00, 1.200000044703439e+00, 1.220000029802305e+00, 1.240000014901081e+00, 1.260000000000142e+00, 1.279999970197695e+00, 1.299999940395533e+00, 1.320000059604538e+00, 1.340000029802269e+00, 1.359999999999787e+00, 1.379999999999929e+00, 1.399999970197766e+00, 1.419999970197873e+00, 1.440000059604609e+00, 1.460000029802198e+00, 1.480000029802162e+00, 1.5e+00, 1.520000000000284e+00, 1.539999940395675e+00, 1.559999940395391e+00, 1.580000059604396e+00, 1.599999999999645e+00, 1.620000000000071e+00, 1.640000000000213e+00, 1.659999940395746e+00, 1.679999940395462e+00, 1.700000059604467e+00, 1.719999999999574e+00, 1.739999999999858e+00, 1.760000000000142e+00, 1.780000000000426e+00, 1.799999940395533e+00, 1.820000059604538e+00, 1.840000059604254e+00, 1.859999999999787e+00, 1.879999999999929e+00, 1.900000000000355e+00, 1.919999940395604e+00, 1.940000059604609e+00, 1.960000059604325e+00, 1.979999999999716e+00, 2e+00, 2.019999999999432e+00, 2.039999999998863e+00, 2.059999999998295e+00, 2.079999880791989e+00, 2.099999880791421e+00, 2.119999880790711e+00, 2.140000119208863e+00, 2.160000119208295e+00, 2.180000119207727e+00, 2.200000000001421e+00, 2.220000000000852e+00, 2.240000000000284e+00, 2.259999999999716e+00, 2.279999999999148e+00, 2.299999999998579e+00, 2.319999880792273e+00, 2.339999880791705e+00, 2.359999880791137e+00, 2.380000119209289e+00, 2.400000119208579e+00, 2.420000119208011e+00, 2.440000000001705e+00, 2.460000000001137e+00, 2.480000000000568e+00, 2.5e+00, 2.519999999999432e+00, 2.539999999998863e+00, 2.559999999998295e+00, 2.579999880791989e+00, 2.599999880791421e+00, 2.619999880790711e+00, 2.640000119208863e+00, 2.660000119208295e+00, 2.680000119207727e+00, 2.700000000001421e+00, 2.720000000000852e+00, 2.740000000000284e+00, 2.759999999999716e+00, 2.779999999999148e+00, 2.799999999998579e+00, 2.819999880792273e+00, 2.839999880791705e+00, 2.859999880791137e+00, 2.880000119209289e+00, 2.900000119208579e+00, 2.920000119208011e+00, 2.940000000001705e+00, 2.960000000001137e+00, 2.980000000000568e+00, 3e+00] +atan2_1.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Average.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Average.txt new file mode 100644 index 0000000000..50cfafea11 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Average.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +avg1.u1=[-2e+00, -1.940000055879345e+00, -1.879999992549428e+00, -1.82000004842875e+00, -1.759999985098855e+00, -1.70000005215405e+00, -1.639999977648283e+00, -1.580000044703481e+00, -1.519999970197731e+00, -1.460000059604538e+00, -1.399999985098794e+00, -1.340000029802305e+00, -1.279999955296596e+00, -1.219999999999858e+00, -1.159999970197695e+00, -1.100000059604467e+00, -1.039999940395462e+00, -9.800000298022691e-01, -9.200000596044317e-01, -8.6e-01, -8.000000298022335e-01, -7.399999701976776e-01, -6.799999999999999e-01, -6.200000298023223e-01, -5.599999701976777e-01, -5e-01, -4.399999403954973e-01, -3.800000596044848e-01, -3.199999999999821e-01, -2.599999403954797e-01, -2.000000745056284e-01, -1.400000149011257e-01, -7.999995529662296e-02, -2.000007823094963e-02, 3.999997764830499e-02, 1.000000372528362e-01, 1.599999105932459e-01, 2.199999701977486e-01, 2.800000298022514e-01, 3.400000894067541e-01, 3.999999701977666e-01, 4.60000029802269e-01, 5.200000596046447e-01, 5.799999403955683e-01, 6.4e-01, 7.000000596046448e-01, 7.59999940395604e-01, 8.199999999999998e-01, 8.800000596046447e-01, 9.399999403953552e-01, 1e+00, 1.059999999999432e+00, 1.120000119207016e+00, 1.180000119207584e+00, 1.239999880793269e+00, 1.299999880792132e+00, 1.359999999999858e+00, 1.419999999999573e+00, 1.4800001192073e+00, 1.540000119207726e+00, 1.599999880793552e+00, 1.659999880792416e+00, 1.720000000000284e+00, 1.779999999999716e+00, 1.840000119207584e+00, 1.900000119206448e+00, 1.959999880792274e+00, 2.019999880791705e+00, 2.079999880791989e+00, 2.140000119209289e+00, 2.200000119207158e+00, 2.26000011920801e+00, 2.319999761586537e+00, 2.380000000001137e+00, 2.440000000000568e+00, 2.5e+00, 2.559999999999432e+00, 2.619999999998863e+00, 2.680000238413463e+00, 2.73999988079199e+00, 2.799999880792842e+00, 2.859999880790711e+00, 2.920000119208011e+00, 2.980000119208295e+00, 3.040000119207726e+00, 3.099999761585684e+00, 3.160000000000852e+00, 3.220000000000284e+00, 3.279999999999716e+00, 3.339999999999148e+00, 3.400000238414316e+00, 3.459999880792274e+00, 3.519999880791705e+00, 3.579999880791989e+00, 3.640000119209289e+00, 3.700000119207158e+00, 3.76000011920801e+00, 3.819999761586537e+00, 3.880000000001137e+00, 3.940000000000568e+00, 4e+00] +avg1.y=[-2.5e-01, -2.049999972060321e-01, -1.599999944120641e-01, -1.149999990686796e-01, -6.999999627471053e-02, -2.500000372529029e-02, 2.000000558793419e-02, 6.499999627470807e-02, 1.100000074505673e-01, 1.549999850988654e-01, 1.999999962747208e-01, 2.450000074505762e-01, 2.900000037252703e-01, 3.350000298022869e-01, 3.799999925494239e-01, 4.249999850988832e-01, 4.700000149011346e-01, 5.149999776482715e-01, 5.599999701977308e-01, 6.050000298023046e-01, 6.499999627471192e-01, 6.950000223516929e-01, 7.400000149011523e-01, 7.850000074506117e-01, 8.300000074505406e-01, 8.75e-01, 9.200000596045738e-01, 9.64999925494274e-01, 1.009999985098883e+00, 1.054999985099025e+00, 1.099999970197411e+00, 1.144999970197766e+00, 1.190000089406701e+00, 1.234999955296223e+00, 1.27999995529665e+00, 1.325000074505584e+00, 1.369999940395035e+00, 1.414999940395533e+00, 1.460000059604467e+00, 1.505000059604965e+00, 1.549999925494416e+00, 1.59500004470335e+00, 1.640000044703777e+00, 1.684999910593299e+00, 1.730000029802234e+00, 1.775000029802589e+00, 1.820000014900975e+00, 1.865000014901117e+00, 1.910000014901401e+00, 1.954999999999787e+00, 2e+00, 2.045000119207726e+00, 2.089999999999148e+00, 2.135000119208011e+00, 2.179999970198637e+00, 2.224999850990342e+00, 2.269999970197464e+00, 2.315000089405795e+00, 2.359999970196931e+00, 2.405000089405795e+00, 2.449999940396421e+00, 2.494999821188411e+00, 2.539999940395568e+00, 2.585000059604432e+00, 2.630000178811589e+00, 2.675000059603579e+00, 2.719999910594205e+00, 2.765000029803069e+00, 2.809999910594205e+00, 2.855000029802536e+00, 2.900000149009658e+00, 2.945000029801363e+00, 2.989999880791989e+00, 3.035000000000852e+00, 3.079999880792274e+00, 3.125e+00, 3.170000119207726e+00, 3.214999999999148e+00, 3.260000119208011e+00, 3.304999970198637e+00, 3.349999850990342e+00, 3.394999970197464e+00, 3.440000089405795e+00, 3.484999970196931e+00, 3.530000089405795e+00, 3.574999940396421e+00, 3.619999821188411e+00, 3.664999940395568e+00, 3.710000059604432e+00, 3.755000178811589e+00, 3.800000059603579e+00, 3.844999910594205e+00, 3.890000029803069e+00, 3.934999910594205e+00, 3.980000029802536e+00, 4.025000149009657e+00, 4.070000268217385e+00, 4.114999642376821e+00, 4.159999761584547e+00, 4.204999880792274e+00, 4.25e+00] +avg1.u2=[1.5e+00, 1.529999972060327e+00, 1.559999944120655e+00, 1.59000003539023e+00, 1.620000007450599e+00, 1.649999973922997e+00, 1.679999951571254e+00, 1.710000037252895e+00, 1.740000014901188e+00, 1.769999970197838e+00, 1.799999947846002e+00, 1.830000044703457e+00, 1.860000022351782e+00, 1.890000000000071e+00, 1.919999955296543e+00, 1.950000029802234e+00, 1.980000029802162e+00, 2.009999985098812e+00, 2.039999940395249e+00, 2.069999940395391e+00, 2.099999895692183e+00, 2.130000134109767e+00, 2.160000089406843e+00, 2.190000044703421e+00, 2.220000044703563e+00, 2.25e+00, 2.280000000000142e+00, 2.309999910592873e+00, 2.339999910593157e+00, 2.369999910593157e+00, 2.400000059604467e+00, 2.430000059604609e+00, 2.460000059604751e+00, 2.489999970197482e+00, 2.519999970197624e+00, 2.549999970197766e+00, 2.579999880790497e+00, 2.609999880791208e+00, 2.640000119208792e+00, 2.670000119209503e+00, 2.700000029802234e+00, 2.730000029802376e+00, 2.760000029802518e+00, 2.789999940395249e+00, 2.819999940395391e+00, 2.849999940395533e+00, 2.880000089406843e+00, 2.910000089406843e+00, 2.940000089407127e+00, 2.969999999999858e+00, 3e+00, 3.029999999999716e+00, 3.059999999999432e+00, 3.089999999999148e+00, 3.119999821189263e+00, 3.150000059605e+00, 3.180000059604503e+00, 3.210000059604432e+00, 3.240000059604147e+00, 3.270000059603863e+00, 3.299999880791421e+00, 3.329999880791137e+00, 3.359999880791421e+00, 3.390000119208579e+00, 3.420000119208863e+00, 3.450000119208579e+00, 3.479999940396137e+00, 3.509999940395853e+00, 3.539999940395568e+00, 3.569999940395497e+00, 3.599999940395e+00, 3.630000178810737e+00, 3.660000000000852e+00, 3.690000000000568e+00, 3.720000000000284e+00, 3.75e+00, 3.779999999999716e+00, 3.809999999999432e+00, 3.839999999999148e+00, 3.869999821189263e+00, 3.900000059605e+00, 3.930000059604503e+00, 3.960000059604432e+00, 3.990000059604147e+00, 4.020000059603863e+00, 4.05000011921e+00, 4.079999880791137e+00, 4.110000119209432e+00, 4.139999880790568e+00, 4.170000119208863e+00, 4.19999988079e+00, 4.229999940396137e+00, 4.260000178814431e+00, 4.289999940395568e+00, 4.320000178814077e+00, 4.349999940395e+00, 4.380000178813295e+00, 4.409999761582274e+00, 4.440000000000568e+00, 4.469999761583979e+00, 4.5e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Cos.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Cos.txt new file mode 100644 index 0000000000..7c6438ff8d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Cos.txt @@ -0,0 +1,10 @@ +last-generated=2017-04-06 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +cos1.u=[0e+00, 6.283000252015869e-02, 1.256600050403174e-01, 1.884900075604721e-01, 2.513200100806348e-01, 3.141500008977957e-01, 3.769800151209521e-01, 4.398100059381095e-01, 5.026400201612219e-01, 5.654699577702076e-01, 6.283000017955865e-01, 6.911299862164273e-01, 7.539600302418328e-01, 8.167900146627535e-01, 8.796200118762242e-01, 9.424499494852275e-01, 1.005280040322444e+00, 1.06810997793143e+00, 1.130939915540415e+00, 1.193770065982276e+00, 1.256600003591262e+00, 1.319430034823833e+00, 1.38225997243289e+00, 1.445090029250846e+00, 1.507920060483666e+00, 1.570749998092651e+00, 1.633580029325791e+00, 1.696409873310623e+00, 1.759240023752413e+00, 1.822070054985055e+00, 1.884899898970455e+00, 1.947729930203027e+00, 2.010560080644461e+00, 2.073389924629506e+00, 2.136219955862646e+00, 2.199049987095786e+00, 2.261879831081683e+00, 2.324709862313686e+00, 2.387540131964268e+00, 2.450370163196271e+00, 2.513200007182169e+00, 2.576030038415308e+00, 2.638860069648448e+00, 2.701689913633493e+00, 2.76451994486578e+00, 2.82734997609892e+00, 2.890180058501691e+00, 2.953010089734688e+00, 3.015840120966692e+00, 3.078669964952163e+00, 3.141499996185303e+00, 3.20433002741755e+00, 3.267160058649797e+00, 3.329990089882044e+00, 3.392819746624534e+00, 3.455650016272802e+00, 3.518480047504602e+00, 3.581310078736442e+00, 3.644140109969542e+00, 3.706970141201789e+00, 3.769799797944564e+00, 3.832629829175674e+00, 3.895459860406784e+00, 3.958290130056473e+00, 4.021120161289288e+00, 4.083950192521535e+00, 4.146779849261468e+00, 4.209609880493715e+00, 4.272439911725962e+00, 4.335269942958655e+00, 4.398099974190455e+00, 4.460930005422702e+00, 4.523759662169455e+00, 4.586589693399429e+00, 4.649419724629402e+00, 4.712250232696533e+00, 4.775080263926506e+00, 4.83791029515648e+00, 4.900740326393274e+00, 4.963569983133207e+00, 5.026400014365453e+00, 5.089230045597254e+00, 5.152060076829946e+00, 5.214890108062193e+00, 5.27772013929444e+00, 5.340549796034373e+00, 5.40337982726662e+00, 5.466209858498867e+00, 5.529039889731114e+00, 5.591869920963361e+00, 5.654699952195608e+00, 5.717529608941793e+00, 5.780360117004945e+00, 5.843190148237192e+00, 5.906020179469317e+00, 5.968850210701685e+00, 6.031680241933932e+00, 6.094509898673865e+00, 6.157339929906112e+00, 6.220169961138359e+00, 6.282999992370605e+00] +cos1.y=[1e+00, 9.98026847742373e-01, 9.921151395917384e-01, 9.822883001756515e-01, 9.685850129121401e-01, 9.510594024538184e-01, 9.297805993041802e-01, 9.048326023338134e-01, 8.76313800106129e-01, 8.443368792524993e-01, 8.090279156877247e-01, 7.705262279301066e-01, 7.289838674765083e-01, 6.845646280913674e-01, 6.374439625833913e-01, 5.878077450967993e-01, 5.358518171579365e-01, 4.817812838910221e-01, 4.258095133398033e-01, 3.681572834108591e-01, 3.090522466989162e-01, 2.487275349813267e-01, 1.874213592065715e-01, 1.253755501497086e-01, 6.283486994744755e-02, 4.632679338101298e-05, -6.274249421803517e-02, -1.252835319705151e-01, -1.873303429138753e-01, -2.486378908514217e-01, -3.089640618844978e-01, -3.680711248963389e-01, -4.25725679408632e-01, -4.817000201062539e-01, -5.357735562582807e-01, -5.877328220602704e-01, -6.373725433381867e-01, -6.844970960269895e-01, -7.289204205153097e-01, -7.704672189916252e-01, -8.089734093829815e-01, -8.442872285852132e-01, -8.762692009435454e-01, -9.047931238797384e-01, -9.297464544216499e-01, -9.510307539040321e-01, -9.685619339841467e-01, -9.822709573972731e-01, -9.921035846940335e-01, -9.980210024408591e-01, -1e+00, -9.980326253577363e-01, -9.921267471125186e-01, -9.823056111687467e-01, -9.686080544294392e-01, -9.510880339541781e-01, -9.298147017373695e-01, -9.048719808327391e-01, -8.763583983775314e-01, -8.443864288533292e-01, -8.090824165441581e-01, -7.705853553839331e-01, -7.290473187994698e-01, -6.846321601560726e-01, -6.375152964741191e-01, -5.878825758555449e-01, -5.359301760537384e-01, -4.818625471673303e-01, -4.258933472702636e-01, -3.682434121228493e-01, -3.091402830221033e-01, -2.488171938546387e-01, -1.875125443140312e-01, -1.254675533176979e-01, -6.292743252797524e-02, -1.389803801430389e-04, 6.26500250617113e-02, 1.251917924329078e-01, 1.872395103470685e-01, 2.485479596650757e-01, 3.088759364163073e-01, 3.67984966381611e-01, 4.256418454769628e-01, 4.816189728006308e-01, 5.356955125914867e-01, 5.876576875066493e-01, 6.373011369696673e-01, 6.844295639627969e-01, 7.288570011749547e-01, 7.704081507942002e-01, 8.089190402462237e-01, 8.442374768077378e-01, 8.76224466715355e-01, 9.047536656015626e-01, 9.297123605661272e-01, 9.510021436805963e-01, 9.685389130779499e-01, 9.822535166606127e-01, 9.920919379664327e-01, 9.980151611803328e-01, 1e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Derivative.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Derivative.txt new file mode 100644 index 0000000000..b0762e0948 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Derivative.txt @@ -0,0 +1,13 @@ +last-generated=2023-03-27 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +der1.y=[1e+00, 9.959028960465073e-01, 9.819550519556391e-01, 9.581958684484828e-01, 9.248626850300768e-01, 8.822885751724243e-01, 8.30898953628209e-01, 7.712072653272641e-01, 7.038099253562579e-01, 6.293802670652393e-01, 5.486621260643005e-01, 4.624619694209273e-01, 3.716410243291572e-01, 2.771066265826531e-01, 1.798036161569373e-01, 8.070407062768936e-02, -1.920184716840108e-02, -1.189159127963956e-01, -2.1744191819562e-01, -3.137952016887199e-01, -4.070131480693817e-01, -4.961644638207976e-01, -5.803580489134587e-01, -6.587531326129351e-01, -7.305659589737215e-01, -7.950793504714966e-01, -8.516486182658597e-01, -8.997083093955294e-01, -9.387785952073824e-01, -9.684687606238405e-01, -9.884824156761169e-01, -9.986194411828289e-01, -9.987786430546937e-01, -9.889582916386174e-01, -9.692566620008379e-01, -9.398705363273621e-01, -9.010934407720183e-01, -8.533130532616388e-01, -7.970065182772437e-01, -7.327367113178452e-01, -6.611455082893372e-01, -5.829483086372815e-01, -4.989265031301334e-01, -4.099200013461602e-01, -3.168172843650727e-01, -2.205490320920944e-01, -1.220771244286866e-01, -2.23854605380134e-02, 7.752939656501522e-02, 1.766700847462305e-01, 2.740455269813538e-01, 3.647411141008916e-01, 4.541284012255336e-01, 5.390557256844974e-01, 6.186895825174342e-01, 6.92249596118927e-01, 7.5901079166772e-01, 8.183175770338801e-01, 8.695971051428424e-01, 9.123263581285169e-01, 9.46108877658844e-01, 9.70631915353482e-01, 9.855227644958571e-01, 9.90890798060147e-01, 9.863437494500508e-01, 9.722959399223328e-01, 9.486261326273693e-01, 9.156427842075782e-01, 8.736747178420188e-01, 8.231207646102159e-01, 7.645221352577209e-01, 6.983906552142616e-01, 6.254163707874086e-01, 5.463197591026645e-01, 4.61835526370571e-01, 3.728454411029816e-01, 2.802103751515969e-01, 1.847927217956115e-01, 8.757810316068722e-02, -1.044453920571972e-02, -1.08469620347023e-01, -2.05318977635326e-01, -3.001634173486009e-01, -3.920285763627187e-01, -4.801230111144644e-01, -5.634526014328003e-01, -6.412585481577828e-01, -7.127394173377433e-01, -7.772306818225883e-01, -8.34094245999273e-01, -8.827573657035828e-01, -9.227543871434116e-01, -9.53691352092422e-01, -9.752609390902561e-01, -9.872570870055875e-01, -9.895601272583008e-01, -9.821476770861559e-01, -9.650913042545138e-01, -9.385620932786626e-01, -9.028265100079774e-01, -8.582368493080139e-01] +intWitRes.u=[1e+00, 9.950041772274343e-01, 9.800665980245303e-01, 9.553365145438573e-01, 9.210609816323642e-01, 8.775825500488281e-01, 8.253356350982572e-01, 7.648422044298272e-01, 6.967067207138525e-01, 6.216099670055213e-01, 5.403022766113281e-01, 4.535961362508291e-01, 3.623578097032607e-01, 2.674987749498673e-01, 1.699671211937806e-01, 7.073719799518585e-02, -2.919949815154311e-02, -1.288444522436861e-01, -2.27202133965785e-01, -3.232895956755755e-01, -4.16146844625473e-01, -5.048461778740929e-01, -5.885010569415869e-01, -6.662760729310033e-01, -7.373936717231064e-01, -8.011435866355896e-01, -8.56888819398808e-01, -9.040721446803646e-01, -9.422223723193646e-01, -9.709581495340331e-01, -9.899924993515015e-01, -9.99135139616729e-01, -9.982947730248974e-01, -9.87479738349513e-01, -9.667982097489808e-01, -9.364566802978516e-01, -8.967583941020099e-01, -8.481000314388562e-01, -7.909676733146686e-01, -7.259323649847195e-01, -6.536436080932617e-01, -5.748238969829167e-01, -4.902606424960932e-01, -4.00799359006494e-01, -3.07332963797166e-01, -2.107958048582077e-01, -1.121524294260055e-01, -1.238847263511822e-02, 8.749879507316261e-02, 1.865122720715352e-01, 2.836621999740601e-01, 3.779778167700255e-01, 4.685168452190177e-01, 5.543741774070742e-01, 6.346927734317522e-01, 7.086697816848755e-01, 7.755659221144813e-01, 8.347129067995939e-01, 8.8551941424842e-01, 9.274783961174866e-01, 9.601702690124512e-01, 9.832684562031929e-01, 9.965421100845466e-01, 9.99858619082603e-01, 9.931849342926949e-01, 9.765876531600952e-01, 9.502325347879425e-01, 9.143830940304652e-01, 8.69397553994733e-01, 8.157251425022263e-01, 7.539022564888e-01, 6.845465792878729e-01, 6.083511376956182e-01, 5.260776701202705e-01, 4.385473984970318e-01, 3.466353118419647e-01, 2.512597410327659e-01, 1.533736785150569e-01, 5.395561119328425e-02, -4.600203192608105e-02, -1.455000340938568e-01, -2.435437755393855e-01, -3.391550480850473e-01, -4.313766717615178e-01, -5.192889830890152e-01, -6.020119190216064e-01, -6.787197742961457e-01, -7.486467419480308e-01, -8.110929192590418e-01, -8.654353708546059e-01, -9.111302495002747e-01, -9.477214752024828e-01, -9.748436619040397e-01, -9.922253233210268e-01, -9.996930417158711e-01, -9.971721768379211e-01, -9.846879275182084e-01, -9.62364798763793e-01, -9.304263676910163e-01, -8.891909727528647e-01, -8.3907151222229e-01] +der2.y=[0e+00, 1.261573541040191e+00, 1.712090483941703e+00, 1.851700178207826e+00, 1.864737988521703e+00, 1.819380760192871e+00, 1.741220256870108e+00, 1.640295730540954e+00, 1.521001353977452e+00, 1.385776247032267e+00, 1.236436128616333e+00, 1.074650446502839e+00, 9.020864016826857e-01, 7.204898899987495e-01, 5.31693412712761e-01, 3.375897109508514e-01, 1.401130135908014e-01, -5.876837124106268e-02, -2.57065360340503e-01, -4.527924223712543e-01, -6.43994152545929e-01, -8.287622261899449e-01, -1.005250252367809e+00, -1.171694354856316e+00, -1.32643029720939e+00, -1.467913389205933e+00, -1.594729773945908e+00, -1.705612013706523e+00, -1.79945246371589e+00, -1.875312978292578e+00, -1.932436347007751e+00, -1.970251346632632e+00, -1.98838030805751e+00, -1.98664199654143e+00, -1.965053824892065e+00, -1.923831343650818e+00, -1.863386681815249e+00, -1.784323733489241e+00, -1.687432357226279e+00, -1.573680873140911e+00, -1.444205403327942e+00, -1.300299857194408e+00, -1.143402144406011e+00, -9.750808191223271e-01, -7.970159593022511e-01, -6.109875440597534e-01, -4.188543487018059e-01, -2.225360968709077e-01, -2.399528348973932e-02, 1.747862294672636e-01, 3.718213438987732e-01, 5.65141322838544e-01, 7.52814642818514e-01, 9.32965239611256e-01, 1.103794892612504e+00, 1.263595819473267e+00, 1.410771264019913e+00, 1.543850539252614e+00, 1.661503818150347e+00, 1.762555986254738e+00, 1.845997452735901e+00, 1.910994461658609e+00, 1.956897324043274e+00, 1.983247483345361e+00, 1.989781857893151e+00, 1.976434946060181e+00, 1.943340020355622e+00, 1.890827891447654e+00, 1.819423587424041e+00, 1.729839893964001e+00, 1.622972130775452e+00, 1.499888174737287e+00, 1.361817795814848e+00, 1.210141242534122e+00, 1.046372693272172e+00, 8.721491098403931e-01, 6.892113090814868e-01, 4.993871343106556e-01, 3.045741488370629e-01, 1.067170383108498e-01, -9.220635145902634e-02, -2.902074982067049e-01, -4.85310862058335e-01, -6.755633347536464e-01, -8.590675254268733e-01, -1.033986568450928e+00, -1.198574290088221e+00, -1.351187862856297e+00, -1.490299328108361e+00, -1.614521464250162e+00, -1.722610712051392e+00, -1.813488283117332e+00, -1.886246798608269e+00, -1.940158040563774e+00, -1.974684205913325e+00, -1.989479660987854e+00, -1.984396865027746e+00, -1.95948629529222e+00, -1.914997796488926e+00, -1.851374817512973e+00, -1.769254207611084e+00] +der1.T=[9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 9.999999776482582e-03, 1.090000096857395e-02, 1.180000216066532e-02, 1.269999812990733e-02, 1.359999932199426e-02, 1.449999958276749e-02, 1.54000007748633e-02, 1.63000019669591e-02, 1.719999886750592e-02, 1.810000005960173e-02, 1.899999938905239e-02, 1.99000005811482e-02, 2.080000177324401e-02, 2.169999867379083e-02, 2.259999986588664e-02, 2.34999991953373e-02, 2.440000038743311e-02, 2.530000157952891e-02, 2.619999848007574e-02, 2.709999967217154e-02, 2.800000086426735e-02, 2.890000019371801e-02, 2.980000138581381e-02, 3.069999828636064e-02, 3.159999761582018e-02, 3.24999988079071e-02, 3.34000000000118e-02, 3.430000119211649e-02, 3.519999809266331e-02, 3.609999928475023e-02, 3.700000047683716e-02, 3.789999737743031e-02, 3.880000286097008e-02, 3.969999976159875e-02, 4.060000524510302e-02, 4.149999842047691e-02, 4.239999532114111e-02, 4.330000080464536e-02, 4.419999770527405e-02, 4.510000318874277e-02, 4.600000008940697e-02, 4.689999699007116e-02, 4.78000024735399e-02, 4.869999937416857e-02, 4.960000485767281e-02, 5.050000175833702e-02, 5.139999493371092e-02, 5.230000041721517e-02, 5.319999731784385e-02, 5.410000280138363e-02, 5.499999970197678e-02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Divide.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Divide.txt new file mode 100644 index 0000000000..549ff5057a --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Divide.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +div1.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +div1.u2=[1e+00, 1.019999981373556e+00, 1.039999962747112e+00, 1.059999944120667e+00, 1.08000004470346e+00, 1.100000022351717e+00, 1.120000007450546e+00, 1.139999985098846e+00, 1.159999970197731e+00, 1.179999940395462e+00, 1.200000044703439e+00, 1.220000029802305e+00, 1.240000014901081e+00, 1.260000000000142e+00, 1.279999970197695e+00, 1.299999940395533e+00, 1.320000059604538e+00, 1.340000029802269e+00, 1.359999999999787e+00, 1.379999999999929e+00, 1.399999970197766e+00, 1.419999970197873e+00, 1.440000059604609e+00, 1.460000029802198e+00, 1.480000029802162e+00, 1.5e+00, 1.520000000000284e+00, 1.539999940395675e+00, 1.559999940395391e+00, 1.580000059604396e+00, 1.599999999999645e+00, 1.620000000000071e+00, 1.640000000000213e+00, 1.659999940395746e+00, 1.679999940395462e+00, 1.700000059604467e+00, 1.719999999999574e+00, 1.739999999999858e+00, 1.760000000000142e+00, 1.780000000000426e+00, 1.799999940395533e+00, 1.820000059604538e+00, 1.840000059604254e+00, 1.859999999999787e+00, 1.879999999999929e+00, 1.900000000000355e+00, 1.919999940395604e+00, 1.940000059604609e+00, 1.960000059604325e+00, 1.979999999999716e+00, 2e+00, 2.019999999999432e+00, 2.039999999998863e+00, 2.059999999998295e+00, 2.079999880791989e+00, 2.099999880791421e+00, 2.119999880790711e+00, 2.140000119208863e+00, 2.160000119208295e+00, 2.180000119207727e+00, 2.200000000001421e+00, 2.220000000000852e+00, 2.240000000000284e+00, 2.259999999999716e+00, 2.279999999999148e+00, 2.299999999998579e+00, 2.319999880792273e+00, 2.339999880791705e+00, 2.359999880791137e+00, 2.380000119209289e+00, 2.400000119208579e+00, 2.420000119208011e+00, 2.440000000001705e+00, 2.460000000001137e+00, 2.480000000000568e+00, 2.5e+00, 2.519999999999432e+00, 2.539999999998863e+00, 2.559999999998295e+00, 2.579999880791989e+00, 2.599999880791421e+00, 2.619999880790711e+00, 2.640000119208863e+00, 2.660000119208295e+00, 2.680000119207727e+00, 2.700000000001421e+00, 2.720000000000852e+00, 2.740000000000284e+00, 2.759999999999716e+00, 2.779999999999148e+00, 2.799999999998579e+00, 2.819999880792273e+00, 2.839999880791705e+00, 2.859999880791137e+00, 2.880000119209289e+00, 2.900000119208579e+00, 2.920000119208011e+00, 2.940000000001705e+00, 2.960000000001137e+00, 2.980000000000568e+00, 3e+00] +div1.y=[-2e+00, -1.921568630413864e+00, -1.84615385203e+00, -1.773584957134784e+00, -1.703703754991204e+00, -1.636363630470428e+00, -1.571428528846313e+00, -1.508771898203324e+00, -1.44827579392527e+00, -1.389830490702423e+00, -1.333333381375813e+00, -1.278688546802214e+00, -1.225806460775224e+00, -1.174603199848596e+00, -1.125000002919508e+00, -1.076923160244675e+00, -1.030302985033577e+00, -9.850746473109788e-01, -9.411765051223082e-01, -8.985507388385574e-01, -8.571428778568234e-01, -8.169013598445602e-01, -7.77777786436888e-01, -7.397260226867141e-01, -7.027026815520762e-01, -6.666666865348816e-01, -6.315788893367184e-01, -5.974026089172969e-01, -5.641025940129073e-01, -5.316455693534409e-01, -5.000000373460506e-01, -4.691357983490571e-01, -4.390243675672568e-01, -4.096385920191999e-01, -3.809523982091967e-01, -3.529411687751335e-01, -3.255814403599185e-01, -2.988505787774926e-01, -2.727272685680724e-01, -2.471909758672643e-01, -2.222222386278559e-01, -1.978021922950608e-01, -1.739130157994873e-01, -1.505376564315261e-01, -1.276595687659799e-01, -1.052631323169938e-01, -8.333335396366741e-02, -6.185566753596457e-02, -4.08163033974435e-02, -2.020203968331871e-02, 0e+00, 1.980199854489794e-02, 3.921572425565377e-02, 5.825248155730565e-02, 7.692304003523785e-02, 9.523807534587461e-02, 1.132075446048195e-01, 1.308411335486836e-01, 1.481481778153611e-01, 1.651376628464157e-01, 1.818181477575681e-01, 1.981981760098777e-01, 2.14285708798344e-01, 2.300885096239699e-01, 2.456140588934421e-01, 2.608695986185286e-01, 2.75862028890707e-01, 2.905982786546857e-01, 3.050847248642052e-01, 3.193277452229643e-01, 3.33333359796339e-01, 3.47107469496047e-01, 3.606556864959297e-01, 3.739837155514761e-01, 3.870967502326835e-01, 4.000000059604645e-01, 4.126984298967459e-01, 4.251968798737931e-01, 4.375000348694366e-01, 4.496123830479173e-01, 4.615384497018672e-01, 4.732824536150984e-01, 4.848485074954529e-01, 4.962406346856562e-01, 5.074627095069567e-01, 5.185184812783804e-01, 5.294117772639944e-01, 5.401459881441903e-01, 5.507246305878943e-01, 5.611511020705164e-01, 5.714286212664641e-01, 5.815602276771085e-01, 5.915492607292059e-01, 6.013985802218165e-01, 6.111111067848054e-01, 6.20689641832506e-01, 6.301369868104991e-01, 6.394557687719326e-01, 6.486486022130972e-01, 6.577181134026411e-01, 6.666666865348816e-01] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Exp.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Exp.txt new file mode 100644 index 0000000000..bdff4deccd --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Exp.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-17 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +Exp1.y=[1e+00, 1.020201325873546e+00, 1.040810824372952e+00, 1.061836601730507e+00, 1.083287121806318e+00, 1.105170963551128e+00, 1.127496841599857e+00, 1.150273799211986e+00, 1.173510913285666e+00, 1.197217336691625e+00, 1.221402760687553e+00, 1.246076704560001e+00, 1.271249181904797e+00, 1.296930087085034e+00, 1.323129771565821e+00, 1.349858744774441e+00, 1.377127776478824e+00, 1.404947633497226e+00, 1.433329442541903e+00, 1.462284571958676e+00, 1.491824737257591e+00, 1.521961589783581e+00, 1.552707198991363e+00, 1.584074007193513e+00, 1.616074460236732e+00, 1.648721218109131e+00, 1.682027729709197e+00, 1.716006838290017e+00, 1.750672455436808e+00, 1.786038428610279e+00, 1.822118715799465e+00, 1.858928075527093e+00, 1.896480945113924e+00, 1.934792229556794e+00, 1.97387777349978e+00, 2.01375272295227e+00, 2.05443304871722e+00, 2.095935563166035e+00, 2.138276359010165e+00, 2.181472364019883e+00, 2.225540849910939e+00, 2.27049996095928e+00, 2.3163669718051e+00, 2.363160576461337e+00, 2.41089965064865e+00, 2.459603129971692e+00, 2.509290414977101e+00, 2.559981352246142e+00, 2.61169653785808e+00, 2.664456078356227e+00, 2.718281745910645e+00, 2.773194842886381e+00, 2.829217065233922e+00, 2.886371062783082e+00, 2.944679372554706e+00, 3.004166054770411e+00, 3.064854130464693e+00, 3.126768395419199e+00, 3.189933406704496e+00, 3.254374436706318e+00, 3.320116838768686e+00, 3.3871876226322e+00, 3.455613341821606e+00, 3.525421414684955e+00, 3.596639736284675e+00, 3.669296916799101e+00, 3.743421120194419e+00, 3.819043270687751e+00, 3.896193210291447e+00, 3.974901695169893e+00, 4.055200196818824e+00, 4.137120424789885e+00, 4.220695731419242e+00, 4.305959537608988e+00, 4.392945682829174e+00, 4.481688976287842e+00, 4.572225181224325e+00, 4.664590537028454e+00, 4.758821283433392e+00, 4.854955465285225e+00, 4.953032375739844e+00, 5.053090071473239e+00, 5.155169560890726e+00, 5.259310898249487e+00, 5.365556045240056e+00, 5.473947264532487e+00, 5.584528286744187e+00, 5.697343295232494e+00, 5.812437589874176e+00, 5.929856470345918e+00, 6.049647620281685e+00, 6.171857987623993e+00, 6.296538143218781e+00, 6.423736480559417e+00, 6.553504975160256e+00, 6.685894649009948e+00, 6.820958907654735e+00, 6.958750804246297e+00, 7.099326817127831e+00, 7.242742877423612e+00, 7.389056205749512e+00] +Exp1.u=[0e+00, 2e-02, 4e-02, 6e-02, 8e-02, 1e-01, 1.2e-01, 1.4e-01, 1.6e-01, 1.8e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.2e-01, 3.4e-01, 3.6e-01, 3.8e-01, 4e-01, 4.2e-01, 4.4e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.8e-01, 6e-01, 6.2e-01, 6.4e-01, 6.6e-01, 6.8e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.2e-01, 8.4e-01, 8.6e-01, 8.8e-01, 9e-01, 9.2e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00, 1.52e+00, 1.54e+00, 1.56e+00, 1.58e+00, 1.6e+00, 1.62e+00, 1.64e+00, 1.66e+00, 1.68e+00, 1.7e+00, 1.72e+00, 1.74e+00, 1.76e+00, 1.78e+00, 1.8e+00, 1.82e+00, 1.84e+00, 1.86e+00, 1.88e+00, 1.9e+00, 1.92e+00, 1.94e+00, 1.96e+00, 1.98e+00, 2e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Greater.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Greater.txt new file mode 100644 index 0000000000..72ab505156 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Greater.txt @@ -0,0 +1,12 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +gre.u1=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1.811628505752779e+00, -1.624000400138706e+00, -1.43785598996685e+00, -1.253930286818943e+00, -1.072949051856995e+00, -8.956264080262712e-01, -7.226622324250406e-01, -5.547389199236601e-01, -3.925195852485924e-01, -2.366442382335663e-01, -8.7727893193044e-02, 5.364125336904336e-02, 1.869059369170518e-01, 3.115396239174152e-01, 4.270509779453278e-01, 5.329838752732372e-01, 6.289199748783157e-01, 7.1448121270354e-01, 7.89329401980005e-01, 8.531695604324341e-01, 9.057495434078494e-01, 9.468617265306255e-01, 9.763441192861637e-01, 9.940801734758675e-01, 1e+00, 9.940801734758675e-01, 9.763441192861637e-01, 9.468617265306255e-01, 9.057495434078492e-01, 8.531695604324341e-01, 7.893294019800053e-01, 7.144810198268143e-01, 6.289201903800828e-01, 5.329838752732368e-01, 4.270509779453278e-01, 3.115396239174147e-01, 1.869056280486268e-01, 5.364157980559271e-02, -8.772789317175074e-02, -2.366442382335663e-01, -3.925197754217349e-01, -5.547393145486301e-01, -7.226618265200716e-01, -8.956261994185419e-01, -1.072949051856995e+00, -1.253930504668855e+00, -1.437856431721111e+00, -1.623999954498346e+00, -1.811628281550894e+00, -2e+00, -2.188371837658394e+00, -2.376000045501654e+00, -2.562143687488177e+00, -2.746069495331147e+00, -2.927051067352295e+00, -3.10437386018582e+00, -3.277338113875285e+00, -3.445260685450803e+00, -3.607480135171581e+00, -3.763355731964111e+00, -3.912272114257252e+00, -4.053641579804455e+00, -4.186905613149738e+00, -4.311539534512012e+00, -4.427051067352295e+00, -4.532983875272384e+00, -4.628920249494676e+00, -4.714481198640749e+00, -4.789329461585503e+00, -4.853169441223145e+00, -4.905749137797657e+00, -4.946861809072616e+00, -4.976344061279806e+00, -4.994080107325297e+00, -5e+00, -4.994080107325297e+00, -4.976344061279806e+00, -4.946861809072616e+00, -4.905749137797656e+00, -4.853169441223145e+00, -4.78932978929101e+00, -4.714481198644446e+00, -4.628920249490593e+00, -4.532983390825205e+00, -4.427051067352295e+00, -4.311540104800364e+00, -4.186905613155646e+00, -4.053641579798243e+00, -3.91227141957735e+00, -3.763355731964111e+00] +gre.u2=[-1.5e+00, -1.450000048428773e+00, -1.399999977648257e+00, -1.350000029802314e+00, -1.299999955296512e+00, -1.25e+00, -1.200000059604609e+00, -1.149999970197695e+00, -1.100000029802305e+00, -1.049999940395391e+00, -1e+00, -9.5e-01, -9e-01, -8.5e-01, -7.999999999999999e-01, -7.5e-01, -7e-01, -6.499999999999999e-01, -6.000000000000001e-01, -5.5e-01, -5e-01, -4.499999403953552e-01, -4.000000298023223e-01, -3.499999701976775e-01, -3.000000596046448e-01, -2.5e-01, -1.999999552964453e-01, -1.500000298023223e-01, -9.999997764824031e-02, -5.000004842880945e-02, 0e+00, 5.000004842880945e-02, 9.999997764824053e-02, 1.500000298023225e-01, 1.999999552964455e-01, 2.5e-01, 3.000000596046446e-01, 3.499999701976777e-01, 4.000000298023223e-01, 4.499999403953554e-01, 5e-01, 5.500000596046446e-01, 6.000001192092896e-01, 6.499998807937309e-01, 6.999999403953554e-01, 7.5e-01, 8.00000059604645e-01, 8.500001192092892e-01, 8.999998807907104e-01, 9.499999403956485e-01, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.149999880790711e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.350000119209289e+00, 1.39999988079071e+00, 1.45e+00, 1.5e+00, 1.55e+00, 1.60000011920929e+00, 1.64999988079071e+00, 1.7e+00, 1.75e+00, 1.8e+00, 1.85000011920929e+00, 1.899999880790711e+00, 1.95e+00, 2e+00, 2.05e+00, 2.1e+00, 2.15e+00, 2.2e+00, 2.25e+00, 2.3e+00, 2.35e+00, 2.4e+00, 2.45e+00, 2.5e+00, 2.549999761585969e+00, 2.599999999997726e+00, 2.650000000002273e+00, 2.700000238414032e+00, 2.75e+00, 2.799999761585968e+00, 2.849999999997726e+00, 2.900000000002274e+00, 2.950000238414032e+00, 3e+00, 3.049999761585968e+00, 3.099999999997727e+00, 3.150000000002274e+00, 3.200000238414031e+00, 3.25e+00, 3.299999761585968e+00, 3.349999999997726e+00, 3.400000000002274e+00, 3.450000238414032e+00, 3.5e+00] +gre.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.266945395828056e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +greHys.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 4.916541686217357e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_GreaterThreshold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_GreaterThreshold.txt new file mode 100644 index 0000000000..c79b6f451b --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_GreaterThreshold.txt @@ -0,0 +1,12 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +gre.u=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1.497676015340886e+00, -9.973343606335472e-01, -5.009492668417413e-01, -1.048078720206188e-02, 4.721359610557556e-01, 9.449963048679213e-01, 1.406234166075659e+00, 1.85402962634291e+00, 2.286614518809852e+00, 2.702281951904297e+00, 3.099392304686385e+00, 3.47637659617823e+00, 3.831749125375993e+00, 4.164105584308051e+00, 4.4721360206604e+00, 4.754623667394541e+00, 5.010453107397214e+00, 5.238616567209061e+00, 5.438211738613346e+00, 5.608452320098877e+00, 5.748665449086841e+00, 5.858297778469661e+00, 5.93691781037549e+00, 5.984213795934889e+00, 6e+00, 5.984213795934889e+00, 5.93691781037549e+00, 5.858297778469661e+00, 5.74866544908684e+00, 5.608452320098877e+00, 5.438211738613347e+00, 5.238616052869989e+00, 5.010453680767095e+00, 4.75462366739454e+00, 4.4721360206604e+00, 4.164105584308049e+00, 3.831748301726575e+00, 3.476377466676903e+00, 3.099392304686384e+00, 2.702281951904297e+00, 2.286614011680809e+00, 1.85402857400833e+00, 1.406235248488341e+00, 9.449968616175726e-01, 4.721359610557556e-01, -1.048136813505908e-02, -5.009504448522509e-01, -9.973331722587795e-01, -1.49767541746905e+00, -2e+00, -2.502324582530945e+00, -3.002666708533068e+00, -3.499049674355329e+00, -3.989518654217149e+00, -4.4721360206604e+00, -4.944996801550559e+00, -5.406235129281329e+00, -5.854028335594302e+00, -6.286614011680805e+00, -6.702281951904297e+00, -7.09939230468752e+00, -7.476377705090932e+00, -7.831748301726572e+00, -8.164106061140663e+00, -8.472135543823242e+00, -8.75462366739454e+00, -9.010453680767094e+00, -9.238615576037381e+00, -9.438211261778463e+00, -9.608451843261719e+00, -9.748664367460419e+00, -9.858298475415383e+00, -9.936917178866837e+00, -9.984213937413436e+00, -1e+01, -9.984213937413436e+00, -9.936917178866837e+00, -9.858298475415383e+00, -9.748664367460417e+00, -9.608451843261719e+00, -9.438212135678004e+00, -9.238615576047238e+00, -9.010453680756207e+00, -8.754622375521754e+00, -8.472135543823242e+00, -8.16410758191112e+00, -7.831748301742326e+00, -7.476377705074368e+00, -7.099390452212329e+00, -6.702281951904297e+00] +gre.t=[2e+00, 2e+00] +gre.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +greHys.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 8.091269490084763e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Hysteresis.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Hysteresis.txt new file mode 100644 index 0000000000..f52ffb2fd8 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Hysteresis.txt @@ -0,0 +1,14 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +hysteresis.u=[0e+00, 1.56976301000347e-01, 3.133330712786273e-01, 4.684532984120606e-01, 6.217247383500868e-01, 7.725424655010872e-01, 9.203114108910556e-01, 1.064448233170911e+00, 1.204384232253481e+00, 1.339566898410891e+00, 1.469463091020046e+00, 1.593559987568817e+00, 1.711367756856865e+00, 1.822421601679775e+00, 1.92628311509584e+00, 2.022542421147277e+00, 2.110819846391163e+00, 2.190766559266606e+00, 2.262067507907246e+00, 2.324441208101661e+00, 2.377641186273779e+00, 2.421458030889631e+00, 2.455718043859428e+00, 2.480286828001585e+00, 2.49506688594207e+00, 2.5e+00, 2.495066870834328e+00, 2.48028685669509e+00, 2.455718043859427e+00, 2.421457972510137e+00, 2.37764125870761e+00, 2.324441208101661e+00, 2.262067507907246e+00, 2.190766909464202e+00, 2.110819846391163e+00, 2.022542421147278e+00, 1.9262832632491e+00, 1.822421720889064e+00, 1.711367790613847e+00, 1.59355992556915e+00, 1.469463304577051e+00, 1.339567017620181e+00, 1.204384145815707e+00, 1.06444845798415e+00, 9.203114756564897e-01, 7.725424174162248e-01, 6.217249707299275e-01, 4.684533888724105e-01, 3.133330460020628e-01, 1.569765810520877e-01, 1.339744812867139e-07, -1.569763128289594e-01, -3.133332421028605e-01, -4.684535799669168e-01, -6.217242785806794e-01, -7.725421790003055e-01, -9.203111776327465e-01, -1.064448219564059e+00, -1.204384317440418e+00, -1.339567173246441e+00, -1.469462686407816e+00, -1.593559687153164e+00, -1.711367552196086e+00, -1.822421482469726e+00, -1.926283144037693e+00, -2.022542694869402e+00, -2.11081959367541e+00, -2.190766445221302e+00, -2.262067507907116e+00, -2.324441208101863e+00, -2.377641257762269e+00, -2.421457849255299e+00, -2.455717953487118e+00, -2.480286797207312e+00, -2.495066870834482e+00, -2.5e+00, -2.495066870834482e+00, -2.480286797207312e+00, -2.455718191902287e+00, -2.42145808767132e+00, -2.377641496180849e+00, -2.324441208101863e+00, -2.262067746325695e+00, -2.190766683637892e+00, -2.110819593678535e+00, -2.022542933287981e+00, -1.926283382456272e+00, -1.822421720888305e+00, -1.711367909823955e+00, -1.593559925571743e+00, -1.469463044035685e+00, -1.33956753087431e+00, -1.204384675068287e+00, -1.064448577191928e+00, -9.203115948652599e-01, -7.725425366281742e-01, -6.21724636208548e-01, -4.684539971990039e-01, -3.133336295330515e-01, -1.569767151603116e-01, -2.679489625734277e-07] +hysteresis.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +hysteresis1.u=[0e+00, 5.877852548020184e-01, 9.510565469929613e-01, 9.51056524512735e-01, 5.877851965882408e-01, 4.669026060222237e-08, -5.877853088719246e-01, -9.510565331236185e-01, -9.510564986800658e-01, -5.877854170114153e-01, -9.361950796191176e-08, 5.877852728252668e-01, 9.510565818958913e-01, 9.510564297929095e-01, 5.877852728252662e-01, 3.735213902900103e-07, -5.877854170114153e-01, -9.510564986800661e-01, -9.510566517017776e-01, -5.877851175888156e-01, -1.867606946037714e-07, 5.877855611975631e-01, 9.510565586272626e-01, 9.510566051645198e-01, 5.877849595897895e-01, 6.123233998228043e-16, -5.877857053837123e-01, -9.510562920185974e-01, -9.510565586272621e-01, -5.877848015907633e-01, -7.489560659400263e-07, 5.877851175888156e-01, 9.510566517017776e-01, 9.510567447762921e-01, 5.87785417011414e-01, -3.735213908874251e-07, -5.87784485592708e-01, -9.510564297929095e-01, -9.510564297929095e-01, -5.87784485592708e-01, -3.735213891520317e-07, 5.87785417011414e-01, 9.510567447762921e-01, 9.510566517017776e-01, 5.877851175888156e-01, -7.47042778760458e-07, -5.877848015907633e-01, -9.510565586272621e-01, -9.510562920185974e-01, -5.877857053837123e-01, -1.224646799645609e-15, 5.877857053768371e-01, 9.510568378463694e-01, 9.510558787055131e-01, 5.877862821128343e-01, 7.470316425728374e-07, -5.877851175869351e-01, -9.510566517001124e-01, -9.510561542500338e-01, -5.877838536173216e-01, -1.494063297968751e-06, 5.877844856040088e-01, 9.510564297945518e-01, 9.510564297945518e-01, 5.877844856040088e-01, -1.494063298453019e-06, -5.877838536173214e-01, -9.510561542500338e-01, -9.510566517001124e-01, -5.87785117586935e-01, 7.470316501584374e-07, 5.877862821128343e-01, 9.510558787055131e-01, 9.510568378463694e-01, 5.877857053768371e-01, 5.389683772389795e-15, -5.877857053768371e-01, -9.510568378463694e-01, -9.510558787055131e-01, -5.877862821128343e-01, -7.470316467361737e-07, 5.877851175869351e-01, 9.510566517001124e-01, 9.510561542500338e-01, 5.877838536173216e-01, 1.494063302132087e-06, -5.877844856040088e-01, -9.510564297945518e-01, -9.510564297945518e-01, -5.877844856040088e-01, 1.494063294288032e-06, 5.877838536173214e-01, 9.510561542500338e-01, 9.510566517001124e-01, 5.87785117586935e-01, -7.470316459934253e-07, -5.877862821128343e-01, -9.510558787055131e-01, -9.510568378463694e-01, -5.877857053768371e-01, -2.449293599291217e-15] +hysteresis1.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +hysteresis2.u=[0e+00, 3.090170091883316e-01, 5.877852550831602e-01, 8.090170144214469e-01, 9.510565478473709e-01, 9.999999992648992e-01, 9.510565257429763e-01, 8.090170078442965e-01, 5.877851975336643e-01, 3.090171082748573e-01, 4.681209514814655e-08, -3.090170201979346e-01, -5.87785310558651e-01, -8.090170867701829e-01, -9.510565336704234e-01, -9.999999941192049e-01, -9.510565019607415e-01, -8.090170341529122e-01, -5.877854215096746e-01, -3.090169306671733e-01, -9.356497701618061e-08, 3.090171963517797e-01, 5.877852735749767e-01, 8.090169222575976e-01, 9.510565870223401e-01, 1e+00, 9.510564385413781e-01, 8.090171920047236e-01, 5.87785273574976e-01, 3.090167508787323e-01, 3.744967623110079e-07, -3.090169306671733e-01, -5.877854215096746e-01, -8.090167501326991e-01, -9.510565019607419e-01, -9.99999994119205e-01, -9.510566653723079e-01, -8.090170867701829e-01, -5.877851201097095e-01, -3.090165710902895e-01, -1.871299540184834e-07, 3.090171082748565e-01, 5.877855694443719e-01, 8.09016864882631e-01, 9.510565609056844e-01, 9.9999998823841e-01, 9.510566131389959e-01, 8.090169796325641e-01, 5.877849652618008e-01, 3.090172844287029e-01, 6.123233998228043e-16, -3.090172844245031e-01, -5.877857173720165e-01, -8.090175077008204e-01, -9.51056311706054e-01, -9.999999882385853e-01, -9.510565609059952e-01, -8.090168648846839e-01, -5.877848104203527e-01, -3.090162115251951e-01, -7.48508664688563e-07, 3.090165710967192e-01, 5.877851201115555e-01, 8.090170867689285e-01, 9.5105666537044e-01, 9.999999764771703e-01, 9.510567698355064e-01, 8.090172972348735e-01, 5.877854215070279e-01, 3.090169306661034e-01, -3.742543329311947e-07, -3.090176367269428e-01, -5.877845007291471e-01, -8.090166353882378e-01, -9.510564385428901e-01, -1e+00, -9.510564385428901e-01, -8.090166353882378e-01, -5.87784500729147e-01, -3.090176367269428e-01, -3.742543312201807e-07, 3.090169306661034e-01, 5.877854215070281e-01, 8.090172972348735e-01, 9.510567698355064e-01, 9.999999764771703e-01, 9.5105666537044e-01, 8.090170867689285e-01, 5.877851201115555e-01, 3.090165710967192e-01, -7.485086628548458e-07, -3.090162115251951e-01, -5.877848104203527e-01, -8.090168648846841e-01, -9.510565609059952e-01, -9.999999882385853e-01, -9.51056311706054e-01, -8.090175077008204e-01, -5.877857173720165e-01, -3.090172844245031e-01, -1.224646799645609e-15] +hysteresis2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 4.681209607171333e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.744967703145363e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_IntegratorWithReset.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_IntegratorWithReset.txt new file mode 100644 index 0000000000..df0eccdac5 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_IntegratorWithReset.txt @@ -0,0 +1,20 @@ +last-generated=2023-03-23 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +cons.y=[1e+01, 1e+01] +booleanPulse.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +intDef.y_start=[-2e+00, -2e+00] +intDef.y=[-2e+00, -1.89999997392297e+00, -1.799999947845941e+00, -1.700000040978167e+00, -1.600000014901171e+00, -1.500000007450572e+00, -1.399999962747112e+00, -1.299999955296536e+00, -1.200000029802269e+00, -1.100000059604538e+00, -1.000000014901117e+00, -8.999999701976954e-01, -7.999999850988389e-01, -6.999999403954973e-01, -6.000000298023045e-01, -5.000000596044671e-01, -3.999999701977309e-01, -3.00000029802269e-01, -2.000000745056462e-01, -9.99999776483026e-02, -2.980226099236205e-08, -2.099999839067654e+00, -1.999999988079107e+00, -1.900000017881269e+00, -1.799999898672264e+00, -1.700000047683716e+00, -1.59999992847471e+00, -1.500000107288041e+00, -1.399999988079035e+00, -1.29999986887003e+00, -1.20000016689265e+00, -1.100000047683645e+00, -9.999999284746394e-01, -9.000001072883604e-01, -8.00000047683609e-01, -6.999999284746041e-01, -6.000001668925792e-01, -5.000000476835738e-01, -3.999999582768197e-01, -2.999998688699945e-01, -2.000000625847436e-01, -2.299999916553604e+00, -2.199999916553888e+00, -2.099999976157929e+00, -1.999999976158213e+00, -1.899999856949208e+00, -1.800000035763035e+00, -1.700000035762752e+00, -1.599999916553817e+00, -1.500000095367148e+00, -1.399999976158142e+00, -1.299999856950558e+00, -1.199999856951126e+00, -1.099999737744679e+00, -1.000000214572884e+00, -9.000000953656548e-01, -8.000000357630705e-01, -6.999999165547768e-01, -5.999998569513398e-01, -4.99999737743862e-01, -4.000002443747806e-01, -2.50000014304859e+00, -2.400000143050295e+00, -2.299999904633421e+00, -2.199999904635126e+00, -2.099999666218252e+00, -2.000000262255747e+00, -1.900000143048163e+00, -1.800000023841005e+00, -1.700000023841432e+00, -1.5999999046347e+00, -1.499999785427116e+00, -1.400000262255321e+00, -1.300000143048874e+00, -1.200000143049442e+00, -1.100000023841858e+00, -9.999999046342736e-01, -8.999997854266891e-01, -7.999997258228969e-01, -7.000002026525944e-01, -6.000001430490154e-01, -2.700000071525857e+00, -2.599999833108274e+00, -2.499999833109979e+00, -2.399999833111684e+00, -2.3000001907306e+00, -2.200000190732306e+00, -2.099999952315432e+00, -1.999999952317137e+00, -1.899999833109552e+00, -1.799999713901968e+00, -1.700000309939463e+00, -1.600000190731879e+00, -1.500000071524294e+00, -1.399999952316e+00, -1.299999833109127e+00, -1.199999833109553e+00, -1.100000309939037e+00, -1.000000190731453e+00, -9.000000715241527e-01, -8.00000011920929e-01] +intDef.y_reset_in=[-2e+00, -2.009999990686785e+00, -2.019999981373569e+00, -2.029999972060353e+00, -2.039999962747139e+00, -2.04999995157128e+00, -2.059999944120708e+00, -2.069999932944796e+00, -2.079999925494274e+00, -2.089999910593299e+00, -2.099999903142563e+00, -2.109999895691898e+00, -2.119999888241411e+00, -2.130000119208934e+00, -2.140000104308102e+00, -2.150000089406701e+00, -2.160000089406701e+00, -2.170000074505726e+00, -2.180000059604325e+00, -2.190000059604467e+00, -2.200000044703351e+00, -2.210000044702995e+00, -2.220000029802234e+00, -2.230000014900975e+00, -2.240000014901401e+00, -2.25e+00, -2.260000000000426e+00, -2.269999970197198e+00, -2.279999970197766e+00, -2.289999970198051e+00, -2.299999940396243e+00, -2.309999940395533e+00, -2.319999940395675e+00, -2.32999991059401e+00, -2.339999910593299e+00, -2.349999910593299e+00, -2.359999880791776e+00, -2.369999880791066e+00, -2.380000119208934e+00, -2.390000119208224e+00, -2.400000089406701e+00, -2.410000089406701e+00, -2.42000008940599e+00, -2.430000059604325e+00, -2.440000059604467e+00, -2.450000059603757e+00, -2.460000029801949e+00, -2.470000029802234e+00, -2.480000029802802e+00, -2.489999999999574e+00, -2.5e+00, -2.510000000000284e+00, -2.520000000000568e+00, -2.530000000000852e+00, -2.539999940397274e+00, -2.549999940396421e+00, -2.559999940395497e+00, -2.569999940395568e+00, -2.579999940395853e+00, -2.589999940396137e+00, -2.599999880792842e+00, -2.609999880791989e+00, -2.619999880791137e+00, -2.630000119208863e+00, -2.640000119208011e+00, -2.650000119207158e+00, -2.660000059603863e+00, -2.670000059604147e+00, -2.680000059604432e+00, -2.690000059604503e+00, -2.700000059603579e+00, -2.710000059602726e+00, -2.719999999999148e+00, -2.729999999999432e+00, -2.739999999999716e+00, -2.75e+00, -2.760000000000284e+00, -2.770000000000568e+00, -2.780000000000852e+00, -2.789999940397274e+00, -2.799999940396421e+00, -2.809999940395497e+00, -2.819999940395568e+00, -2.829999940395853e+00, -2.839999940396137e+00, -2.849999880792842e+00, -2.859999880791989e+00, -2.869999880791137e+00, -2.880000119208863e+00, -2.890000119208011e+00, -2.900000119207158e+00, -2.910000059603863e+00, -2.920000059604147e+00, -2.930000059604432e+00, -2.940000059604503e+00, -2.950000059603579e+00, -2.960000059602726e+00, -2.969999999999148e+00, -2.979999999999432e+00, -2.989999999999716e+00, -3e+00] +intWitRes1.y_start=[-2e+00, -2e+00] +intWitRes1.y=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -2.150000062584975e+00, -2.099999898672122e+00, -2.049999973177848e+00, -1.99999997317799e+00, -1.950000047683716e+00, -1.899999928474568e+00, -1.850000077485878e+00, -1.799999958276731e+00, -1.749999958276873e+00, -1.700000107288183e+00, -1.649999988079035e+00, -1.599999988079178e+00, -1.550000017881198e+00, -1.50000001788134e+00, -1.450000017881482e+00, -1.400000047683503e+00, -1.350000047683645e+00, -1.299999928474497e+00, -1.249999928474639e+00, -1.200000077485949e+00, -2.349999886751228e+00, -2.29999988675137e+00, -2.25000003576268e+00, -2.200000035762822e+00, -2.150000035762965e+00, -2.099999946355695e+00, -2.049999946355837e+00, -1.99999994635598e+00, -1.95000009536729e+00, -1.899999976158142e+00, -1.849999976158995e+00, -1.799999856950558e+00, -1.74999985695141e+00, -1.700000154970158e+00, -1.650000035761721e+00, -1.600000035762929e+00, -1.549999916554137e+00, -1.49999991655499e+00, -1.449999916555842e+00, -1.4000000953653e+00, -2.550000023840579e+00, -2.500000023841431e+00, -2.450000023842284e+00, -2.400000023843137e+00, -2.34999978542541e+00, -2.300000083444158e+00, -2.25000008344501e+00, -2.200000083445863e+00, -2.150000083446361e+00, -2.099999845028989e+00, -2.049999845029842e+00, -2.00000014304859e+00, -1.950000143049442e+00, -1.900000023841005e+00, -1.850000023841858e+00, -1.799999904633421e+00, -1.749999904634274e+00, -1.699999904635126e+00, -1.650000083444584e+00, -1.600000083445437e+00, -2.750000011921071e+00, -2.700000011921569e+00, -2.650000011922421e+00, -2.599999773504695e+00, -2.550000071523442e+00, -2.500000071524295e+00, -2.450000071525147e+00, -2.400000071526e+00, -2.349999833108273e+00, -2.299999833109126e+00, -2.250000131127873e+00, -2.200000131128726e+00, -2.150000131129579e+00, -2.099999892711498e+00, -2.049999892712705e+00, -1.999999892713558e+00, -1.950000190732305e+00, -1.900000071523869e+00, -1.850000071524721e+00, -1.799999952316284e+00] +intWitRes1.y_reset_in=[-2e+00, -2.009999990686785e+00, -2.019999981373569e+00, -2.029999972060353e+00, -2.039999962747139e+00, -2.04999995157128e+00, -2.059999944120708e+00, -2.069999932944796e+00, -2.079999925494274e+00, -2.089999910593299e+00, -2.099999903142563e+00, -2.109999895691898e+00, -2.119999888241411e+00, -2.130000119208934e+00, -2.140000104308102e+00, -2.150000089406701e+00, -2.160000089406701e+00, -2.170000074505726e+00, -2.180000059604325e+00, -2.190000059604467e+00, -2.200000044703351e+00, -2.210000044702995e+00, -2.220000029802234e+00, -2.230000014900975e+00, -2.240000014901401e+00, -2.25e+00, -2.260000000000426e+00, -2.269999970197198e+00, -2.279999970197766e+00, -2.289999970198051e+00, -2.299999940396243e+00, -2.309999940395533e+00, -2.319999940395675e+00, -2.32999991059401e+00, -2.339999910593299e+00, -2.349999910593299e+00, -2.359999880791776e+00, -2.369999880791066e+00, -2.380000119208934e+00, -2.390000119208224e+00, -2.400000089406701e+00, -2.410000089406701e+00, -2.42000008940599e+00, -2.430000059604325e+00, -2.440000059604467e+00, -2.450000059603757e+00, -2.460000029801949e+00, -2.470000029802234e+00, -2.480000029802802e+00, -2.489999999999574e+00, -2.5e+00, -2.510000000000284e+00, -2.520000000000568e+00, -2.530000000000852e+00, -2.539999940397274e+00, -2.549999940396421e+00, -2.559999940395497e+00, -2.569999940395568e+00, -2.579999940395853e+00, -2.589999940396137e+00, -2.599999880792842e+00, -2.609999880791989e+00, -2.619999880791137e+00, -2.630000119208863e+00, -2.640000119208011e+00, -2.650000119207158e+00, -2.660000059603863e+00, -2.670000059604147e+00, -2.680000059604432e+00, -2.690000059604503e+00, -2.700000059603579e+00, -2.710000059602726e+00, -2.719999999999148e+00, -2.729999999999432e+00, -2.739999999999716e+00, -2.75e+00, -2.760000000000284e+00, -2.770000000000568e+00, -2.780000000000852e+00, -2.789999940397274e+00, -2.799999940396421e+00, -2.809999940395497e+00, -2.819999940395568e+00, -2.829999940395853e+00, -2.839999940396137e+00, -2.849999880792842e+00, -2.859999880791989e+00, -2.869999880791137e+00, -2.880000119208863e+00, -2.890000119208011e+00, -2.900000119207158e+00, -2.910000059603863e+00, -2.920000059604147e+00, -2.930000059604432e+00, -2.940000059604503e+00, -2.950000059603579e+00, -2.960000059602726e+00, -2.969999999999148e+00, -2.979999999999432e+00, -2.989999999999716e+00, -3e+00] +intWitRes2.y_start=[-5e+00, -5e+00] +intWitRes2.y=[-5e+00, -4.949999808147577e+00, -4.900000093132206e+00, -4.849999901279894e+00, -4.800000186264413e+00, -4.750000003725375e+00, -4.699999802559781e+00, -4.650000096857513e+00, -4.599999895692111e+00, -4.550000208615777e+00, -4.500000007450736e+00, -4.449999806284985e+00, -4.400000081956107e+00, -4.34999988079135e+00, -4.300000193715015e+00, -4.250000029802944e+00, -4.199999791384223e+00, -4.150000104307889e+00, -4.099999940396101e+00, -4.050000178813685e+00, -4.000000014901472e+00, -2.150000062584975e+00, -2.099999898672122e+00, -2.049999973177848e+00, -1.99999997317799e+00, -1.950000047683716e+00, -1.899999928474568e+00, -1.850000077485878e+00, -1.799999958276731e+00, -1.749999958276873e+00, -1.700000107288183e+00, -1.649999988079035e+00, -1.599999988079178e+00, -1.550000017881198e+00, -1.50000001788134e+00, -1.450000017881482e+00, -1.400000047683503e+00, -1.350000047683645e+00, -1.299999928474497e+00, -1.249999928474639e+00, -1.200000077485949e+00, -2.349999886751228e+00, -2.29999988675137e+00, -2.25000003576268e+00, -2.200000035762822e+00, -2.150000035762965e+00, -2.099999946355695e+00, -2.049999946355837e+00, -1.99999994635598e+00, -1.95000009536729e+00, -1.899999976158142e+00, -1.849999976158995e+00, -1.799999856950558e+00, -1.74999985695141e+00, -1.700000154970158e+00, -1.650000035761721e+00, -1.600000035762929e+00, -1.549999916554137e+00, -1.49999991655499e+00, -1.449999916555842e+00, -1.4000000953653e+00, -2.550000023840579e+00, -2.500000023841431e+00, -2.450000023842284e+00, -2.400000023843137e+00, -2.34999978542541e+00, -2.300000083444158e+00, -2.25000008344501e+00, -2.200000083445863e+00, -2.150000083446361e+00, -2.099999845028989e+00, -2.049999845029842e+00, -2.00000014304859e+00, -1.950000143049442e+00, -1.900000023841005e+00, -1.850000023841858e+00, -1.799999904633421e+00, -1.749999904634274e+00, -1.699999904635126e+00, -1.650000083444584e+00, -1.600000083445437e+00, -2.750000011921071e+00, -2.700000011921569e+00, -2.650000011922421e+00, -2.599999773504695e+00, -2.550000071523442e+00, -2.500000071524295e+00, -2.450000071525147e+00, -2.400000071526e+00, -2.349999833108273e+00, -2.299999833109126e+00, -2.250000131127873e+00, -2.200000131128726e+00, -2.150000131129579e+00, -2.099999892711498e+00, -2.049999892712705e+00, -1.999999892713558e+00, -1.950000190732305e+00, -1.900000071523869e+00, -1.850000071524721e+00, -1.799999952316284e+00] +intWitRes2.y_reset_in=[-2e+00, -2.009999990686785e+00, -2.019999981373569e+00, -2.029999972060353e+00, -2.039999962747139e+00, -2.04999995157128e+00, -2.059999944120708e+00, -2.069999932944796e+00, -2.079999925494274e+00, -2.089999910593299e+00, -2.099999903142563e+00, -2.109999895691898e+00, -2.119999888241411e+00, -2.130000119208934e+00, -2.140000104308102e+00, -2.150000089406701e+00, -2.160000089406701e+00, -2.170000074505726e+00, -2.180000059604325e+00, -2.190000059604467e+00, -2.200000044703351e+00, -2.210000044702995e+00, -2.220000029802234e+00, -2.230000014900975e+00, -2.240000014901401e+00, -2.25e+00, -2.260000000000426e+00, -2.269999970197198e+00, -2.279999970197766e+00, -2.289999970198051e+00, -2.299999940396243e+00, -2.309999940395533e+00, -2.319999940395675e+00, -2.32999991059401e+00, -2.339999910593299e+00, -2.349999910593299e+00, -2.359999880791776e+00, -2.369999880791066e+00, -2.380000119208934e+00, -2.390000119208224e+00, -2.400000089406701e+00, -2.410000089406701e+00, -2.42000008940599e+00, -2.430000059604325e+00, -2.440000059604467e+00, -2.450000059603757e+00, -2.460000029801949e+00, -2.470000029802234e+00, -2.480000029802802e+00, -2.489999999999574e+00, -2.5e+00, -2.510000000000284e+00, -2.520000000000568e+00, -2.530000000000852e+00, -2.539999940397274e+00, -2.549999940396421e+00, -2.559999940395497e+00, -2.569999940395568e+00, -2.579999940395853e+00, -2.589999940396137e+00, -2.599999880792842e+00, -2.609999880791989e+00, -2.619999880791137e+00, -2.630000119208863e+00, -2.640000119208011e+00, -2.650000119207158e+00, -2.660000059603863e+00, -2.670000059604147e+00, -2.680000059604432e+00, -2.690000059604503e+00, -2.700000059603579e+00, -2.710000059602726e+00, -2.719999999999148e+00, -2.729999999999432e+00, -2.739999999999716e+00, -2.75e+00, -2.760000000000284e+00, -2.770000000000568e+00, -2.780000000000852e+00, -2.789999940397274e+00, -2.799999940396421e+00, -2.809999940395497e+00, -2.819999940395568e+00, -2.829999940395853e+00, -2.839999940396137e+00, -2.849999880792842e+00, -2.859999880791989e+00, -2.869999880791137e+00, -2.880000119208863e+00, -2.890000119208011e+00, -2.900000119207158e+00, -2.910000059603863e+00, -2.920000059604147e+00, -2.930000059604432e+00, -2.940000059604503e+00, -2.950000059603579e+00, -2.960000059602726e+00, -2.969999999999148e+00, -2.979999999999432e+00, -2.989999999999716e+00, -3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Less.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Less.txt new file mode 100644 index 0000000000..c31e776f9f --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Less.txt @@ -0,0 +1,12 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +les.u1=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1.811628505752779e+00, -1.624000400138706e+00, -1.43785598996685e+00, -1.253930286818943e+00, -1.072949051856995e+00, -8.956264080262712e-01, -7.226622324250406e-01, -5.547389199236601e-01, -3.925195852485924e-01, -2.366442382335663e-01, -8.7727893193044e-02, 5.364125336904336e-02, 1.869059369170518e-01, 3.115396239174152e-01, 4.270509779453278e-01, 5.329838752732372e-01, 6.289199748783157e-01, 7.1448121270354e-01, 7.89329401980005e-01, 8.531695604324341e-01, 9.057495434078494e-01, 9.468617265306255e-01, 9.763441192861637e-01, 9.940801734758675e-01, 1e+00, 9.940801734758675e-01, 9.763441192861637e-01, 9.468617265306255e-01, 9.057495434078492e-01, 8.531695604324341e-01, 7.893294019800053e-01, 7.144810198268143e-01, 6.289201898923054e-01, 5.329838752732368e-01, 4.270509779453278e-01, 3.115396244887637e-01, 1.869056280486268e-01, 5.364157980559271e-02, -8.772789319304464e-02, -2.366442382335663e-01, -3.925197754217349e-01, -5.547393145486301e-01, -7.226618265200716e-01, -8.956261994185419e-01, -1.072949051856995e+00, -1.253930504668855e+00, -1.437856431721111e+00, -1.623999954498346e+00, -1.811628281550894e+00, -2e+00, -2.188371837658394e+00, -2.376000045501654e+00, -2.562143687488177e+00, -2.746069495331147e+00, -2.927051067352295e+00, -3.10437386018582e+00, -3.277338113875285e+00, -3.445260685450803e+00, -3.607480135171581e+00, -3.763355731964111e+00, -3.912272114257252e+00, -4.053641579804455e+00, -4.186905613149738e+00, -4.311539534512012e+00, -4.427051067352295e+00, -4.532983875272384e+00, -4.628920249494676e+00, -4.714481198640749e+00, -4.789329461585503e+00, -4.853169441223145e+00, -4.905749137797657e+00, -4.946861809072616e+00, -4.976344061279806e+00, -4.994080107325297e+00, -5e+00, -4.994080107325297e+00, -4.976344061279806e+00, -4.946861809072616e+00, -4.905749137797656e+00, -4.853169441223145e+00, -4.78932978929101e+00, -4.714481198644446e+00, -4.628920249490593e+00, -4.532983390825205e+00, -4.427051067352295e+00, -4.311540104800364e+00, -4.186905613155646e+00, -4.053641579798243e+00, -3.91227141957735e+00, -3.763355731964111e+00] +les.u2=[-2e+00, -1.950000048428773e+00, -1.899999977648257e+00, -1.850000029802314e+00, -1.799999955296512e+00, -1.75e+00, -1.700000059604609e+00, -1.649999970197695e+00, -1.600000029802305e+00, -1.549999940395391e+00, -1.5e+00, -1.450000059604645e+00, -1.399999999999858e+00, -1.350000000000142e+00, -1.299999940395355e+00, -1.25e+00, -1.200000059604645e+00, -1.149999999999858e+00, -1.100000000000142e+00, -1.049999940395355e+00, -1e+00, -9.499999403953552e-01, -9.00000000000142e-01, -8.499999999998578e-01, -8.000000596046448e-01, -7.5e-01, -6.999999403953552e-01, -6.50000000000142e-01, -5.999999999998578e-01, -5.500000596046448e-01, -5e-01, -4.499999403953552e-01, -4.000000298023223e-01, -3.499999701976775e-01, -3.000000596046446e-01, -2.5e-01, -1.999999552964455e-01, -1.500000298023223e-01, -9.999997764824053e-02, -5.000004842880923e-02, 0e+00, 5.000004842880923e-02, 1.000000968576189e-01, 1.499999105928906e-01, 1.999999552964455e-01, 2.5e-01, 3.000000596050649e-01, 3.50000089407251e-01, 3.999999105927485e-01, 4.499999403953554e-01, 5e-01, 5.500000596046446e-01, 6.000001192092896e-01, 6.499998807907108e-01, 6.999999403953554e-01, 7.5e-01, 8.00000059604645e-01, 8.500001192092892e-01, 8.999998807907104e-01, 9.49999940395355e-01, 1e+00, 1.05e+00, 1.10000011920929e+00, 1.14999988079071e+00, 1.2e+00, 1.25e+00, 1.3e+00, 1.35000011920929e+00, 1.399999880790711e+00, 1.45e+00, 1.5e+00, 1.55e+00, 1.600000119209289e+00, 1.64999988079071e+00, 1.7e+00, 1.75e+00, 1.8e+00, 1.85000011920929e+00, 1.899999880790711e+00, 1.95e+00, 2e+00, 2.049999761585969e+00, 2.099999999997726e+00, 2.150000000002273e+00, 2.200000238414032e+00, 2.25e+00, 2.299999761585968e+00, 2.349999999997726e+00, 2.400000000002274e+00, 2.450000238414032e+00, 2.5e+00, 2.549999761585968e+00, 2.599999999997727e+00, 2.650000000002274e+00, 2.700000238414031e+00, 2.75e+00, 2.799999761585968e+00, 2.849999999997726e+00, 2.900000000002274e+00, 2.950000238414032e+00, 3e+00] +les.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +lesHys.y=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LessThreshold.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LessThreshold.txt new file mode 100644 index 0000000000..f2e3fda820 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LessThreshold.txt @@ -0,0 +1,12 @@ +last-generated=2023-03-17 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +les.u=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1.497676015340886e+00, -9.973343606335472e-01, -5.009492668417413e-01, -1.048078720206188e-02, 4.721359610557556e-01, 9.449963048679213e-01, 1.406234166075659e+00, 1.85402962634291e+00, 2.286614518809852e+00, 2.702281951904297e+00, 3.099392304686385e+00, 3.47637659617823e+00, 3.831749125375993e+00, 4.164105584308051e+00, 4.4721360206604e+00, 4.754623667394541e+00, 5.010453107397214e+00, 5.238616567209061e+00, 5.438211738613346e+00, 5.608452320098877e+00, 5.748665449086841e+00, 5.858297778469661e+00, 5.93691781037549e+00, 5.984213795934889e+00, 6e+00, 5.984213795934889e+00, 5.93691781037549e+00, 5.858297778469661e+00, 5.74866544908684e+00, 5.608452320098877e+00, 5.438211738613347e+00, 5.238616052869989e+00, 5.010453680767095e+00, 4.75462366739454e+00, 4.4721360206604e+00, 4.164105584308049e+00, 3.831748301726575e+00, 3.476377466676903e+00, 3.099392304686384e+00, 2.702281951904297e+00, 2.286614011680809e+00, 1.85402857400833e+00, 1.406235248488341e+00, 9.449968611549155e-01, 4.721359610557556e-01, -1.048136813505908e-02, -5.009504448522509e-01, -9.973331722587795e-01, -1.49767541746905e+00, -2e+00, -2.502324582530945e+00, -3.002666708533068e+00, -3.499049674355329e+00, -3.989518654217149e+00, -4.4721360206604e+00, -4.944996801550559e+00, -5.406235129281329e+00, -5.854028335594302e+00, -6.286614011680805e+00, -6.702281951904297e+00, -7.09939230468752e+00, -7.476377705090932e+00, -7.831748301726572e+00, -8.164106061140663e+00, -8.472135543823242e+00, -8.75462366739454e+00, -9.010453680767094e+00, -9.238615576037381e+00, -9.438211261778463e+00, -9.608451843261719e+00, -9.748664367460419e+00, -9.858298475415383e+00, -9.936917178866837e+00, -9.984213937413436e+00, -1e+01, -9.984213937413436e+00, -9.936917178866837e+00, -9.858298475415383e+00, -9.748664367460417e+00, -9.608451843261719e+00, -9.438212135678004e+00, -9.238615576047238e+00, -9.010453680756207e+00, -8.754622375521754e+00, -8.472135543823242e+00, -8.16410758191112e+00, -7.831748301742326e+00, -7.476377705074368e+00, -7.099390452212329e+00, -6.702281951904297e+00] +les.t=[2e+00, 2e+00] +les.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +lesHys.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LimitSlewRate.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LimitSlewRate.txt new file mode 100644 index 0000000000..e750a219d2 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_LimitSlewRate.txt @@ -0,0 +1,11 @@ +last-generated=2017-10-24 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "number of continuous time states": "1", + "linear": " " +} +sleRatLim.y=[0e+00, 0e+00, 0e+00, 1.437176146109914e-01, 3.037175877889218e-01, 4.637176096439362e-01, 6.237176314989503e-01, 7.837176831560915e-01, 9.437175480526151e-01, 1.103717540105203e+00, 1.263717651367188e+00, 1.423717643419882e+00, 1.499997735027099e+00, 1.422950080235559e+00, 1.262949961027015e+00, 1.102949976921082e+00, 9.429501120242484e-01, 7.829499332110463e-01, 6.229500683149274e-01, 4.629499193039529e-01, 3.02949994802475e-01, 1.429501150044332e-01, 8.814942139984681e-04, 2.059985892636918e-08, 4.000724315966706e-10, 2.597874519671972e-11, 1.549918677416678e-01, 3.149917773419613e-01, 4.749921806639448e-01, 6.349920455607775e-01, 7.949919700622559e-01, 9.549918945637342e-01, 1.114991819064833e+00, 1.274992192584495e+00, 1.434992057481897e+00, 1.499999284744263e+00, 1.5e+00, 1.5e+00, 1.42501119295857e+00, 1.265011208853016e+00, 1.105011343955994e+00, 9.450114194545162e-01, 7.850115545576826e-01, 6.250111214333758e-01, 4.650112565365431e-01, 3.050113320350647e-01, 1.450114522370225e-01, 1.060648718873344e-03, 9.954553664997234e-09, 3.021871829589923e-10, 5.703153227454294e-12, 1.519405420628424e-01, 3.119404367619747e-01, 4.719408400839582e-01, 6.319402559690765e-01, 7.919406294822693e-01, 9.519410626001087e-01, 1.111940418877725e+00, 1.271940792403854e+00, 1.431940267889246e+00, 1.499998569488525e+00, 1.5e+00, 1.5e+00, 1.42805973211702e+00, 1.268060256631628e+00, 1.108059883117676e+00, 9.480595096044812e-01, 7.880600937225974e-01, 6.280597201964679e-01, 4.680603043145862e-01, 3.080599009990692e-01, 1.480594976836488e-01, 1.396376906567395e-03, -3.14243751486786e-08, -6.434689225771209e-10, -4.178314638725311e-11, 1.340002801339638e-01, 2.77999814031906e-01, 4.220001740472615e-01, 5.659996185385207e-01, 7.099999785423279e-01, 8.540003385461368e-01, 9.97999842642039e-01, 1.142000143052845e+00, 1.285999647148748e+00, 1.429999947547913e+00, 1.49999713901343e+00, 1.5e+00, 1.437991555263012e+00, 1.29400039576508e+00, 1.149999976158142e+00, 1.00599967575822e+00, 8.62000171663074e-01, 7.179998116476237e-01, 5.740003671563663e-01, 4.300000071525574e-01, 2.859996471487502e-01, 1.420001877562351e-01, 3.011352473554726e-03, -6.480208271559414e-08, -5.38217415080311e-10] +sleRatLim.u=[0e+00, 0e+00, 0e+00, 3.300000417232489e-01, 6.89999940395393e-01, 1.049999952316284e+00, 1.41000002384182e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.320000166892512e+00, 9.59999749662197e-01, 6.000000238418579e-01, 2.400002235158549e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.399998420487814e-01, 4.799996840976575e-01, 7.200003337837373e-01, 9.600001311292705e-01, 1.200000047683716e+00, 1.439999904633327e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.379999690058121e+00, 1.139999833108131e+00, 8.999999761581421e-01, 6.600001788127983e-01, 4.200002920606755e-01, 1.799997019788601e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.799998927123977e-01, 3.599997854247955e-01, 5.400002503376135e-01, 7.199995708568667e-01, 8.999999761581421e-01, 1.080000500668709e+00, 1.259999761579297e+00, 1.440000286103658e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.409999737737442e+00, 1.230000476826851e+00, 1.049999952316284e+00, 8.699995470150067e-01, 6.900002264997714e-01, 5.099997615794869e-01, 3.300004708660078e-01, 1.500000059604645e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.440003600038089e-01, 2.879998044952576e-01, 4.320001943126512e-01, 5.759996090025354e-01, 7.200000286102295e-01, 8.640003886132804e-01, 1.007999833105296e+00, 1.152000133516101e+00, 1.295999637612005e+00, 1.440000057220459e+00, 1.5e+00, 1.5e+00, 1.427999790189953e+00, 1.284000405303339e+00, 1.139999985694885e+00, 9.959996256910764e-01, 8.520001811998171e-01, 7.079998211843669e-01, 5.640003766931094e-01, 4.199999868869781e-01, 2.759996268833604e-01, 1.32000182391817e-01, 0e+00, 0e+00, 0e+00] +time=[0e+00, 4.8e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Limiter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Limiter.txt new file mode 100644 index 0000000000..9624b14eb3 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Limiter.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +limiter1.u=[0e+00, 4e-02, 8e-02, 1.2e-01, 1.6e-01, 2e-01, 2.4e-01, 2.8e-01, 3.2e-01, 3.6e-01, 4e-01, 4.4e-01, 4.8e-01, 5.2e-01, 5.600000000000001e-01, 6e-01, 6.4e-01, 6.8e-01, 7.2e-01, 7.6e-01, 8e-01, 8.4e-01, 8.8e-01, 9.2e-01, 9.6e-01, 1e+00, 1.04e+00, 1.08e+00, 1.12e+00, 1.16e+00, 1.2e+00, 1.24e+00, 1.28e+00, 1.32e+00, 1.36e+00, 1.4e+00, 1.44e+00, 1.48e+00, 1.52e+00, 1.56e+00, 1.6e+00, 1.64e+00, 1.68e+00, 1.72e+00, 1.76e+00, 1.8e+00, 1.84e+00, 1.88e+00, 1.92e+00, 1.96e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00, 3.04e+00, 3.08e+00, 3.12e+00, 3.16e+00, 3.2e+00, 3.24e+00, 3.28e+00, 3.32e+00, 3.36e+00, 3.4e+00, 3.44e+00, 3.48e+00, 3.52e+00, 3.56e+00, 3.6e+00, 3.64e+00, 3.68e+00, 3.72e+00, 3.76e+00, 3.8e+00, 3.84e+00, 3.88e+00, 3.92e+00, 3.96e+00, 4e+00] +limiter1.y=[1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.24e+00, 1.28e+00, 1.32e+00, 1.36e+00, 1.4e+00, 1.44e+00, 1.48e+00, 1.52e+00, 1.56e+00, 1.6e+00, 1.64e+00, 1.68e+00, 1.72e+00, 1.76e+00, 1.8e+00, 1.84e+00, 1.88e+00, 1.92e+00, 1.96e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Line.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Line.txt new file mode 100644 index 0000000000..2833030a15 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Line.txt @@ -0,0 +1,12 @@ +last-generated=2018-03-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +line1.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.000005587923019e-02, 1.199999329449346e-01, 1.80000000000009e-01, 2.400000447034213e-01, 2.999999403953552e-01, 3.6e-01, 4.200000298023224e-01, 4.799999105932283e-01, 5.400000000000001e-01, 6.00000059604467e-01, 6.599999403953551e-01, 7.2e-01, 7.8e-01, 8.400000596046449e-01, 8.99999940395533e-01, 9.599999999999999e-01, 1.020000059604254e+00, 1.079999999999787e+00, 1.139999999999929e+00, 1.200000119208934e+00, 1.259999940395604e+00, 1.320000059604609e+00, 1.380000059604325e+00, 1.439999999999716e+00, 1.5e+00, 1.559999999999432e+00, 1.620000119207016e+00, 1.680000119207584e+00, 1.739999880793269e+00, 1.799999880792132e+00, 1.859999999999858e+00, 1.919999999999573e+00, 1.9800001192073e+00, 2.040000119207726e+00, 2.099999761585684e+00, 2.160000000000852e+00, 2.220000000000284e+00, 2.279999999999716e+00, 2.339999999999148e+00, 2.400000238414316e+00, 2.459999880792274e+00, 2.519999880791705e+00, 2.579999880791989e+00, 2.640000119209289e+00, 2.700000119207158e+00, 2.76000011920801e+00, 2.819999761586537e+00, 2.880000000001137e+00, 2.940000000000568e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +line1.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.200000596046447e-01, 5.799999403955683e-01, 6.4e-01, 7.000000596046448e-01, 7.59999940395604e-01, 8.199999999999998e-01, 8.800000596046447e-01, 9.399999403953552e-01, 1e+00, 1.059999999999432e+00, 1.120000119207016e+00, 1.180000119207584e+00, 1.239999880793269e+00, 1.299999880792132e+00, 1.359999999999858e+00, 1.419999999999573e+00, 1.4800001192073e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00] +time=[0e+00, 1e+00] +line3.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.200000596046447e-01, 5.799999403955683e-01, 6.4e-01, 7.000000596046448e-01, 7.59999940395604e-01, 8.199999999999998e-01, 8.800000596046447e-01, 9.399999403953552e-01, 1e+00, 1.059999999999432e+00, 1.120000119207016e+00, 1.180000119207584e+00, 1.239999880793269e+00, 1.299999880792132e+00, 1.359999999999858e+00, 1.419999999999573e+00, 1.4800001192073e+00, 1.540000119207726e+00, 1.599999880793552e+00, 1.659999880792416e+00, 1.720000000000284e+00, 1.779999999999716e+00, 1.840000119207584e+00, 1.900000119206448e+00, 1.959999880792274e+00, 2.019999880791705e+00, 2.079999880791989e+00, 2.140000119209289e+00, 2.200000119207158e+00, 2.26000011920801e+00, 2.319999761586537e+00, 2.380000000001137e+00, 2.440000000000568e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00] +line2.y=[-5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -4.399999403954973e-01, -3.800000596044848e-01, -3.199999999999821e-01, -2.599999403954797e-01, -2.000000745056284e-01, -1.400000149011257e-01, -7.999995529662296e-02, -2.000007823094963e-02, 3.999997764830499e-02, 1.000000372528362e-01, 1.599999105932459e-01, 2.199999701977486e-01, 2.800000298022514e-01, 3.400000894067541e-01, 3.999999701977666e-01, 4.60000029802269e-01, 5.200000596046447e-01, 5.799999403955683e-01, 6.4e-01, 7.000000596046448e-01, 7.59999940395604e-01, 8.199999999999998e-01, 8.800000596046447e-01, 9.399999403953552e-01, 1e+00, 1.059999999999432e+00, 1.120000119207016e+00, 1.180000119207584e+00, 1.239999880793269e+00, 1.299999880792132e+00, 1.359999999999858e+00, 1.419999999999573e+00, 1.4800001192073e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log.txt new file mode 100644 index 0000000000..d136279727 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +log1.y=[0e+00, 4.87901653511907e-02, 9.531018340211317e-02, 1.397619425476533e-01, 1.823215670729271e-01, 2.231435447811441e-01, 2.623642734412664e-01, 3.001045871622895e-01, 3.364722494340859e-01, 3.715635414354568e-01, 4.054650912516052e-01, 4.382549245449546e-01, 4.700036430470175e-01, 5.007752920205341e-01, 5.306282621920957e-01, 5.596157737652154e-01, 5.877866844061271e-01, 6.151856135546999e-01, 6.418538500892152e-01, 6.678294004381674e-01, 6.931471749953008e-01, 7.178397934221931e-01, 7.419373421374558e-01, 7.654678128261045e-01, 7.884573462059203e-01, 8.109301924705505e-01, 8.329091278955197e-01, 8.544153342368299e-01, 8.754687284378073e-01, 8.960880211074321e-01, 9.162907361504637e-01, 9.360933256992704e-01, 9.555114644960276e-01, 9.745596399379585e-01, 9.932517939020038e-01, 1.011600982039204e+00, 1.029619429746953e+00, 1.047318927014163e+00, 1.064710744481755e+00, 1.081805253391175e+00, 1.098612298551422e+00, 1.115141636025742e+00, 1.131402156010907e+00, 1.147402394367896e+00, 1.163150791073057e+00, 1.17865504665456e+00, 1.193922507021068e+00, 1.208960296500148e+00, 1.223775402565348e+00, 1.238374219404505e+00, 1.252762913703918e+00, 1.266947640480112e+00, 1.280933883417454e+00, 1.2947272453679e+00, 1.308332771830331e+00, 1.321755870161993e+00, 1.335001107889229e+00, 1.348073134162674e+00, 1.360976598174184e+00, 1.373715553061437e+00, 1.386294335089752e+00, 1.398716908891871e+00, 1.410987013716791e+00, 1.423108345047654e+00, 1.435084598384375e+00, 1.446918992402212e+00, 1.458615034090746e+00, 1.470175843106814e+00, 1.4816045679737e+00, 1.492904069715428e+00, 1.504077447769877e+00, 1.515127205561355e+00, 1.526056258541375e+00, 1.536867240401427e+00, 1.547562469816798e+00, 1.558144569396973e+00, 1.568615923314669e+00, 1.578978677366089e+00, 1.589235215740434e+00, 1.599387504817228e+00, 1.60943793057223e+00, 1.619388220331528e+00, 1.629240519853165e+00, 1.638996736501479e+00, 1.648658658424125e+00, 1.658228017014481e+00, 1.667706833682531e+00, 1.677096600840192e+00, 1.686398987412684e+00, 1.695615662334325e+00, 1.704748056132789e+00, 1.713797903255172e+00, 1.722766622887942e+00, 1.731655591351249e+00, 1.740466119948478e+00, 1.749199877605231e+00, 1.757857937221502e+00, 1.766441678368624e+00, 1.774952276264959e+00, 1.783391229237872e+00, 1.791759490966797e+00] +log1.u=[1e+00, 1.04999995343387e+00, 1.10000002607703e+00, 1.149999979510896e+00, 1.200000052154059e+00, 1.249999996274714e+00, 1.299999959021799e+00, 1.350000022351741e+00, 1.399999985098812e+00, 1.450000029802376e+00, 1.499999992549442e+00, 1.549999955296508e+00, 1.600000037252863e+00, 1.649999999999929e+00, 1.700000044703493e+00, 1.749999970197766e+00, 1.799999970197624e+00, 1.850000014901188e+00, 1.899999940395462e+00, 1.950000059604609e+00, 1.999999985098883e+00, 2.049999985098741e+00, 2.099999910593015e+00, 2.150000074505868e+00, 2.200000074505726e+00, 2.25e+00, 2.299999999999858e+00, 2.349999850988548e+00, 2.400000089406985e+00, 2.450000089406843e+00, 2.499999940395533e+00, 2.549999940395391e+00, 2.599999940395249e+00, 2.650000029802518e+00, 2.700000029802376e+00, 2.750000029802234e+00, 2.799999880790923e+00, 2.849999880790782e+00, 2.900000119209218e+00, 2.950000119209077e+00, 2.999999970197766e+00, 3.049999970197624e+00, 3.099999970197482e+00, 3.150000059604751e+00, 3.200000059604609e+00, 3.250000059604467e+00, 3.299999910593157e+00, 3.349999910593015e+00, 3.400000149011452e+00, 3.450000000000142e+00, 3.5e+00, 3.549999999999148e+00, 3.599999999998295e+00, 3.650000238416022e+00, 3.699999940397274e+00, 3.749999940396421e+00, 3.799999940395213e+00, 3.849999940394715e+00, 3.900000178812442e+00, 3.950000178811589e+00, 3.999999880792842e+00, 4.050000119208863e+00, 4.099999880791705e+00, 4.150000119208295e+00, 4.199999880791137e+00, 4.25000011921e+00, 4.300000059603863e+00, 4.349999821189548e+00, 4.400000059604432e+00, 4.449999821186492e+00, 4.500000059605e+00, 4.550000298018747e+00, 4.599999761587389e+00, 4.649999999999432e+00, 4.699999761583411e+00, 4.75e+00, 4.800000238416589e+00, 4.850000000000568e+00, 4.900000238412611e+00, 4.949999701981253e+00, 4.999999940395e+00, 5.050000178813508e+00, 5.099999940395568e+00, 5.150000178810452e+00, 5.199999940396137e+00, 5.24999988079e+00, 5.300000119208863e+00, 5.349999880791705e+00, 5.400000119208295e+00, 5.449999880791137e+00, 5.50000011921e+00, 5.550000059603863e+00, 5.599999821189548e+00, 5.650000059604432e+00, 5.699999821186492e+00, 5.750000059605e+00, 5.800000298018747e+00, 5.849999761587389e+00, 5.899999999999432e+00, 5.949999761583411e+00, 6e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log10.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log10.txt new file mode 100644 index 0000000000..a14c5cda78 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Log10.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +log10_1.u=[1e+00, 1.090000035390258e+00, 1.179999951571227e+00, 1.26999998696148e+00, 1.360000022351743e+00, 1.450000040978192e+00, 1.53999997392297e+00, 1.629999992549414e+00, 1.720000044703457e+00, 1.809999910593299e+00, 1.899999962747119e+00, 1.990000014901117e+00, 2.079999947846056e+00, 2.170000119208934e+00, 2.259999985098883e+00, 2.349999850988832e+00, 2.440000089406701e+00, 2.52999995529665e+00, 2.619999821186599e+00, 2.710000059604467e+00, 2.799999925494416e+00, 2.890000163912285e+00, 2.980000029802234e+00, 3.069999895692183e+00, 3.160000134110051e+00, 3.25e+00, 3.340000000000426e+00, 3.429999970197198e+00, 3.519999970197767e+00, 3.609999970198051e+00, 3.699999940394822e+00, 3.789999940395533e+00, 3.880000178813401e+00, 3.969999910592447e+00, 4.059999910592873e+00, 4.150000149011878e+00, 4.239999642374903e+00, 4.329999880790497e+00, 4.420000119209503e+00, 4.510000357625097e+00, 4.599999850988122e+00, 4.690000089407127e+00, 4.780000327823006e+00, 4.869999821187451e+00, 4.960000059604751e+00, 5.050000298020914e+00, 5.13999979138536e+00, 5.230000029802375e+00, 5.320000268218823e+00, 5.409999761583268e+00, 5.5e+00, 5.590000238415453e+00, 5.679999999998295e+00, 5.770000238416022e+00, 5.859999940397274e+00, 5.949999701980684e+00, 6.039999940394929e+00, 6.130000178811589e+00, 6.219999940393863e+00, 6.310000178811589e+00, 6.399999880792842e+00, 6.489999642376821e+00, 6.579999880791137e+00, 6.670000119208863e+00, 6.760000357623179e+00, 6.850000119207158e+00, 6.939999821188411e+00, 7.030000059606137e+00, 7.119999821188411e+00, 7.210000059605071e+00, 7.300000298019316e+00, 7.390000059602726e+00, 7.479999761583978e+00, 7.570000000001705e+00, 7.659999761584547e+00, 7.75e+00, 7.840000238415453e+00, 7.929999999998295e+00, 8.020000715246358e+00, 8.109999463565231e+00, 8.199999701980685e+00, 8.289999940395498e+00, 8.380000178811589e+00, 8.470000417227041e+00, 8.560000655642495e+00, 8.649999403961369e+00, 8.739999642376821e+00, 8.829999880792274e+00, 8.920000119207726e+00, 9.010000357623179e+00, 9.100000596038631e+00, 9.189999344357505e+00, 9.279999582772959e+00, 9.369999821188411e+00, 9.460000059604502e+00, 9.550000298019315e+00, 9.640000536434769e+00, 9.729999284753642e+00, 9.819999523169095e+00, 9.909999761584547e+00, 1e+01] +log10_1.y=[0e+00, 3.742649858220613e-02, 7.18820109758098e-02, 1.038037260997729e-01, 1.335389043585886e-01, 1.613679955061617e-01, 1.875207308993131e-01, 2.121876023974158e-01, 2.355284582269037e-01, 2.576785606016807e-01, 2.787536053851314e-01, 2.98853070709295e-01, 3.180633535502984e-01, 3.364597346486957e-01, 3.541084517619527e-01, 3.710678418299149e-01, 3.873898444033221e-01, 4.031205149583229e-01, 4.18301273605842e-01, 4.329693053663421e-01, 4.471580344425053e-01, 4.608978419489416e-01, 4.742162541242582e-01, 4.871383554110801e-01, 4.996870822313831e-01, 5.118833780288696e-01, 5.237465016087187e-01, 5.352941032853558e-01, 5.465426431736189e-01, 5.575072259428951e-01, 5.682017080907371e-01, 5.786392068058227e-01, 5.888317299250471e-01, 5.987905134503726e-01, 6.085260475937914e-01, 6.180480774629971e-01, 6.273658143452093e-01, 6.364878968975151e-01, 6.454222840428571e-01, 6.541765455954225e-01, 6.627578088560032e-01, 6.711728602593336e-01, 6.794279324743894e-01, 6.875289621060264e-01, 6.954816598572753e-01, 7.032913657739597e-01, 7.109631236405023e-01, 7.185016879392503e-01, 7.25911625148262e-01, 7.331972649222533e-01, 7.403627038002014e-01, 7.47411794167591e-01, 7.54348350754759e-01, 7.611758306413343e-01, 7.678975915621049e-01, 7.745169322743997e-01, 7.810369118497619e-01, 7.874604509116604e-01, 7.937904105003856e-01, 8.000293536287113e-01, 8.061799857236646e-01, 8.12244704679021e-01, 8.182259173639093e-01, 8.241258291493335e-01, 8.299467050181898e-01, 8.356905715427533e-01, 8.413594813267283e-01, 8.469552900865419e-01, 8.524799903655191e-01, 8.57935251096381e-01, 8.633228604169347e-01, 8.686444276676255e-01, 8.739015906380392e-01, 8.790958425157064e-01, 8.842287610925411e-01, 8.893017172813416e-01, 8.943160819812639e-01, 8.992732261147696e-01, 9.041744013828096e-01, 9.090208307691702e-01, 9.138138237338435e-01, 9.185545433234805e-01, 9.232440028137323e-01, 9.278833943052808e-01, 9.324737906868101e-01, 9.370161187092783e-01, 9.415114457938731e-01, 9.459606983990982e-01, 9.503648301971384e-01, 9.54724794865294e-01, 9.590414268752712e-01, 9.633154757430347e-01, 9.675479460929975e-01, 9.717395871814256e-01, 9.758911142654354e-01, 9.800033618081897e-01, 9.840770450725479e-01, 9.881128553747331e-01, 9.921114964792118e-01, 9.960736594697506e-01, 1e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixGain.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixGain.txt new file mode 100644 index 0000000000..c228439473 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixGain.txt @@ -0,0 +1,17 @@ +last-generated=2019-02-11 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +matGai.y[1]=[0e+00, 2e-02, 4e-02, 6e-02, 8e-02, 1e-01, 1.2e-01, 1.4e-01, 1.6e-01, 1.8e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.2e-01, 3.4e-01, 3.6e-01, 3.8e-01, 4e-01, 4.2e-01, 4.4e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.8e-01, 6e-01, 6.2e-01, 6.4e-01, 6.6e-01, 6.8e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.2e-01, 8.4e-01, 8.6e-01, 8.8e-01, 9e-01, 9.2e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00, 1.52e+00, 1.54e+00, 1.56e+00, 1.58e+00, 1.6e+00, 1.62e+00, 1.64e+00, 1.66e+00, 1.68e+00, 1.7e+00, 1.72e+00, 1.74e+00, 1.76e+00, 1.78e+00, 1.8e+00, 1.82e+00, 1.84e+00, 1.86e+00, 1.88e+00, 1.9e+00, 1.92e+00, 1.94e+00, 1.96e+00, 1.98e+00, 2e+00] +matGai.y[2]=[0e+00, 4e-02, 8e-02, 1.2e-01, 1.6e-01, 2e-01, 2.4e-01, 2.8e-01, 3.2e-01, 3.6e-01, 4e-01, 4.4e-01, 4.8e-01, 5.2e-01, 5.600000000000001e-01, 6e-01, 6.4e-01, 6.8e-01, 7.2e-01, 7.6e-01, 8e-01, 8.4e-01, 8.8e-01, 9.2e-01, 9.6e-01, 1e+00, 1.04e+00, 1.08e+00, 1.12e+00, 1.16e+00, 1.2e+00, 1.24e+00, 1.28e+00, 1.32e+00, 1.36e+00, 1.4e+00, 1.44e+00, 1.48e+00, 1.52e+00, 1.56e+00, 1.6e+00, 1.64e+00, 1.68e+00, 1.72e+00, 1.76e+00, 1.8e+00, 1.84e+00, 1.88e+00, 1.92e+00, 1.96e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00, 3.04e+00, 3.08e+00, 3.12e+00, 3.16e+00, 3.2e+00, 3.24e+00, 3.28e+00, 3.32e+00, 3.36e+00, 3.4e+00, 3.44e+00, 3.48e+00, 3.52e+00, 3.56e+00, 3.6e+00, 3.64e+00, 3.68e+00, 3.72e+00, 3.76e+00, 3.8e+00, 3.84e+00, 3.88e+00, 3.92e+00, 3.96e+00, 4e+00] +matGai.y[3]=[0e+00, 5.999999999999959e-02, 1.2e-01, 1.800000111758646e-01, 2.400000000000033e-01, 3.000000074505723e-01, 3.600000223517368e-01, 4.199999850988366e-01, 4.8e-01, 5.4e-01, 6.000000149011613e-01, 6.600000298023047e-01, 7.200000447034036e-01, 7.8e-01, 8.399999701976955e-01, 8.999999403955328e-01, 9.6e-01, 1.019999970197731e+00, 1.079999999999787e+00, 1.139999999999929e+00, 1.200000029802234e+00, 1.260000029802127e+00, 1.320000059604609e+00, 1.379999970197802e+00, 1.440000089406807e+00, 1.5e+00, 1.560000000000284e+00, 1.619999940395675e+00, 1.679999940395391e+00, 1.740000059604396e+00, 1.799999880791066e+00, 1.860000000000071e+00, 1.920000000000213e+00, 1.979999940395746e+00, 2.039999940395675e+00, 2.099999940395533e+00, 2.159999999999574e+00, 2.219999999999858e+00, 2.280000000000142e+00, 2.340000000000426e+00, 2.400000059604467e+00, 2.460000059604325e+00, 2.520000059605036e+00, 2.57999988079135e+00, 2.640000119209077e+00, 2.700000119208224e+00, 2.759999940395107e+00, 2.819999940395391e+00, 2.880000178812975e+00, 2.939999999999716e+00, 3e+00, 3.059999999999432e+00, 3.119999999998863e+00, 3.180000238413463e+00, 3.23999988079199e+00, 3.299999880792842e+00, 3.359999880790711e+00, 3.420000119208011e+00, 3.480000119208295e+00, 3.540000119207726e+00, 3.599999761585684e+00, 3.660000000000852e+00, 3.720000000000284e+00, 3.779999999999716e+00, 3.839999999999148e+00, 3.900000238414316e+00, 3.959999880792274e+00, 4.019999880791706e+00, 4.079999880791137e+00, 4.139999880790994e+00, 4.19999988079e+00, 4.260000357621474e+00, 4.320000000001705e+00, 4.380000000001137e+00, 4.440000000000568e+00, 4.5e+00, 4.559999999999432e+00, 4.619999999998863e+00, 4.679999999998295e+00, 4.739999642378526e+00, 4.80000011921e+00, 4.860000119209006e+00, 4.920000119208863e+00, 4.980000119208294e+00, 5.040000119207726e+00, 5.099999761582842e+00, 5.159999761582274e+00, 5.219999761582842e+00, 5.280000238417158e+00, 5.340000238417726e+00, 5.400000238417158e+00, 5.459999880792274e+00, 5.519999880791706e+00, 5.579999880791137e+00, 5.639999880790994e+00, 5.69999988079e+00, 5.760000357621474e+00, 5.820000000001705e+00, 5.880000000001137e+00, 5.940000000000568e+00, 6e+00] +time=[0e+00, 1e+00] +matGai.u[2]=[0e+00, 2e-02, 4e-02, 6e-02, 8e-02, 1e-01, 1.2e-01, 1.4e-01, 1.6e-01, 1.8e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.2e-01, 3.4e-01, 3.6e-01, 3.8e-01, 4e-01, 4.2e-01, 4.4e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.8e-01, 6e-01, 6.2e-01, 6.4e-01, 6.6e-01, 6.8e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.2e-01, 8.4e-01, 8.6e-01, 8.8e-01, 9e-01, 9.2e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00, 1.52e+00, 1.54e+00, 1.56e+00, 1.58e+00, 1.6e+00, 1.62e+00, 1.64e+00, 1.66e+00, 1.68e+00, 1.7e+00, 1.72e+00, 1.74e+00, 1.76e+00, 1.78e+00, 1.8e+00, 1.82e+00, 1.84e+00, 1.86e+00, 1.88e+00, 1.9e+00, 1.92e+00, 1.94e+00, 1.96e+00, 1.98e+00, 2e+00] +matGai.u[1]=[0e+00, 2e-02, 4e-02, 6e-02, 8e-02, 1e-01, 1.2e-01, 1.4e-01, 1.6e-01, 1.8e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.2e-01, 3.4e-01, 3.6e-01, 3.8e-01, 4e-01, 4.2e-01, 4.4e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.8e-01, 6e-01, 6.2e-01, 6.4e-01, 6.6e-01, 6.8e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.2e-01, 8.4e-01, 8.6e-01, 8.8e-01, 9e-01, 9.2e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00, 1.52e+00, 1.54e+00, 1.56e+00, 1.58e+00, 1.6e+00, 1.62e+00, 1.64e+00, 1.66e+00, 1.68e+00, 1.7e+00, 1.72e+00, 1.74e+00, 1.76e+00, 1.78e+00, 1.8e+00, 1.82e+00, 1.84e+00, 1.86e+00, 1.88e+00, 1.9e+00, 1.92e+00, 1.94e+00, 1.96e+00, 1.98e+00, 2e+00] +matGai1.y[1]=[0e+00, 5.000000186264474e-02, 1.000000037252895e-01, 1.500000093132189e-01, 2.000000074505756e-01, 2.499999962747083e-01, 3.00000018626444e-01, 3.499999925494183e-01, 4.000000149011346e-01, 4.499999701977309e-01, 4.999999925494416e-01, 5.500000149011524e-01, 6.00000037252863e-01, 6.500000000000711e-01, 6.999999850988478e-01, 7.499999701977664e-01, 8.000000298022691e-01, 8.500000149011346e-01, 8.999999403954617e-01, 9.499999999999645e-01, 9.999999850988832e-01, 1.049999985098741e+00, 1.100000029802305e+00, 1.149999955296579e+00, 1.200000074505726e+00, 1.25e+00, 1.299999999999858e+00, 1.349999970197838e+00, 1.399999970197696e+00, 1.450000089406843e+00, 1.499999940395533e+00, 1.549999940395391e+00, 1.600000059604538e+00, 1.649999910593228e+00, 1.700000029802376e+00, 1.750000029802234e+00, 1.799999880790923e+00, 1.850000000000071e+00, 1.899999999999929e+00, 1.950000119209077e+00, 1.999999970197766e+00, 2.049999970197624e+00, 2.099999970197482e+00, 2.150000059604751e+00, 2.200000059604609e+00, 2.250000059604467e+00, 2.299999910593157e+00, 2.349999910593015e+00, 2.400000149011452e+00, 2.450000000000142e+00, 2.5e+00, 2.549999999999148e+00, 2.599999999998295e+00, 2.650000238416022e+00, 2.699999940397274e+00, 2.749999940396421e+00, 2.799999940395213e+00, 2.849999940394715e+00, 2.900000178812442e+00, 2.950000178811589e+00, 2.999999880792842e+00, 3.049999880791989e+00, 3.099999880791137e+00, 3.150000119208863e+00, 3.200000119208011e+00, 3.250000119207158e+00, 3.299999821188411e+00, 3.349999821187558e+00, 3.400000059605285e+00, 3.450000059604787e+00, 3.500000059603579e+00, 3.550000059602726e+00, 3.599999761583978e+00, 3.650000000001705e+00, 3.700000000000852e+00, 3.75e+00, 3.799999999999148e+00, 3.849999999998295e+00, 3.900000238416022e+00, 3.949999940397274e+00, 3.999999940396421e+00, 4.050000178813508e+00, 4.099999940395568e+00, 4.150000178810452e+00, 4.199999940396137e+00, 4.24999988079e+00, 4.300000119208863e+00, 4.349999880791705e+00, 4.400000119208295e+00, 4.449999880791137e+00, 4.50000011921e+00, 4.550000059603863e+00, 4.599999821189548e+00, 4.650000059604432e+00, 4.699999821186492e+00, 4.750000059605e+00, 4.800000298018747e+00, 4.849999761587389e+00, 4.899999999999432e+00, 4.949999761583411e+00, 5e+00] +matGai1.y[2]=[0e+00, 1.100000018626447e-01, 2.200000037252895e-01, 3.300000204890835e-01, 4.400000074505856e-01, 5.500000037252861e-01, 6.600000409781608e-01, 7.699999776482593e-01, 8.800000149011346e-01, 9.899999701977309e-01, 1.100000007450558e+00, 1.210000044703457e+00, 1.320000081956267e+00, 1.430000000000071e+00, 1.539999955296543e+00, 1.649999910593299e+00, 1.760000029802163e+00, 1.869999985098919e+00, 1.979999940395249e+00, 2.089999940395391e+00, 2.200000014901117e+00, 2.310000014901259e+00, 2.420000089406843e+00, 2.529999925494132e+00, 2.640000163912214e+00, 2.75e+00, 2.860000000000142e+00, 2.969999910592873e+00, 3.079999910593157e+00, 3.190000149010741e+00, 3.299999821187309e+00, 3.410000059604609e+00, 3.520000059604751e+00, 3.629999970197483e+00, 3.739999970197625e+00, 3.849999970197766e+00, 3.959999880790497e+00, 4.07000011920865e+00, 4.17999988079135e+00, 4.290000119207797e+00, 4.400000029801523e+00, 4.510000268220528e+00, 4.620000029804081e+00, 4.729999940396101e+00, 4.840000178813685e+00, 4.949999940396954e+00, 5.059999850989259e+00, 5.170000089406843e+00, 5.280000327824427e+00, 5.389999761582415e+00, 5.5e+00, 5.610000238416021e+00, 5.719999999999432e+00, 5.830000238417727e+00, 5.939999821191821e+00, 6.050000059605001e+00, 6.159999821185924e+00, 6.270000059602726e+00, 6.380000298018747e+00, 6.490000059603863e+00, 6.599999642378526e+00, 6.709999880794547e+00, 6.820000119209432e+00, 6.929999880790568e+00, 7.040000119205453e+00, 7.150000357621474e+00, 7.259999940396137e+00, 7.369999701981253e+00, 7.479999940397274e+00, 7.590000178814076e+00, 7.699999940394999e+00, 7.810000178808179e+00, 7.919999761582273e+00, 8.029999523172505e+00, 8.140000238418864e+00, 8.25e+00, 8.359999761581136e+00, 8.470000476827495e+00, 8.580000238417727e+00, 8.689999344359778e+00, 8.800000059605001e+00, 8.909999821185355e+00, 9.020000536438179e+00, 9.130000298022726e+00, 9.240000059603863e+00, 9.35000011921e+00, 9.459999880791136e+00, 9.569999642374547e+00, 9.680000357625453e+00, 9.790000119208864e+00, 9.89999988079e+00, 1.000999994039614e+01, 1.011999970197727e+01, 1.022999946356182e+01, 1.034000017881464e+01, 1.0449999940395e+01, 1.056000065564022e+01, 1.066999976158227e+01, 1.07799995231725e+01, 1.089000023841886e+01, 1.1e+01] +matGai1.u[1]=[0e+00, 1e-02, 2e-02, 3e-02, 4e-02, 5e-02, 6e-02, 7.000000000000001e-02, 8e-02, 9e-02, 1e-01, 1.1e-01, 1.2e-01, 1.3e-01, 1.4e-01, 1.5e-01, 1.6e-01, 1.7e-01, 1.8e-01, 1.9e-01, 2e-01, 2.1e-01, 2.2e-01, 2.3e-01, 2.4e-01, 2.5e-01, 2.6e-01, 2.7e-01, 2.8e-01, 2.9e-01, 3e-01, 3.1e-01, 3.2e-01, 3.3e-01, 3.4e-01, 3.5e-01, 3.6e-01, 3.7e-01, 3.8e-01, 3.9e-01, 4e-01, 4.1e-01, 4.2e-01, 4.3e-01, 4.4e-01, 4.5e-01, 4.6e-01, 4.7e-01, 4.8e-01, 4.9e-01, 5e-01, 5.1e-01, 5.2e-01, 5.3e-01, 5.4e-01, 5.5e-01, 5.600000000000001e-01, 5.7e-01, 5.8e-01, 5.9e-01, 6e-01, 6.1e-01, 6.2e-01, 6.3e-01, 6.4e-01, 6.5e-01, 6.6e-01, 6.7e-01, 6.8e-01, 6.899999999999999e-01, 7e-01, 7.1e-01, 7.2e-01, 7.3e-01, 7.4e-01, 7.5e-01, 7.6e-01, 7.7e-01, 7.8e-01, 7.9e-01, 8e-01, 8.100000000000001e-01, 8.2e-01, 8.3e-01, 8.4e-01, 8.5e-01, 8.6e-01, 8.7e-01, 8.8e-01, 8.9e-01, 9e-01, 9.1e-01, 9.2e-01, 9.3e-01, 9.399999999999999e-01, 9.5e-01, 9.6e-01, 9.7e-01, 9.8e-01, 9.9e-01, 1e+00] +matGai1.u[2]=[0e+00, 2e-02, 4e-02, 6e-02, 8e-02, 1e-01, 1.2e-01, 1.4e-01, 1.6e-01, 1.8e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.2e-01, 3.4e-01, 3.6e-01, 3.8e-01, 4e-01, 4.2e-01, 4.4e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.8e-01, 6e-01, 6.2e-01, 6.4e-01, 6.6e-01, 6.8e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.2e-01, 8.4e-01, 8.6e-01, 8.8e-01, 9e-01, 9.2e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00, 1.52e+00, 1.54e+00, 1.56e+00, 1.58e+00, 1.6e+00, 1.62e+00, 1.64e+00, 1.66e+00, 1.68e+00, 1.7e+00, 1.72e+00, 1.74e+00, 1.76e+00, 1.78e+00, 1.8e+00, 1.82e+00, 1.84e+00, 1.86e+00, 1.88e+00, 1.9e+00, 1.92e+00, 1.94e+00, 1.96e+00, 1.98e+00, 2e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMax.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMax.txt new file mode 100644 index 0000000000..beac4d5f52 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMax.txt @@ -0,0 +1,15 @@ +last-generated=2019-05-24 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +matMax.y[1]=[6e+00, 6e+00] +matMax.y[3]=[6e+00, 6e+00] +matMax.y[2]=[9e+00, 9e+00] +time=[0e+00, 1e+00] +matMax1.y[1]=[4e+00, 4e+00] +matMax1.y[2]=[6e+00, 6e+00] +matMax2.y[2]=[6e+00, 6e+00] +matMax2.y[1]=[3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMin.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMin.txt new file mode 100644 index 0000000000..beba9ec7f0 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MatrixMin.txt @@ -0,0 +1,16 @@ +last-generated=2019-05-24 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +matMin.y[2]=[-9e+00, -9e+00] +matMin.y[3]=[-6e+00, -6e+00] +matMin.y[1]=[-6e+00, -6e+00] +time=[0e+00, 1e+00] +matMin1.y[2]=[-4e+00, -4e+00] +matMin1.y[1]=[-2e+00, -2e+00] +matMin1.y[3]=[-6e+00, -6e+00] +matMin2.y[1]=[-3e+00, -3e+00] +matMin2.y[2]=[-6e+00, -6e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Max.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Max.txt new file mode 100644 index 0000000000..d98f8b0265 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Max.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +max1.u2=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +max1.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +max1.y=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Min.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Min.txt new file mode 100644 index 0000000000..415d8c6e85 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Min.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +min1.y=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +min1.u2=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +min1.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Modulo.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Modulo.txt new file mode 100644 index 0000000000..a9faa35745 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Modulo.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +mod1.y=[1e+00, 1.120000007450586e+00, 1.240000014901171e+00, 1.360000022351709e+00, 1.480000029802289e+00, 1.600000014901145e+00, 4.000001117586838e-02, 1.299999925494161e-01, 2.200000149011346e-01, 3.099999701977308e-01, 3.999999925494416e-01, 4.900000149011523e-01, 5.800000074505406e-01, 6.700000596045738e-01, 7.599999850988478e-01, 8.499999701977664e-01, 9.400000298022692e-01, 1.029999955296543e+00, 1.119999940395462e+00, 1.210000059604609e+00, 1.299999925494238e+00, 1.390000044703386e+00, 1.480000029802305e+00, 1.570000014901223e+00, 1.660000014901081e+00, 1.75e+00, 1.840000119209148e+00, 1.929999850988548e+00, 2.019999970197767e+00, 2.109999970198051e+00, 2.199999940394822e+00, 2.289999940395533e+00, 2.380000178813401e+00, 2.469999910592447e+00, 3.999997764830499e-02, 1.000000372528362e-01, 1.599999105932459e-01, 2.199999701977486e-01, 2.800000298022514e-01, 3.400000894067541e-01, 3.999999701977666e-01, 4.60000029802269e-01, 5.200000596046447e-01, 5.799999403955683e-01, 6.4e-01, 7.000000596046448e-01, 7.59999940395604e-01, 8.199999999999998e-01, 8.800000596046447e-01, 9.399999403953552e-01, 1e+00, 1.059999999999432e+00, 1.120000119207016e+00, 1.180000119207584e+00, 1.239999880793269e+00, 1.299999880792132e+00, 1.359999999999858e+00, 1.419999999999573e+00, 1.4800001192073e+00, 1.540000119207726e+00, 1.599999880793552e+00, 1.659999880792416e+00, 1.720000000000284e+00, 1.779999999999716e+00, 1.840000119207584e+00, 1.900000119206448e+00, 1.959999880792274e+00, 2.019999880791705e+00, 2.079999880791989e+00, 2.140000119209289e+00, 2.200000119207158e+00, 2.26000011920801e+00, 2.319999761586537e+00, 2.380000000001137e+00, 2.440000000000568e+00, 2.5e+00, 2.559999999999432e+00, 2.619999999998863e+00, 2.680000238413463e+00, 2.73999988079199e+00, 2.799999880792842e+00, 2.859999880790711e+00, 2.920000119208011e+00, 2.980000119208295e+00, 3.040000119207726e+00, 3.099999761585684e+00, 3.160000000000852e+00, 3.220000000000284e+00, 3.279999999999716e+00, 3.339999999999148e+00, 3.400000238414316e+00, 3.459999880792274e+00, 3.519999880791705e+00, 3.579999880791989e+00, 3.640000119209289e+00, 3.700000119207158e+00, 3.76000011920801e+00, 3.819999761586537e+00, 3.880000000001137e+00, 3.940000000000568e+00, 4e+00] +mod1.u2=[1.5e+00, 1.529999972060327e+00, 1.559999944120655e+00, 1.59000003539023e+00, 1.620000007450599e+00, 1.649999973922997e+00, 1.679999951571254e+00, 1.710000037252895e+00, 1.740000014901188e+00, 1.769999970197838e+00, 1.799999947846002e+00, 1.830000044703457e+00, 1.860000022351782e+00, 1.890000000000071e+00, 1.919999955296543e+00, 1.950000029802234e+00, 1.980000029802162e+00, 2.009999985098812e+00, 2.039999940395249e+00, 2.069999940395391e+00, 2.099999895692183e+00, 2.130000134109767e+00, 2.160000089406843e+00, 2.190000044703421e+00, 2.220000044703563e+00, 2.25e+00, 2.280000000000142e+00, 2.309999910592873e+00, 2.339999910593157e+00, 2.369999910593157e+00, 2.400000059604467e+00, 2.430000059604609e+00, 2.460000059604751e+00, 2.489999970197482e+00, 2.519999970197624e+00, 2.549999970197766e+00, 2.579999880790497e+00, 2.609999880791208e+00, 2.640000119208792e+00, 2.670000119209503e+00, 2.700000029802234e+00, 2.730000029802376e+00, 2.760000029802518e+00, 2.789999940395249e+00, 2.819999940395391e+00, 2.849999940395533e+00, 2.880000089406843e+00, 2.910000089406843e+00, 2.940000089407127e+00, 2.969999999999858e+00, 3e+00, 3.029999999999716e+00, 3.059999999999432e+00, 3.089999999999148e+00, 3.119999821189263e+00, 3.150000059605e+00, 3.180000059604503e+00, 3.210000059604432e+00, 3.240000059604147e+00, 3.270000059603863e+00, 3.299999880791421e+00, 3.329999880791137e+00, 3.359999880791421e+00, 3.390000119208579e+00, 3.420000119208863e+00, 3.450000119208579e+00, 3.479999940396137e+00, 3.509999940395853e+00, 3.539999940395568e+00, 3.569999940395497e+00, 3.599999940395e+00, 3.630000178810737e+00, 3.660000000000852e+00, 3.690000000000568e+00, 3.720000000000284e+00, 3.75e+00, 3.779999999999716e+00, 3.809999999999432e+00, 3.839999999999148e+00, 3.869999821189263e+00, 3.900000059605e+00, 3.930000059604503e+00, 3.960000059604432e+00, 3.990000059604147e+00, 4.020000059603863e+00, 4.05000011921e+00, 4.079999880791137e+00, 4.110000119209432e+00, 4.139999880790568e+00, 4.170000119208863e+00, 4.19999988079e+00, 4.229999940396137e+00, 4.260000178814431e+00, 4.289999940395568e+00, 4.320000178814077e+00, 4.349999940395e+00, 4.380000178813295e+00, 4.409999761582274e+00, 4.440000000000568e+00, 4.469999761583979e+00, 4.5e+00] +mod1.u1=[-2e+00, -1.940000055879345e+00, -1.879999992549428e+00, -1.82000004842875e+00, -1.759999985098855e+00, -1.70000005215405e+00, -1.639999977648283e+00, -1.580000044703481e+00, -1.519999970197731e+00, -1.460000059604538e+00, -1.399999985098794e+00, -1.340000029802305e+00, -1.279999955296596e+00, -1.219999999999858e+00, -1.159999970197695e+00, -1.100000059604467e+00, -1.039999940395462e+00, -9.800000298022691e-01, -9.200000596044317e-01, -8.6e-01, -8.000000298022335e-01, -7.399999701976776e-01, -6.799999999999999e-01, -6.200000298023223e-01, -5.599999701976777e-01, -5e-01, -4.399999403954973e-01, -3.800000596044848e-01, -3.199999999999821e-01, -2.599999403954797e-01, -2.000000745056284e-01, -1.400000149011257e-01, -7.999995529662296e-02, -2.000007823094963e-02, 3.999997764830499e-02, 1.000000372528362e-01, 1.599999105932459e-01, 2.199999701977486e-01, 2.800000298022514e-01, 3.400000894067541e-01, 3.999999701977666e-01, 4.60000029802269e-01, 5.200000596046447e-01, 5.799999403955683e-01, 6.4e-01, 7.000000596046448e-01, 7.59999940395604e-01, 8.199999999999998e-01, 8.800000596046447e-01, 9.399999403953552e-01, 1e+00, 1.059999999999432e+00, 1.120000119207016e+00, 1.180000119207584e+00, 1.239999880793269e+00, 1.299999880792132e+00, 1.359999999999858e+00, 1.419999999999573e+00, 1.4800001192073e+00, 1.540000119207726e+00, 1.599999880793552e+00, 1.659999880792416e+00, 1.720000000000284e+00, 1.779999999999716e+00, 1.840000119207584e+00, 1.900000119206448e+00, 1.959999880792274e+00, 2.019999880791705e+00, 2.079999880791989e+00, 2.140000119209289e+00, 2.200000119207158e+00, 2.26000011920801e+00, 2.319999761586537e+00, 2.380000000001137e+00, 2.440000000000568e+00, 2.5e+00, 2.559999999999432e+00, 2.619999999998863e+00, 2.680000238413463e+00, 2.73999988079199e+00, 2.799999880792842e+00, 2.859999880790711e+00, 2.920000119208011e+00, 2.980000119208295e+00, 3.040000119207726e+00, 3.099999761585684e+00, 3.160000000000852e+00, 3.220000000000284e+00, 3.279999999999716e+00, 3.339999999999148e+00, 3.400000238414316e+00, 3.459999880792274e+00, 3.519999880791705e+00, 3.579999880791989e+00, 3.640000119209289e+00, 3.700000119207158e+00, 3.76000011920801e+00, 3.819999761586537e+00, 3.880000000001137e+00, 3.940000000000568e+00, 4e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage.txt new file mode 100644 index 0000000000..42b814e474 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage.txt @@ -0,0 +1,20 @@ +last-generated=2017-09-15 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "number of continuous time states": "9", + "linear": " " +} +movAve1.y=[0e+00, 3.389549851417542e-01, 5.967000126838684e-01, 7.179645895957947e-01, 6.900429725646973e-01, 5.443436503410339e-01, 3.428270518779755e-01, 1.549198031425475e-01, 3.377144038677216e-02, 4.830255929846317e-04, 4.143456369638443e-02, 1.185182109475136e-01, 1.775919497013092e-01, 1.534560471773148e-01, 5.578513815999012e-02, -6.861740350723267e-02, -1.601397693157196e-01, -1.749258190393448e-01, -1.058895289897919e-01, 1.388753578066826e-02, 1.270097196102142e-01, 1.792702227830887e-01, 1.45626425743103e-01, 4.220050200819969e-02, -8.144774287939072e-02, -1.660671085119247e-01, -1.711090207099915e-01, -9.415744990110361e-02, 2.791333012282888e-02, 1.366084516048431e-01, 1.798425167798996e-01, 1.368982791900635e-01, 2.83540915697813e-02, -9.377695620059967e-02, -1.709713339805603e-01, -1.662381142377853e-01, -8.184557408094406e-02, 4.176636412739754e-02, 1.453643590211868e-01, 1.793054938316345e-01, 1.273255795240402e-01, 1.433276198804379e-02, -1.055281385779381e-01, -1.74821212887764e-01, -1.603420525789261e-01, -6.902889907360077e-02, 5.536215379834175e-02, 1.532242596149445e-01, 1.776631772518158e-01, 1.169678941369057e-01, 2.230705140391365e-04, -1.166287064552307e-01, -1.775934398174286e-01, -1.534575521945953e-01, -5.57866729795925e-02, 6.861647218465877e-02, 1.601391136646274e-01, 1.749250739812851e-01, 1.058888733386993e-01, -1.388819981366396e-02, -1.270102709531784e-01, -1.792707592248917e-01, -1.45626962184906e-01, -4.220058396458626e-02, 8.144768327474594e-02, 1.660670638084412e-01, 1.711089611053467e-01, 9.415764361619949e-02, -2.791319787502289e-02, -1.366083472967148e-01, -1.7984239757061e-01, -1.368981301784515e-01, -2.835390157997608e-02, 9.377717226743698e-02, 1.709713488817215e-01, 1.66238084435463e-01, 8.184552192687988e-02, -4.176643863320351e-02, -1.453644186258316e-01, -1.793055087327957e-01, -1.273255348205566e-01, -1.433268282562494e-02, 1.055282205343246e-01, 1.748212575912476e-01, 1.603420376777649e-01, 6.90288245677948e-02, -5.536217615008354e-02, -1.532242894172668e-01, -1.776631325483322e-01, -1.169679388403893e-01, -2.230993122793734e-04, 1.166286468505859e-01, 1.775933355093002e-01, 1.534574180841446e-01, 5.578653514385223e-02, -6.86165913939476e-02, -1.601394712924957e-01, -1.749254167079926e-01, -1.058892011642456e-01, 1.38878608122468e-02, 1.270100176334381e-01] +sinInpNoDel.y=[0e+00, 6.49448037147522e-01, 9.876883625984192e-01, 8.526401519775391e-01, 3.0901700258255e-01, -3.826834261417389e-01, -8.910065293312073e-01, -9.723699092864988e-01, -5.877852439880371e-01, 7.845909893512726e-02, 7.071067690849304e-01, 9.969173073768616e-01, 8.0901700258255e-01, 2.334453612565994e-01, -4.53990489244462e-01, -9.238795042037964e-01, -9.510565400123596e-01, -5.224985480308533e-01, 1.564344614744186e-01, 7.60405957698822e-01, 1e+00, 7.60405957698822e-01, 1.564344614744186e-01, -5.224985480308533e-01, -9.510565400123596e-01, -9.238795042037964e-01, -4.539904892444611e-01, 2.334453612566016e-01, 8.090170025825513e-01, 9.969173073768616e-01, 7.071067690849304e-01, 7.845909893512726e-02, -5.877852439880371e-01, -9.72369909286499e-01, -8.910065293312073e-01, -3.826834261417389e-01, 3.0901700258255e-01, 8.526401519775391e-01, 9.876883625984192e-01, 6.49448037147522e-01, 1.102182140856871e-15, -6.49448037147522e-01, -9.876883625984192e-01, -8.526401519775391e-01, -3.0901700258255e-01, 3.826834261417389e-01, 8.910065293312073e-01, 9.72369909286499e-01, 5.877852439880371e-01, -7.845909893512726e-02, -7.071067690849304e-01, -9.969173073768616e-01, -8.0901700258255e-01, -2.334453612565994e-01, 4.539904892444649e-01, 9.238795042037978e-01, 9.51056540012358e-01, 5.224985480308533e-01, -1.564344614744186e-01, -7.60405957698822e-01, -1e+00, -7.60405957698822e-01, -1.564344614744186e-01, 5.224985480308533e-01, 9.510565400123596e-01, 9.238795042037964e-01, 4.539904892444611e-01, -2.334453612565994e-01, -8.0901700258255e-01, -9.969173073768616e-01, -7.071067690849304e-01, -7.845909893512726e-02, 5.877852439880371e-01, 9.72369909286499e-01, 8.910065293312073e-01, 3.826834261417389e-01, -3.0901700258255e-01, -8.526401519775391e-01, -9.876883625984192e-01, -6.49448037147522e-01, -2.204364281713743e-15, 6.49448037147522e-01, 9.876883625984192e-01, 8.526401519775391e-01, 3.0901700258255e-01, -3.826834261417389e-01, -8.910065293312073e-01, -9.72369909286499e-01, -5.877852439880371e-01, 7.845909893512726e-02, 7.071067690849304e-01, 9.969173073768616e-01, 8.0901700258255e-01, 2.334453612565994e-01, -4.539904892444611e-01, -9.238795042037964e-01, -9.510565400123596e-01, -5.224985480308533e-01, 1.564344614744186e-01, 7.60405957698822e-01, 1e+00] +movAve4.y=[0e+00, 3.389549851417542e-01, 5.967000126838684e-01, 7.179645895957947e-01, 6.900429725646973e-01, 5.443436503410339e-01, 3.428270518779755e-01, 1.549198031425475e-01, 3.377144038677216e-02, 4.830255929846317e-04, 4.143456369638443e-02, 1.185182109475136e-01, 1.871866881847382e-01, 2.146396785974503e-01, 1.91086396574974e-01, 1.304052621126175e-01, 6.109518557786942e-02, 1.226198859512806e-02, 9.666834957897663e-04, 2.610068395733833e-02, 7.073471695184708e-02, 1.111178696155548e-01, 1.278175860643387e-01, 1.139536648988724e-01, 7.71610289812088e-02, 3.493234887719154e-02, 5.929954349994659e-03, 1.447161193937098e-03, 2.082676999270925e-02, 5.261008813977242e-02, 8.050157129764557e-02, 9.113048017024994e-02, 7.997562736272812e-02, 5.287735536694527e-02, 2.271851897239685e-02, 3.076368942856789e-03, 1.922936644405127e-03, 1.825706288218498e-02, 4.305276647210121e-02, 6.385768949985504e-02, 7.07351490855217e-02, 6.074267253279686e-02, 3.895249217748642e-02, 1.570955663919449e-02, 1.573308371007442e-03, -5.161688386579044e-05, -2.652381408552174e-05, 1.11070066850516e-05, 4.338383587310091e-05, 5.479332685354166e-05, 1.508346159084795e-08, 5.686097665602574e-06, -3.118301174254157e-05, -5.31343393959105e-05, -4.964845356880675e-05, -2.239601417386416e-05, 1.556374263600469e-05, 4.604352216119878e-05, 5.443870759336278e-05, 3.672677848953754e-05, 1.394584046465752e-06, -3.46267297572922e-05, -5.407609569374472e-05, -4.763405377161689e-05, -1.838718708313536e-05, 1.964964758371934e-05, 4.824979259865358e-05, 5.367425183067098e-05, 3.335780638735741e-05, -2.975371899083257e-06, -3.792411007452756e-05, -5.474135105032474e-05, -4.536812411970459e-05, -1.429644180461764e-05, 2.358484380238224e-05, 5.012346446164884e-05, 5.260223406367004e-05, 2.983349259011447e-05, -7.28563964003115e-06, -4.092561357538216e-05, -5.502470230567269e-05, -4.278573032934219e-05, -1.008700746751856e-05, 2.74038320640102e-05, 5.172134478925727e-05, 5.121333742863499e-05, 2.612258322187699e-05, -1.152718778030248e-05, -4.369488669908606e-05, -3.926824138034135e-05, -3.994911457994021e-05, -5.825782409374369e-06, 3.104283314314671e-05, 5.300846169120632e-05, 4.953418465447612e-05, 2.228274570370559e-05, -1.567616345710121e-05, -4.61555719084572e-05, -5.454964411910623e-05, -3.683657268993556e-05, -6.57378507185058e-08] +time=[0e+00, 9e+02] +movAve2.y=[0e+00, 3.389549851417542e-01, 5.967000126838684e-01, 7.179645895957947e-01, 6.900429725646973e-01, 5.443436503410339e-01, 3.428270518779755e-01, 1.549198031425475e-01, 3.377144038677216e-02, 4.830255929846317e-04, 4.143456369638443e-02, 1.185182109475136e-01, 1.871866881847382e-01, 2.146396785974503e-01, 1.91086396574974e-01, 1.304052621126175e-01, 6.109518557786942e-02, 1.226198859512806e-02, 9.666834957897663e-04, 2.610068395733833e-02, 7.073471695184708e-02, 1.111178696155548e-01, 1.278175860643387e-01, 1.085061728954315e-01, 3.932303562760353e-02, -4.870355501770973e-02, -1.133919879794121e-01, -1.237445101141929e-01, -7.480045408010459e-02, 9.987063705921173e-03, 8.998884260654449e-02, 1.268690228462219e-01, 1.029550358653069e-01, 2.970620058476925e-02, -5.777739733457565e-02, -1.175748407840729e-01, -1.210317835211754e-01, -6.649170815944672e-02, 1.991044729948044e-02, 9.677179157733917e-02, 1.2726129591465e-01, 9.676873683929443e-02, 1.990580186247826e-02, -6.649571657180786e-02, -1.210332363843918e-01, -1.175731346011162e-01, -5.777328088879585e-02, 2.971081808209419e-02, 1.029578596353531e-01, 1.268686652183533e-01, 8.998555690050125e-02, 9.982417337596416e-03, -7.480420172214508e-02, -1.237455531954765e-01, -1.133895292878148e-01, -4.869861900806373e-02, 3.932791948318534e-02, 1.085090786218643e-01, 1.256938576698303e-01, 8.264757692813873e-02, -2.524623596400488e-06, -8.265150338411331e-02, -1.256949454545975e-01, -1.085069552063942e-01, -3.932381048798561e-02, 4.870275408029556e-02, 1.133914589881897e-01, 1.237442493438721e-01, 7.480016350746155e-02, -9.987335652112961e-03, -8.998911827802658e-02, -1.268692165613174e-01, -1.029552146792412e-01, -2.970636263489723e-02, 5.777736380696297e-02, 1.175748035311699e-01, 1.210317313671112e-01, 6.649164110422134e-02, -1.991038583219051e-02, -9.67717319726944e-02, -1.272612065076828e-01, -9.676863998174667e-02, -1.990568824112415e-02, 6.649582833051682e-02, 1.210333406925201e-01, 1.17573119699955e-01, 5.777325853705406e-02, -2.971085347235203e-02, -1.029578819870949e-01, -1.26868724822998e-01, -8.998557925224304e-02, -9.982426650822163e-03, 7.480418682098389e-02, 1.237455308437347e-01, 1.133894845843315e-01, 4.86985556781292e-02, -3.932813927531242e-02, -1.085092648863792e-01, -1.256940364837646e-01, -8.264773339033127e-02, 2.379947545705363e-06] +movAve3.y=[0e+00, 3.389549851417542e-01, 5.967000126838684e-01, 7.179645895957947e-01, 6.900429725646973e-01, 5.443436503410339e-01, 3.428270518779755e-01, 1.549198031425475e-01, 3.377144038677216e-02, 4.830255929846317e-04, 4.143456369638443e-02, 1.185182109475136e-01, 1.871866881847382e-01, 2.146396785974503e-01, 1.91086396574974e-01, 1.304052621126175e-01, 6.109518557786942e-02, 1.226198859512806e-02, 9.666834957897663e-04, 2.610068395733833e-02, 7.073471695184708e-02, 1.111178696155548e-01, 1.278175860643387e-01, 1.139536648988724e-01, 7.71610289812088e-02, 3.493234887719154e-02, 5.929954349994659e-03, 1.447161193937098e-03, 2.082676999270925e-02, 5.261008813977242e-02, 8.050157129764557e-02, 9.113048017024994e-02, 7.997562736272812e-02, 5.287735536694527e-02, 1.846384629607201e-02, -2.300418727099895e-02, -5.34491091966629e-02, -5.828188359737396e-02, -3.5186767578125e-02, 4.769257269799709e-03, 4.243981093168259e-02, 5.977372825145721e-02, 4.846476763486862e-02, 1.393204927444458e-02, -2.727676182985306e-02, -5.541480705142021e-02, -5.699878558516502e-02, -3.126960620284081e-02, 9.443630464375019e-03, 4.563158005475998e-02, 5.9953473508358e-02, 4.554638639092445e-02, 9.314027614891529e-03, -3.138148784637451e-02, -5.703935027122504e-02, -5.536462366580951e-02, -2.715996652841543e-02, 1.405951008200645e-02, 4.854177683591843e-02, 5.97633495926857e-02, 4.234698414802551e-02, 4.638391546905041e-03, -3.529291599988937e-02, -5.831233412027359e-02, -5.338923260569572e-02, -2.288270182907581e-02, 1.858889125287533e-02, 5.115284025669098e-02, 5.920493602752686e-02, 3.888664767146111e-02, -6.570218101842329e-05, -3.898662328720093e-02, -5.922567471861839e-02, -5.108454450964928e-02, -1.846436597406864e-02, 2.300366014242172e-02, 5.344855412840843e-02, 5.828148126602173e-02, 3.518656641244888e-02, -4.769404418766499e-03, -4.243997856974602e-02, -5.977388471364975e-02, -4.846488684415817e-02, -1.393215637654066e-02, 2.72766500711441e-02, 5.541476979851723e-02, 5.699874833226204e-02, 3.126956522464752e-02, -9.443662129342556e-03, -4.563158750534058e-02, -5.995343998074532e-02, -4.554635286331177e-02, -9.313995018601418e-03, 3.13815176486969e-02, 5.703938379883766e-02, 5.536465346813202e-02, 2.715984545648098e-02, -1.405963767319918e-02, -4.854191094636917e-02, -5.976347997784615e-02, -4.234709963202477e-02] +sinInp50sDel.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.0901700258255e-01, 8.526401519775393e-01, 9.876883625984192e-01, 6.49448037147522e-01, 1.224646852585168e-16, -6.49448037147522e-01, -9.876883625984192e-01, -8.526401519775391e-01, -3.09017002582549e-01, 3.826834261417389e-01, 8.910065293312073e-01, 9.72369909286499e-01, 5.877852439880371e-01, -7.845909893512726e-02, -7.071067690849304e-01, -9.969173073768616e-01, -8.0901700258255e-01, -2.334453612565994e-01, 4.539904892444611e-01, 9.238795042037964e-01, 9.510565400123596e-01, 5.224985480308513e-01, -1.564344614744208e-01, -7.60405957698822e-01, -1e+00, -7.60405957698822e-01, -1.564344614744186e-01, 5.224985480308533e-01, 9.510565400123596e-01, 9.238795042037964e-01, 4.539904892444611e-01, -2.334453612565994e-01, -8.0901700258255e-01, -9.969173073768616e-01, -7.071067690849304e-01, -7.845909893512726e-02, 5.877852439880371e-01, 9.72369909286499e-01, 8.910065293312073e-01, 3.826834261417389e-01, -3.0901700258255e-01, -8.526401519775391e-01, -9.876883625984192e-01, -6.49448037147522e-01, -1.224646799645609e-15, 6.49448037147522e-01, 9.876883625984192e-01, 8.526401519775391e-01, 3.090170025825457e-01, -3.826834261417429e-01, -8.910065293312091e-01, -9.72369909286499e-01, -5.877852439880371e-01, 7.845909893512726e-02, 7.071067690849304e-01, 9.969173073768616e-01, 8.0901700258255e-01, 2.334453612565994e-01, -4.539904892444611e-01, -9.238795042037964e-01, -9.510565400123596e-01, -5.224985480308533e-01, 1.564344614744186e-01, 7.60405957698822e-01, 1e+00, 7.60405957698822e-01, 1.564344614744186e-01, -5.224985480308533e-01, -9.510565400123596e-01, -9.238795042037964e-01, -4.539904892444611e-01, 2.334453612565994e-01, 8.0901700258255e-01, 9.969173073768616e-01, 7.071067690849304e-01, 7.845909893512726e-02, -5.877852439880371e-01, -9.72369909286499e-01, -8.910065293312073e-01, -3.826834261417389e-01, 3.0901700258255e-01, 8.526401519775391e-01, 9.876883625984192e-01, 6.49448037147522e-01, 5.879542407544744e-15, -6.49448037147522e-01, -9.876883625984192e-01, -8.526401519775391e-01, -3.0901700258255e-01, 3.826834261417389e-01, 8.910065293312073e-01, 9.72369909286499e-01, 5.877852439880371e-01, -7.845909893512726e-02, -7.071067690849304e-01] +movAve7.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.154010277241468e-02, 9.650379419326791e-02, 2.045025527477264e-01, 2.767183482646942e-01, 2.829421162605286e-01, 2.264058738946915e-01, 1.36335164308548e-01, 5.196370929479599e-02, 4.945940803736421e-03, 7.179423701018095e-03, 4.827805608510971e-02, 1.026454046368599e-01, 1.42179936170578e-01, 1.486875265836716e-01, 1.20753213763237e-01, 7.265282422304153e-02, 2.650756761431694e-02, 1.759030041284859e-03, 6.938789505511522e-03, 3.929964825510979e-02, 8.333466947078705e-02, 1.17942787706852e-01, 1.256940960884094e-01, 8.264781534671783e-02, -2.284115907968953e-06, -8.265126496553421e-02, -1.256947219371796e-01, -1.085067391395569e-01, -3.932375088334084e-02, 4.870285093784332e-02, 1.133915483951569e-01, 1.237443387508392e-01, 7.48002752661705e-02, -9.987222030758858e-03, -8.998899906873703e-02, -1.268691569566727e-01, -1.029551699757576e-01, -2.97063309699297e-02, 5.777739360928535e-02, 1.175748705863953e-01, 1.210318729281425e-01, 6.649181246757507e-02, -1.991033367812634e-02, -9.677165746688843e-02, -1.272611618041992e-01, -9.676861017942429e-02, -1.990567333996296e-02, 6.649584323167801e-02, 1.210333704948427e-01, 1.175731644034383e-01, 5.777350440621324e-02, -2.971065975725651e-02, -1.029576882719994e-01, -1.268685460090637e-01, -8.99854302406311e-02, -9.98228695243597e-03, 7.480432838201523e-02, 1.237456798553467e-01, 1.133896633982658e-01, 4.869874939322472e-02, -3.932794183492661e-02, -1.085090339183807e-01, -1.256938725709915e-01, -8.264758437871933e-02, 2.518237351978314e-06, 8.265148103237152e-02, 1.256949007511139e-01, 1.0850690305233e-01, 3.932373970746994e-02, -4.870282858610153e-02, -1.133915260434151e-01, -1.237442940473557e-01, -7.480032742023468e-02, 9.987172670662403e-03, 8.998894691467285e-02, 1.268690973520279e-01, 1.029550805687904e-01, 2.970622479915619e-02, -5.777750164270401e-02, -1.175749376416206e-01, -1.21031865477562e-01, -6.649176776409149e-02, 1.991038955748081e-02, 9.67717319726944e-02, 1.272612065076828e-01, 9.676863998174667e-02, 1.990568824112415e-02, -6.649582833051682e-02, -1.210333406925201e-01, -1.17573119699955e-01, -5.777325853705406e-02, 2.971085347235203e-02, 1.029578819870949e-01, 1.26868724822998e-01, 8.998557925224304e-02] +movAve6.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.154010277241468e-02, 9.650379419326791e-02, 2.045025527477264e-01, 2.767183482646942e-01, 2.829421162605286e-01, 2.264058738946915e-01, 1.472419798374176e-01, 6.079754233360291e-02, 6.231885403394665e-03, 9.692221879959106e-03, 6.952039897441864e-02, 1.532245576381683e-01, 1.776634305715561e-01, 1.169682368636131e-01, 2.233896520920098e-04, -1.166283786296844e-01, -1.775930970907211e-01, -1.534575521945953e-01, -5.578670650720596e-02, 6.861639022827148e-02, 1.60139262676239e-01, 1.749252229928969e-01, 1.058890447020527e-01, -1.388798281550407e-02, -1.270101219415665e-01, -1.792706102132797e-01, -1.456268280744553e-01, -4.22004833817482e-02, 8.144780248403549e-02, 1.660672873258591e-01, 1.711092293262482e-01, 9.415767341852188e-02, -2.791311964392662e-02, -1.366082727909088e-01, -1.798423826694489e-01, -1.368981599807739e-01, -2.835397608578205e-02, 9.377709031105042e-02, 1.709712892770767e-01, 1.662381291389465e-01, 8.184558153152466e-02, -4.176635295152664e-02, -1.453643590211868e-01, -1.793054342269897e-01, -1.273254901170731e-01, -1.433264836668968e-02, 1.055282801389694e-01, 1.748213618993759e-01, 1.603421717882152e-01, 6.902897357940598e-02, -5.536172911524847e-02, -1.532239466905594e-01, -1.776628494262695e-01, -1.169676631689072e-01, -2.228574303444475e-04, 1.16628885269165e-01, 1.775935888290405e-01, 1.534576714038849e-01, 5.578678846359253e-02, -6.861633807420731e-02, -1.601392179727554e-01, -1.749254167079926e-01, -1.058892011642456e-01, 1.38878608122468e-02, 1.270100176334381e-01, 1.792705059051514e-01, 1.456266939640045e-01, 4.220030829310417e-02, -8.144795894622803e-02, -1.660673320293427e-01, -1.711092293262482e-01, -9.415761381387711e-02, 2.791319601237774e-02, 1.366083472967148e-01, 1.7984239757061e-01, 1.368981152772903e-01, 2.835390157997608e-02, -9.377717226743698e-02, -1.709713488817215e-01, -1.66238084435463e-01, -8.184552192687988e-02, 4.176643863320351e-02, 1.453644186258316e-01, 1.793055087327957e-01, 1.273255348205566e-01, 1.433268282562494e-02, -1.055282205343246e-01, -1.748212575912476e-01, -1.603420376777649e-01, -6.90288245677948e-02, 5.536217615008354e-02, 1.532242894172668e-01, 1.776631325483322e-01, 1.169679388403893e-01, 2.231020189356059e-04] +sinInp100sDel.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.877852439880371e-01, 9.72369909286499e-01, 8.910065293312067e-01, 3.826834261417389e-01, -3.0901700258255e-01, -8.526401519775391e-01, -9.876883625984192e-01, -6.49448037147522e-01, -2.449293705170336e-16, 6.49448037147522e-01, 9.876883625984192e-01, 8.526401519775391e-01, 3.0901700258255e-01, -3.826834261417389e-01, -8.910065293312073e-01, -9.723699092864984e-01, -5.877852439880352e-01, 7.845909893512726e-02, 7.071067690849304e-01, 9.969173073768616e-01, 8.0901700258255e-01, 2.334453612565994e-01, -4.539904892444611e-01, -9.238795042037964e-01, -9.510565400123596e-01, -5.224985480308533e-01, 1.564344614744186e-01, 7.60405957698822e-01, 1e+00, 7.60405957698822e-01, 1.564344614744186e-01, -5.224985480308533e-01, -9.510565400123596e-01, -9.238795042037964e-01, -4.539904892444611e-01, 2.334453612565994e-01, 8.0901700258255e-01, 9.969173073768616e-01, 7.071067690849304e-01, 7.845909893512726e-02, -5.877852439880371e-01, -9.72369909286499e-01, -8.910065293312049e-01, -3.826834261417347e-01, 3.090170025825542e-01, 8.526401519775391e-01, 9.876883625984192e-01, 6.49448037147522e-01, 4.899825137234847e-15, -6.49448037147522e-01, -9.876883625984192e-01, -8.526401519775391e-01, -3.0901700258255e-01, 3.826834261417389e-01, 8.910065293312073e-01, 9.72369909286499e-01, 5.877852439880371e-01, -7.845909893512726e-02, -7.071067690849304e-01, -9.969173073768616e-01, -8.0901700258255e-01, -2.334453612565994e-01, 4.539904892444611e-01, 9.238795042037964e-01, 9.510565400123596e-01, 5.224985480308533e-01, -1.564344614744186e-01, -7.60405957698822e-01, -1e+00, -7.60405957698822e-01, -1.564344614744186e-01, 5.224985480308533e-01, 9.510565400123596e-01, 9.238795042037964e-01, 4.539904892444611e-01, -2.334453612565994e-01, -8.0901700258255e-01, -9.969173073768616e-01, -7.071067690849304e-01, -7.845909893512726e-02, 5.877852439880371e-01, 9.72369909286499e-01, 8.910065293312073e-01, 3.826834261417389e-01, -3.0901700258255e-01, -8.526401519775391e-01, -9.876883625984192e-01, -6.49448037147522e-01, -2.449293599291217e-15] +movAve8.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.431668154895306e-02, 9.760077297687531e-02, 1.851278245449067e-01, 2.449559271335602e-01, 2.484161555767059e-01, 1.938504129648209e-01, 1.074059531092644e-01, 3.050593286752701e-02, -7.859007666866091e-08, 3.050603531301022e-02, 1.074061095714569e-01, 1.748212426900864e-01, 1.603420525789261e-01, 6.902888417243958e-02, -5.536208301782608e-02, -1.532241702079775e-01, -1.77663043141365e-01, -1.169678792357445e-01, -2.230770041933283e-04, 1.166286468505859e-01, 1.775933355093002e-01, 1.53457447886467e-01, 5.578674748539925e-02, -6.861650198698044e-02, -1.60139411687851e-01, -1.749254167079926e-01, -1.058892533183098e-01, 1.388778164982796e-02, 1.270099580287933e-01, 1.79270476102829e-01, 1.456267237663269e-01, 4.220037907361984e-02, -8.144787698984146e-02, -1.660673320293427e-01, -1.711092889308929e-01, -9.415771812200546e-02, 2.791306935250759e-02, 1.3660828769207e-01, 1.798423677682877e-01, 1.368981301784515e-01, 2.835391089320183e-02, -9.377718716859818e-02, -1.709713935852053e-01, -1.662381738424298e-01, -8.184581249952243e-02, 4.176630824804306e-02, 1.453643292188644e-01, 1.793054640293121e-01, 1.273254454135895e-01, 1.43326111137867e-02, -1.055282950401306e-01, -1.748213320970535e-01, -1.603421121835709e-01, -6.902890652418137e-02, 5.536209419369698e-02, 1.532242596149445e-01, 1.776631325483322e-01, 1.169679388403893e-01, 2.230985701316968e-04, -1.166286468505859e-01, -1.775933355093002e-01, -1.534574180841446e-01, -5.578653514385223e-02, 6.86165913939476e-02, 1.601394712924957e-01, 1.749254167079926e-01, 1.058892011642456e-01, -1.38878608122468e-02, -1.270100176334381e-01, -1.792704910039902e-01, -1.456266939640045e-01, -4.220030829310417e-02, 8.144795894622803e-02, 1.660673320293427e-01, 1.711092293262482e-01, 9.415761381387711e-02, -2.791319787502289e-02, -1.366083472967148e-01, -1.7984239757061e-01, -1.368981152772903e-01, -2.835390157997608e-02, 9.377717226743698e-02, 1.709713488817215e-01, 1.66238084435463e-01, 8.184552192687988e-02, -4.176643863320351e-02, -1.453644186258316e-01, -1.793055087327957e-01, -1.273255348205566e-01] +movAve9.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.251544594764709e-02, 8.341946452856064e-02, 1.469268500804902e-01, 1.81448832154274e-01, 1.725112199783325e-01, 1.266996115446091e-01, 6.629997491836548e-02, 1.783972606062889e-02, -4.366115291531969e-08, 1.614075899124146e-02, 5.424550920724869e-02, 9.692526608705521e-02, 1.24208115041256e-01, 1.224779635667801e-01, 9.256388992071152e-02, 4.880036413669572e-02, 1.215833984315388e-02, 1.96241308003664e-04, 1.864616200327873e-02, 5.866712331771851e-02, 1.010815501213074e-01, 1.255649626255035e-01, 1.133895814418793e-01, 4.869861528277397e-02, -3.932808339595795e-02, -1.085092127323151e-01, -1.256940066814423e-01, -8.264772593975067e-02, 2.376630618527997e-06, 8.265135437250137e-02, 1.256947964429855e-01, 1.085068136453629e-01, 3.932366520166397e-02, -4.870283976197243e-02, -1.133916303515434e-01, -1.23744435608387e-01, -7.480039447546005e-02, 9.987125173211098e-03, 8.998889476060867e-02, 1.268690526485443e-01, 1.029550731182098e-01, 2.970622852444649e-02, -5.77774979174142e-02, -1.175749450922014e-01, -1.210319921374319e-01, -6.649186462163925e-02, 1.991029642522335e-02, 9.677164256572723e-02, 1.272611320018768e-01, 9.67685878276825e-02, 1.990565285086632e-02, -6.64958655834198e-02, -1.210333853960037e-01, -1.175731867551804e-01, -5.777334794402122e-02, 2.971069142222404e-02, 1.029578149318695e-01, 1.268686652183533e-01, 8.998555690050125e-02, 9.982380084693432e-03, -7.480422407388687e-02, -1.237455680966377e-01, -1.133895292878151e-01, -4.869860038161278e-02, 3.932809829711914e-02, 1.085092201828957e-01, 1.256940215826035e-01, 8.264773339033127e-02, -2.380326577622327e-06, -8.265135437250137e-02, -1.256947815418243e-01, -1.085067763924599e-01, -3.932361304759979e-02, 4.870295524597168e-02, 1.133916452527046e-01, 1.237444132566452e-01, 7.480033487081528e-02, -9.987172670662403e-03, -8.998894691467285e-02, -1.268690973520279e-01, -1.029550805687904e-01, -2.970622479915619e-02, 5.777750164270401e-02, 1.175749376416206e-01, 1.21031865477562e-01, 6.649176776409149e-02, -1.991038955748081e-02, -9.67717319726944e-02, -1.272612065076828e-01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage_nonZeroStart.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage_nonZeroStart.txt new file mode 100644 index 0000000000..68dd68242d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MovingAverage_nonZeroStart.txt @@ -0,0 +1,20 @@ +last-generated=2017-10-24 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "number of continuous time states": "9", + "linear": " " +} +movAve1.y=[0e+00, 9.353725910186768e-01, 7.567793726921082e-01, 5.045299530029297e-01, 2.338647693395615e-01, -2.310188307319549e-07, -1.559118181467056e-01, -2.162324488162994e-01, -1.892037689685822e-01, -1.03941798210144e-01, 3.116154445592656e-08, 8.50435346364975e-02, 1.261364668607712e-01, 8.182483166456223e-02, -2.796485461294651e-02, -1.270727664232254e-01, -1.776431202888489e-01, -1.60359799861908e-01, -8.182444423437119e-02, 2.796507067978382e-02, 1.270729303359985e-01, 1.776432991027832e-01, 1.603600382804871e-01, 8.182474225759506e-02, -2.796476148068905e-02, -1.273238658905029e-01, -1.776432693004608e-01, -1.60359725356102e-01, -8.182428032159805e-02, 2.796526625752449e-02, 1.270730793476105e-01, 1.776434332132339e-01, 1.603601574897766e-01, 8.182486891746521e-02, -2.796462923288345e-02, -1.270724833011627e-01, -1.776428669691086e-01, -1.603595912456512e-01, -8.182430267333984e-02, 2.79652401804924e-02, 1.270729303359985e-01, 1.776432245969772e-01, 1.603598296642303e-01, 8.18244069814682e-02, -2.796521224081516e-02, -1.270731389522552e-01, -1.776435077190399e-01, -1.603601574897766e-01, -8.182476460933685e-02, 2.796478196978569e-02, 1.273239105939865e-01, 1.776430755853653e-01, 1.60359799861908e-01, 8.182451874017715e-02, -2.79649943113327e-02, -1.270727515220642e-01, -1.776429861783981e-01, -1.603596210479736e-01, -8.182430267333984e-02, 2.796515822410583e-02, 1.270729005336761e-01, 1.77643209695816e-01, 1.603599041700363e-01, 8.182483166456223e-02, -2.796485461294651e-02, -1.270727664232254e-01, -1.776431202888489e-01, -1.60359799861908e-01, -8.182444423437119e-02, 2.796507067978382e-02, 1.270729303359985e-01, 1.776432991027832e-01, 1.603600382804871e-01, 8.182474225759506e-02, -2.796476148068905e-02, -1.273238658905029e-01, -1.776431798934937e-01, -1.603597402572632e-01, -8.182443678379059e-02, 2.796502783894539e-02, 1.270727962255478e-01, 1.776431649923325e-01, 1.603598743677139e-01, 8.182458579540253e-02, -2.796491421759129e-02, -1.270727664232254e-01, -1.776431500911713e-01, -1.603598743677139e-01, -8.182458579540253e-02, 2.796491421759129e-02, 1.270727664232254e-01, 1.776431500911713e-01, 1.603598743677139e-01, 8.182458579540253e-02, -2.796491421759129e-02, -1.270727664232254e-01, -1.776431500911713e-01, -1.603598743677139e-01, -8.182458579540253e-02, 2.796491421759129e-02, 1.270727664232254e-01] +sinInpNoDel.y=[1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00, 8.0901700258255e-01, 3.0901700258255e-01, -3.0901700258255e-01, -8.0901700258255e-01, -1e+00, -8.0901700258255e-01, -3.0901700258255e-01, 3.0901700258255e-01, 8.0901700258255e-01, 1e+00] +movAve4.y=[0e+00, 9.353725910186768e-01, 7.567793726921082e-01, 5.045299530029297e-01, 2.338647693395615e-01, -2.310188307319549e-07, -1.559118181467056e-01, -2.162324488162994e-01, -1.892037689685822e-01, -1.03941798210144e-01, 3.116154445592656e-08, 8.50435346364975e-02, 1.261364668607712e-01, 1.164339482784271e-01, 6.682006269693375e-02, -6.769826654817734e-08, -5.846767500042915e-02, -8.903776854276657e-02, -8.409120142459869e-02, -4.923585057258606e-02, 1.104353088976495e-07, 4.45469468832016e-02, 6.88021257519722e-02, 6.581072509288788e-02, 3.897856175899506e-02, 3.547783222757062e-08, -3.598019108176231e-02, -5.606092140078545e-02, -5.405868217349052e-02, -3.225794062018394e-02, 1.883551874470868e-07, 3.017713129520416e-02, 4.730165004730225e-02, 4.586826264858246e-02, 2.751442603766918e-02, 1.277221883810853e-07, -2.59855967015028e-02, -4.09092865884304e-02, -3.983272612094879e-02, -2.398668602108955e-02, 1.386083710031016e-07, 2.281687781214714e-02, 3.603937104344368e-02, 3.520120307803154e-02, 2.126107737421989e-02, -4.953704113574986e-09, -2.033666893839836e-02, -3.220527991652489e-02, -3.153429925441742e-02, -1.909148879349232e-02, 8.822250663342857e-08, 8.822294716992474e-08, 8.822324559787376e-08, 8.822373587236143e-08, 8.822419772513967e-08, 8.822443220424248e-08, 8.822430430655004e-08, 8.822383534834444e-08, 8.822321007073697e-08, 8.822274821795872e-08, 8.822274821795872e-08, 8.822334507385676e-08, 8.822302532962567e-08, 8.82239419297548e-08, 8.822436825539626e-08, 8.822436825539626e-08, 8.822438957167833e-08, 8.822458141821699e-08, 8.822472352676414e-08, 8.822499353300373e-08, 8.822508590355937e-08, 8.822509300898673e-08, 8.822508590355937e-08, 8.822509300898673e-08, 8.822507169270466e-08, 8.8130697406541e-08, 1.105350975194597e-07, 8.234263049189394e-08, 4.855630919564646e-08, 2.850643987528656e-08, 1.920682102252158e-08, 1.950479422418994e-08, 1.887384470933284e-08, 1.806473903798178e-08, 1.719193321036983e-08, 1.64713984673881e-08, 1.644577629633659e-08, 1.706795060840705e-08, 2.310959068552165e-08, 1.859148390792598e-08, 2.133713650209756e-08, 2.045716662735231e-08, 3.335275167160034e-08, 6.44280078176962e-08, 9.393030353521681e-08, 1.10341574099948e-07, 1.073056239420112e-07, 8.610344792714386e-08, 5.975112316036757e-08, 4.987021995361829e-08, 4.390302521528611e-08] +time=[1e+02, 9e+02] +movAve2.y=[0e+00, 9.353725910186768e-01, 7.567793726921082e-01, 5.045299530029297e-01, 2.338647693395615e-01, -2.310188307319549e-07, -1.559118181467056e-01, -2.162324488162994e-01, -1.892037689685822e-01, -1.03941798210144e-01, 3.116154445592656e-08, 8.50435346364975e-02, 1.261364668607712e-01, 1.164339482784271e-01, 6.682006269693375e-02, -6.769826654817734e-08, -5.846767500042915e-02, -8.903776854276657e-02, -8.409120142459869e-02, -4.923585057258606e-02, 1.104353088976495e-07, 4.45469468832016e-02, 6.88021257519722e-02, 6.581072509288788e-02, 3.897856175899506e-02, 3.547783222757062e-08, -7.483915984630585e-02, -1.21092215180397e-01, -1.210921108722687e-01, -7.483890652656555e-02, 2.722320857628802e-07, 7.483940571546555e-02, 1.210925206542015e-01, 1.210924834012985e-01, 7.483932375907898e-02, 1.663469220147817e-07, -7.483897358179092e-02, -1.210920810699463e-01, -1.21092177927494e-01, -7.483892142772675e-02, 2.623933994527761e-07, 7.483939826488495e-02, 1.210924461483955e-01, 1.21092326939106e-01, 7.483909279108047e-02, -9.726549166089171e-08, -7.483922690153122e-02, -1.210922971367836e-01, -1.210922077298164e-01, -7.48390257358551e-02, 1.409674439400987e-07, 7.483933866024017e-02, 1.210923865437508e-01, 1.21092289686203e-01, 7.483907788991928e-02, -9.578322135439521e-08, -7.483923435211182e-02, -1.210923418402672e-01, -1.210923120379448e-01, -7.483914494514465e-02, 1.009856376299467e-08, 7.483914494514465e-02, 1.210922598838806e-01, 1.210923567414284e-01, 7.483909279108047e-02, -8.594464873112884e-08, -7.483921945095062e-02, -1.210922747850418e-01, -1.210921481251717e-01, -7.483892142772675e-02, 2.737156705734378e-07, 7.483940571546555e-02, 1.210924759507179e-01, 1.210923865437508e-01, 7.483920454978943e-02, 3.529395442569694e-08, -7.483911514282227e-02, -1.210922226309776e-01, -1.210921928286552e-01, -7.48390257358551e-02, 1.34196866952152e-07, 7.48392716050148e-02, 1.210923790931702e-01, 1.210923492908478e-01, 7.483918219804764e-02, 2.284423494813836e-08, -7.483911514282227e-02, -1.210922226309776e-01, -1.210923045873642e-01, -7.483905553817749e-02, 1.28618921735324e-07, 7.483925670385361e-02, 1.210923418402672e-01, 1.210922822356224e-01, 7.483910769224167e-02, -5.303251171540069e-08, -7.483918964862823e-02, -1.210922971367836e-01, -1.210922673344612e-01, -7.483910769224167e-02, 5.25120924521616e-08] +movAve3.y=[0e+00, 9.353725910186768e-01, 7.567793726921082e-01, 5.045299530029297e-01, 2.338647693395615e-01, -2.310188307319549e-07, -1.559118181467056e-01, -2.162324488162994e-01, -1.892037689685822e-01, -1.03941798210144e-01, 3.116154445592656e-08, 8.50435346364975e-02, 1.261364668607712e-01, 1.164339482784271e-01, 6.682006269693375e-02, -6.769826654817734e-08, -5.846767500042915e-02, -8.903776854276657e-02, -8.409120142459869e-02, -4.923585057258606e-02, 1.104353088976495e-07, 4.45469468832016e-02, 6.88021257519722e-02, 6.581072509288788e-02, 3.897856175899506e-02, 3.547783222757062e-08, -3.598019108176231e-02, -5.606092140078545e-02, -5.405868217349052e-02, -3.225794062018394e-02, 1.883551874470868e-07, 3.017713129520416e-02, 4.730165004730225e-02, 4.586826264858246e-02, 2.751442603766918e-02, 1.277221883810853e-07, -2.59855967015028e-02, -4.09092865884304e-02, -5.345317348837852e-02, -5.921423062682152e-02, -4.235741496086121e-02, -9.321445599198341e-03, 2.727503515779972e-02, 5.345340073108673e-02, 5.921442061662674e-02, 4.235757887363434e-02, 9.321615099906921e-03, -2.727485448122025e-02, -5.3453229367733e-02, -5.92142716050148e-02, -4.244119301438332e-02, -9.321532212197781e-03, 2.727501839399338e-02, 5.345343053340912e-02, 5.921447649598122e-02, 4.235762730240822e-02, 9.321657009422779e-03, -2.727484330534935e-02, -5.345325171947479e-02, -5.921430885791779e-02, -4.235748946666718e-02, -9.32152196764946e-03, 2.72749736905098e-02, 5.34534677863121e-02, 5.921447649598122e-02, 4.235758632421494e-02, 9.321593679487705e-03, -2.727490477263927e-02, -5.345329642295837e-02, -5.921434983611107e-02, -4.235753044486046e-02, -9.321565739810467e-03, 2.727492898702621e-02, 5.345333740115166e-02, 5.921439826488495e-02, 4.244132712483406e-02, 9.321614168584347e-03, -2.727488055825233e-02, -5.345328897237778e-02, -5.921434611082077e-02, -4.235749319195747e-02, -9.321482852101326e-03, 2.727504633367062e-02, 5.34534640610218e-02, 5.92145062983036e-02, 4.235764965415001e-02, 9.321662597358227e-03, -2.72748451679945e-02, -5.345325917005539e-02, -5.921432375907898e-02, -4.235750436782837e-02, -9.321535937488079e-03, 2.727496065199375e-02, 5.345337092876434e-02, 5.921442806720734e-02, 4.235760867595673e-02, 9.321640245616436e-03, -2.727485634386539e-02, -5.345326662063599e-02, -5.921432375907898e-02, -4.244125261902809e-02] +sinInp50sDel.y=[-7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01, -9.876883625984192e-01, -8.910065293312073e-01, -4.539904892444611e-01, 1.564344614744186e-01, 7.071067690849304e-01, 9.876883625984192e-01, 8.910065293312073e-01, 4.539904892444611e-01, -1.564344614744186e-01, -7.071067690849304e-01] +movAve7.y=[0e+00, -8.763125538825989e-01, -9.239140748977661e-01, -8.47790002822876e-01, -6.743162870407104e-01, -4.501466453075409e-01, -2.290564030408859e-01, -5.754833295941353e-02, 3.658527880907059e-02, 4.961711913347244e-02, 4.036843392896117e-08, -7.967382669448853e-02, -1.5399369597435e-01, -1.956502497196198e-01, -1.926662027835846e-01, -1.500514000654221e-01, -8.589723706245422e-02, -2.369659021496773e-02, 1.626027747988701e-02, 2.35030185431242e-02, 1.479662703474105e-08, -4.173414036631584e-02, -8.39969590306282e-02, -1.105853095650673e-01, -1.12388975918293e-01, -9.003113955259323e-02, -1.99178084731102e-02, 5.78039214015007e-02, 1.134464740753174e-01, 1.257563084363937e-01, 9.003148972988129e-02, 1.991769857704639e-02, -5.780402198433876e-02, -1.134466081857681e-01, -1.257564872503281e-01, -9.00317057967186e-02, -1.991790905594826e-02, 5.780381336808205e-02, 1.134464517235756e-01, 1.257563531398773e-01, 9.003152698278427e-02, 1.991771161556244e-02, -5.780400708317757e-02, -1.134465485811234e-01, -1.257563531398773e-01, -9.003150463104248e-02, -1.991766691207886e-02, 5.780405551195145e-02, 1.134466156363487e-01, 1.257564723491669e-01, 9.003166854381561e-02, 1.991789229214191e-02, -5.780383944511414e-02, -1.134463921189308e-01, -1.257562339305878e-01, -9.003140777349472e-02, -1.991761662065983e-02, 5.780410394072533e-02, 1.134466901421547e-01, 1.257565766572952e-01, 9.003178775310516e-02, 1.991799101233482e-02, -5.780372768640518e-02, -1.13446369767189e-01, -1.257562786340714e-01, -9.003144502639771e-02, -1.991762965917587e-02, 5.780408903956413e-02, 1.134466305375099e-01, 1.257564425468445e-01, 9.003158658742905e-02, 1.991775073111057e-02, -5.780397355556488e-02, -1.134465336799622e-01, -1.257563978433609e-01, -9.003158658742905e-02, -1.991780661046505e-02, 5.78039139509201e-02, 1.134465038776398e-01, 1.257563829421997e-01, 9.003159403800964e-02, 1.991779543459415e-02, -5.7803925126791e-02, -1.134465113282204e-01, -1.257563978433609e-01, -9.003160148859024e-02, -1.991780661046505e-02, 5.78039139509201e-02, 1.134465709328651e-01, 1.257564425468445e-01, 9.003160148859024e-02, 1.991777680814266e-02, -5.780394747853279e-02, -1.13446518778801e-01, -1.257563978433609e-01, -9.003160148859024e-02, -1.99178047478199e-02, 5.78039176762104e-02, 1.134465038776398e-01, 1.257563829421997e-01, 9.003160148859024e-02] +movAve6.y=[0e+00, -8.763125538825989e-01, -9.239140748977661e-01, -8.47790002822876e-01, -6.743162870407104e-01, -4.501466453075409e-01, -2.290564030408859e-01, -5.754833295941353e-02, 3.658527880907059e-02, 4.961711913347244e-02, 4.036843392896117e-08, -7.967382669448853e-02, -1.5399369597435e-01, -1.711364090442657e-01, -1.058778911828995e-01, -1.775890996214002e-04, 1.055904924869537e-01, 1.710265576839447e-01, 1.71136274933815e-01, 1.058777794241905e-01, 1.775654527591541e-04, -1.055904552340508e-01, -1.710265278816223e-01, -1.71136274933815e-01, -1.058777868747711e-01, 6.788108919408842e-08, 1.055906414985657e-01, 1.710265725851059e-01, 1.711361855268478e-01, 1.058775782585144e-01, 1.773427793523297e-04, -1.055906638503075e-01, -1.710267066955566e-01, -1.711364537477493e-01, -1.058779805898666e-01, -1.777841680450365e-04, 1.055902391672134e-01, 1.710263043642044e-01, 1.711360961198807e-01, 1.058775931596756e-01, 1.774590200511739e-04, -1.055904850363731e-01, -1.710264533758163e-01, -1.711361259222031e-01, -1.058775186538696e-01, -1.771975657902658e-04, 1.055909171700478e-01, 1.710269898176193e-01, 1.711366921663284e-01, 1.058781668543816e-01, 2.697746310786897e-07, -1.055900901556015e-01, -1.710261851549149e-01, -1.711359620094299e-01, -1.05877473950386e-01, -1.773055701050907e-04, 1.055906265974045e-01, 1.710265725851059e-01, 1.71136200428009e-01, 1.058776676654816e-01, 1.774982520146295e-04, -1.055904850363731e-01, -1.710264980792999e-01, -1.711364090442657e-01, -1.058778911828995e-01, -1.775890996214002e-04, 1.055904924869537e-01, 1.710265576839447e-01, 1.71136274933815e-01, 1.058777794241905e-01, 1.775654673110694e-04, -1.055904552340508e-01, -1.710265278816223e-01, -1.71136274933815e-01, -1.058777868747711e-01, 6.968446797372962e-08, 1.055906489491463e-01, 1.710265576839447e-01, 1.711362302303314e-01, 1.058777198195457e-01, 1.775437995092943e-04, -1.055904701352119e-01, -1.710265129804611e-01, -1.711362600326538e-01, -1.058777794241905e-01, -1.775825512595475e-04, 1.055904477834702e-01, 1.710265129804611e-01, 1.711362600326538e-01, 1.058777794241905e-01, 1.775821583578363e-04, -1.055904477834702e-01, -1.710265129804611e-01, -1.711362600326538e-01, -1.058777794241905e-01, -1.775827549863607e-04, 1.055904477834702e-01, 1.710265129804611e-01, 1.711362600326538e-01, 1.058777794241905e-01, 1.775841228663921e-04] +sinInp100sDel.y=[0e+00, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 1.224646852585168e-16, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -2.449293705170336e-16, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 3.673940293057708e-16, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -4.898587410340671e-16, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 6.123233998228043e-16, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -7.347880586115415e-16, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 8.572527703398379e-16, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -9.797174820681343e-16, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 1.102182140856871e-15, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -1.224646799645609e-15, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 4.899825137234847e-15, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -1.469576117223083e-15, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, -1.960672902788681e-15, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -1.714505540679676e-15, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 5.389683772389795e-15, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -1.959434964136269e-15, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, -1.470814161754614e-15, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -2.204364281713743e-15, 5.877852439880371e-01, 9.510565400123596e-01, 9.510565400123596e-01, 5.877852439880371e-01, 5.879542407544744e-15, -5.877852439880371e-01, -9.510565400123596e-01, -9.510565400123596e-01, -5.877852439880371e-01, -2.449293599291217e-15] +movAve8.y=[0e+00, 3.039204776287079e-01, 5.498324036598206e-01, 6.944261193275452e-01, 7.197624444961548e-01, 6.366037130355835e-01, 4.798464775085449e-01, 2.976180911064148e-01, 1.374643594026566e-01, 3.377259895205498e-02, -8.825113440025234e-08, 2.763227373361588e-02, 9.164350479841232e-02, 1.601985991001129e-01, 1.776988059282303e-01, 1.273239105939865e-01, 2.831562049686909e-02, -8.150828629732132e-02, -1.601988077163696e-01, -1.776988506317139e-01, -1.273240447044373e-01, -2.831584401428699e-02, 8.150799572467804e-02, 1.601984947919846e-01, 1.776985675096512e-01, 1.273237615823746e-01, 2.831554971635342e-02, -8.150837570428848e-02, -1.601988226175308e-01, -1.776987761259079e-01, -1.273238807916641e-01, -2.831568941473961e-02, 8.150812983512878e-02, 1.601986289024353e-01, 1.776987016201019e-01, 1.273239105939865e-01, 2.831570990383625e-02, -8.150812983512878e-02, -1.601986736059189e-01, -1.776987612247467e-01, -1.273238956928253e-01, -2.831572294235229e-02, 8.15081000328064e-02, 1.601986140012741e-01, 1.776986420154572e-01, 1.273237317800522e-01, 2.831540070474148e-02, -8.150853961706161e-02, -1.601990759372711e-01, -1.776991188526154e-01, -1.273242980241776e-01, -2.831613458693027e-02, 8.150774985551834e-02, 1.601982712745667e-01, 1.776983588933945e-01, 1.273234933614731e-01, 2.831529453396797e-02, -8.150846511125565e-02, -1.601988524198532e-01, -1.776987910270691e-01, -1.273239254951477e-01, -2.831572107970715e-02, 8.15080851316452e-02, 1.601985991001129e-01, 1.776988059282303e-01, 1.273239105939865e-01, 2.831562049686909e-02, -8.150828629732132e-02, -1.601988077163696e-01, -1.776988506317139e-01, -1.273240447044373e-01, -2.831584401428699e-02, 8.150799572467804e-02, 1.601984947919846e-01, 1.776985675096512e-01, 1.273237615823746e-01, 2.831545099616051e-02, -8.15083310008049e-02, -1.601987481117249e-01, -1.776987314224243e-01, -1.273238807916641e-01, -2.831568941473961e-02, 8.150813728570938e-02, 1.601986438035965e-01, 1.776987016201019e-01, 1.273239105939865e-01, 2.831570617854595e-02, -8.150813728570938e-02, -1.601986438035965e-01, -1.776987016201019e-01, -1.273239105939865e-01, -2.831570617854595e-02, 8.150813728570938e-02, 1.601986438035965e-01, 1.776987016201019e-01, 1.273239105939865e-01, 2.831570617854595e-02, -8.150813728570938e-02, -1.601986438035965e-01, -1.776987016201019e-01, -1.273239105939865e-01] +movAve9.y=[0e+00, 3.039204776287079e-01, 5.498324036598206e-01, 6.944261193275452e-01, 7.197624444961548e-01, 6.366037130355835e-01, 4.798464775085449e-01, 2.976180911064148e-01, 1.374643594026566e-01, 3.377259895205498e-02, -8.825113440025234e-08, 2.763227373361588e-02, 9.164350479841232e-02, 1.602572798728943e-01, 2.056510895490646e-01, 2.12204784154892e-01, 1.79944708943367e-01, 1.225498095154762e-01, 6.10956959426403e-02, 1.599756442010403e-02, -1.313608919417675e-07, 1.447403989732265e-02, 4.998751729726791e-02, 9.05805230140686e-02, 1.199634522199631e-01, 1.273232251405716e-01, 1.030071973800659e-01, 3.934512287378311e-02, -3.934543207287788e-02, -1.030073761940002e-01, -1.273240298032761e-01, -1.030072867870331e-01, -3.934529051184654e-02, 3.934524580836296e-02, 1.030072122812271e-01, 1.273238956928253e-01, 1.030071452260017e-01, 3.93451489508152e-02, -3.934533521533012e-02, -1.030074208974838e-01, -1.273240745067596e-01, -1.030072942376137e-01, -3.934523835778236e-02, 3.934532031416893e-02, 1.030072495341301e-01, 1.273238658905029e-01, 1.030070632696152e-01, 3.934501484036446e-02, -3.934553638100624e-02, -1.030074879527092e-01, -1.273241490125656e-01, -1.030074879527092e-01, -3.934541717171669e-02, 3.93451415002346e-02, 1.03007085621357e-01, 1.273237317800522e-01, 1.030069962143898e-01, 3.934499621391296e-02, -3.934554010629654e-02, -1.030075028538704e-01, -1.27324178814888e-01, -1.030074432492256e-01, -3.934543952345848e-02, 3.934504091739655e-02, 1.030071303248405e-01, 1.273237764835358e-01, 1.030070036649704e-01, 3.934494405984879e-02, -3.934561088681221e-02, -1.03007547557354e-01, -1.273241639137268e-01, -1.030073538422585e-01, -3.934530913829803e-02, 3.934524208307266e-02, 1.030071899294853e-01, 1.273238509893417e-01, 1.030071452260017e-01, 3.93451452255249e-02, -3.93453910946846e-02, -1.030073538422585e-01, -1.273240298032761e-01, -1.030072867870331e-01, -3.934528678655624e-02, 3.934524953365326e-02, 1.030072122812271e-01, 1.273238956928253e-01, 1.030071452260017e-01, 3.93451452255249e-02, -3.934537246823311e-02, -1.030074059963226e-01, -1.273240447044373e-01, -1.030072495341301e-01, -3.934521600604057e-02, 3.934532776474953e-02, 1.030072867870331e-01, 1.273239552974701e-01, 1.030072197318077e-01, 3.934521973133087e-02, -3.934531658887863e-02, -1.030072793364525e-01, -1.273239701986313e-01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMax.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMax.txt new file mode 100644 index 0000000000..ea59238eed --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMax.txt @@ -0,0 +1,14 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +con[3].y=[3e+00, 3e+00] +con[5].y=[5e+00, 5e+00] +con[1].y=[1e+00, 1e+00] +con[4].y=[4e+00, 4e+00] +time=[0e+00, 1e+00] +con[2].y=[2e+00, 2e+00] +maxVal.y=[5e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMin.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMin.txt new file mode 100644 index 0000000000..46c2056b44 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiMin.txt @@ -0,0 +1,14 @@ +last-generated=2017-09-14 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +con[3].y=[3e+00, 3e+00] +con[5].y=[5e+00, 5e+00] +con[1].y=[1e+00, 1e+00] +con[4].y=[4e+00, 4e+00] +time=[0e+00, 1e+00] +con[2].y=[2e+00, 2e+00] +minVal.y=[1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiSum.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiSum.txt new file mode 100644 index 0000000000..6f2ef7f4be --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiSum.txt @@ -0,0 +1,19 @@ +last-generated=2017-06-30 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +mulSum_1.u[1]=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +mulSum_1.y=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +time=[0e+00, 1e+00] +mulSum_2.u[2]=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +mulSum_2.u[1]=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +mulSum_2.y=[-2.5e+00, -2.45000004656613e+00, -2.40000009313226e+00, -2.349999901279814e+00, -2.299999947845941e+00, -2.250000003725286e+00, -2.200000040978201e+00, -2.150000096857549e+00, -2.099999895691898e+00, -2.049999970197624e+00, -2.000000007450558e+00, -1.950000044703492e+00, -1.899999962747137e+00, -1.850000000000071e+00, -1.799999955296507e+00, -1.750000029802234e+00, -1.700000029802376e+00, -1.649999985098812e+00, -1.600000059604538e+00, -1.549999940395391e+00, -1.500000014901117e+00, -1.450000014901259e+00, -1.399999970197695e+00, -1.350000044703421e+00, -1.299999925494274e+00, -1.25e+00, -1.200000000000142e+00, -1.150000029802162e+00, -1.100000029802304e+00, -1.049999910593157e+00, -1.000000059604467e+00, -9.499999999999644e-01, -8.999999403954617e-01, -8.500000894067716e-01, -8.000000298022689e-01, -7.499999701977665e-01, -7.000000596044317e-01, -6.500000000000711e-01, -5.999999999999289e-01, -5.499999403955683e-01, -5.000000298022335e-01, -4.49999970197731e-01, -3.999999403953553e-01, -3.500000298023224e-01, -3e-01, -2.49999940395444e-01, -2.000000447033591e-01, -1.50000000000009e-01, -9.999994784605581e-02, -5.000004842866734e-02, 0e+00, 5.000004842795681e-02, 1.000000968559136e-01, 1.500001490090542e-01, 1.999998956936304e-01, 2.499999403963324e-01, 2.999999999998226e-01, 3.500000298017892e-01, 4.000000894054748e-01, 4.500001192073355e-01, 4.999998807928419e-01, 5.499999403966341e-01, 6.000000000002842e-01, 6.499999999997158e-01, 7.000000596033659e-01, 7.50000119207158e-01, 7.999998807930554e-01, 8.499999403963502e-01, 8.99999940395995e-01, 9.500000000001418e-01, 1.000000059603579e+00, 1.050000059602726e+00, 1.099999880793268e+00, 1.149999880792416e+00, 1.200000000000853e+00, 1.25e+00, 1.299999999999147e+00, 1.350000119207584e+00, 1.400000119206732e+00, 1.449999940397274e+00, 1.499999940396421e+00, 1.549999940395213e+00, 1.600000059604005e+00, 1.650000059603153e+00, 1.700000178811589e+00, 1.749999880792842e+00, 1.799999880791989e+00, 1.850000000000426e+00, 1.899999999999574e+00, 1.950000119208011e+00, 2.000000119207158e+00, 2.049999821188411e+00, 2.099999821187558e+00, 2.150000059605285e+00, 2.200000059604787e+00, 2.250000059603579e+00, 2.300000059602726e+00, 2.349999761583978e+00, 2.400000000001705e+00, 2.450000000000852e+00, 2.5e+00] +mulSum_5.u[1]=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +mulSum_5.u[3]=[-1e+00, -9.700000279396727e-01, -9.399999962747139e-01, -9.100000242143751e-01, -8.799999925494277e-01, -8.500000260770252e-01, -8.199999888241416e-01, -7.900000223517407e-01, -7.599999850988655e-01, -7.300000298022691e-01, -6.999999925493972e-01, -6.700000149011524e-01, -6.399999776482982e-01, -6.099999999999289e-01, -5.799999850988476e-01, -5.500000298022336e-01, -5.199999701977309e-01, -4.900000149011345e-01, -4.600000298022158e-01, -4.3e-01, -4.000000149011168e-01, -3.699999850988388e-01, -3.4e-01, -3.100000149011611e-01, -2.799999850988388e-01, -2.5e-01, -2.199999701977486e-01, -1.900000298022424e-01, -1.59999999999991e-01, -1.299999701977398e-01, -1.000000372528142e-01, -7.000000745056284e-02, -3.999997764831148e-02, -1.000003911547481e-02, 1.999998882415249e-02, 5.000001862641812e-02, 7.999995529662296e-02, 1.099999850988743e-01, 1.400000149011257e-01, 1.70000044703377e-01, 1.999999850988833e-01, 2.300000149011345e-01, 2.600000298023223e-01, 2.899999701977842e-01, 3.2e-01, 3.500000298023224e-01, 3.79999970197802e-01, 4.099999999999999e-01, 4.400000298023223e-01, 4.699999701976776e-01, 5e-01, 5.299999999997158e-01, 5.60000059603508e-01, 5.900000596037922e-01, 6.199999403966343e-01, 6.499999403960659e-01, 6.799999999999291e-01, 7.099999999997867e-01, 7.400000596036499e-01, 7.700000596038631e-01, 7.999999403967762e-01, 8.299999403962078e-01, 8.600000000001421e-01, 8.899999999998579e-01, 9.200000596037922e-01, 9.500000596032238e-01, 9.799999403961369e-01, 1.009999940395853e+00, 1.039999940395995e+00, 1.070000059604645e+00, 1.100000059603579e+00, 1.130000059604005e+00, 1.159999880793268e+00, 1.190000000000568e+00, 1.220000000000284e+00, 1.25e+00, 1.279999999999716e+00, 1.309999999999432e+00, 1.340000119206732e+00, 1.369999940395995e+00, 1.399999940396421e+00, 1.429999940395355e+00, 1.460000059604005e+00, 1.490000059604147e+00, 1.520000059603863e+00, 1.549999880792842e+00, 1.580000000000426e+00, 1.610000000000142e+00, 1.639999999999858e+00, 1.669999999999574e+00, 1.700000119207158e+00, 1.729999940396137e+00, 1.759999940395853e+00, 1.789999940395995e+00, 1.820000059604645e+00, 1.850000059603579e+00, 1.880000059604005e+00, 1.909999880793268e+00, 1.940000000000568e+00, 1.970000000000284e+00, 2e+00] +mulSum_5.u[2]=[-1e+00, -9.800000186264507e-01, -9.599999776482565e-01, -9.399999962747084e-01, -9.200000149011579e-01, -8.99999977648261e-01, -8.799999925494144e-01, -8.600000149011634e-01, -8.399999701977309e-01, -8.200000000000001e-01, -8.000000149011612e-01, -7.799999701976954e-01, -7.599999850988388e-01, -7.4e-01, -7.200000298023046e-01, -7e-01, -6.799999999999999e-01, -6.60000029802269e-01, -6.4e-01, -6.2e-01, -6.000000298022335e-01, -5.799999701976777e-01, -5.600000000000001e-01, -5.400000298023224e-01, -5.199999701976776e-01, -5e-01, -4.799999701978197e-01, -4.600000298021625e-01, -4.399999999999999e-01, -4.19999970197802e-01, -4.000000298023224e-01, -3.8e-01, -3.6e-01, -3.400000298023224e-01, -3.2e-01, -3e-01, -2.800000298023224e-01, -2.6e-01, -2.399999850988743e-01, -2.199999701977842e-01, -2.000000149011167e-01, -1.8e-01, -1.599999701977753e-01, -1.400000149011079e-01, -1.199999925494283e-01, -9.99999776483026e-02, -8.000001490113007e-02, -5.999999627471642e-02, -3.999997764829821e-02, -2.000001862641598e-02, 0e+00, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00] +mulSum_5.u[5]=[-3e+00, -2.970000027939673e+00, -2.940000055879345e+00, -2.91000008381902e+00, -2.880000111758691e+00, -2.849999906867758e+00, -2.819999929219457e+00, -2.789999962747105e+00, -2.759999985098812e+00, -2.730000029802376e+00, -2.700000052154087e+00, -2.670000074505797e+00, -2.640000096857508e+00, -2.609999880791208e+00, -2.579999925494203e+00, -2.549999970197766e+00, -2.519999970197624e+00, -2.490000014901188e+00, -2.460000059604751e+00, -2.430000059604609e+00, -2.400000104307817e+00, -2.369999865890233e+00, -2.339999910593157e+00, -2.309999955296579e+00, -2.279999955296437e+00, -2.25e+00, -2.219999999999858e+00, -2.190000089407127e+00, -2.160000089406843e+00, -2.130000089406843e+00, -2.099999940395533e+00, -2.069999940395391e+00, -2.039999940395249e+00, -2.010000029802518e+00, -1.980000029802162e+00, -1.950000029802234e+00, -1.920000000000213e+00, -1.890000000000071e+00, -1.859999999999929e+00, -1.829999999999787e+00, -1.799999970197766e+00, -1.769999970197838e+00, -1.739999970197482e+00, -1.710000059604325e+00, -1.679999940395462e+00, -1.649999940395888e+00, -1.620000029802447e+00, -1.590000029802305e+00, -1.559999910593513e+00, -1.530000000000142e+00, -1.5e+00, -1.470000000000284e+00, -1.440000000000568e+00, -1.409999880793268e+00, -1.380000059604005e+00, -1.350000059603579e+00, -1.320000059604645e+00, -1.289999940395995e+00, -1.259999940395853e+00, -1.229999940396137e+00, -1.200000119207158e+00, -1.169999999999574e+00, -1.139999999999858e+00, -1.110000000000142e+00, -1.080000000000426e+00, -1.049999880792842e+00, -1.020000059603863e+00, -9.900000596036499e-01, -9.599999999997867e-01, -9.299999999999291e-01, -8.999999403960659e-01, -8.699999403966343e-01, -8.400000596037922e-01, -8.10000059603508e-01, -7.799999999997158e-01, -7.5e-01, -7.200000000002842e-01, -6.89999940396492e-01, -6.599999403962078e-01, -6.300000596033657e-01, -6.000000596039341e-01, -5.700000000000709e-01, -5.400000000002133e-01, -5.099999403963501e-01, -4.799999105945961e-01, -4.50000059603579e-01, -4.200000298016829e-01, -3.899999999997869e-01, -3.600000000002131e-01, -3.299999701983171e-01, -2.99999940396421e-01, -2.700000894054039e-01, -2.400000447027374e-01, -2.100000149008413e-01, -1.799999999998936e-01, -1.499999701982107e-01, -1.199999329458938e-01, -9.000008940547513e-02, -6.000005587839531e-02, -3.000002793918877e-02, 0e+00] +mulSum_5.y=[-1.060000038146973e+01, -1.045699977555129e+01, -1.031400012330717e+01, -1.017099951738874e+01, -1.002799986514461e+01, -9.885000239536067e+00, -9.741999606982052e+00, -9.598999981373517e+00, -9.456000302493004e+00, -9.312999776483718e+00, -9.170000097602369e+00, -9.027000418722441e+00, -8.883999786168765e+00, -8.741000107289121e+00, -8.597999581277559e+00, -8.455000008939747e+00, -8.312000223516282e+00, -8.168999697506996e+00, -8.026000125168613e+00, -7.882999862909697e+00, -7.739999813735721e+00, -7.597000028311689e+00, -7.45399997913828e+00, -7.310999929964872e+00, -7.16800014454084e+00, -7.025000095367432e+00, -6.881999833108515e+00, -6.738999997020615e+00, -6.596000211596299e+00, -6.452999949335394e+00, -6.310000113249767e+00, -6.166999850988576e+00, -6.024000065564544e+00, -5.881000229475791e+00, -5.737999967217728e+00, -5.594999704957959e+00, -5.452000345704659e+00, -5.309000083446879e+00, -5.165999821186826e+00, -5.02299955892791e+00, -4.880000199674609e+00, -4.736999937414841e+00, -4.593999675156777e+00, -4.451000315903477e+00, -4.308000053643992e+00, -4.164999791385644e+00, -4.021999955297175e+00, -3.878999931454707e+00, -3.735999907613233e+00, -3.59300007152519e+00, -3.450000047683716e+00, -3.306999785425695e+00, -3.163999761586252e+00, -3.020999499328231e+00, -2.87800032782011e+00, -2.73500006556351e+00, -2.592000041723663e+00, -2.448999779464627e+00, -2.305999755625185e+00, -2.162999731782616e+00, -2.020000321859043e+00, -1.877000178810311e+00, -1.734000035761579e+00, -1.590999892712847e+00, -1.447999749664115e+00, -1.304999606615384e+00, -1.162000315899537e+00, -1.019000292058531e+00, -8.760000894053678e-01, -7.329999463554083e-01, -5.899998033076926e-01, -4.469996900609635e-01, -3.040003993442993e-01, -1.610002711965866e-01, -1.800013559825776e-02, 1.25e-01, 2.680001430488739e-01, 4.110002860974636e-01, 5.540004291461954e-01, 6.969997198629662e-01, 8.399998033076926e-01, 9.829999463554083e-01, 1.126000149009799e+00, 1.269000292058531e+00, 1.412000315899537e+00, 1.554999606615384e+00, 1.697999749664115e+00, 1.840999892712847e+00, 1.984000035761579e+00, 2.1270002980196e+00, 2.270000321859043e+00, 2.412999731782616e+00, 2.555999755625185e+00, 2.698999779464627e+00, 2.842000041723663e+00, 2.98500006556351e+00, 3.12800032782011e+00, 3.270999499328231e+00, 3.413999761586252e+00, 3.556999785425695e+00, 3.700000047683716e+00] +mulSum_5.u[4]=[-2e+00, -1.970000027939673e+00, -1.940000055879345e+00, -1.90999996460977e+00, -1.879999992549401e+00, -1.850000026077003e+00, -1.820000048428746e+00, -1.789999962747105e+00, -1.759999985098812e+00, -1.730000029802162e+00, -1.700000052153998e+00, -1.669999955296543e+00, -1.639999977648218e+00, -1.609999999999929e+00, -1.580000044703457e+00, -1.549999970197766e+00, -1.519999970197838e+00, -1.490000014901188e+00, -1.460000059604325e+00, -1.429999940395462e+00, -1.399999985098883e+00, -1.369999985098741e+00, -1.340000029802305e+00, -1.309999955296579e+00, -1.279999955296756e+00, -1.25e+00, -1.219999999999858e+00, -1.190000089406487e+00, -1.159999970197695e+00, -1.129999970197553e+00, -1.100000059604112e+00, -1.070000059604538e+00, -1.039999940395675e+00, -1.010000029802518e+00, -9.800000298022691e-01, -9.499999701977665e-01, -9.200000596044317e-01, -8.900000000000711e-01, -8.599999999999289e-01, -8.299999403955683e-01, -8.000000298022335e-01, -7.699999701977309e-01, -7.39999970197873e-01, -7.100000000001065e-01, -6.800000000000355e-01, -6.499999403955328e-01, -6.200000298021979e-01, -5.899999701976955e-01, -5.599999701978375e-01, -5.300000000001421e-01, -5e-01, -4.699999701981039e-01, -4.399999403962078e-01, -4.09999910594738e-01, -3.800000596036854e-01, -3.500000298017893e-01, -3.200000000001064e-01, -2.899999701981041e-01, -2.599999403963501e-01, -2.299999254955619e-01, -2.000000745045626e-01, -1.700000447027376e-01, -1.400000149009125e-01, -1.099999850990875e-01, -7.999995529726243e-02, -4.999992922068328e-02, -2.000007822977725e-02, 9.999949709432063e-03, 3.999997764863138e-02, 7.000000745066925e-02, 1.000000372522811e-01, 1.300000596036855e-01, 1.599999105945249e-01, 1.899999403963499e-01, 2.19999970198175e-01, 2.5e-01, 2.800000298018961e-01, 3.100000596037922e-01, 3.40000089405262e-01, 3.699999403963146e-01, 3.999999701982107e-01, 4.299999999998936e-01, 4.600000298018959e-01, 4.900000596036499e-01, 5.200000596038631e-01, 5.499999403967762e-01, 5.799999403962078e-01, 6.100000000001421e-01, 6.399999999998579e-01, 6.700000596037922e-01, 7.000000596032238e-01, 7.299999403961369e-01, 7.599999403963501e-01, 7.900000000002133e-01, 8.200000000000709e-01, 8.500000596039341e-01, 8.800000596033657e-01, 9.099999403962078e-01, 9.39999940396492e-01, 9.700000000002842e-01, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Multiply.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Multiply.txt new file mode 100644 index 0000000000..55dc2f87e3 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Multiply.txt @@ -0,0 +1,11 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +product1.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +product1.u2=[-1e+00, -9.700000279396727e-01, -9.399999962747139e-01, -9.100000242143751e-01, -8.799999925494277e-01, -8.500000260770252e-01, -8.199999888241416e-01, -7.900000223517407e-01, -7.599999850988655e-01, -7.300000298022691e-01, -6.999999925493972e-01, -6.700000149011524e-01, -6.399999776482982e-01, -6.099999999999289e-01, -5.799999850988476e-01, -5.500000298022336e-01, -5.199999701977309e-01, -4.900000149011345e-01, -4.600000298022158e-01, -4.3e-01, -4.000000149011168e-01, -3.699999850988388e-01, -3.4e-01, -3.100000149011611e-01, -2.799999850988388e-01, -2.5e-01, -2.199999701977486e-01, -1.900000298022424e-01, -1.59999999999991e-01, -1.299999701977398e-01, -1.000000372528142e-01, -7.000000745056284e-02, -3.999997764831148e-02, -1.000003911547481e-02, 1.999998882415249e-02, 5.000001862641812e-02, 7.999995529662296e-02, 1.099999850988743e-01, 1.400000149011257e-01, 1.70000044703377e-01, 1.999999850988833e-01, 2.300000149011345e-01, 2.600000298023223e-01, 2.899999701977842e-01, 3.2e-01, 3.500000298023224e-01, 3.79999970197802e-01, 4.099999999999999e-01, 4.400000298023223e-01, 4.699999701976776e-01, 5e-01, 5.299999999997158e-01, 5.60000059603508e-01, 5.900000596037922e-01, 6.199999403966343e-01, 6.499999403960659e-01, 6.799999999999291e-01, 7.099999999997867e-01, 7.400000596036499e-01, 7.700000596038631e-01, 7.999999403967762e-01, 8.299999403962078e-01, 8.600000000001421e-01, 8.899999999998579e-01, 9.200000596037922e-01, 9.500000596032238e-01, 9.799999403961369e-01, 1.009999940395853e+00, 1.039999940395995e+00, 1.070000059604645e+00, 1.100000059603579e+00, 1.130000059604005e+00, 1.159999880793268e+00, 1.190000000000568e+00, 1.220000000000284e+00, 1.25e+00, 1.279999999999716e+00, 1.309999999999432e+00, 1.340000119206732e+00, 1.369999940395995e+00, 1.399999940396421e+00, 1.429999940395355e+00, 1.460000059604005e+00, 1.490000059604147e+00, 1.520000059603863e+00, 1.549999880792842e+00, 1.580000000000426e+00, 1.610000000000142e+00, 1.639999999999858e+00, 1.669999999999574e+00, 1.700000119207158e+00, 1.729999940396137e+00, 1.759999940395853e+00, 1.789999940395995e+00, 1.820000059604645e+00, 1.850000059603579e+00, 1.880000059604005e+00, 1.909999880793268e+00, 1.940000000000568e+00, 1.970000000000284e+00, 2e+00] +product1.y=[2e+00, 1.901200053899884e+00, 1.804800029324279e+00, 1.71080004548252e+00, 1.619199983165286e+00, 1.529999977964155e+00, 1.44319998073223e+00, 1.358800056083205e+00, 1.276800022025058e+00, 1.197199968805464e+00, 1.12000001612895e+00, 1.045199985899922e+00, 9.727999973702217e-01, 9.027999908637505e-01, 8.352000157022442e-01, 7.700000192165183e-01, 7.07199968805357e-01, 6.467999922227886e-01, 5.888000538633404e-01, 5.332000126457337e-01, 4.800000048398786e-01, 4.291999612475442e-01, 3.80800003175733e-01, 3.348000237512006e-01, 2.911999893522698e-01, 2.5e-01, 2.111999632264212e-01, 1.748000316571716e-01, 1.408000031757241e-01, 1.091999755955357e-01, 8.000003187650792e-02, 5.320000519513086e-02, 2.87999830830445e-02, 6.800027679893472e-03, -1.279999301047575e-02, -3.000000872312006e-02, -4.479997860436594e-02, -5.719999423505268e-02, -6.720000168561552e-02, -7.480000840660841e-02, -7.999999568464292e-02, -8.280000139236056e-02, -8.319999886276018e-02, -8.120000574109125e-02, -7.680000225543641e-02, -6.999999047518948e-02, -6.08000095033342e-02, -4.91999968242692e-02, -3.519998324396963e-02, -1.880001628455318e-02, 0e+00, 2.120002096795705e-02, 4.480004616180527e-02, 7.08000774441898e-02, 9.919993985040314e-02, 1.299999573714438e-01, 1.631999977444513e-01, 1.988000240607829e-01, 2.368000658930474e-01, 2.772001231268431e-01, 3.199998885173765e-01, 3.651999468908919e-01, 4.127999908641666e-01, 4.628000206657075e-01, 5.152000959001592e-01, 5.700001269316927e-01, 6.271998549102407e-01, 6.867999019828859e-01, 7.487999346551485e-01, 8.132000126458961e-01, 8.800000765788678e-01, 9.492001261116404e-01, 1.020799786877195e+00, 1.094799852449942e+00, 1.171199963227307e+00, 1.25e+00, 1.331200082434323e+00, 1.414800210072127e+00, 1.500800263705827e+00, 1.589199828094172e+00, 1.679999838163842e+00, 1.773200012645329e+00, 1.868800113466951e+00, 1.966800140397485e+00, 2.067200212532638e+00, 2.169999828912732e+00, 2.27519973827698e+00, 2.382800050469167e+00, 2.492800050467746e+00, 2.60520021510817e+00, 2.720000305742785e+00, 2.837199616497133e+00, 2.956799782775586e+00, 3.078799875051357e+00, 3.203200131855327e+00, 3.330000076578157e+00, 3.459200185714367e+00, 3.590799667667905e+00, 3.724799852451079e+00, 3.861199963228444e+00, 4e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiplyByParameter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiplyByParameter.txt new file mode 100644 index 0000000000..b394853149 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_MultiplyByParameter.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +gain1.u=[0e+00, 2e-02, 4e-02, 6e-02, 8e-02, 1e-01, 1.2e-01, 1.4e-01, 1.6e-01, 1.8e-01, 2e-01, 2.2e-01, 2.4e-01, 2.6e-01, 2.8e-01, 3e-01, 3.2e-01, 3.4e-01, 3.6e-01, 3.8e-01, 4e-01, 4.2e-01, 4.4e-01, 4.6e-01, 4.8e-01, 5e-01, 5.2e-01, 5.4e-01, 5.600000000000001e-01, 5.8e-01, 6e-01, 6.2e-01, 6.4e-01, 6.6e-01, 6.8e-01, 7e-01, 7.2e-01, 7.4e-01, 7.6e-01, 7.8e-01, 8e-01, 8.2e-01, 8.4e-01, 8.6e-01, 8.8e-01, 9e-01, 9.2e-01, 9.399999999999999e-01, 9.6e-01, 9.8e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00, 1.52e+00, 1.54e+00, 1.56e+00, 1.58e+00, 1.6e+00, 1.62e+00, 1.64e+00, 1.66e+00, 1.68e+00, 1.7e+00, 1.72e+00, 1.74e+00, 1.76e+00, 1.78e+00, 1.8e+00, 1.82e+00, 1.84e+00, 1.86e+00, 1.88e+00, 1.9e+00, 1.92e+00, 1.94e+00, 1.96e+00, 1.98e+00, 2e+00] +gain1.y=[0e+00, 5.000000186264474e-02, 1.000000037252895e-01, 1.500000093132189e-01, 2.000000074505756e-01, 2.499999962747083e-01, 3.00000018626444e-01, 3.499999925494183e-01, 4.000000149011346e-01, 4.499999701977309e-01, 4.999999925494416e-01, 5.500000149011524e-01, 6.00000037252863e-01, 6.500000000000711e-01, 6.999999850988478e-01, 7.499999701977664e-01, 8.000000298022691e-01, 8.500000149011346e-01, 8.999999403954617e-01, 9.499999999999645e-01, 9.999999850988832e-01, 1.049999985098741e+00, 1.100000029802305e+00, 1.149999955296579e+00, 1.200000074505726e+00, 1.25e+00, 1.299999999999858e+00, 1.349999970197838e+00, 1.399999970197696e+00, 1.450000089406843e+00, 1.499999940395533e+00, 1.549999940395391e+00, 1.600000059604538e+00, 1.649999910593228e+00, 1.700000029802376e+00, 1.750000029802234e+00, 1.799999880790923e+00, 1.850000000000071e+00, 1.899999999999929e+00, 1.950000119209077e+00, 1.999999970197766e+00, 2.049999970197624e+00, 2.099999970197482e+00, 2.150000059604751e+00, 2.200000059604609e+00, 2.250000059604467e+00, 2.299999910593157e+00, 2.349999910593015e+00, 2.400000149011452e+00, 2.450000000000142e+00, 2.5e+00, 2.549999999999148e+00, 2.599999999998295e+00, 2.650000238416022e+00, 2.699999940397274e+00, 2.749999940396421e+00, 2.799999940395213e+00, 2.849999940394715e+00, 2.900000178812442e+00, 2.950000178811589e+00, 2.999999880792842e+00, 3.049999880791989e+00, 3.099999880791137e+00, 3.150000119208863e+00, 3.200000119208011e+00, 3.250000119207158e+00, 3.299999821188411e+00, 3.349999821187558e+00, 3.400000059605285e+00, 3.450000059604787e+00, 3.500000059603579e+00, 3.550000059602726e+00, 3.599999761583978e+00, 3.650000000001705e+00, 3.700000000000852e+00, 3.75e+00, 3.799999999999148e+00, 3.849999999998295e+00, 3.900000238416022e+00, 3.949999940397274e+00, 3.999999940396421e+00, 4.050000178813508e+00, 4.099999940395568e+00, 4.150000178810452e+00, 4.199999940396137e+00, 4.24999988079e+00, 4.300000119208863e+00, 4.349999880791705e+00, 4.400000119208295e+00, 4.449999880791137e+00, 4.50000011921e+00, 4.550000059603863e+00, 4.599999821189548e+00, 4.650000059604432e+00, 4.699999821186492e+00, 4.750000059605e+00, 4.800000298018747e+00, 4.849999761587389e+00, 4.899999999999432e+00, 4.949999761583411e+00, 5e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PID.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PID.txt new file mode 100644 index 0000000000..93cd17da6d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PID.txt @@ -0,0 +1,16 @@ +last-generated=2020-10-15 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "6", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +limPID.u_s=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +limPID.u_m=[5e-01, 5e-01] +limPID.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] +noLimPID.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, -9.952290088252989e+00, -9.052030614875273e+00, -8.237973679077834e+00, -7.501870384452208e+00, -6.836279029675234e+00, -6.23449319202321e+00, -5.690451499972388e+00, -5.198658607042629e+00, -4.754133427134535e+00, -4.352372601280627e+00, -3.98933115239112e+00, -3.661329580766244e+00, -3.365019559860229e+00, 6.960971704256596e+00, 6.351591737898935e+00, 5.8007050191013e+00, 5.302713956885609e+00, 4.852592506524368e+00, 4.445779416682665e+00, 4.078145256666335e+00, 3.74596351470655e+00, 3.445863826758359e+00, 3.174799290371137e+00, 2.930009462690693e+00, 2.708991867097916e+00, -8.007813098757234e+00, -7.292609205784988e+00, -6.645978820816525e+00, -6.061356824613599e+00, -5.532839123044156e+00, -5.055091232277409e+00, -4.623283289384259e+00, -4.233044186743177e+00, -3.880417867810531e+00, -3.561817610306849e+00, -3.274007745282737e+00, -3.01406478829128e+00, -2.779341697692871e+00, 7.490917981460541e+00, 6.831112154355686e+00, 6.234584633073051e+00, 5.69529882897934e+00, 5.207799992553523e+00, 4.767168145892856e+00, 4.368945807517083e+00, 4.009095103929908e+00, 3.683965357884337e+00, 3.390244679198751e+00, 3.124947673692733e+00, 2.88537703985181e+00, -7.848211417913685e+00, -7.148197185545346e+00, -6.515319835095553e+00, -5.94315959038448e+00, -5.425887459776115e+00, -4.958320461878563e+00, -4.535723591436895e+00, -4.153816748590518e+00, -3.808730621090627e+00, -3.496962926543181e+00, -3.215338745630475e+00, -2.960990423273568e+00, -2.731321811676025e+00, 7.534368809725732e+00, 6.870428324297951e+00, 6.270159536016375e+00, 5.727487728321822e+00, 5.236925686520907e+00, 4.793522459424533e+00, 4.392791955273442e+00, 4.030672458608609e+00, 3.703489211834343e+00, 3.407910069650518e+00, 3.14093197280038e+00, 2.899841418905063e+00, -7.835122715376613e+00, -7.136355890073677e+00, -6.504606737191692e+00, -5.93346405788314e+00, -5.417114608259317e+00, -4.950382553132984e+00, -4.528540993492846e+00, -4.147317935728741e+00, -3.802850504922505e+00, -3.491642375993794e+00, -3.210524596755862e+00, -2.956634515413885e+00, -2.727380275726318e+00] +limP.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01] +limPI.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, -4.400000000000355e-01, -4.449999925494239e-01, -4.499999850988832e-01, -4.550000149011346e-01, -4.600000074505673e-01, -4.649999999999467e-01, -4.699999999999823e-01, -4.749999925494416e-01, -4.799999925494682e-01, -4.850000149011523e-01, -4.900000074505495e-01, -4.950000074505406e-01, -5e-01, 5.04999999999929e-01, 5.099999850989188e-01, 5.149999850988477e-01, 5.199999850990253e-01, 5.249999701977665e-01, 5.299999701976954e-01, 5.350000298022691e-01, 5.400000149008681e-01, 5.450000149011879e-01, 5.500000149011168e-01, 5.550000000001065e-01, 5.600000000000355e-01, -4.400000000000355e-01, -4.450000000001066e-01, -4.499999850988832e-01, -4.550000149011346e-01, -4.600000149010635e-01, -4.649999999999467e-01, -4.699999999999823e-01, -4.750000000000888e-01, -4.79999985098901e-01, -4.850000149011523e-01, -4.900000149010812e-01, -4.949999999999289e-01, -5e-01, 5.049999999998579e-01, 5.099999999997158e-01, 5.149999999995737e-01, 5.199999701979974e-01, 5.249999701978553e-01, 5.299999701976776e-01, 5.350000298022158e-01, 5.400000298020737e-01, 5.450000298019316e-01, 5.500000000003552e-01, 5.550000000002131e-01, 5.60000000000071e-01, -4.4e-01, -4.45e-01, -4.5e-01, -4.55e-01, -4.6e-01, -4.65e-01, -4.7e-01, -4.75e-01, -4.8e-01, -4.85e-01, -4.9e-01, -4.95e-01, -5e-01, 5.049999999998579e-01, 5.099999999997158e-01, 5.149999999995737e-01, 5.199999701979974e-01, 5.249999701978553e-01, 5.299999701976776e-01, 5.350000298022158e-01, 5.400000298020737e-01, 5.450000298019316e-01, 5.500000000003552e-01, 5.550000000002131e-01, 5.60000000000071e-01, -4.4e-01, -4.45e-01, -4.5e-01, -4.55e-01, -4.6e-01, -4.65e-01, -4.7e-01, -4.75e-01, -4.8e-01, -4.85e-01, -4.9e-01, -4.95e-01, -5e-01] +limPD.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialDerivativeOutput.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialDerivativeOutput.txt new file mode 100644 index 0000000000..c4e8eb30f9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialDerivativeOutput.txt @@ -0,0 +1,13 @@ +last-generated=2021-04-30 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 2.000000029802322e-01] +limPID.y=[2.000000029802322e-01, 1.637323956657642e-01, 1.340515780397024e-01, 1.09754651384102e-01, 8.985718578826983e-02, 7.356503337125767e-02, 6.022717387193266e-02, 4.930820801069234e-02, 4.036892047772475e-02, 3.305059706008012e-02, 2.706082340238934e-02, 2.215831070928619e-02, 1.814527410623112e-02, 1.485992618116706e-02, 1.21706925285995e-02, 9.967099716310648e-03, 8.162441600101095e-03, 6.684211996261016e-03, 5.473475251068925e-03, 4.482537654406879e-03, 3.670969908470475e-03, 3.006509154281315e-03, 2.462431107340098e-03, 2.016579381817847e-03, 1.651466543068693e-03, 1.352334162220359e-03, 1.107365857944015e-03, 9.068860641001513e-04, 7.42683778607608e-04, 6.082897544349083e-04, 4.981867461559625e-04, 4.079847521410948e-04, 3.341136744959179e-04, 2.736095271319089e-04, 2.242045912022062e-04, 1.839660849048837e-04, 1.512768050662869e-04, 1.248629106112001e-04, 1.033595493413561e-04, 8.538121270281738e-05, 7.0968813177785e-05, 5.925938804931915e-05, 4.945088970149428e-05, 4.10868915459759e-05, 3.399928178485262e-05, 2.794677580029565e-05, 2.278315771174431e-05, 1.822647352836766e-05, 1.445348601678522e-05, 1.158960614542508e-05, 8.962206266005524e-06, 6.87781013609358e-06, 5.382428668839482e-06, 4.229282179437137e-06, 3.341101553592752e-06, 2.712020327639719e-06, 2.280988483331259e-06, 1.986948322969379e-06, 1.768846750216611e-06, 1.619389787543014e-06, 1.688792042613292e-06, 1.793147954684967e-06, 1.892675225944911e-06, 1.947590360710273e-06, 1.918111517577516e-06, 1.764454254397068e-06, 1.732127867411867e-06, 1.794568299161417e-06, 1.824927797560019e-06, 1.809138302137314e-06, 1.733132219732508e-06, 1.582841951293076e-06, 1.370469477191658e-06, 1.315187765014957e-06, 1.257571048272755e-06, 1.197619326095723e-06, 1.135332012902917e-06, 1.070710151381813e-06, 1.003753285085139e-06, 9.3446141349261e-07, 8.628339384870768e-07, 7.888719844620687e-07, 7.125749685413921e-07, 6.339423527455374e-07, 5.52975253941089e-07, 4.701715763985888e-07, 4.464904567869981e-07, 4.228091323183344e-07, 3.99128012706161e-07, 3.754468646728182e-07, 3.517657450608672e-07, 3.280844205922038e-07, 3.044033009801152e-07, 2.807221529467724e-07, 2.570408568990455e-07, 2.33359708865888e-07, 2.096785750427311e-07, 1.859974412206259e-07, 1.623161309624308e-07, 1.386349971397998e-07, 1.149538633171687e-07] +limPD.y=[2.000000029802322e-01, 1.637323956657642e-01, 1.340515780397024e-01, 1.09754651384102e-01, 8.985718578826983e-02, 7.356503337125767e-02, 6.022717387193266e-02, 4.930820801069234e-02, 4.036892047772475e-02, 3.305059706008012e-02, 2.706082340238934e-02, 2.215831070928619e-02, 1.814527410623112e-02, 1.485992618116706e-02, 1.21706925285995e-02, 9.967099716310648e-03, 8.162441600101095e-03, 6.684211996261016e-03, 5.473475251068925e-03, 4.482537654406879e-03, 3.670969908470475e-03, 3.006509154281315e-03, 2.462431107340098e-03, 2.016579381817847e-03, 1.651466543068693e-03, 1.352334162220359e-03, 1.107365857944015e-03, 9.068860641001513e-04, 7.42683778607608e-04, 6.082897544349083e-04, 4.981867461559625e-04, 4.079847521410948e-04, 3.341136744959179e-04, 2.736095271319089e-04, 2.242045912022062e-04, 1.839660849048837e-04, 1.512768050662869e-04, 1.248629106112001e-04, 1.033595493413561e-04, 8.538121270281738e-05, 7.0968813177785e-05, 5.925938804931915e-05, 4.945088970149428e-05, 4.10868915459759e-05, 3.399928178485262e-05, 2.794677580029565e-05, 2.278315771174431e-05, 1.822647352836766e-05, 1.445348601678522e-05, 1.158960614542508e-05, 8.962206266005524e-06, 6.87781013609358e-06, 5.382428668839482e-06, 4.229292638655176e-06, 3.341136341748155e-06, 2.712093542017845e-06, 2.281117176774641e-06, 1.987152049854319e-06, 1.769147906936282e-06, 1.619804176113647e-06, 1.689299086122983e-06, 1.793752541310205e-06, 1.893381107719632e-06, 1.948400265734409e-06, 1.919026923774287e-06, 1.765475730988474e-06, 1.733257346290996e-06, 1.795806917185211e-06, 1.826274645236826e-06, 1.810591561272234e-06, 1.734689274737751e-06, 1.584499391575665e-06, 1.372223551816418e-06, 1.317038586938171e-06, 1.259516457453738e-06, 1.199657276179317e-06, 1.137460571884735e-06, 1.072927272227134e-06, 1.006056807752684e-06, 9.368492916266704e-07, 8.653041831810642e-07, 7.914224918991872e-07, 7.15203692365974e-07, 6.366471903184391e-07, 5.557542720185668e-07, 4.730222738656287e-07, 4.493711959405873e-07, 4.257199418035838e-07, 4.020688922999236e-07, 3.78417814374554e-07, 3.547667648708938e-07, 3.311155107338906e-07, 3.074644612302304e-07, 2.838133833048608e-07, 2.601621291678576e-07, 2.365110796641974e-07, 2.12860001738345e-07, 1.892089380243129e-07, 1.655576980981644e-07, 1.419066343836495e-07, 1.182555706691346e-07] +limPID.D.y=[2.000000029802322e-01, 1.637323956657642e-01, 1.340515780397024e-01, 1.09754651384102e-01, 8.985718578826983e-02, 7.356503337125767e-02, 6.022717387193266e-02, 4.930820801069234e-02, 4.036892047772475e-02, 3.305059706008012e-02, 2.706082340238934e-02, 2.215831070928619e-02, 1.814527410623112e-02, 1.485992618116706e-02, 1.21706925285995e-02, 9.967099716310648e-03, 8.162441600101095e-03, 6.684211996261016e-03, 5.473475251068925e-03, 4.482537654406879e-03, 3.670969908470475e-03, 3.006509154281315e-03, 2.462431107340098e-03, 2.016579381817847e-03, 1.651466543068693e-03, 1.352334162220359e-03, 1.107365857944015e-03, 9.068860641001513e-04, 7.42683778607608e-04, 6.082897544349083e-04, 4.981867461559625e-04, 4.079847521410948e-04, 3.341136744959179e-04, 2.736095271319089e-04, 2.242045912022062e-04, 1.839660849048837e-04, 1.512768050662869e-04, 1.248629106112001e-04, 1.033595493413561e-04, 8.538121270281738e-05, 7.0968813177785e-05, 5.925938804931915e-05, 4.945088970149428e-05, 4.10868915459759e-05, 3.399928178485262e-05, 2.794677580029565e-05, 2.278315771174431e-05, 1.822647352836766e-05, 1.445348601678522e-05, 1.158960614542508e-05, 8.962206266005524e-06, 6.87781013609358e-06, 5.382428668839482e-06, 4.229292638655176e-06, 3.341136341748155e-06, 2.712093542017845e-06, 2.281117176774641e-06, 1.987152049854319e-06, 1.769147906936282e-06, 1.619804176113647e-06, 1.689299086122983e-06, 1.793752541310205e-06, 1.893381107719632e-06, 1.948400265734409e-06, 1.919026923774287e-06, 1.765475730988474e-06, 1.733257346290996e-06, 1.795806917185211e-06, 1.826274645236826e-06, 1.810591561272234e-06, 1.734689274737751e-06, 1.584499391575665e-06, 1.372223551816418e-06, 1.317038586938171e-06, 1.259516457453738e-06, 1.199657276179317e-06, 1.137460571884735e-06, 1.072927272227134e-06, 1.006056807752684e-06, 9.368492916266704e-07, 8.653041831810642e-07, 7.914224918991872e-07, 7.15203692365974e-07, 6.366471903184391e-07, 5.557542720185668e-07, 4.730222738656287e-07, 4.493711959405873e-07, 4.257199418035838e-07, 4.020688922999236e-07, 3.78417814374554e-07, 3.547667648708938e-07, 3.311155107338906e-07, 3.074644612302304e-07, 2.838133833048608e-07, 2.601621291678576e-07, 2.365110796641974e-07, 2.12860001738345e-07, 1.892089380243129e-07, 1.655576980981644e-07, 1.419066343836495e-07, 1.182555706691346e-07] +limPD.D.y=[2.000000029802322e-01, 1.637323956657642e-01, 1.340515780397024e-01, 1.09754651384102e-01, 8.985718578826983e-02, 7.356503337125767e-02, 6.022717387193266e-02, 4.930820801069234e-02, 4.036892047772475e-02, 3.305059706008012e-02, 2.706082340238934e-02, 2.215831070928619e-02, 1.814527410623112e-02, 1.485992618116706e-02, 1.21706925285995e-02, 9.967099716310648e-03, 8.162441600101095e-03, 6.684211996261016e-03, 5.473475251068925e-03, 4.482537654406879e-03, 3.670969908470475e-03, 3.006509154281315e-03, 2.462431107340098e-03, 2.016579381817847e-03, 1.651466543068693e-03, 1.352334162220359e-03, 1.107365857944015e-03, 9.068860641001513e-04, 7.42683778607608e-04, 6.082897544349083e-04, 4.981867461559625e-04, 4.079847521410948e-04, 3.341136744959179e-04, 2.736095271319089e-04, 2.242045912022062e-04, 1.839660849048837e-04, 1.512768050662869e-04, 1.248629106112001e-04, 1.033595493413561e-04, 8.538121270281738e-05, 7.0968813177785e-05, 5.925938804931915e-05, 4.945088970149428e-05, 4.10868915459759e-05, 3.399928178485262e-05, 2.794677580029565e-05, 2.278315771174431e-05, 1.822647352836766e-05, 1.445348601678522e-05, 1.158960614542508e-05, 8.962206266005524e-06, 6.87781013609358e-06, 5.382428668839482e-06, 4.229292638655176e-06, 3.341136341748155e-06, 2.712093542017845e-06, 2.281117176774641e-06, 1.987152049854319e-06, 1.769147906936282e-06, 1.619804176113647e-06, 1.689299086122983e-06, 1.793752541310205e-06, 1.893381107719632e-06, 1.948400265734409e-06, 1.919026923774287e-06, 1.765475730988474e-06, 1.733257346290996e-06, 1.795806917185211e-06, 1.826274645236826e-06, 1.810591561272234e-06, 1.734689274737751e-06, 1.584499391575665e-06, 1.372223551816418e-06, 1.317038586938171e-06, 1.259516457453738e-06, 1.199657276179317e-06, 1.137460571884735e-06, 1.072927272227134e-06, 1.006056807752684e-06, 9.368492916266704e-07, 8.653041831810642e-07, 7.914224918991872e-07, 7.15203692365974e-07, 6.366471903184391e-07, 5.557542720185668e-07, 4.730222738656287e-07, 4.493711959405873e-07, 4.257199418035838e-07, 4.020688922999236e-07, 3.78417814374554e-07, 3.547667648708938e-07, 3.311155107338906e-07, 3.074644612302304e-07, 2.838133833048608e-07, 2.601621291678576e-07, 2.365110796641974e-07, 2.12860001738345e-07, 1.892089380243129e-07, 1.655576980981644e-07, 1.419066343836495e-07, 1.182555706691346e-07] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialState.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialState.txt new file mode 100644 index 0000000000..21a37f9c7f --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDInitialState.txt @@ -0,0 +1,13 @@ +last-generated=2021-04-30 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +limPID.I.y=[2.5e-01, 2.648347917490785e-01, 2.793437248907814e-01, 2.935335645527695e-01, 3.074113738859043e-01, 3.209841539373645e-01, 3.342584985179366e-01, 3.472410734633364e-01, 3.599384151450494e-01, 3.723565892071595e-01, 3.84501962060119e-01, 3.963803953958113e-01, 4.079977602711207e-01, 4.193598979527058e-01, 4.304722838989572e-01, 4.413404996562728e-01, 4.519699849445077e-01, 4.62365863864955e-01, 4.725333082123843e-01, 4.824772798567049e-01, 4.922026963116993e-01, 5.017144145513708e-01, 5.110171448205825e-01, 5.201153121517313e-01, 5.290136384380102e-01, 5.377163290977478e-01, 5.462277611718898e-01, 5.545521289999338e-01, 5.626935949242997e-01, 5.706561273333302e-01, 5.7844357762517e-01, 5.860599857452123e-01, 5.935089640737523e-01, 6.007941866605983e-01, 6.079193328397474e-01, 6.148878972985005e-01, 6.21703257434822e-01, 6.283689109770939e-01, 6.348879964029885e-01, 6.412638515819924e-01, 6.474994980213683e-01, 6.535981915060304e-01, 6.595627742698355e-01, 6.653963286052201e-01, 6.711016906808966e-01, 6.766816443276022e-01, 6.821389153168573e-01, 6.874763375838584e-01, 6.926963980626114e-01, 6.978017639540424e-01, 7.027949690818787e-01, 7.076783822237548e-01, 7.124545068026762e-01, 7.171256078028178e-01, 7.216941021078125e-01, 7.261621899264453e-01, 7.305320491001064e-01, 7.348058849934973e-01, 7.389857837848666e-01, 7.430738316465465e-01, 7.470719719828374e-01, 7.509822790020536e-01, 7.548066955611739e-01, 7.585470097974096e-01, 7.622051290645097e-01, 7.657827819116673e-01, 7.692818550709694e-01, 7.72703999580809e-01, 7.760509824867914e-01, 7.793244131159823e-01, 7.825259007918748e-01, 7.856569952502227e-01, 7.887192877721296e-01, 7.917142453799036e-01, 7.946434589354581e-01, 7.975082397460938e-01, 8.003101375240484e-01, 8.030504039839153e-01, 8.057304696397266e-01, 8.08351570753951e-01, 8.109151094667852e-01, 8.134223812853699e-01, 8.158744590899536e-01, 8.182727137961237e-01, 8.206182778974773e-01, 8.229122107658846e-01, 8.251557914397522e-01, 8.273500193716818e-01, 8.294960866534324e-01, 8.315949469627308e-01, 8.336477327950753e-01, 8.356553263929984e-01, 8.376188245719883e-01, 8.395391689039631e-01, 8.414173726685362e-01, 8.432542107254821e-01, 8.450507559665463e-01, 8.468077728996652e-01, 8.485262361465952e-01, 8.502069099751266e-01, 8.518506288528442e-01] +limPID.D.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +limPI.I.y=[2.5e-01, 2.648347917490785e-01, 2.793437248907814e-01, 2.935335645527695e-01, 3.074113738859043e-01, 3.209841539373645e-01, 3.342584985179366e-01, 3.472410734633364e-01, 3.599384151450494e-01, 3.723565892071595e-01, 3.84501962060119e-01, 3.963803953958113e-01, 4.079977602711207e-01, 4.193598979527058e-01, 4.304722838989572e-01, 4.413404996562728e-01, 4.519699849445077e-01, 4.62365863864955e-01, 4.725333082123843e-01, 4.824772798567049e-01, 4.922026963116993e-01, 5.017144145513708e-01, 5.110171448205825e-01, 5.201153121517313e-01, 5.290136384380102e-01, 5.377163290977478e-01, 5.462277611718898e-01, 5.545521289999338e-01, 5.626935949242997e-01, 5.706561273333302e-01, 5.7844357762517e-01, 5.860599857452123e-01, 5.935089640737523e-01, 6.007941866605983e-01, 6.079193328397474e-01, 6.148878972985005e-01, 6.21703257434822e-01, 6.283689109770939e-01, 6.348879964029885e-01, 6.412638515819924e-01, 6.474994980213683e-01, 6.535981915060304e-01, 6.595627742698355e-01, 6.653963286052201e-01, 6.711016906808966e-01, 6.766816443276022e-01, 6.821389153168573e-01, 6.874763375838584e-01, 6.926963980626114e-01, 6.978017639540424e-01, 7.027949690818787e-01, 7.076783822237548e-01, 7.124545068026762e-01, 7.171256078028178e-01, 7.216941021078125e-01, 7.261621899264453e-01, 7.305320491001064e-01, 7.348058849934973e-01, 7.389857837848666e-01, 7.430738316465465e-01, 7.470719719828374e-01, 7.509822790020536e-01, 7.548066955611739e-01, 7.585470097974096e-01, 7.622051290645097e-01, 7.657827819116673e-01, 7.692818550709694e-01, 7.72703999580809e-01, 7.760509824867914e-01, 7.793244131159823e-01, 7.825259007918748e-01, 7.856569952502227e-01, 7.887192877721296e-01, 7.917142453799036e-01, 7.946434589354581e-01, 7.975082397460938e-01, 8.003101375240484e-01, 8.030504039839153e-01, 8.057304696397266e-01, 8.08351570753951e-01, 8.109151094667852e-01, 8.134223812853699e-01, 8.158744590899536e-01, 8.182727137961237e-01, 8.206182778974773e-01, 8.229122107658846e-01, 8.251557914397522e-01, 8.273500193716818e-01, 8.294960866534324e-01, 8.315949469627308e-01, 8.336477327950753e-01, 8.356553263929984e-01, 8.376188245719883e-01, 8.395391689039631e-01, 8.414173726685362e-01, 8.432542107254821e-01, 8.450507559665463e-01, 8.468077728996652e-01, 8.485262361465952e-01, 8.502069099751266e-01, 8.518506288528442e-01] +limPID.D.u=[2.5e-01, 2.5e-01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDScale.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDScale.txt new file mode 100644 index 0000000000..6fef86583b --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDScale.txt @@ -0,0 +1,14 @@ +last-generated=2020-10-27 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "6", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+02] +pidSca.y=[1e+00, 4.789353311061859e-01, 3.822728991508484e-01, 2.069125473499298e-01, 3.256407380104065e-02, -8.96126925945282e-02, -1.420066803693771e-01, -1.338689178228378e-01, -8.905824273824692e-02, -3.38137298822403e-02, 1.184174045920372e-02, 3.781681135296822e-02, 4.341181367635727e-02, 3.41964103281498e-02, 1.814253069460389e-02, 2.417445881292224e-03, -8.448862470686436e-03, -1.296756137162447e-02, -1.205309107899666e-02, -7.901253178715706e-03, -2.886770758777857e-03, 1.20341859292239e-03, 3.488563466817141e-03, 3.933259751647711e-03, 3.058372065424919e-03, 1.590027124620974e-03, -9.014930576086044e-02, -2.367985099554062e-01, -2.615013122558593e-01, -2.001792341470721e-01, -1.014385521411896e-01, -7.719055749475956e-03, 5.506547912955284e-02, 7.932742685079575e-02, 7.155080139636993e-02, 4.538770765066147e-02, 1.508557889610529e-02, -8.934730663895607e-03, -2.180192992091179e-02, -2.366667613387108e-02, -1.787730678915977e-02, -8.857160806655884e-03, -4.166644066572189e-04, 5.155478604137897e-03, 7.229476235806942e-03, 6.432235240936279e-03, 4.016883671283722e-03, 1.270608510822058e-03, -8.77715356182307e-04, -2.005331218242645e-03, -2.140825847163796e-03, 8.873914927244186e-02, 2.351881712675095e-01, 2.602470219135284e-01, 1.995226591825485e-01, 1.013631001114838e-01, 8.041718974708961e-03, -5.458016321063008e-02, -7.888056337833398e-02, -7.126054912805557e-02, -4.528459161520004e-02, -1.513375155627728e-02, 8.803180418908596e-03, 2.165543287992477e-02, 2.355383709073067e-02, 1.781958527863026e-02, 8.852324448525906e-03, 4.481221840251237e-04, -5.110226105898619e-03, -7.18884589150548e-03, -6.406914442777634e-03, -4.009198397397995e-03, -1.276727532967925e-03, 8.645629859529436e-04, 1.991549739614129e-03, 2.1307363640517e-03, -8.870939910411835e-02, -2.351909279823303e-01, -2.602469623088837e-01, -1.995230317115784e-01, -1.013630777597427e-01, -8.040299639105797e-03, 5.458372458815575e-02, 7.888416945934296e-02, 7.126276195049286e-02, 4.528495669364929e-02, 1.513325050473213e-02, -8.804482407867908e-03, -2.165680006146431e-02, -2.355478145182133e-02, -1.781991124153137e-02, -8.851906284689903e-03, -4.466319514904171e-04, 5.111661273986101e-03, 7.189638447016478e-03, 6.406730972230434e-03, 4.00816835463047e-03, 1.275305286981165e-03, -8.658168953843415e-04, -1.99226732365787e-03, -2.130822045728564e-03] +pidNoSca.y=[1e+00, 4.789353311061859e-01, 3.822728991508484e-01, 2.069125473499298e-01, 3.256407380104065e-02, -8.96126925945282e-02, -1.420066803693771e-01, -1.338689178228378e-01, -8.905824273824692e-02, -3.38137298822403e-02, 1.184174045920372e-02, 3.781681135296822e-02, 4.341181367635727e-02, 3.41964103281498e-02, 1.814253069460389e-02, 2.417445881292224e-03, -8.448862470686436e-03, -1.296756137162447e-02, -1.205309107899666e-02, -7.901253178715706e-03, -2.886770758777857e-03, 1.20341859292239e-03, 3.488563466817141e-03, 3.933259751647711e-03, 3.058372065424919e-03, 1.590027124620974e-03, -9.014930576086044e-02, -2.367985099554062e-01, -2.615013122558593e-01, -2.001792341470721e-01, -1.014385521411896e-01, -7.719055749475956e-03, 5.506547912955284e-02, 7.932742685079575e-02, 7.155080139636993e-02, 4.538770765066147e-02, 1.508557889610529e-02, -8.934730663895607e-03, -2.180192992091179e-02, -2.366667613387108e-02, -1.787730678915977e-02, -8.857160806655884e-03, -4.166644066572189e-04, 5.155478604137897e-03, 7.229476235806942e-03, 6.432235240936279e-03, 4.016883671283722e-03, 1.270608510822058e-03, -8.77715356182307e-04, -2.005331218242645e-03, -2.140825847163796e-03, 8.873914927244186e-02, 2.351881712675095e-01, 2.602470219135284e-01, 1.995226591825485e-01, 1.013631001114838e-01, 8.041718974708961e-03, -5.458016321063008e-02, -7.888056337833398e-02, -7.126054912805557e-02, -4.528459161520004e-02, -1.513375155627728e-02, 8.803180418908596e-03, 2.165543287992477e-02, 2.355383709073067e-02, 1.781958527863026e-02, 8.852324448525906e-03, 4.481221840251237e-04, -5.110226105898619e-03, -7.18884589150548e-03, -6.406914442777634e-03, -4.009198397397995e-03, -1.276727532967925e-03, 8.645629859529436e-04, 1.991549739614129e-03, 2.1307363640517e-03, -8.870939910411835e-02, -2.351909279823303e-01, -2.602469623088837e-01, -1.995230317115784e-01, -1.013630777597427e-01, -8.040299639105797e-03, 5.458372458815575e-02, 7.888416945934296e-02, 7.126276195049286e-02, 4.528495669364929e-02, 1.513325050473213e-02, -8.804482407867908e-03, -2.165680006146431e-02, -2.355478145182133e-02, -1.781991124153137e-02, -8.851906284689903e-03, -4.466319514904171e-04, 5.111661273986101e-03, 7.189638447016478e-03, 6.406730972230434e-03, 4.00816835463047e-03, 1.275305286981165e-03, -8.658168953843415e-04, -1.99226732365787e-03, -2.130822045728564e-03] +pla1.y=[0e+00, 5.1559033203125e+02, 9.565138549804688e+02, 1.254010986328125e+03, 1.37100830078125e+03, 1.336908569335938e+03, 1.215340942382812e+03, 1.07322900390625e+03, 9.598469848632812e+02, 8.985159912109375e+02, 8.889110717773438e+02, 9.155338745117188e+02, 9.576796875e+02, 9.973937377929688e+02, 1.023802917480469e+03, 1.033819091796875e+03, 1.03029248046875e+03, 1.019064758300781e+03, 1.006182922363281e+03, 9.960396118164062e+02, 9.906620483398438e+02, 9.8994873046875e+02, 9.924576416015625e+02, 9.963055419921875e+02, 9.998812255859375e+02, 1.002224792480469e+03, 6.671682739257812e+02, 4.928116455078125e+02, 2.346250152587882e+02, -1.384116291999078e+00, -1.533397521972656e+02, -2.061290283203125e+02, -1.793009490966797e+02, -1.090006256103516e+02, -3.140669250488281e+01, 2.796784400939941e+01, 5.80350341796875e+01, 6.029745101928711e+01, 4.39409065246582e+01, 2.039728736877441e+01, -8.29462468624115e-01, -1.428817462921143e+01, -1.875493621826172e+01, -1.609680938720703e+01, -9.624416351318359e+00, -2.601985216140747e+00, 2.700508117675781e+00, 5.325768947601318e+00, 5.446922779083252e+00, 3.915814161300659e+00, 1.770267128944397e+00, 3.3592041015625e+02, 5.087093811035156e+02, 7.654321899414062e+02, 1.000479064941406e+03, 1.152078125000001e+03, 1.205006713867188e+03, 1.178601928710938e+03, 1.108780639648438e+03, 1.031561401367188e+03, 9.723833618164062e+02, 9.423389282226562e+02, 9.399805297851562e+02, 9.561929931640625e+02, 9.796039428710938e+02, 1.00074462890625e+03, 1.014172607421875e+03, 1.018653625488281e+03, 1.016035705566406e+03, 1.009607849121094e+03, 1.002619445800781e+03, 9.973338012695312e+02, 9.947091064453125e+02, 9.945777587890625e+02, 9.96094970703125e+02, 9.982282104492188e+02, 6.64072509765625e+02, 4.912832946777344e+02, 2.345622406005859e+02, -4.835880100727081e-01, -1.520836639404297e+02, -2.050157165527344e+02, -1.7860791015625e+02, -1.087823944091797e+02, -3.155963516235352e+01, 2.762020492553711e+01, 5.766434860229492e+01, 6.002176284790039e+01, 4.380791091918945e+01, 2.039565658569336e+01, -7.457870244979858e-01, -1.417414283752441e+01, -1.865499687194824e+01, -1.603548431396484e+01, -9.606104850769043e+00, -2.616883277893066e+00, 2.668593168258667e+00, 5.292293071746826e+00, 5.422306537628174e+00, 3.904057502746582e+00, 1.770305633544922e+00] +pla2.y=[0e+00, 5.1559033203125e+02, 9.565138549804688e+02, 1.254010986328125e+03, 1.37100830078125e+03, 1.336908569335938e+03, 1.215340942382812e+03, 1.07322900390625e+03, 9.598469848632812e+02, 8.985159912109375e+02, 8.889110717773438e+02, 9.155338745117188e+02, 9.576796875e+02, 9.973937377929688e+02, 1.023802917480469e+03, 1.033819091796875e+03, 1.03029248046875e+03, 1.019064758300781e+03, 1.006182922363281e+03, 9.960396118164062e+02, 9.906620483398438e+02, 9.8994873046875e+02, 9.924576416015625e+02, 9.963055419921875e+02, 9.998812255859375e+02, 1.002224792480469e+03, 6.671682739257812e+02, 4.928116455078125e+02, 2.346250152587882e+02, -1.384116291999078e+00, -1.533397521972656e+02, -2.061290283203125e+02, -1.793009490966797e+02, -1.090006256103516e+02, -3.140669250488281e+01, 2.796784400939941e+01, 5.80350341796875e+01, 6.029745101928711e+01, 4.39409065246582e+01, 2.039728736877441e+01, -8.29462468624115e-01, -1.428817462921143e+01, -1.875493621826172e+01, -1.609680938720703e+01, -9.624416351318359e+00, -2.601985216140747e+00, 2.700508117675781e+00, 5.325768947601318e+00, 5.446922779083252e+00, 3.915814161300659e+00, 1.770267128944397e+00, 3.3592041015625e+02, 5.087093811035156e+02, 7.654321899414062e+02, 1.000479064941406e+03, 1.152078125000001e+03, 1.205006713867188e+03, 1.178601928710938e+03, 1.108780639648438e+03, 1.031561401367188e+03, 9.723833618164062e+02, 9.423389282226562e+02, 9.399805297851562e+02, 9.561929931640625e+02, 9.796039428710938e+02, 1.00074462890625e+03, 1.014172607421875e+03, 1.018653625488281e+03, 1.016035705566406e+03, 1.009607849121094e+03, 1.002619445800781e+03, 9.973338012695312e+02, 9.947091064453125e+02, 9.945777587890625e+02, 9.96094970703125e+02, 9.982282104492188e+02, 6.64072509765625e+02, 4.912832946777344e+02, 2.345622406005859e+02, -4.835880100727081e-01, -1.520836639404297e+02, -2.050157165527344e+02, -1.7860791015625e+02, -1.087823944091797e+02, -3.155963516235352e+01, 2.762020492553711e+01, 5.766434860229492e+01, 6.002176284790039e+01, 4.380791091918945e+01, 2.039565658569336e+01, -7.457870244979858e-01, -1.417414283752441e+01, -1.865499687194824e+01, -1.603548431396484e+01, -9.606104850769043e+00, -2.616883277893066e+00, 2.668593168258667e+00, 5.292293071746826e+00, 5.422306537628174e+00, 3.904057502746582e+00, 1.770305633544922e+00] +pidSca.u_s=[1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithReset.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithReset.txt new file mode 100644 index 0000000000..2500bae31e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithReset.txt @@ -0,0 +1,21 @@ +last-generated=2020-10-15 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "10", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +limPIDPar.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +limPIDPar.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -8.79280626828014e-02, -1.879213720517086e-01, -2.879234433172002e-01, -3.879229068745091e-01, -4.879210591316223e-01, -5.879210591316935e-01, -6.879212379456989e-01, -7.879218339918621e-01, -8.879218935966491e-01, -9.879218339920044e-01, -1.087921953201294e+00, -1.187921833992005e+00, -1.287921833992289e+00, -1.381839551714315e+00, -1.45594322681427e+00, -1.513909863363823e+00, -1.556925159839278e+00, -1.585616002250968e+00, -1.600569596667006e+00, -1.602407693862915e+00, -1.591777546102873e+00, -1.569351328362883e+00, -1.535826306404697e+00, -1.491918371093377e+00, -1.438355445861816e+00, -1.375874216550922e+00, -1.305217539666989e+00, -1.227130373851045e+00, -1.142356955786533e+00, -1.051634311676025e+00, -9.556918394485152e-01, -8.560215711587942e-01, -7.560193657903485e-01, -6.560179352788733e-01, -5.560178756713867e-01, -4.560212433356634e-01, -3.560218989834887e-01, -2.560220777988436e-01, -1.560226142398644e-01, -5.602335557341576e-02, 4.397630915040374e-02, 1.439763873819802e-01, 2.439760744568851e-01, 3.439761936663164e-01, 4.439762532711029e-01, 5.438222035577714e-01, 6.407830737459236e-01, 7.343493729497963e-01, 8.244631636811489e-01, 9.109043478965759e-01, 9.934408832596249e-01, 1.071879412470618e+00, 1.146054725771687e+00, 1.215826088923502e+00, 1.281080842018127e+00, 1.341734941354783e+00, 1.397730094303694e+00, 1.449032450825054e+00, 1.495633440282818e+00, 1.537546157836914e+00, 1.574805769434224e+00, 1.607467470043329e+00, 1.63560635785934e+00, 1.659314849890373e+00, 1.678702116012573e+00, 1.69389201424691e+00, 1.705022113340208e+00, 1.712242354021772e+00, 1.715713856685396e+00, 1.715607643127441e+00, 1.712103266027532e+00, 1.705387337573175e+00, 1.69565250567414e+00, 1.683095877988634e+00, 1.667918920516968e+00, 1.650324415253383e+00, 1.630516965781917e+00, 1.608701868188442e+00, 1.585082437090352e+00, 1.55986225605011e+00, 1.533240541017126e+00, 1.505414312433337e+00, 1.476576145548368e+00, 1.446913485237826e+00, 1.416609287261963e+00, 1.38583910337232e+00, 1.3547729851316e+00, 1.323573172025364e+00, 1.292395115476197e+00, 1.261385917663574e+00] +limPIDPar.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -8.315523503317991e-01, -6.571659445762634e-01, -5.037250889426798e-01, -3.575196356073688e-01, -2.171710226446507e-01, -8.290482958321294e-02, 4.505741223692894e-02, 1.664286778186083e-01, 2.809155348876749e-01, 3.883358731785239e-01, 4.88552417948793e-01, 5.81452488899231e-01, 6.669358787605854e-01, 7.449573516662384e-01, 8.155255632948994e-01, 8.786920926935432e-01, 9.345236420631409e-01, 9.831281130858944e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.883176297633638e-01, 9.522520859825896e-01, 9.187181644735511e-01, 8.831523409044501e-01, 8.451948165893555e-01, 8.051964248354775e-01, 7.633561270882084e-01, 7.199461106456174e-01, 6.752906871646882e-01, 6.296642422676086e-01, 5.833237322271572e-01, 5.365244446481083e-01, 4.895150366530458e-01, 4.425296038834719e-01, 3.957895338535309e-01, 3.495044866330811e-01, 3.038718733146516e-01, 2.59076650225576e-01, 2.152896936843513e-01, 1.726691275835037e-01, 1.31359046850277e-01, 9.149040303039171e-02, 5.318083346648168e-02, 1.653424354411175e-02, -1.835806481540203e-02, -5.141770063036036e-02, -8.25795432876338e-02, -1.117895076048865e-01, -1.390072056313474e-01, -1.642016470432281e-01, -1.873551649217861e-01, -2.084596834170176e-01, -2.275169143860018e-01, -2.445394254793154e-01, -2.59547233581543e-01, -2.725703547479723e-01, -2.836458574309051e-01, -2.928184408220585e-01, -3.001396893892218e-01, -3.056672513484955e-01, -3.094646215580948e-01, -3.11600240316983e-01, -3.121470810327165e-01, -3.111819852843394e-01, -3.087852001190186e-01] +limPIDInp.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +limPIDInp.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -8.371426761435474e-02, -1.837109744530678e-01, -2.837121367451687e-01, -3.837118387216607e-01, -4.837108850479126e-01, -5.83710825443339e-01, -6.837109446526997e-01, -7.837113022801416e-01, -8.837113022804259e-01, -9.837112426757812e-01, -1.083711361885071e+00, -1.183711242675781e+00, -1.283711361821691e+00, -1.374566357692213e+00, -1.445965051651001e+00, -1.501631900515733e+00, -1.542549116532241e+00, -1.569318660992175e+00, -1.582526199408328e+00, -1.582790851593018e+00, -1.57075903976725e+00, -1.547101511069753e+00, -1.512512664396392e+00, -1.467704700205489e+00, -1.41340172290802e+00, -1.350336129189652e+00, -1.279246007977496e+00, -1.200870713033018e+00, -1.11594840275344e+00, -1.025209903717041e+00, -9.293778194664486e-01, -8.297811627353893e-01, -7.297785997424855e-01, -6.297770500214366e-01, -5.297769904136658e-01, -4.29780775310598e-01, -3.297815203652483e-01, -2.297816693781387e-01, -1.297822803250366e-01, -2.978312224149704e-02, 7.021649032827604e-02, 1.702165722849829e-01, 2.702162742611911e-01, 3.702163636684421e-01, 4.702164530754089e-01, 5.693567724828519e-01, 6.650879979284234e-01, 7.575094154946715e-01, 8.464483380428528e-01, 9.316664934158325e-01, 1.012947992166304e+00, 1.090102814874307e+00, 1.162969215168103e+00, 1.231416281077994e+00, 1.295339226722717e+00, 1.354660207304443e+00, 1.409327367516065e+00, 1.459313181665179e+00, 1.504614550180082e+00, 1.545250058174133e+00, 1.581259639986827e+00, 1.612703020549413e+00, 1.639659714348636e+00, 1.662225941814408e+00, 1.680514216423035e+00, 1.694651376445346e+00, 1.704777851649411e+00, 1.711045732950188e+00, 1.713618277421118e+00, 1.712668061256409e+00, 1.708375832878995e+00, 1.700929147234723e+00, 1.690521381464301e+00, 1.677349988017718e+00, 1.661616206169128e+00, 1.643522692636159e+00, 1.623273570152632e+00, 1.601073308814556e+00, 1.5771242622085e+00, 1.551628947257996e+00, 1.524784788459216e+00, 1.496787612716273e+00, 1.467827972029084e+00, 1.43809152080111e+00, 1.407759189605713e+00, 1.377004502800933e+00, 1.345995009249002e+00, 1.314890801629196e+00, 1.283844829765231e+00, 1.253001809120178e+00] +limPIDInp.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99999973254151e-01, -8.000264236424139e-01, -6.328510046005249e-01, -4.818284304294963e-01, -3.374447009943612e-01, -1.988495689497846e-01, -6.630807851962334e-02, 5.993176251649857e-02, 1.795891284477222e-01, 2.92391694779745e-01, 3.981587476615014e-01, 4.967532139385454e-01, 5.880676507949829e-01, 6.720146102949381e-01, 7.485565192309829e-01, 8.177044104242848e-01, 8.795092736464234e-01, 9.340423941612244e-01, 9.814127498790235e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.741310147169567e-01, 9.409131376596037e-01, 9.072059457074095e-01, 8.711721057802945e-01, 8.328462243080139e-01, 7.924685678720118e-01, 7.503446115679606e-01, 7.067650801590964e-01, 6.620021893223066e-01, 6.163281202316284e-01, 5.70007339385441e-01, 5.232926905753459e-01, 4.764259159503862e-01, 4.29636850790459e-01, 3.831445872783661e-01, 3.371553880206348e-01, 2.91862819587753e-01, 2.474477981771719e-01, 2.04077240028109e-01, 1.619054675102234e-01, 1.210730067165422e-01, 8.170703173186773e-02, 4.392154890954791e-02, 7.816802021325057e-03, -2.651932835578918e-02, -5.901181511445989e-02, -8.959873416525865e-02, -1.182291870833367e-01, -1.448656396424864e-01, -1.694801449775696e-01, -1.920575563516094e-01, -2.125924299900059e-01, -2.310888578964286e-01, -2.475616024186451e-01, -2.620328068733215e-01, -2.745342999565994e-01, -2.851049483902419e-01, -2.93790980921989e-01, -3.00645433065888e-01, -3.0572709441185e-01, -3.091005877726137e-01, -3.10835273568125e-01, -3.110048481237108e-01, -3.096868014804011e-01, -3.06961864233017e-01] +limPIPar.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +limPIPar.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.233544684060405e-02, 1.087012239084785e-01, 1.681779168646253e-01, 2.299038321298853e-01, 2.930780947208405e-01, 3.569621589180014e-01, 4.20881062135091e-01, 4.842238129377911e-01, 5.464428213420117e-01, 6.070534586906433e-01, 6.656325408886753e-01, 7.218162750490399e-01, 7.752985604982948e-01, 8.258277899773936e-01, 8.732047080993652e-01, 9.172787471222633e-01, 9.579450300762851e-01, 9.951413441182685e-01, 1.028844087308555e+00, 1.059065341949463e+00, 1.085849189520695e+00, 1.10926782031304e+00, 1.129418977852546e+00, 1.146421894287514e+00, 1.160414576530457e+00, 1.171550402158582e+00, 1.179995414061235e+00, 1.185925247431159e+00, 1.189523098268862e+00, 1.190976619720459e+00, 1.190475819979041e+00, 1.18821143486229e+00, 1.184373029562502e+00, 1.179146891343071e+00, 1.172714591026306e+00, 1.16525220107507e+00, 1.156928760969079e+00, 1.147905248195928e+00, 1.138334045176416e+00, 1.128358244895935e+00, 1.118111362119171e+00, 1.107716659673296e+00, 1.09728684028416e+00, 1.086924681961259e+00, 1.076722025871277e+00, 1.066760769096268e+00, 1.057112675795662e+00, 1.047839658946958e+00, 1.038994201339286e+00, 1.030619740486145e+00, 1.02275108570813e+00, 1.015414939865637e+00, 1.00863040744913e+00, 1.00240934466729e+00, 9.96757447719574e-01, 9.916742994843118e-01, 9.871540585772814e-01, 9.831861329084927e-01, 9.797556431005917e-01, 9.768441319465637e-01, 9.7443002259598e-01, 9.724888769742362e-01, 9.709939981897857e-01, 9.699171790282443e-01, 9.692286849021912e-01, 9.688981770235613e-01, 9.688947800243571e-01, 9.691874973224223e-01, 9.697453373369734e-01, 9.705377817153931e-01, 9.715349633332634e-01, 9.72707929641105e-01, 9.740285847220238e-01, 9.754705486419477e-01, 9.770081639289856e-01, 9.786181387568439e-01, 9.802780779466905e-01, 9.819674459522106e-01, 9.836677377650966e-01, 9.853613376617432e-01, 9.87033182011973e-01, 9.886692197017489e-01, 9.902573198006168e-01, 9.917870220771028e-01, 9.93249237537384e-01, 9.946365304730354e-01, 9.959427142248976e-01, 9.971632934852386e-01, 9.982946556157427e-01, 9.993345737457275e-01] +limPIPar.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.450853011109351e-01, 5.806973424172009e-01, 6.073990567275639e-01, 6.257843407786541e-01, 6.36469841003418e-01, 6.400867698330044e-01, 6.372733141098353e-01, 6.286682430263679e-01, 6.149043997325625e-01, 5.966036915779114e-01, 5.743717915239932e-01, 5.487942823310853e-01, 5.204326368357647e-01, 4.898215235591296e-01, 4.574660062789917e-01, 4.238397749025439e-01, 3.893835709992872e-01, 3.545038533367642e-01, 3.195727204021954e-01, 2.849270403385162e-01, 2.508691527039111e-01, 2.176670439487871e-01, 1.855548172632807e-01, 1.547342529401153e-01, 1.253753006458282e-01, 9.761810732392881e-02, 7.157421575139448e-02, 4.732814072890985e-02, 2.493944778549746e-02, 4.444160964339972e-03, -1.414309987942256e-02, -3.082707882610681e-02, -4.563018605784491e-02, -5.859078790173513e-02, -6.976092606782913e-02, -7.920476854091935e-02, -8.699680678719619e-02, -9.322011144488272e-02, -9.796482671420013e-02, -1.013264805078506e-01, -1.034047318487777e-01, -1.043019969759631e-01, -1.041221629822797e-01, -1.029694243831414e-01, -1.009473279118538e-01, -9.81578945343002e-02, -9.470059740009892e-02, -9.067187520936021e-02, -8.616438209051297e-02, -8.126655220985413e-02, -7.606210049074007e-02, -7.062969790895993e-02, -6.504270018519835e-02, -5.936891383472603e-02, -5.367056280374527e-02, -4.800416737856335e-02, -4.242057791755788e-02, -3.696503401531982e-02, -3.167716910807649e-02, -2.65913438051939e-02, -2.173671050203403e-02, -1.71374780245221e-02, -1.281300058904001e-02, -8.778225639892051e-03, -5.043917335569859e-03, -1.616964867765253e-03, 1.499274978072234e-03, 4.304715905359772e-03, 6.802266060792552e-03, 8.997461758553982e-03, 1.089819491649592e-02, 1.251445056003914e-02, 1.385791922527596e-02, 1.49418020875133e-02, 1.578055508434772e-02, 1.638948159935722e-02, 1.67847187833652e-02, 1.698283827637153e-02, 1.700063204471304e-02, 1.685522124171257e-02, 1.656331812880113e-02, 1.614183093629522e-02, 1.560693251022519e-02, 1.497454959737543e-02, 1.42600042745471e-02, 1.347781373216321e-02, 1.264198146213004e-02, 1.176541654616715e-02, 1.086048804621077e-02, 9.938377887010574e-03] +limPIInp.u_s=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +limPIInp.u_m=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 7.608645812209094e-02, 1.537172124242489e-01, 2.320072577347836e-01, 3.101492411436375e-01, 3.874143958091736e-01, 4.631514370483004e-01, 5.367856871282899e-01, 6.078172060369745e-01, 6.758180418060683e-01, 7.404302358627319e-01, 8.013619147463339e-01, 8.583836887297627e-01, 9.113258959954695e-01, 9.600729493613611e-01, 1.004560828208923e+00, 1.044771826412477e+00, 1.08073042189106e+00, 1.112499489448125e+00, 1.140175675327759e+00, 1.163885235786438e+00, 1.183780329400195e+00, 1.200034730509394e+00, 1.21284032384205e+00, 1.222403637582935e+00, 1.228942155838013e+00, 1.232681514893786e+00, 1.233852624797976e+00, 1.232688902634492e+00, 1.229423407603012e+00, 1.224287390708923e+00, 1.217507355052242e+00, 1.209304315639185e+00, 1.199891824429887e+00, 1.189474473735582e+00, 1.178246736526489e+00, 1.166392672393033e+00, 1.154084539396968e+00, 1.141482735028626e+00, 1.128734720013893e+00, 1.115975856781006e+00, 1.103328335255912e+00, 1.090902066707691e+00, 1.078794025344245e+00, 1.067088972592511e+00, 1.055859804153442e+00, 1.045168270734611e+00, 1.035064559493531e+00, 1.025589006836088e+00, 1.016771801517401e+00, 1.008634209632874e+00, 1.001188986752134e+00, 9.944409011262563e-01, 9.883878937274736e-01, 9.830212641668414e-01, 9.783268570899963e-01, 9.74285301056167e-01, 9.708728732172121e-01, 9.680621673145471e-01, 9.658225197974294e-01, 9.641210436820984e-01, 9.629227510335446e-01, 9.621912232051946e-01, 9.6188867118849e-01, 9.619773028032907e-01, 9.62418794631958e-01, 9.631755360885004e-01, 9.642103337017737e-01, 9.654869411189086e-01, 9.669703230306922e-01, 9.686265587806702e-01, 9.704235721744019e-01, 9.723306931693113e-01, 9.743193349554273e-01, 9.763628919229648e-01, 9.784364104270935e-01, 9.805176178769667e-01, 9.825860301058597e-01, 9.846230110730149e-01, 9.866125658202803e-01, 9.8853999376297e-01, 9.903931548287117e-01, 9.921613368287969e-01, 9.938358633323364e-01, 9.954097328592115e-01, 9.968774318695068e-01, 9.982352206685629e-01, 9.994804881619698e-01, 1.000612256839806e+00, 1.001630548289003e+00, 1.002536416053772e+00] +limPIInp.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 7.701259812574753e-01, 7.810140812976732e-01, 7.83439873548849e-01, 7.781856633381188e-01, 7.660322189331055e-01, 7.477515984889085e-01, 7.24100780782858e-01, 6.958155485389337e-01, 6.636060990661925e-01, 6.281519532203674e-01, 5.900989991751754e-01, 5.500564769261771e-01, 5.08594314061478e-01, 4.662419963726553e-01, 4.234867691993713e-01, 3.807735633781033e-01, 3.385046324739895e-01, 2.970394297412139e-01, 2.566959045654549e-01, 2.177507430315018e-01, 1.80441255581594e-01, 1.449666188712954e-01, 1.114893774536151e-01, 8.013792262172278e-02, 5.100790038704872e-02, 2.41649485540805e-02, -3.532763978867821e-04, -2.253497637885324e-02, -4.239149448716678e-02, -5.995539948344231e-02, -7.527784103722571e-02, -8.842638910599764e-02, -9.948285205799845e-02, -1.085412795820342e-01, -1.157056391239166e-01, -1.210880544684909e-01, -1.248069085947258e-01, -1.269851594598463e-01, -1.277486977785001e-01, -1.272248178720474e-01, -1.255410738478538e-01, -1.228238654114844e-01, -1.191974283306721e-01, -1.147827327385727e-01, -1.096967682242393e-01, -1.040518227264132e-01, -9.795470819773575e-02, -9.150645644051054e-02, -8.480173251453403e-02, -7.792872190475464e-02, -7.096879263762979e-02, -6.399639860473072e-02, -5.707904518672367e-02, -5.027721347664993e-02, -4.364462569355965e-02, -3.722824303551557e-02, -3.106850360716937e-02, -2.519957326977693e-02, -1.964952754479794e-02, -1.444084011018276e-02, -9.590590614275276e-03, -5.110859207831562e-03, -1.008840011699738e-03, 2.71242307066287e-03, 6.053843069821596e-03, 9.01980307845811e-03, 1.161779731262847e-02, 1.385810291294451e-02, 1.575344260500007e-02, 1.731861941516399e-02, 1.857016735740225e-02, 1.952607334722362e-02, 2.020540724103641e-02, 2.062799142399704e-02, 2.081440389156342e-02, 2.078519244931444e-02, 2.056123811830473e-02, 2.016320912898916e-02, 1.961127985084094e-02, 1.892556436359882e-02, 1.812502876724874e-02, 1.722845813423258e-02, 1.625332986295078e-02, 1.521644893127395e-02, 1.413359586149454e-02, 1.301934160404057e-02, 1.188740662429479e-02, 1.075008262682264e-02, 9.618862904750352e-03, 8.50379467010498e-03] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithResetScale.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithResetScale.txt new file mode 100644 index 0000000000..da1812e4b7 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_PIDWithResetScale.txt @@ -0,0 +1,15 @@ +last-generated=2020-10-27 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "6", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+02] +pidSca.y=[1e+00, 4.789353311061859e-01, 3.822728991508484e-01, 2.069125473499298e-01, 3.256407380104065e-02, -8.96126925945282e-02, -1.420066803693771e-01, -1.338689178228378e-01, -8.905824273824692e-02, -3.38137298822403e-02, 1.184174045920372e-02, 3.781681135296822e-02, 4.341181367635727e-02, 3.41964103281498e-02, 1.814253069460389e-02, 2.417445881292224e-03, -8.449100889265537e-03, -1.296858675777912e-02, -1.205248478800058e-02, -7.89909902960062e-03, -2.884963992983103e-03, 1.204618019983172e-03, 3.488857299089432e-03, 3.932801075279713e-03, 3.057450754567981e-03, 1.588993705809116e-03, -9.014783799648285e-02, -2.367986738681793e-01, -2.615011334419249e-01, -2.001790106296542e-01, -1.014383360743523e-01, 4.137855721637607e-04, 5.458060279488564e-02, 7.342061400413513e-02, 6.388809531927109e-02, 3.885588049888611e-02, 1.121398527175188e-02, -9.944651275873184e-03, -2.066577598452568e-02, -2.148099988698959e-02, -1.565990038216114e-02, -7.274489849805832e-03, 2.88546405499801e-04, 5.085897631943226e-03, 6.680207792669535e-03, 5.735563579946756e-03, 3.430895507335663e-03, 9.292137110605836e-04, -9.603649959899485e-04, -1.896467409096658e-03, -1.940432237461209e-03, 8.891788125038147e-02, 2.353428900241852e-01, 2.603276669979095e-01, 1.995340436697006e-01, 1.013261377811425e-01, 7.983366958796428e-03, -5.46367987990376e-02, -7.89192467927932e-02, -7.127602398395538e-02, -4.528040811419487e-02, -1.146174967288971e-02, 8.608768694102764e-03, 1.903318054974079e-02, 2.014057524502277e-02, 1.490404549986124e-02, 7.11924908682704e-03, -9.016035619424656e-06, -4.608259536325932e-03, -6.215888541191816e-03, -5.417254287749529e-03, -3.301070304587483e-03, -9.595282026566565e-04, 8.35668935906142e-04, 1.747739035636187e-03, 1.82018184568733e-03, -8.898844569921494e-02, -2.353599071502686e-01, -2.603070139884949e-01, -1.994939297437668e-01, -1.01285457611084e-01, -7.955091074109077e-03, 5.464806035161018e-02, 7.891583442687988e-02, 7.126430422067642e-02, 4.526663944125175e-02, 1.510731875896454e-02, -8.827473036944866e-03, -2.167111076414585e-02, -2.355927787721157e-02, -1.781675405800343e-02, -7.416092790663242e-03, -5.240460741333663e-04, 4.080183804035187e-03, 5.846962798386812e-03, 5.259867291897535e-03, 3.32660460844636e-03, 1.095537794753909e-03, -6.685389671474695e-04, -1.609862665645778e-03, -1.741873566061258e-03] +pidNoSca.y=[1e+00, 4.789353311061859e-01, 3.822728991508484e-01, 2.069125473499298e-01, 3.256407380104065e-02, -8.96126925945282e-02, -1.420066803693771e-01, -1.338689178228378e-01, -8.905824273824692e-02, -3.38137298822403e-02, 1.184174045920372e-02, 3.781681135296822e-02, 4.341181367635727e-02, 3.41964103281498e-02, 1.814253069460389e-02, 2.417445881292224e-03, -8.449100889265537e-03, -1.296858675777912e-02, -1.205248478800058e-02, -7.89909902960062e-03, -2.884963992983103e-03, 1.204618019983172e-03, 3.488857299089432e-03, 3.932801075279713e-03, 3.057450754567981e-03, 1.588993705809116e-03, -9.014783799648285e-02, -2.367986738681793e-01, -2.615011334419249e-01, -2.001790106296542e-01, -1.014383360743523e-01, 4.137855721637607e-04, 5.458060279488564e-02, 7.342061400413513e-02, 6.388809531927109e-02, 3.885588049888611e-02, 1.121398527175188e-02, -9.944651275873184e-03, -2.066577598452568e-02, -2.148099988698959e-02, -1.565990038216114e-02, -7.274489849805832e-03, 2.88546405499801e-04, 5.085897631943226e-03, 6.680207792669535e-03, 5.735563579946756e-03, 3.430895507335663e-03, 9.292137110605836e-04, -9.603649959899485e-04, -1.896467409096658e-03, -1.940432237461209e-03, 8.891788125038147e-02, 2.353428900241852e-01, 2.603276669979095e-01, 1.995340436697006e-01, 1.013261377811425e-01, 7.983366958796428e-03, -5.46367987990376e-02, -7.89192467927932e-02, -7.127602398395538e-02, -4.528040811419487e-02, -1.146174967288971e-02, 8.608768694102764e-03, 1.903318054974079e-02, 2.014057524502277e-02, 1.490404549986124e-02, 7.11924908682704e-03, -9.016035619424656e-06, -4.608259536325932e-03, -6.215888541191816e-03, -5.417254287749529e-03, -3.301070304587483e-03, -9.595282026566565e-04, 8.35668935906142e-04, 1.747739035636187e-03, 1.82018184568733e-03, -8.898844569921494e-02, -2.353599071502686e-01, -2.603070139884949e-01, -1.994939297437668e-01, -1.01285457611084e-01, -7.955091074109077e-03, 5.464806035161018e-02, 7.891583442687988e-02, 7.126430422067642e-02, 4.526663944125175e-02, 1.510731875896454e-02, -8.827473036944866e-03, -2.167111076414585e-02, -2.355927787721157e-02, -1.781675405800343e-02, -7.416092790663242e-03, -5.240460741333663e-04, 4.080183804035187e-03, 5.846962798386812e-03, 5.259867291897535e-03, 3.32660460844636e-03, 1.095537794753909e-03, -6.685389671474695e-04, -1.609862665645778e-03, -1.741873566061258e-03] +pla1.y=[0e+00, 5.1559033203125e+02, 9.565138549804688e+02, 1.254010986328125e+03, 1.37100830078125e+03, 1.336908569335938e+03, 1.215340942382812e+03, 1.07322900390625e+03, 9.598469848632812e+02, 8.985159912109375e+02, 8.889110717773438e+02, 9.155338745117188e+02, 9.576796875e+02, 9.973937377929688e+02, 1.023802917480469e+03, 1.033819091796875e+03, 1.030292602539062e+03, 1.019063049316406e+03, 1.006180297851562e+03, 9.960380859375e+02, 9.90662109375e+02, 9.899501342773438e+02, 9.924597778320312e+02, 9.963078002929688e+02, 9.998829345703125e+02, 1.002225646972656e+03, 6.671683349609375e+02, 4.92811279296875e+02, 2.346244201660147e+02, -1.384420633315294e+00, -1.533398132324219e+02, -1.899775238037109e+02, -1.595258483886719e+02, -9.272840881347656e+01, -2.22052001953125e+01, 2.988444328308105e+01, 5.468190383911133e+01, 5.453292083740234e+01, 3.832336044311523e+01, 1.653451728820801e+01, -2.417987108230591e+00, -1.393906307220459e+01, -1.725805854797363e+01, -1.430122852325439e+01, -8.16649341583252e+00, -1.792871713638306e+00, 2.851693868637085e+00, 5.007420063018799e+00, 4.919456481933594e+00, 3.409096240997314e+00, 1.426660895347595e+00, 3.357417297363281e+02, 5.087078857421875e+02, 7.655446166992188e+02, 1.000633850097656e+03, 1.152218017578126e+03, 1.2051005859375e+03, 1.17863623046875e+03, 1.10876611328125e+03, 1.03151953125e+03, 9.723362426757812e+02, 9.495113525390625e+02, 9.48788818359375e+02, 9.634554443359375e+02, 9.837218017578125e+02, 1.001614624023438e+03, 1.012687438964844e+03, 1.01608642578125e+03, 1.013528076171875e+03, 1.00787939453125e+03, 1.001904541015625e+03, 9.974844970703125e+02, 9.953741455078125e+02, 9.953784790039062e+02, 9.967467041015625e+02, 9.9859130859375e+02, 6.642059936523438e+02, 4.911957092285156e+02, 2.34359375e+02, -7.000811696052551e-01, -1.522427062988281e+02, -2.050886383056641e+02, -1.786044921875e+02, -1.087309417724609e+02, -3.149297904968262e+01, 2.767750358581543e+01, 5.769866561889648e+01, 6.003094482421875e+01, 4.379818344116211e+01, 2.037660789489746e+01, -7.652122378349304e-01, -1.135125350952148e+01, -1.518834590911865e+01, -1.317745399475098e+01, -7.985503673553467e+00, -2.273990392684937e+00, 2.085249662399292e+00, 4.283353328704834e+00, 4.43674373626709e+00, 3.224758863449097e+00, 1.489430665969849e+00] +pla2.y=[0e+00, 5.1559033203125e+02, 9.565138549804688e+02, 1.254010986328125e+03, 1.37100830078125e+03, 1.336908569335938e+03, 1.215340942382812e+03, 1.07322900390625e+03, 9.598469848632812e+02, 8.985159912109375e+02, 8.889110717773438e+02, 9.155338745117188e+02, 9.576796875e+02, 9.973937377929688e+02, 1.023802917480469e+03, 1.033819091796875e+03, 1.030292602539062e+03, 1.019063049316406e+03, 1.006180297851562e+03, 9.960380859375e+02, 9.90662109375e+02, 9.899501342773438e+02, 9.924597778320312e+02, 9.963078002929688e+02, 9.998829345703125e+02, 1.002225646972656e+03, 6.671683349609375e+02, 4.92811279296875e+02, 2.346244201660147e+02, -1.384420633315294e+00, -1.533398132324219e+02, -1.899775238037109e+02, -1.595258483886719e+02, -9.272840881347656e+01, -2.22052001953125e+01, 2.988444328308105e+01, 5.468190383911133e+01, 5.453292083740234e+01, 3.832336044311523e+01, 1.653451728820801e+01, -2.417987108230591e+00, -1.393906307220459e+01, -1.725805854797363e+01, -1.430122852325439e+01, -8.16649341583252e+00, -1.792871713638306e+00, 2.851693868637085e+00, 5.007420063018799e+00, 4.919456481933594e+00, 3.409096240997314e+00, 1.426660895347595e+00, 3.357417297363281e+02, 5.087078857421875e+02, 7.655446166992188e+02, 1.000633850097656e+03, 1.152218017578126e+03, 1.2051005859375e+03, 1.17863623046875e+03, 1.10876611328125e+03, 1.03151953125e+03, 9.723362426757812e+02, 9.495113525390625e+02, 9.48788818359375e+02, 9.634554443359375e+02, 9.837218017578125e+02, 1.001614624023438e+03, 1.012687438964844e+03, 1.01608642578125e+03, 1.013528076171875e+03, 1.00787939453125e+03, 1.001904541015625e+03, 9.974844970703125e+02, 9.953741455078125e+02, 9.953784790039062e+02, 9.967467041015625e+02, 9.9859130859375e+02, 6.642059936523438e+02, 4.911957092285156e+02, 2.34359375e+02, -7.000811696052551e-01, -1.522427062988281e+02, -2.050886383056641e+02, -1.786044921875e+02, -1.087309417724609e+02, -3.149297904968262e+01, 2.767750358581543e+01, 5.769866561889648e+01, 6.003094482421875e+01, 4.379818344116211e+01, 2.037660789489746e+01, -7.652122378349304e-01, -1.135125350952148e+01, -1.518834590911865e+01, -1.317745399475098e+01, -7.985503673553467e+00, -2.273990392684937e+00, 2.085249662399292e+00, 4.283353328704834e+00, 4.43674373626709e+00, 3.224758863449097e+00, 1.489430665969849e+00] +pidSca.u_s=[1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 1e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +pidSca.trigger=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Ramp.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Ramp.txt new file mode 100644 index 0000000000..0eb29a79ba --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Ramp.txt @@ -0,0 +1,19 @@ +last-generated=2023-03-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "4", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+01] +ramUp.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +ramUp.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.000004656618207e-03, 9.999997392294135e-03, 1.500000204891456e-02, 1.999999478458825e-02, 2.500000037252903e-02, 3.000000409782466e-02, 3.499999776482761e-02, 4.000000149012324e-02, 4.499999701975355e-02, 5.000000074505806e-02, 5.500000447036257e-02, 5.999999627471149e-02, 6.500000000000712e-02, 6.999999552963745e-02, 7.500000298023224e-02, 8.000000298024643e-02, 8.499999850987679e-02, 9.000000596045381e-02, 9.499999403952133e-02, 1.000000014901161e-01, 1.050000014901303e-01, 1.100000089407251e-01, 1.14999992549391e-01, 1.199999925494407e-01, 1.25e-01, 1.300000000000142e-01, 1.350000149011896e-01, 1.399999910592749e-01, 1.449999910592891e-01, 1.500000059604645e-01, 1.550000059604787e-01, 1.600000059604929e-01, 1.649999970197394e-01, 1.699999970197536e-01, 1.749999970197678e-01, 1.800000119208721e-01, 1.850000119209573e-01, 1.899999880790426e-01, 1.949999880791279e-01, 2.000000029802322e-01, 2.050000029802464e-01, 2.100000029802607e-01, 2.149999940395071e-01, 2.199999940395213e-01, 2.249999940395355e-01, 2.30000008940711e-01, 2.350000089407251e-01, 2.399999850988104e-01, 2.449999999999858e-01, 2.5e-01, 2.550000000000853e-01, 2.600000000001705e-01, 2.649999761582558e-01, 2.700000059603792e-01, 2.750000059604645e-01, 2.800000059604076e-01, 2.85000005960635e-01, 2.899999821187203e-01, 2.949999821186634e-01, 3.00000011920929e-01, 3.049999880791848e-01, 3.100000119205878e-01, 3.14999988079412e-01, 3.200000119208153e-01, 3.24999988079071e-01, 3.299999940396492e-01, 3.350000178810523e-01, 3.399999940395924e-01, 3.450000178807113e-01, 3.499999940395355e-01, 3.549999701983597e-01, 3.600000238415169e-01, 3.650000000000569e-01, 3.700000238411758e-01, 3.75e-01, 3.799999761588242e-01, 3.849999999999431e-01, 3.899999761584832e-01, 3.950000298016403e-01, 4.000000059604645e-01] +ramUp1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000931323641e-02, 1.999999478458827e-02, 3.000000409782912e-02, 3.99999895691765e-02, 5.000000074505806e-02, 6.000000819564932e-02, 6.999999552965522e-02, 8.000000298024648e-02, 8.999999403950709e-02, 1.000000014901161e-01, 1.100000089407251e-01, 1.19999992549423e-01, 1.300000000000142e-01, 1.399999910592749e-01, 1.500000059604645e-01, 1.600000059604929e-01, 1.699999970197536e-01, 1.800000119209076e-01, 1.899999880790427e-01, 2.000000029802322e-01, 2.100000029802606e-01, 2.200000178814503e-01, 2.299999850987819e-01, 2.399999850988815e-01, 2.5e-01, 2.600000000000285e-01, 2.700000298023791e-01, 2.799999821185497e-01, 2.899999821185782e-01, 3.00000011920929e-01, 3.100000119209573e-01, 3.200000119209858e-01, 3.299999940394788e-01, 3.399999940395071e-01, 3.499999940395355e-01, 3.600000238417443e-01, 3.700000238419147e-01, 3.799999761580852e-01, 3.899999761582557e-01, 4.000000059604645e-01, 4.100000059604929e-01, 4.200000059605213e-01, 4.299999880790142e-01, 4.399999880790427e-01, 4.49999988079071e-01, 4.600000178814219e-01, 4.700000178814503e-01, 4.799999701976209e-01, 4.899999999999715e-01, 5e-01, 5.100000000001705e-01, 5.20000000000341e-01, 5.299999523165115e-01, 5.400000119207584e-01, 5.50000011920929e-01, 5.600000119208153e-01, 5.7000001192127e-01, 5.799999642374406e-01, 5.899999642373268e-01, 6.000000238418579e-01, 6.099999761583697e-01, 6.200000238411757e-01, 6.299999761588241e-01, 6.400000238416306e-01, 6.499999761581421e-01, 6.599999880792984e-01, 6.700000357621047e-01, 6.799999880791848e-01, 6.900000357614227e-01, 6.99999988079071e-01, 7.099999403967194e-01, 7.200000476830338e-01, 7.300000000001138e-01, 7.400000476823515e-01, 7.5e-01, 7.599999523176484e-01, 7.699999999998862e-01, 7.799999523169664e-01, 7.900000596032806e-01, 8.00000011920929e-01] +ramUp.active=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +ramUpDow.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +ramUpDow.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.800000190734863e-01, 9.599999594687848e-01, 9.399999594687278e-01, 9.200000548363869e-01, 8.999999952316852e-01, 8.799999952316284e-01, 8.599999952315714e-01, 8.399999356274386e-01, 8.20000030994529e-01, 8.00000030994472e-01, 7.799999713897705e-01, 7.599999713897138e-01, 7.399999713896568e-01, 7.200000667567472e-01, 7.000000071526141e-01, 6.800000071525574e-01, 6.600000071525004e-01, 6.399999475477991e-01, 6.20000042915458e-01, 6.00000042915117e-01, 5.799999833106995e-01, 5.599999833106427e-01, 5.399999833105857e-01, 5.200000190736001e-01, 5.000000190735431e-01, 4.799999892711639e-01, 4.59999989271107e-01, 4.399999594687278e-01, 4.200000250340644e-01, 4.000000250340078e-01, 3.799999952316284e-01, 3.599999952315717e-01, 3.399999654291925e-01, 3.20000030994529e-01, 3.000000309943299e-01, 2.800000011920929e-01, 2.599999713898559e-01, 2.399999564886377e-01, 2.200000369549933e-01, 2.000000220537043e-01, 1.800000071525574e-01, 1.600000727160747e-01, 1.399999624500118e-01, 1.20000035463897e-01, 9.999992519790442e-02, 7.999999821186066e-02, 6.000007495117825e-02, 3.999996095982466e-02, 2.000003769907083e-02, 1.654991040090673e-05, -1.337800787574832e-14, -1.152299585677677e-14, -9.667965300336471e-15, -7.812953281364924e-15, -5.957923571949559e-15, -4.102911129469583e-15, -2.247898686985601e-15, -3.928687922851386e-16, -3.674245277820885e-18, -3.464357956574596e-18, -3.25447243012328e-18] +ramUpDow.active=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +ramUpDow1.u=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999952316238438e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +ramUpDow1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.000001862647283e-02, 3.999998956917654e-02, 6.000000819565825e-02, 7.999997913835308e-02, 1.000000014901161e-01, 1.200000163912986e-01, 1.399999910593104e-01, 1.600000059604929e-01, 1.799999880790143e-01, 2.000000029802322e-01, 2.200000178814502e-01, 2.400000327826683e-01, 2.599999523164547e-01, 2.799999821185498e-01, 3.00000011920929e-01, 3.200000119209859e-01, 3.400000417233649e-01, 3.599999761580284e-01, 3.799999761580853e-01, 4.000000059604645e-01, 4.200000059605212e-01, 4.400000357629006e-01, 4.599999701975641e-01, 4.79999970197763e-01, 5e-01, 5.20000000000057e-01, 5.400000596047583e-01, 5.599999642370994e-01, 5.799999642371562e-01, 6.000000238418579e-01, 6.200000238419147e-01, 6.400000238419716e-01, 6.599999880789573e-01, 6.799999880790143e-01, 6.99999988079071e-01, 7.199999809262292e-01, 6.699999213218688e-01, 6.200001001358029e-01, 5.700000405311587e-01, 5.199999809265137e-01, 4.699999511241915e-01, 4.199998915195469e-01, 3.700001001358033e-01, 3.200000405313004e-01, 2.700000107288361e-01, 2.199999511241204e-01, 1.699999064205655e-01, 1.200000926852933e-01, 7.000004798177439e-02, 1.999999955296516e-02, 3.456860272040785e-12, 8.392204344646765e-15, 3.564259052427321e-15, 8.406577137190336e-18, 3.669769416798644e-18, 7.784740607393769e-21, 3.532305444331691e-22, 3.734793079691984e-24, 4.505978274761481e-37, -0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -0e+00] +ramUpDow1.active=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Round.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Round.txt new file mode 100644 index 0000000000..6cdc7c5e33 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Round.txt @@ -0,0 +1,14 @@ +last-generated=2017-09-15 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +round1.u=[-3.5e+00, -3.430000065192561e+00, -3.359999891966595e+00, -3.289999957159187e+00, -3.22000002235177e+00, -3.150000100582814e+00, -3.079999914318365e+00, -3.009999992549414e+00, -2.940000044703563e+00, -2.869999910593299e+00, -2.79999996274703e+00, -2.730000014901188e+00, -2.660000067055026e+00, -2.589999880790923e+00, -2.519999985098812e+00, -2.450000089406701e+00, -2.380000089406701e+00, -2.309999955296437e+00, -2.240000059604325e+00, -2.170000059604467e+00, -2.099999925494416e+00, -2.029999925494487e+00, -1.960000029802305e+00, -1.890000014901223e+00, -1.820000014901081e+00, -1.75e+00, -1.679999880791137e+00, -1.610000089406487e+00, -1.539999970197695e+00, -1.469999970197553e+00, -1.400000059604823e+00, -1.330000059604538e+00, -1.259999940395675e+00, -1.190000149011026e+00, -1.120000029802162e+00, -1.049999910593299e+00, -9.800001192090765e-01, -9.100000596045738e-01, -8.399999403954262e-01, -7.699998807909235e-01, -7.000000298022334e-01, -6.29999970197731e-01, -5.599999105932283e-01, -4.900000596044956e-01, -4.199999701977131e-01, -3.499999105932104e-01, -2.800000596045203e-01, -2.099999850988568e-01, -1.39999925494354e-01, -7.000006705508333e-02, 0e+00, 7.000006705408858e-02, 1.400001341081772e-01, 2.100001937118983e-01, 2.799998509909462e-01, 3.499999105944542e-01, 4.199999701974648e-01, 4.900000596034507e-01, 5.600001192072998e-01, 6.300001788108077e-01, 6.999998211889077e-01, 7.699998807924157e-01, 8.399999403959236e-01, 9.100000596040764e-01, 9.800001192075843e-01, 1.050000119207158e+00, 1.119999821188411e+00, 1.189999940396848e+00, 1.259999940396421e+00, 1.330000059604787e+00, 1.400000059603579e+00, 1.470000178810737e+00, 1.539999761585684e+00, 1.609999880792416e+00, 1.679999880792131e+00, 1.75e+00, 1.820000119207869e+00, 1.890000119207584e+00, 1.960000238414316e+00, 2.029999821189263e+00, 2.099999821187842e+00, 2.170000059604219e+00, 2.240000059603579e+00, 2.310000059602157e+00, 2.380000298019316e+00, 2.449999880794263e+00, 2.519999880792842e+00, 2.589999880791421e+00, 2.660000119208579e+00, 2.730000119207158e+00, 2.800000119205737e+00, 2.869999701980684e+00, 2.939999940397843e+00, 3.009999940396421e+00, 3.079999940395781e+00, 3.150000178812158e+00, 3.220000178810737e+00, 3.289999761585684e+00, 3.359999761584263e+00, 3.430000000000284e+00, 3.5e+00] +round1.y=[-4e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -3e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -5.006780019356505e-06, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +time=[0e+00, 1e+00] +round2.y=[-4.000000059604645e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -3.00000011920929e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -1.000000014901161e-01, -5.00678009385247e-07, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01] +round2.u=[-3.499999940395355e-01, -3.429999945983297e-01, -3.35999995157124e-01, -3.289999957159187e-01, -3.219999962747125e-01, -3.149999981373525e-01, -3.079999973923011e-01, -3.009999992549414e-01, -2.939999985098919e-01, -2.870000029802163e-01, -2.800000022351675e-01, -2.730000014901188e-01, -2.660000007450701e-01, -2.590000000000213e-01, -2.520000044703457e-01, -2.450000089406701e-01, -2.380000029802216e-01, -2.310000074505726e-01, -2.24000011920897e-01, -2.169999910593139e-01, -2.099999955296605e-01, -2.029999895692165e-01, -1.959999940395409e-01, -1.889999985098963e-01, -1.819999925494434e-01, -1.749999970197678e-01, -1.679999910593459e-01, -1.610000059604964e-01, -1.539999999999946e-01, -1.469999940395728e-01, -1.400000089406434e-01, -1.330000029802216e-01, -1.259999970197731e-01, -1.190000119208703e-01, -1.120000059604485e-01, -1.049999925494461e-01, -9.800000745056994e-02, -9.100000149011257e-02, -8.399999552965519e-02, -7.699998956919782e-02, -7.000000447034391e-02, -6.299999850988657e-02, -5.599999254942918e-02, -4.90000037252903e-02, -4.199999776483204e-02, -3.499999180437022e-02, -2.800000670550853e-02, -2.099999888241493e-02, -1.399999292196144e-02, -7.000006891771072e-03, 0e+00, 7.000006891671597e-03, 1.400001378334319e-02, 2.100001974369222e-02, 2.79999858441367e-02, 3.49999918044946e-02, 4.199999776480721e-02, 4.900000372518581e-02, 5.600001341082745e-02, 6.300001937121644e-02, 6.999998360898912e-02, 7.699998956934702e-02, 8.399999552970493e-02, 9.100000149006283e-02, 9.800000745042074e-02, 1.050000134107786e-01, 1.119999850991319e-01, 1.189999910594898e-01, 1.259999970198477e-01, 1.330000029802464e-01, 1.400000089405191e-01, 1.470000149008414e-01, 1.539999791388006e-01, 1.60999985099123e-01, 1.679999910594454e-01, 1.749999970197678e-01, 1.820000029801612e-01, 1.890000089405546e-01, 1.960000149009481e-01, 2.029999791386941e-01, 2.099999850990165e-01, 2.169999910592891e-01, 2.240000119208223e-01, 2.310000178811447e-01, 2.380000238414671e-01, 2.449999880792487e-01, 2.519999940397487e-01, 2.590000000000711e-01, 2.660000059603934e-01, 2.730000119207158e-01, 2.800000178810382e-01, 2.869999821189974e-01, 2.939999880793198e-01, 3.009999940396421e-01, 3.080000000000142e-01, 3.150000059602868e-01, 3.220000119206092e-01, 3.289999761585684e-01, 3.359999821188908e-01, 3.429999880792132e-01, 3.499999940395355e-01] +round3.u=[-3.5e+01, -3.42999992214144e+01, -3.35999984428288e+01, -3.290000147893922e+01, -3.220000070035486e+01, -3.150000005215383e+01, -3.079999914318365e+01, -3.01000004023313e+01, -2.939999949336132e+01, -2.870000101327736e+01, -2.800000010430746e+01, -2.729999919533756e+01, -2.660000019371374e+01, -2.589999928474639e+01, -2.520000080466244e+01, -2.450000041722985e+01, -2.379999898672264e+01, -2.310000050663868e+01, -2.240000011921292e+01, -2.170000059604524e+01, -2.100000020861492e+01, -2.029999877810771e+01, -1.960000029802262e+01, -1.889999991059515e+01, -1.820000038742747e+01, -1.75e+01, -1.679999856949279e+01, -1.610000113248345e+01, -1.539999970197681e+01, -1.469999922514335e+01, -1.400000083446538e+01, -1.33000003576268e+01, -1.25999998807905e+01, -1.190000053644219e+01, -1.120000005960475e+01, -1.049999958276731e+01, -9.800001192086501e+00, -9.100000715253605e+00, -8.399999284746395e+00, -7.699998807910088e+00, -7.000000417231268e+00, -6.29999994039525e+00, -5.599998986723776e+00, -4.900000596044956e+00, -4.199999642372629e+00, -3.499999165536038e+00, -2.800000536441055e+00, -2.099999821186316e+00, -1.399999225141218e+00, -7.000006556496721e-01, 0e+00, 7.000006556397247e-01, 1.400001311279449e+00, 2.100001907316234e+00, 2.799998450306096e+00, 3.499999165548476e+00, 4.199999642370146e+00, 4.900000596034507e+00, 5.600001072862714e+00, 6.300002026525093e+00, 6.999998331099787e+00, 7.699998807925009e+00, 8.399999284751368e+00, 9.100000715248632e+00, 9.80000119207158e+00, 1.05000016689059e+01, 1.119999797348116e+01, 1.189999845030411e+01, 1.259999988079796e+01, 1.330000035762929e+01, 1.400000083445294e+01, 1.470000131128044e+01, 1.539999761585684e+01, 1.609999904634501e+01, 1.679999856950274e+01, 1.75e+01, 1.820000143049726e+01, 1.890000095366409e+01, 1.960000238414316e+01, 2.029999773505547e+01, 2.099999916555274e+01, 2.170000059604276e+01, 2.240000011920545e+01, 2.310000154969589e+01, 2.380000107286953e+01, 2.449999833110547e+01, 2.519999976158909e+01, 2.589999928475137e+01, 2.660000071524863e+01, 2.730000023841091e+01, 2.800000166889453e+01, 2.869999892713047e+01, 2.939999845030411e+01, 3.009999988079455e+01, 3.079999940395724e+01, 3.150000083444726e+01, 3.220000226494452e+01, 3.28999995231509e+01, 3.359999713900547e+01, 3.429999856950273e+01, 3.5e+01] +round3.y=[-4e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -3e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -2e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -1e+01, -5.006780019378709e-05, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 1e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 2e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01, 3e+01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sin.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sin.txt new file mode 100644 index 0000000000..770e4eca1f --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sin.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +sin1.y=[0e+00, 6.279052189025491e-02, 1.25333237452147e-01, 1.87381316384595e-01, 2.486898953400241e-01, 3.090169981213527e-01, 3.681245524355013e-01, 4.257792813474344e-01, 4.817536869409441e-01, 5.358267832061716e-01, 5.877852363791168e-01, 6.37423995027516e-01, 6.845471385054688e-01, 7.289686406719382e-01, 7.705132341174212e-01, 8.090169803797332e-01, 8.443279385564225e-01, 8.763066475484895e-01, 9.048270389253867e-01, 9.297764951615509e-01, 9.510564745096004e-01, 9.685831765931435e-01, 9.822872294646928e-01, 9.921147192796552e-01, 9.980267305350982e-01, 1e+00, 9.980267244918735e-01, 9.921147307571708e-01, 9.822872294647284e-01, 9.685831532414171e-01, 9.510565627098908e-01, 9.29776495161622e-01, 9.048270389253867e-01, 8.763067518650643e-01, 8.44327938556529e-01, 8.09016980379911e-01, 7.705133529832707e-01, 7.289687002764409e-01, 6.845471043246666e-01, 6.374239225441147e-01, 5.877853337517847e-01, 5.358268428108165e-01, 4.817536344844248e-01, 4.257793831936812e-01, 3.681245902625959e-01, 3.090169610060254e-01, 2.486899853117014e-01, 1.873813495884997e-01, 1.253332124403766e-01, 6.279063242083509e-02, 5.358979393577101e-08, -6.279052811178046e-02, -1.253332938608835e-01, -1.873814290064919e-01, -2.486896995113108e-01, -3.090168716001222e-01, -3.681244710530986e-01, -4.257792639837872e-01, -4.817537090949232e-01, -5.358268812191928e-01, -5.877850626424818e-01, -6.374238629405072e-01, -6.845470447203491e-01, -7.289685810669899e-01, -7.70513233773134e-01, -8.090170302644712e-01, -8.443277778656753e-01, -8.763066019297819e-01, -9.048269793212442e-01, -9.297764355570579e-01, -9.510565031049077e-01, -9.685831993059969e-01, -9.822871933156057e-01, -9.921146473576923e-01, -9.980267244919351e-01, -1e+00, -9.980267244919351e-01, -9.921147069617686e-01, -9.822872529193979e-01, -9.685831993066364e-01, -9.510565627095525e-01, -9.297764951617027e-01, -9.048270985303206e-01, -8.763066615349241e-01, -8.443278970749648e-01, -8.090171494737608e-01, -7.705133529824235e-01, -7.289687002762795e-01, -6.845471639296387e-01, -6.374239821497968e-01, -5.877851818517713e-01, -5.358270004284823e-01, -4.817538581065351e-01, -4.257794129953991e-01, -3.681246200647105e-01, -3.090170206117341e-01, -2.486898634240839e-01, -1.87381592919265e-01, -1.253334577736566e-01, -6.279068457400852e-02, -1.07179587871542e-07] +sin1.u=[0e+00, 6.283185026418836e-02, 1.256637005283767e-01, 1.884955656937173e-01, 2.513274010567601e-01, 3.141592694199139e-01, 3.769911313874425e-01, 4.398229699482905e-01, 5.026548021134992e-01, 5.654866470699986e-01, 6.283185388398452e-01, 6.911503710050471e-01, 7.539822627748136e-01, 8.168140949400954e-01, 8.796459398965949e-01, 9.424777252486271e-01, 1.005309604227105e+00, 1.068141449183551e+00, 1.13097329414021e+00, 1.19380523272312e+00, 1.256637077679602e+00, 1.31946889705379e+00, 1.382300742010059e+00, 1.445132586966718e+00, 1.507964525549627e+00, 1.570796251296997e+00, 1.633628189880475e+00, 1.696459941210316e+00, 1.759291879793154e+00, 1.822123818376135e+00, 1.884955450497254e+00, 1.947787389080164e+00, 2.010619208454636e+00, 2.073450959784193e+00, 2.136282898367103e+00, 2.199114836950012e+00, 2.261946588280421e+00, 2.324778526863331e+00, 2.38761046544624e+00, 2.450442404029149e+00, 2.513274155358848e+00, 2.576105855524315e+00, 2.638937794106798e+00, 2.701769545437207e+00, 2.764601484020117e+00, 2.827433422603026e+00, 2.890265173933436e+00, 2.953097112516345e+00, 3.015929051099254e+00, 3.078760802428527e+00, 3.141592502593994e+00, 3.204424441176011e+00, 3.267256379758027e+00, 3.330088318340044e+00, 3.392919882422641e+00, 3.455751821004657e+00, 3.518583759586227e+00, 3.58141569816869e+00, 3.644247636750706e+00, 3.70707933691727e+00, 3.769910900996741e+00, 3.832742839578757e+00, 3.895574778160774e+00, 3.958406716742791e+00, 4.021238416907933e+00, 4.084070355491087e+00, 4.146901919573968e+00, 4.209733858154848e+00, 4.272565796735727e+00, 4.335397735317621e+00, 4.398229673900328e+00, 4.461061612483482e+00, 4.52389317656011e+00, 4.586725115143263e+00, 4.649557053726417e+00, 4.71238899230957e+00, 4.77522093089045e+00, 4.83805286947133e+00, 4.90088480805221e+00, 4.963716372135659e+00, 5.026548310718812e+00, 5.089379772464929e+00, 5.15221171104796e+00, 5.215043649631114e+00, 5.277875588214267e+00, 5.34070715229658e+00, 5.40353909087746e+00, 5.466371029458339e+00, 5.529202968040356e+00, 5.59203490662351e+00, 5.654866845206663e+00, 5.717698409283291e+00, 5.780530347866445e+00, 5.843362286449598e+00, 5.906194225032629e+00, 5.969026163613062e+00, 6.031858102193942e+00, 6.094689666275686e+00, 6.157521604858839e+00, 6.220353066607109e+00, 6.283185005187988e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sort.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sort.txt new file mode 100644 index 0000000000..5e36794404 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sort.txt @@ -0,0 +1,33 @@ +last-generated=2024-04-18 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +sorAsc.u[1]=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +sorAsc.u[2]=[-1e+00, -9.700000279396727e-01, -9.399999962747139e-01, -9.100000242143751e-01, -8.799999925494277e-01, -8.500000260770252e-01, -8.199999888241416e-01, -7.900000223517407e-01, -7.599999850988655e-01, -7.300000298022691e-01, -6.999999925493972e-01, -6.700000149011524e-01, -6.399999776482982e-01, -6.099999999999289e-01, -5.799999850988476e-01, -5.500000298022336e-01, -5.199999701977309e-01, -4.900000149011345e-01, -4.600000298022158e-01, -4.3e-01, -4.000000149011168e-01, -3.699999850988388e-01, -3.4e-01, -3.100000149011611e-01, -2.799999850988388e-01, -2.5e-01, -2.199999701977486e-01, -1.900000298022424e-01, -1.59999999999991e-01, -1.299999701977398e-01, -1.000000372528142e-01, -7.000000745056284e-02, -3.999997764831148e-02, -1.000003911547481e-02, 1.999998882415249e-02, 5.000001862641812e-02, 7.999995529662296e-02, 1.099999850988743e-01, 1.400000149011257e-01, 1.70000044703377e-01, 1.999999850988833e-01, 2.300000149011345e-01, 2.600000298023223e-01, 2.899999701977842e-01, 3.2e-01, 3.500000298023224e-01, 3.79999970197802e-01, 4.099999999999999e-01, 4.400000298023223e-01, 4.699999701976776e-01, 5e-01, 5.299999999997158e-01, 5.60000059603508e-01, 5.900000596037922e-01, 6.199999403966343e-01, 6.499999403960659e-01, 6.799999999999291e-01, 7.099999999997867e-01, 7.400000596036499e-01, 7.700000596038631e-01, 7.999999403967762e-01, 8.299999403962078e-01, 8.600000000001421e-01, 8.899999999998579e-01, 9.200000596037922e-01, 9.500000596032238e-01, 9.799999403961369e-01, 1.009999940395853e+00, 1.039999940395995e+00, 1.070000059604645e+00, 1.100000059603579e+00, 1.130000059604005e+00, 1.159999880793268e+00, 1.190000000000568e+00, 1.220000000000284e+00, 1.25e+00, 1.279999999999716e+00, 1.309999999999432e+00, 1.340000119206732e+00, 1.369999940395995e+00, 1.399999940396421e+00, 1.429999940395355e+00, 1.460000059604005e+00, 1.490000059604147e+00, 1.520000059603863e+00, 1.549999880792842e+00, 1.580000000000426e+00, 1.610000000000142e+00, 1.639999999999858e+00, 1.669999999999574e+00, 1.700000119207158e+00, 1.729999940396137e+00, 1.759999940395853e+00, 1.789999940395995e+00, 1.820000059604645e+00, 1.850000059603579e+00, 1.880000059604005e+00, 1.909999880793268e+00, 1.940000000000568e+00, 1.970000000000284e+00, 2e+00] +sorAsc.u[3]=[2e+00, 1.960000037252901e+00, 1.919999955296513e+00, 1.879999992549417e+00, 1.840000029802316e+00, 1.799999955296522e+00, 1.759999985098829e+00, 1.720000029802327e+00, 1.679999940395462e+00, 1.64e+00, 1.600000029802322e+00, 1.559999940395391e+00, 1.519999970197678e+00, 1.48e+00, 1.440000059604609e+00, 1.4e+00, 1.36e+00, 1.320000059604538e+00, 1.28e+00, 1.24e+00, 1.200000059604467e+00, 1.159999940395355e+00, 1.12e+00, 1.080000059604645e+00, 1.039999940395355e+00, 1e+00, 9.599999403956394e-01, 9.20000059604325e-01, 8.799999999999999e-01, 8.39999940395604e-01, 8.000000596046448e-01, 7.6e-01, 7.2e-01, 6.800000596046447e-01, 6.399999999999999e-01, 6.000000000000001e-01, 5.600000596046448e-01, 5.2e-01, 4.799999701977486e-01, 4.399999403955683e-01, 4.000000298022335e-01, 3.600000000000001e-01, 3.199999403955507e-01, 2.800000298022158e-01, 2.399999850988566e-01, 1.999999552966052e-01, 1.600000298022601e-01, 1.199999925494328e-01, 7.999995529659643e-02, 4.000003725283197e-02, 0e+00, -4.000003725226355e-02, -8.000007450452709e-02, -1.200001117568972e-01, -1.599999105944718e-01, -1.99999955297316e-01, -2.399999850987147e-01, -2.800000298017893e-01, -3.200000596036499e-01, -3.600001192073355e-01, -3.999999105944538e-01, -4.39999940396421e-01, -4.799999701980329e-01, -5.199999999997158e-01, -5.600000596037922e-01, -6.00000119207158e-01, -6.399998807930554e-01, -6.799999403963501e-01, -7.200000000004265e-01, -7.600000000001419e-01, -8.000000596039341e-01, -8.400000596033657e-01, -8.799998807924156e-01, -9.19999940396492e-01, -9.599999403962078e-01, -1e+00, -1.039999999999432e+00, -1.080000119208153e+00, -1.120000119207584e+00, -1.15999988079199e+00, -1.200000000000711e+00, -1.239999999999858e+00, -1.279999999999573e+00, -1.3200001192073e+00, -1.360000119207726e+00, -1.399999880792131e+00, -1.440000000000853e+00, -1.480000000000284e+00, -1.519999999999716e+00, -1.559999999999147e+00, -1.600000119207869e+00, -1.639999880792274e+00, -1.6799998807927e+00, -1.720000000000427e+00, -1.760000000000142e+00, -1.799999999999289e+00, -1.84000011920801e+00, -1.879999880792416e+00, -1.919999880791847e+00, -1.960000000000568e+00, -2e+00] +sorAsc.u[4]=[3e+00, 2.990000009313215e+00, 2.980000018626431e+00, 2.970000027939647e+00, 2.960000037252861e+00, 2.95000004842872e+00, 2.940000055879292e+00, 2.930000067055204e+00, 2.920000074505726e+00, 2.910000089406701e+00, 2.900000096857437e+00, 2.890000104308102e+00, 2.880000111758589e+00, 2.869999880791066e+00, 2.859999895691898e+00, 2.849999910593299e+00, 2.839999910593299e+00, 2.829999925494274e+00, 2.819999940395675e+00, 2.809999940395533e+00, 2.799999955296649e+00, 2.789999955297005e+00, 2.779999970197766e+00, 2.769999985099025e+00, 2.759999985098599e+00, 2.75e+00, 2.739999999999574e+00, 2.730000029802802e+00, 2.720000029802234e+00, 2.710000029801949e+00, 2.700000059603757e+00, 2.690000059604467e+00, 2.680000059604325e+00, 2.67000008940599e+00, 2.660000089406701e+00, 2.650000089406701e+00, 2.640000119208224e+00, 2.630000119208934e+00, 2.619999880791066e+00, 2.609999880791776e+00, 2.599999910593299e+00, 2.589999910593299e+00, 2.57999991059401e+00, 2.569999940395675e+00, 2.559999940395533e+00, 2.549999940396243e+00, 2.539999970198051e+00, 2.529999970197766e+00, 2.519999970197198e+00, 2.510000000000426e+00, 2.5e+00, 2.489999999999716e+00, 2.479999999999432e+00, 2.469999999999148e+00, 2.460000059602726e+00, 2.450000059603579e+00, 2.440000059604503e+00, 2.430000059604432e+00, 2.420000059604147e+00, 2.410000059603863e+00, 2.400000119207158e+00, 2.390000119208011e+00, 2.380000119208863e+00, 2.369999880791137e+00, 2.359999880791989e+00, 2.349999880792842e+00, 2.339999940396137e+00, 2.329999940395853e+00, 2.319999940395568e+00, 2.309999940395497e+00, 2.299999940396421e+00, 2.289999940397274e+00, 2.280000000000852e+00, 2.270000000000568e+00, 2.260000000000284e+00, 2.25e+00, 2.239999999999716e+00, 2.229999999999432e+00, 2.219999999999148e+00, 2.210000059602726e+00, 2.200000059603579e+00, 2.190000059604503e+00, 2.180000059604432e+00, 2.170000059604147e+00, 2.160000059603863e+00, 2.150000119207158e+00, 2.140000119208011e+00, 2.130000119208863e+00, 2.119999880791137e+00, 2.109999880791989e+00, 2.099999880792842e+00, 2.089999940396137e+00, 2.079999940395853e+00, 2.069999940395568e+00, 2.059999940395497e+00, 2.049999940396421e+00, 2.039999940397274e+00, 2.030000000000852e+00, 2.020000000000568e+00, 2.010000000000284e+00, 2e+00] +sorAsc.u[5]=[0e+00, 4e-02, 8e-02, 1.2e-01, 1.6e-01, 2e-01, 2.4e-01, 2.8e-01, 3.2e-01, 3.6e-01, 4e-01, 4.4e-01, 4.8e-01, 5.2e-01, 5.600000000000001e-01, 6e-01, 6.4e-01, 6.8e-01, 7.2e-01, 7.6e-01, 8e-01, 8.4e-01, 8.8e-01, 9.2e-01, 9.6e-01, 1e+00, 1.04e+00, 1.08e+00, 1.12e+00, 1.16e+00, 1.2e+00, 1.24e+00, 1.28e+00, 1.32e+00, 1.36e+00, 1.4e+00, 1.44e+00, 1.48e+00, 1.52e+00, 1.56e+00, 1.6e+00, 1.64e+00, 1.68e+00, 1.72e+00, 1.76e+00, 1.8e+00, 1.84e+00, 1.88e+00, 1.92e+00, 1.96e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00, 3.04e+00, 3.08e+00, 3.12e+00, 3.16e+00, 3.2e+00, 3.24e+00, 3.28e+00, 3.32e+00, 3.36e+00, 3.4e+00, 3.44e+00, 3.48e+00, 3.52e+00, 3.56e+00, 3.6e+00, 3.64e+00, 3.68e+00, 3.72e+00, 3.76e+00, 3.8e+00, 3.84e+00, 3.88e+00, 3.92e+00, 3.96e+00, 4e+00] +sorAsc.y[1]=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, -4.000003725226355e-02, -8.000007450452709e-02, -1.200001117568972e-01, -1.599999105944718e-01, -1.99999955297316e-01, -2.399999850987147e-01, -2.800000298017893e-01, -3.200000596036499e-01, -3.600001192073355e-01, -3.999999105944538e-01, -4.39999940396421e-01, -4.799999701980329e-01, -5.199999999997158e-01, -5.600000596037922e-01, -6.00000119207158e-01, -6.399998807930554e-01, -6.799999403963501e-01, -7.200000000004265e-01, -7.600000000001419e-01, -8.000000596039341e-01, -8.400000596033657e-01, -8.799998807924156e-01, -9.19999940396492e-01, -9.599999403962078e-01, -1e+00, -1.039999999999432e+00, -1.080000119208153e+00, -1.120000119207584e+00, -1.15999988079199e+00, -1.200000000000711e+00, -1.239999999999858e+00, -1.279999999999573e+00, -1.3200001192073e+00, -1.360000119207726e+00, -1.399999880792131e+00, -1.440000000000853e+00, -1.480000000000284e+00, -1.519999999999716e+00, -1.559999999999147e+00, -1.600000119207869e+00, -1.639999880792274e+00, -1.6799998807927e+00, -1.720000000000427e+00, -1.760000000000142e+00, -1.799999999999289e+00, -1.84000011920801e+00, -1.879999880792416e+00, -1.919999880791847e+00, -1.960000000000568e+00, -2e+00] +sorAsc.y[2]=[-1e+00, -9.700000279396727e-01, -9.399999962747139e-01, -9.100000242143751e-01, -8.799999925494277e-01, -8.500000260770252e-01, -8.199999888241416e-01, -7.900000223517407e-01, -7.599999850988655e-01, -7.300000298022691e-01, -6.999999925493972e-01, -6.700000149011524e-01, -6.399999776482982e-01, -6.099999999999289e-01, -5.799999850988476e-01, -5.500000298022336e-01, -5.199999701977309e-01, -4.900000149011345e-01, -4.600000298022158e-01, -4.3e-01, -4.000000149011168e-01, -3.699999850988388e-01, -3.4e-01, -3.100000149011611e-01, -2.799999850988388e-01, -2.5e-01, -2.199999701977486e-01, -1.900000298022424e-01, -1.59999999999991e-01, -1.299999701977398e-01, -1.000000372528142e-01, -7.000000745056284e-02, -3.999997764831148e-02, -1.000003911547481e-02, 1.999998882415249e-02, 5.000001862641812e-02, 7.999995529662296e-02, 1.099999850988743e-01, 1.400000149011257e-01, 1.70000044703377e-01, 1.999999850988833e-01, 2.300000149011345e-01, 2.600000298023223e-01, 2.800000154972077e-01, 2.399999850988566e-01, 1.999999552966052e-01, 1.600000298022601e-01, 1.199999925494328e-01, 7.999995529659643e-02, 4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +sorAsc.y[3]=[0e+00, 4e-02, 8e-02, 1.2e-01, 1.6e-01, 2e-01, 2.4e-01, 2.8e-01, 3.2e-01, 3.6e-01, 4e-01, 4.4e-01, 4.8e-01, 5.2e-01, 5.600000000000001e-01, 6e-01, 6.4e-01, 6.8e-01, 7.2e-01, 7.6e-01, 8e-01, 8.4e-01, 8.8e-01, 9.2e-01, 9.6e-01, 1e+00, 9.599999403956394e-01, 9.20000059604325e-01, 8.799999999999999e-01, 8.39999940395604e-01, 8.000000596046448e-01, 7.6e-01, 7.2e-01, 6.800000596046447e-01, 6.399999999999999e-01, 6.000000000000001e-01, 5.600000596046448e-01, 5.2e-01, 4.799999701977486e-01, 4.399999403955683e-01, 4.000000298022335e-01, 3.600000000000001e-01, 3.199999403955507e-01, 2.899999845027924e-01, 3.2e-01, 3.500000298023224e-01, 3.79999970197802e-01, 4.099999999999999e-01, 4.400000298023223e-01, 4.699999701976776e-01, 5e-01, 5.299999999997158e-01, 5.60000059603508e-01, 5.900000596037922e-01, 6.199999403966343e-01, 6.499999403960659e-01, 6.799999999999291e-01, 7.099999999997867e-01, 7.400000596036499e-01, 7.700000596038631e-01, 7.999999403967762e-01, 8.299999403962078e-01, 8.600000000001421e-01, 8.899999999998579e-01, 9.200000596037922e-01, 9.500000596032238e-01, 9.799999403961369e-01, 1.009999940395853e+00, 1.039999940395995e+00, 1.070000059604645e+00, 1.100000059603579e+00, 1.130000059604005e+00, 1.159999880793268e+00, 1.190000000000568e+00, 1.220000000000284e+00, 1.25e+00, 1.279999999999716e+00, 1.309999999999432e+00, 1.340000119206732e+00, 1.369999940395995e+00, 1.399999940396421e+00, 1.429999940395355e+00, 1.460000059604005e+00, 1.490000059604147e+00, 1.520000059603863e+00, 1.549999880792842e+00, 1.580000000000426e+00, 1.610000000000142e+00, 1.639999999999858e+00, 1.669999999999574e+00, 1.700000119207158e+00, 1.729999940396137e+00, 1.759999940395853e+00, 1.789999940395995e+00, 1.820000059604645e+00, 1.850000059603579e+00, 1.880000059604005e+00, 1.909999880793268e+00, 1.940000000000568e+00, 1.970000000000284e+00, 2e+00] +sorAsc.y[4]=[2e+00, 1.960000037252901e+00, 1.919999955296513e+00, 1.879999992549417e+00, 1.840000029802316e+00, 1.799999955296522e+00, 1.759999985098829e+00, 1.720000029802327e+00, 1.679999940395462e+00, 1.64e+00, 1.600000029802322e+00, 1.559999940395391e+00, 1.519999970197678e+00, 1.48e+00, 1.440000059604609e+00, 1.4e+00, 1.36e+00, 1.320000059604538e+00, 1.28e+00, 1.24e+00, 1.200000059604467e+00, 1.159999940395355e+00, 1.12e+00, 1.080000059604645e+00, 1.039999940395355e+00, 1e+00, 1.04e+00, 1.08e+00, 1.12e+00, 1.16e+00, 1.2e+00, 1.24e+00, 1.28e+00, 1.32e+00, 1.36e+00, 1.4e+00, 1.44e+00, 1.48e+00, 1.52e+00, 1.56e+00, 1.6e+00, 1.64e+00, 1.68e+00, 1.72e+00, 1.76e+00, 1.8e+00, 1.84e+00, 1.88e+00, 1.92e+00, 1.96e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.390000119208011e+00, 2.380000119208863e+00, 2.369999880791137e+00, 2.359999880791989e+00, 2.349999880792842e+00, 2.339999940396137e+00, 2.329999940395853e+00, 2.319999940395568e+00, 2.309999940395497e+00, 2.299999940396421e+00, 2.289999940397274e+00, 2.280000000000852e+00, 2.270000000000568e+00, 2.260000000000284e+00, 2.25e+00, 2.239999999999716e+00, 2.229999999999432e+00, 2.219999999999148e+00, 2.210000059602726e+00, 2.200000059603579e+00, 2.190000059604503e+00, 2.180000059604432e+00, 2.170000059604147e+00, 2.160000059603863e+00, 2.150000119207158e+00, 2.140000119208011e+00, 2.130000119208863e+00, 2.119999880791137e+00, 2.109999880791989e+00, 2.099999880792842e+00, 2.089999940396137e+00, 2.079999940395853e+00, 2.069999940395568e+00, 2.059999940395497e+00, 2.049999940396421e+00, 2.039999940397274e+00, 2.030000000000852e+00, 2.020000000000568e+00, 2.010000000000284e+00, 2e+00] +sorAsc.y[5]=[3e+00, 2.990000009313215e+00, 2.980000018626431e+00, 2.970000027939647e+00, 2.960000037252861e+00, 2.95000004842872e+00, 2.940000055879292e+00, 2.930000067055204e+00, 2.920000074505726e+00, 2.910000089406701e+00, 2.900000096857437e+00, 2.890000104308102e+00, 2.880000111758589e+00, 2.869999880791066e+00, 2.859999895691898e+00, 2.849999910593299e+00, 2.839999910593299e+00, 2.829999925494274e+00, 2.819999940395675e+00, 2.809999940395533e+00, 2.799999955296649e+00, 2.789999955297005e+00, 2.779999970197766e+00, 2.769999985099025e+00, 2.759999985098599e+00, 2.75e+00, 2.739999999999574e+00, 2.730000029802802e+00, 2.720000029802234e+00, 2.710000029801949e+00, 2.700000059603757e+00, 2.690000059604467e+00, 2.680000059604325e+00, 2.67000008940599e+00, 2.660000089406701e+00, 2.650000089406701e+00, 2.640000119208224e+00, 2.630000119208934e+00, 2.619999880791066e+00, 2.609999880791776e+00, 2.599999910593299e+00, 2.589999910593299e+00, 2.57999991059401e+00, 2.569999940395675e+00, 2.559999940395533e+00, 2.549999940396243e+00, 2.539999970198051e+00, 2.529999970197766e+00, 2.519999970197198e+00, 2.510000000000426e+00, 2.5e+00, 2.489999999999716e+00, 2.479999999999432e+00, 2.469999999999148e+00, 2.460000059602726e+00, 2.450000059603579e+00, 2.440000059604503e+00, 2.430000059604432e+00, 2.420000059604147e+00, 2.410000059603863e+00, 2.400000119207158e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00, 3.04e+00, 3.08e+00, 3.12e+00, 3.16e+00, 3.2e+00, 3.24e+00, 3.28e+00, 3.32e+00, 3.36e+00, 3.4e+00, 3.44e+00, 3.48e+00, 3.52e+00, 3.56e+00, 3.6e+00, 3.64e+00, 3.68e+00, 3.72e+00, 3.76e+00, 3.8e+00, 3.84e+00, 3.88e+00, 3.92e+00, 3.96e+00, 4e+00] +sorDes.y[1]=[3e+00, 2.990000009313215e+00, 2.980000018626431e+00, 2.970000027939647e+00, 2.960000037252861e+00, 2.95000004842872e+00, 2.940000055879292e+00, 2.930000067055204e+00, 2.920000074505726e+00, 2.910000089406701e+00, 2.900000096857437e+00, 2.890000104308102e+00, 2.880000111758589e+00, 2.869999880791066e+00, 2.859999895691898e+00, 2.849999910593299e+00, 2.839999910593299e+00, 2.829999925494274e+00, 2.819999940395675e+00, 2.809999940395533e+00, 2.799999955296649e+00, 2.789999955297005e+00, 2.779999970197766e+00, 2.769999985099025e+00, 2.759999985098599e+00, 2.75e+00, 2.739999999999574e+00, 2.730000029802802e+00, 2.720000029802234e+00, 2.710000029801949e+00, 2.700000059603757e+00, 2.690000059604467e+00, 2.680000059604325e+00, 2.67000008940599e+00, 2.660000089406701e+00, 2.650000089406701e+00, 2.640000119208224e+00, 2.630000119208934e+00, 2.619999880791066e+00, 2.609999880791776e+00, 2.599999910593299e+00, 2.589999910593299e+00, 2.57999991059401e+00, 2.569999940395675e+00, 2.559999940395533e+00, 2.549999940396243e+00, 2.539999970198051e+00, 2.529999970197766e+00, 2.519999970197198e+00, 2.510000000000426e+00, 2.5e+00, 2.489999999999716e+00, 2.479999999999432e+00, 2.469999999999148e+00, 2.460000059602726e+00, 2.450000059603579e+00, 2.440000059604503e+00, 2.430000059604432e+00, 2.420000059604147e+00, 2.410000059603863e+00, 2.400000119207158e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00, 3.04e+00, 3.08e+00, 3.12e+00, 3.16e+00, 3.2e+00, 3.24e+00, 3.28e+00, 3.32e+00, 3.36e+00, 3.4e+00, 3.44e+00, 3.48e+00, 3.52e+00, 3.56e+00, 3.6e+00, 3.64e+00, 3.68e+00, 3.72e+00, 3.76e+00, 3.8e+00, 3.84e+00, 3.88e+00, 3.92e+00, 3.96e+00, 4e+00] +sorDes.y[2]=[2e+00, 1.960000037252901e+00, 1.919999955296513e+00, 1.879999992549417e+00, 1.840000029802316e+00, 1.799999955296522e+00, 1.759999985098829e+00, 1.720000029802327e+00, 1.679999940395462e+00, 1.64e+00, 1.600000029802322e+00, 1.559999940395391e+00, 1.519999970197678e+00, 1.48e+00, 1.440000059604609e+00, 1.4e+00, 1.36e+00, 1.320000059604538e+00, 1.28e+00, 1.24e+00, 1.200000059604467e+00, 1.159999940395355e+00, 1.12e+00, 1.080000059604645e+00, 1.039999940395355e+00, 1e+00, 1.04e+00, 1.08e+00, 1.12e+00, 1.16e+00, 1.2e+00, 1.24e+00, 1.28e+00, 1.32e+00, 1.36e+00, 1.4e+00, 1.44e+00, 1.48e+00, 1.52e+00, 1.56e+00, 1.6e+00, 1.64e+00, 1.68e+00, 1.72e+00, 1.76e+00, 1.8e+00, 1.84e+00, 1.88e+00, 1.92e+00, 1.96e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.390000119208011e+00, 2.380000119208863e+00, 2.369999880791137e+00, 2.359999880791989e+00, 2.349999880792842e+00, 2.339999940396137e+00, 2.329999940395853e+00, 2.319999940395568e+00, 2.309999940395497e+00, 2.299999940396421e+00, 2.289999940397274e+00, 2.280000000000852e+00, 2.270000000000568e+00, 2.260000000000284e+00, 2.25e+00, 2.239999999999716e+00, 2.229999999999432e+00, 2.219999999999148e+00, 2.210000059602726e+00, 2.200000059603579e+00, 2.190000059604503e+00, 2.180000059604432e+00, 2.170000059604147e+00, 2.160000059603863e+00, 2.150000119207158e+00, 2.140000119208011e+00, 2.130000119208863e+00, 2.119999880791137e+00, 2.109999880791989e+00, 2.099999880792842e+00, 2.089999940396137e+00, 2.079999940395853e+00, 2.069999940395568e+00, 2.059999940395497e+00, 2.049999940396421e+00, 2.039999940397274e+00, 2.030000000000852e+00, 2.020000000000568e+00, 2.010000000000284e+00, 2e+00] +sorDes.y[3]=[0e+00, 4e-02, 8e-02, 1.2e-01, 1.6e-01, 2e-01, 2.4e-01, 2.8e-01, 3.2e-01, 3.6e-01, 4e-01, 4.4e-01, 4.8e-01, 5.2e-01, 5.600000000000001e-01, 6e-01, 6.4e-01, 6.8e-01, 7.2e-01, 7.6e-01, 8e-01, 8.4e-01, 8.8e-01, 9.2e-01, 9.6e-01, 1e+00, 9.599999403956394e-01, 9.20000059604325e-01, 8.799999999999999e-01, 8.39999940395604e-01, 8.000000596046448e-01, 7.6e-01, 7.2e-01, 6.800000596046447e-01, 6.399999999999999e-01, 6.000000000000001e-01, 5.600000596046448e-01, 5.2e-01, 4.799999701977486e-01, 4.399999403955683e-01, 4.000000298022335e-01, 3.600000000000001e-01, 3.199999403955507e-01, 2.899999845027924e-01, 3.2e-01, 3.500000298023224e-01, 3.79999970197802e-01, 4.099999999999999e-01, 4.400000298023223e-01, 4.699999701976776e-01, 5e-01, 5.299999999997158e-01, 5.60000059603508e-01, 5.900000596037922e-01, 6.199999403966343e-01, 6.499999403960659e-01, 6.799999999999291e-01, 7.099999999997867e-01, 7.400000596036499e-01, 7.700000596038631e-01, 7.999999403967762e-01, 8.299999403962078e-01, 8.600000000001421e-01, 8.899999999998579e-01, 9.200000596037922e-01, 9.500000596032238e-01, 9.799999403961369e-01, 1.009999940395853e+00, 1.039999940395995e+00, 1.070000059604645e+00, 1.100000059603579e+00, 1.130000059604005e+00, 1.159999880793268e+00, 1.190000000000568e+00, 1.220000000000284e+00, 1.25e+00, 1.279999999999716e+00, 1.309999999999432e+00, 1.340000119206732e+00, 1.369999940395995e+00, 1.399999940396421e+00, 1.429999940395355e+00, 1.460000059604005e+00, 1.490000059604147e+00, 1.520000059603863e+00, 1.549999880792842e+00, 1.580000000000426e+00, 1.610000000000142e+00, 1.639999999999858e+00, 1.669999999999574e+00, 1.700000119207158e+00, 1.729999940396137e+00, 1.759999940395853e+00, 1.789999940395995e+00, 1.820000059604645e+00, 1.850000059603579e+00, 1.880000059604005e+00, 1.909999880793268e+00, 1.940000000000568e+00, 1.970000000000284e+00, 2e+00] +sorDes.y[4]=[-1e+00, -9.700000279396727e-01, -9.399999962747139e-01, -9.100000242143751e-01, -8.799999925494277e-01, -8.500000260770252e-01, -8.199999888241416e-01, -7.900000223517407e-01, -7.599999850988655e-01, -7.300000298022691e-01, -6.999999925493972e-01, -6.700000149011524e-01, -6.399999776482982e-01, -6.099999999999289e-01, -5.799999850988476e-01, -5.500000298022336e-01, -5.199999701977309e-01, -4.900000149011345e-01, -4.600000298022158e-01, -4.3e-01, -4.000000149011168e-01, -3.699999850988388e-01, -3.4e-01, -3.100000149011611e-01, -2.799999850988388e-01, -2.5e-01, -2.199999701977486e-01, -1.900000298022424e-01, -1.59999999999991e-01, -1.299999701977398e-01, -1.000000372528142e-01, -7.000000745056284e-02, -3.999997764831148e-02, -1.000003911547481e-02, 1.999998882415249e-02, 5.000001862641812e-02, 7.999995529662296e-02, 1.099999850988743e-01, 1.400000149011257e-01, 1.70000044703377e-01, 1.999999850988833e-01, 2.300000149011345e-01, 2.600000298023223e-01, 2.800000154972077e-01, 2.399999850988566e-01, 1.999999552966052e-01, 1.600000298022601e-01, 1.199999925494328e-01, 7.999995529659643e-02, 4.000003725283197e-02, 0e+00, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +sorDes.y[5]=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 0e+00, -4.000003725226355e-02, -8.000007450452709e-02, -1.200001117568972e-01, -1.599999105944718e-01, -1.99999955297316e-01, -2.399999850987147e-01, -2.800000298017893e-01, -3.200000596036499e-01, -3.600001192073355e-01, -3.999999105944538e-01, -4.39999940396421e-01, -4.799999701980329e-01, -5.199999999997158e-01, -5.600000596037922e-01, -6.00000119207158e-01, -6.399998807930554e-01, -6.799999403963501e-01, -7.200000000004265e-01, -7.600000000001419e-01, -8.000000596039341e-01, -8.400000596033657e-01, -8.799998807924156e-01, -9.19999940396492e-01, -9.599999403962078e-01, -1e+00, -1.039999999999432e+00, -1.080000119208153e+00, -1.120000119207584e+00, -1.15999988079199e+00, -1.200000000000711e+00, -1.239999999999858e+00, -1.279999999999573e+00, -1.3200001192073e+00, -1.360000119207726e+00, -1.399999880792131e+00, -1.440000000000853e+00, -1.480000000000284e+00, -1.519999999999716e+00, -1.559999999999147e+00, -1.600000119207869e+00, -1.639999880792274e+00, -1.6799998807927e+00, -1.720000000000427e+00, -1.760000000000142e+00, -1.799999999999289e+00, -1.84000011920801e+00, -1.879999880792416e+00, -1.919999880791847e+00, -1.960000000000568e+00, -2e+00] +sorAsc.yIdx[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +sorAsc.yIdx[2]=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.999996423728557e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00] +sorAsc.yIdx[3]=[5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 2.000003576271443e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1e+00] +sorAsc.yIdx[4]=[3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 4.000011920727175e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00] +sorAsc.yIdx[5]=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.999988079272825e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00] +sorDes.yIdx[1]=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4.999988079272825e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00] +sorDes.yIdx[2]=[3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 4.000011920727175e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 2e+00] +sorDes.yIdx[3]=[5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 5e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 2.000003576271443e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1e+00] +sorDes.yIdx[4]=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.999996423728557e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 4e+00] +sorDes.yIdx[5]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sqrt.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sqrt.txt new file mode 100644 index 0000000000..297265a295 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Sqrt.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +sqrt1.y=[0e+00, 3.000000151209753e-01, 4.242640780004506e-01, 5.19615238657952e-01, 6.000000304655717e-01, 6.708204099709842e-01, 7.348469577225347e-01, 7.937253696589017e-01, 8.485281561682698e-01, 8.999999581764024e-01, 9.486833143720352e-01, 9.949874308719141e-01, 1.039230477455221e+00, 1.081665416452227e+00, 1.122497198567804e+00, 1.161895013535162e+00, 1.200000061053048e+00, 1.236931675108415e+00, 1.272792194757011e+00, 1.307669647770564e+00, 1.341640820018859e+00, 1.374772689295461e+00, 1.407124761570393e+00, 1.438749419485452e+00, 1.469693915545359e+00, 1.5e+00, 1.529705910072892e+00, 1.558845727408914e+00, 1.587450739336255e+00, 1.615549468355506e+00, 1.643167582235586e+00, 1.67032932591816e+00, 1.697056312424043e+00, 1.723368729631927e+00, 1.749285569514204e+00, 1.774823919128662e+00, 1.79999991650415e+00, 1.824828732160109e+00, 1.849324237967186e+00, 1.873499427778869e+00, 1.897366628797627e+00, 1.92093730809587e+00, 1.944222242152729e+00, 1.967231495689451e+00, 1.989974861761983e+00, 2.012461212082147e+00, 2.034698944689646e+00, 2.056696417552923e+00, 2.078460954982385e+00, 2.0999998841758e+00, 2.121320247650146e+00, 2.142428656561722e+00, 2.163330833015845e+00, 2.184032975916038e+00, 2.204540685682676e+00, 2.224859451957013e+00, 2.244994397148328e+00, 2.264950289619251e+00, 2.284731897771634e+00, 2.304343751580789e+00, 2.323790027187542e+00, 2.343074771088151e+00, 2.362202396838752e+00, 2.381176242295471e+00, 2.400000122167513e+00, 2.418677374339996e+00, 2.437211465061093e+00, 2.4556057147093e+00, 2.473863350246226e+00, 2.491987232695804e+00, 2.509979984659744e+00, 2.527844944024971e+00, 2.5455843896188e+00, 2.563201155531373e+00, 2.580697519828445e+00, 2.598076105117798e+00, 2.615339295572717e+00, 2.632489236991108e+00, 2.649528313558764e+00, 2.666458332066031e+00, 2.683281640075675e+00, 2.700000043707468e+00, 2.716615450301871e+00, 2.733130005642796e+00, 2.749545378666097e+00, 2.765863379767072e+00, 2.78208563396725e+00, 2.79821371264906e+00, 2.814249523153747e+00, 2.830194257581026e+00, 2.846049823292036e+00, 2.861817557081525e+00, 2.877498839013571e+00, 2.893095243766897e+00, 2.908607963433942e+00, 2.924038428522723e+00, 2.939387831140108e+00, 2.954657272610858e+00, 2.9698483654793e+00, 2.984962210576912e+00, 3e+00] +sqrt1.u=[0e+00, 9.000000558793503e-02, 1.800000111758684e-01, 2.70000016763792e-01, 3.600000223517301e-01, 4.499999813735582e-01, 5.400000335276152e-01, 6.29999992549414e-01, 7.200000447034036e-01, 8.099999701977308e-01, 8.999999627471637e-01, 9.900000149011523e-01, 1.080000067055185e+00, 1.169999999999929e+00, 1.259999985098848e+00, 1.349999970197766e+00, 1.440000089406701e+00, 1.529999955296543e+00, 1.619999940395462e+00, 1.710000059604609e+00, 1.799999925494238e+00, 1.890000044703386e+00, 1.980000029802305e+00, 2.069999895692183e+00, 2.160000134110051e+00, 2.25e+00, 2.340000000000426e+00, 2.429999970197198e+00, 2.519999970197767e+00, 2.609999970198051e+00, 2.699999940394822e+00, 2.789999940395533e+00, 2.880000178813401e+00, 2.969999910592447e+00, 3.059999910593299e+00, 3.150000149011168e+00, 3.239999880790071e+00, 3.329999880791066e+00, 3.420000119208934e+00, 3.510000119209929e+00, 3.599999850988832e+00, 3.690000089406701e+00, 3.780000089407553e+00, 3.869999821186599e+00, 3.960000059604467e+00, 4.050000298020914e+00, 4.13999979138536e+00, 4.230000029802375e+00, 4.320000268218823e+00, 4.409999761583268e+00, 4.5e+00, 4.590000238415453e+00, 4.679999999998295e+00, 4.770000238416022e+00, 4.859999940397274e+00, 4.949999701980684e+00, 5.039999940394929e+00, 5.130000178811589e+00, 5.219999940393863e+00, 5.310000178811589e+00, 5.399999880792842e+00, 5.489999642376821e+00, 5.579999880791137e+00, 5.670000119208863e+00, 5.760000357623179e+00, 5.850000119207158e+00, 5.939999821188411e+00, 6.030000059606137e+00, 6.119999821188411e+00, 6.210000059605071e+00, 6.300000298019316e+00, 6.390000059602726e+00, 6.479999761583978e+00, 6.570000000001705e+00, 6.659999761584547e+00, 6.75e+00, 6.840000238415453e+00, 6.929999999998295e+00, 7.020000238416022e+00, 7.109999940397274e+00, 7.199999701980684e+00, 7.289999940394929e+00, 7.380000178811589e+00, 7.469999940393863e+00, 7.560000178811589e+00, 7.649999880792842e+00, 7.739999642376821e+00, 7.829999880791137e+00, 7.920000119208863e+00, 8.010000357623179e+00, 8.100000596038631e+00, 8.189999344357505e+00, 8.279999582772959e+00, 8.369999821188411e+00, 8.460000059604502e+00, 8.550000298019315e+00, 8.640000536434769e+00, 8.729999284753642e+00, 8.819999523169095e+00, 8.909999761584547e+00, 9e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Subtract.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Subtract.txt new file mode 100644 index 0000000000..3231475f65 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Subtract.txt @@ -0,0 +1,11 @@ +last-generated=2022-01-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +sub.u1=[-2e+00, -1.960000037252901e+00, -1.919999955296513e+00, -1.879999992549417e+00, -1.840000029802316e+00, -1.799999955296522e+00, -1.759999985098829e+00, -1.720000029802327e+00, -1.679999940395462e+00, -1.64e+00, -1.600000029802322e+00, -1.559999940395391e+00, -1.519999970197678e+00, -1.48e+00, -1.440000059604609e+00, -1.4e+00, -1.36e+00, -1.320000059604538e+00, -1.28e+00, -1.24e+00, -1.200000059604467e+00, -1.159999940395355e+00, -1.12e+00, -1.080000059604645e+00, -1.039999940395355e+00, -1e+00, -9.599999403956394e-01, -9.20000059604325e-01, -8.799999999999999e-01, -8.39999940395604e-01, -8.000000596046448e-01, -7.6e-01, -7.2e-01, -6.800000596046447e-01, -6.399999999999999e-01, -6.000000000000001e-01, -5.600000596046448e-01, -5.2e-01, -4.799999701977486e-01, -4.399999403955683e-01, -4.000000298022335e-01, -3.600000000000001e-01, -3.199999403955507e-01, -2.800000298022158e-01, -2.399999850988566e-01, -1.999999552966052e-01, -1.600000298022601e-01, -1.199999925494328e-01, -7.999995529659643e-02, -4.000003725283197e-02, 1.332267629550188e-15, 4.000003725226355e-02, 8.000007450452709e-02, 1.200001117568972e-01, 1.599999105944718e-01, 1.99999955297316e-01, 2.399999850987147e-01, 2.800000298017893e-01, 3.200000596036499e-01, 3.600001192073355e-01, 3.999999105944538e-01, 4.39999940396421e-01, 4.799999701980329e-01, 5.199999999997158e-01, 5.600000596037922e-01, 6.00000119207158e-01, 6.399998807930554e-01, 6.799999403963501e-01, 7.200000000004265e-01, 7.600000000001419e-01, 8.000000596039341e-01, 8.400000596033657e-01, 8.799998807924156e-01, 9.19999940396492e-01, 9.599999403962078e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00] +sub.u2=[-5e-01, -4.799999888241316e-01, -4.60000007450579e-01, -4.399999962747085e-01, -4.199999850988488e-01, -4.000000074505834e-01, -3.799999925494144e-01, -3.60000014901159e-01, -3.4e-01, -3.2e-01, -3.00000014901139e-01, -2.8e-01, -2.599999850988788e-01, -2.399999850988743e-01, -2.2e-01, -2.000000149011168e-01, -1.8e-01, -1.6e-01, -1.400000149011079e-01, -1.199999925494283e-01, -1.000000074505695e-01, -7.999998509886325e-02, -5.999999627471636e-02, -4.000000745056503e-02, -1.99999888241541e-02, 3.33066907387547e-16, 2.000001862641598e-02, 3.999997764829821e-02, 5.999999627471642e-02, 8.000001490113007e-02, 9.99999776483026e-02, 1.199999925494283e-01, 1.400000149011079e-01, 1.599999701977753e-01, 1.8e-01, 2.000000149011167e-01, 2.199999701977842e-01, 2.399999850988743e-01, 2.6e-01, 2.800000298023224e-01, 3e-01, 3.2e-01, 3.400000298023224e-01, 3.6e-01, 3.8e-01, 4.000000298023224e-01, 4.19999970197802e-01, 4.399999999999999e-01, 4.600000298021625e-01, 4.799999701978197e-01, 5e-01, 5.199999999997158e-01, 5.400000596040764e-01, 5.600000596037922e-01, 5.799999403959948e-01, 6.000000000003554e-01, 6.199999999999291e-01, 6.399999999997867e-01, 6.600000596036499e-01, 6.800000596038631e-01, 6.999999403960657e-01, 7.200000000004263e-01, 7.400000000001421e-01, 7.599999999998579e-01, 7.799999999995737e-01, 8.000000596039343e-01, 8.199999403961369e-01, 8.399999403963501e-01, 8.600000000002133e-01, 8.800000000000709e-01, 8.999999999996446e-01, 9.200000596040052e-01, 9.399999403962078e-01, 9.599999403959236e-01, 9.800000000002842e-01, 1e+00, 1.02e+00, 1.04e+00, 1.06e+00, 1.08e+00, 1.1e+00, 1.12e+00, 1.14e+00, 1.16e+00, 1.18e+00, 1.2e+00, 1.22e+00, 1.24e+00, 1.26e+00, 1.28e+00, 1.3e+00, 1.32e+00, 1.34e+00, 1.36e+00, 1.38e+00, 1.4e+00, 1.42e+00, 1.44e+00, 1.46e+00, 1.48e+00, 1.5e+00] +sub.y=[-1.5e+00, -1.480000018626444e+00, -1.460000037252888e+00, -1.440000055879333e+00, -1.41999995529654e+00, -1.399999977648283e+00, -1.379999992549454e+00, -1.360000014901154e+00, -1.340000029802269e+00, -1.320000059604538e+00, -1.299999955296561e+00, -1.279999970197695e+00, -1.259999985098919e+00, -1.239999999999858e+00, -1.220000029802305e+00, -1.200000059604467e+00, -1.179999940395462e+00, -1.159999970197731e+00, -1.140000000000213e+00, -1.120000000000071e+00, -1.100000029802234e+00, -1.080000029802127e+00, -1.059999940395391e+00, -1.039999970197802e+00, -1.019999970197838e+00, -1e+00, -9.8e-01, -9.6e-01, -9.399999999999999e-01, -9.2e-01, -9e-01, -8.8e-01, -8.6e-01, -8.4e-01, -8.2e-01, -8e-01, -7.8e-01, -7.6e-01, -7.4e-01, -7.2e-01, -7e-01, -6.8e-01, -6.6e-01, -6.4e-01, -6.2e-01, -6e-01, -5.8e-01, -5.600000000000001e-01, -5.4e-01, -5.2e-01, -5e-01, -4.799999701981039e-01, -4.59999970198246e-01, -4.399999403962078e-01, -4.200000298016828e-01, -4.00000029801967e-01, -3.800000000000709e-01, -3.600000000002133e-01, -3.399999701981751e-01, -3.199999403965277e-01, -3.00000059603579e-01, -2.800000298018961e-01, -2.599999999998579e-01, -2.399999850990164e-01, -2.199999701982105e-01, -1.999999552972269e-01, -1.800000596036677e-01, -1.600000298018249e-01, -1.400000149008946e-01, -1.199999925493573e-01, -9.999997764865798e-02, -7.99999552972359e-02, -6.00000558784486e-02, -4.000003725226355e-02, -2.000001862613177e-02, 1.110223024625157e-15, 2.000001862613177e-02, 4.000003725226355e-02, 6.00000558784486e-02, 7.99999552972359e-02, 9.999997764865798e-02, 1.199999925493573e-01, 1.400000149008946e-01, 1.600000298018249e-01, 1.800000596036677e-01, 1.999999552972269e-01, 2.199999701982105e-01, 2.399999850990164e-01, 2.599999999998579e-01, 2.800000298018961e-01, 3.00000059603579e-01, 3.199999403965277e-01, 3.399999701981751e-01, 3.600000000002133e-01, 3.800000000000709e-01, 4.00000029801967e-01, 4.200000298016828e-01, 4.399999403962078e-01, 4.59999970198246e-01, 4.799999701981039e-01, 5e-01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Switch.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Switch.txt new file mode 100644 index 0000000000..4d3b037e50 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Switch.txt @@ -0,0 +1,12 @@ +last-generated=2019-05-21 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +switch1.u1=[-1e+00, -9.399999985098856e-01, -8.799999970197717e-01, -8.200000000000107e-01, -7.599999940395409e-01, -6.99999988079071e-01, -6.4e-01, -5.799999761581776e-01, -5.19999988079071e-01, -4.599999940395711e-01, -4.000000059604645e-01, -3.400000178814005e-01, -2.800000298021661e-01, -2.199999701978339e-01, -1.599999821185994e-01, -1.000000014901161e-01, -4.000001341106101e-02, 1.999997094288099e-02, 8.000002682195148e-02, 1.400000149011683e-01, 2.000000029802322e-01, 2.600000476838864e-01, 3.19999964237199e-01, 3.800000238418723e-01, 4.399999403953267e-01, 5e-01, 5.600000596048154e-01, 6.199999761580569e-01, 6.800000357627302e-01, 7.399999523161136e-01, 8.00000011920929e-01, 8.600000715254601e-01, 9.199999880789859e-01, 9.800000476836591e-01, 1.039999904632682e+00, 1.100000023841858e+00, 1.160000023842312e+00, 1.219999999999773e+00, 1.280000000000227e+00, 1.339999976157688e+00, 1.399999976158142e+00, 1.460000095367318e+00, 1.520000095367204e+00, 1.579999928473517e+00, 1.63999992847454e+00, 1.700000047683716e+00, 1.760000047683602e+00, 1.820000166892778e+00, 1.879999880790938e+00, 1.939999999999545e+00, 2e+00, 2.060000000000454e+00, 2.12000000000091e+00, 2.179999952315375e+00, 2.23999995231583e+00, 2.299999952316284e+00, 2.359999952316739e+00, 2.420000190733499e+00, 2.479999904631659e+00, 2.53999990463325e+00, 2.599999904632568e+00, 2.660000143050465e+00, 2.720000143052057e+00, 2.779999856947943e+00, 2.839999856949535e+00, 2.900000095367432e+00, 2.96000009536675e+00, 3.020000095368341e+00, 3.079999809266501e+00, 3.140000047683261e+00, 3.200000047683716e+00, 3.26000004768417e+00, 3.320000047684625e+00, 3.37999999999909e+00, 3.439999999999546e+00, 3.5e+00, 3.560000000000454e+00, 3.62000000000091e+00, 3.679999952315375e+00, 3.73999995231583e+00, 3.799999952316284e+00, 3.859999666222175e+00, 3.92000019073077e+00, 3.979999904634387e+00, 4.040000190731226e+00, 4.099999904632568e+00, 4.159999618533911e+00, 4.219999904630749e+00, 4.280000095369251e+00, 4.340000381466089e+00, 4.400000095367432e+00, 4.459999809268774e+00, 4.520000095365614e+00, 4.579999809266956e+00, 4.640000095363793e+00, 4.699999809265137e+00, 4.760000000003638e+00, 4.820000286095929e+00, 4.88000000000182e+00, 4.940000286098657e+00, 5e+00] +switch1.u2=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +switch1.u3=[-1e+00, -9.800000193715102e-01, -9.599999791383756e-01, -9.400000000000035e-01, -9.200000178813952e-01, -8.999999761581421e-01, -8.8e-01, -8.600000119209289e-01, -8.39999976158142e-01, -8.19999988079071e-01, -8.00000011920929e-01, -7.799999761581563e-01, -7.599999999999716e-01, -7.400000000000284e-01, -7.200000238418437e-01, -6.99999988079071e-01, -6.800000119209432e-01, -6.600000357626163e-01, -6.399999761581705e-01, -6.199999999999858e-01, -6.000000238418579e-01, -5.799999642371563e-01, -5.600000119209574e-01, -5.400000119209005e-01, -5.200000000000569e-01, -5e-01, -4.799999701977629e-01, -4.600000178813508e-01, -4.399999880790426e-01, -4.200000059605213e-01, -4.000000059604645e-01, -3.799999761580852e-01, -3.600000238418152e-01, -3.39999994039507e-01, -3.200000119209857e-01, -3.00000011920929e-01, -2.799999821185498e-01, -2.600000000000284e-01, -2.39999985098846e-01, -2.200000178814502e-01, -2.000000029802322e-01, -1.799999880790143e-01, -1.59999958276777e-01, -1.400000387429907e-01, -1.200000163912986e-01, -1.000000014901161e-01, -7.999997913835291e-02, -5.999996051191588e-02, -4.000003725294565e-02, -2.000001862647274e-02, -3.774758283725532e-15, 2.000001862647274e-02, 4.000003725294565e-02, 5.999996051191588e-02, 7.999997913835308e-02, 1.000000014901161e-01, 1.200000163912987e-01, 1.400000387429906e-01, 1.59999958276777e-01, 1.799999880790141e-01, 2.000000029802322e-01, 2.200000178814502e-01, 2.400000327826683e-01, 2.599999523164547e-01, 2.799999821185498e-01, 3.00000011920929e-01, 3.200000119209859e-01, 3.400000417233651e-01, 3.599999761580285e-01, 3.799999761580851e-01, 4.000000059604645e-01, 4.200000059605212e-01, 4.400000357629004e-01, 4.599999701975639e-01, 4.79999970197763e-01, 5e-01, 5.200000000000568e-01, 5.400000596047585e-01, 5.599999642370996e-01, 5.799999642371564e-01, 6.000000238418579e-01, 6.199999284760181e-01, 6.40000023841062e-01, 6.599999880798666e-01, 6.800000834449111e-01, 6.99999988079071e-01, 7.199999523178757e-01, 7.400000476829199e-01, 7.599999523170801e-01, 7.800000476821243e-01, 8.00000011920929e-01, 8.199999165550889e-01, 8.400000119201334e-01, 8.59999976158938e-01, 8.800000715239819e-01, 8.999999761581421e-01, 9.199999403969468e-01, 9.40000035761991e-01, 9.599999403961511e-01, 9.800000953658401e-01, 1e+00] +time=[0e+00, 5e+00] +switch1.y=[-1e+00, -9.399999985098856e-01, -8.799999970197717e-01, -8.200000000000107e-01, -7.599999940395409e-01, -6.99999988079071e-01, -6.4e-01, -5.799999761581776e-01, -5.19999988079071e-01, -4.599999940395711e-01, -4.000000059604645e-01, -3.400000178814005e-01, -2.800000298021661e-01, -2.199999701978339e-01, -1.599999821185994e-01, -1.000000014901161e-01, -4.000001341106101e-02, 1.999997094288099e-02, 8.000002682195148e-02, 1.400000149011683e-01, 2.000000029802322e-01, -5.799999642371563e-01, -5.600000119209574e-01, -5.400000119209005e-01, -5.200000000000569e-01, -5e-01, -4.799999701977629e-01, -4.600000178813508e-01, -4.399999880790426e-01, -4.200000059605213e-01, -4.000000059604645e-01, -3.799999761580852e-01, -3.600000238418152e-01, -3.39999994039507e-01, -3.200000119209857e-01, -3.00000011920929e-01, -2.799999821185498e-01, -2.600000000000284e-01, -2.39999985098846e-01, -2.200000178814502e-01, -2.000000029802322e-01, 1.460000095367318e+00, 1.520000095367204e+00, 1.579999928473517e+00, 1.63999992847454e+00, 1.700000047683716e+00, 1.760000047683602e+00, 1.820000166892778e+00, 1.879999880790938e+00, 1.939999999999545e+00, 2e+00, 2.060000000000454e+00, 2.12000000000091e+00, 2.179999952315375e+00, 2.23999995231583e+00, 2.299999952316284e+00, 2.359999952316739e+00, 2.420000190733499e+00, 2.479999904631659e+00, 2.53999990463325e+00, 2.599999904632568e+00, 2.200000178814502e-01, 2.400000327826683e-01, 2.599999523164547e-01, 2.799999821185498e-01, 3.00000011920929e-01, 3.200000119209859e-01, 3.400000417233651e-01, 3.599999761580285e-01, 3.799999761580851e-01, 4.000000059604645e-01, 4.200000059605212e-01, 4.400000357629004e-01, 4.599999701975639e-01, 4.79999970197763e-01, 5e-01, 5.200000000000568e-01, 5.400000596047585e-01, 5.599999642370996e-01, 5.799999642371564e-01, 6.000000238418579e-01, 3.859999666222175e+00, 3.92000019073077e+00, 3.979999904634387e+00, 4.040000190731226e+00, 4.099999904632568e+00, 4.159999618533911e+00, 4.219999904630749e+00, 4.280000095369251e+00, 4.340000381466089e+00, 4.400000095367432e+00, 4.459999809268774e+00, 4.520000095365614e+00, 4.579999809266956e+00, 4.640000095363793e+00, 4.699999809265137e+00, 4.760000000003638e+00, 4.820000286095929e+00, 4.88000000000182e+00, 4.940000286098657e+00, 5e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Tan.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Tan.txt new file mode 100644 index 0000000000..b74ef1621d --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Reals_Validation_Tan.txt @@ -0,0 +1,10 @@ +last-generated=2017-03-22 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +tan1.u=[-1.5e+00, -1.470000027939673e+00, -1.440000055879345e+00, -1.40999996460977e+00, -1.379999992549401e+00, -1.350000026077003e+00, -1.320000048428746e+00, -1.289999962747105e+00, -1.259999985098812e+00, -1.230000029802162e+00, -1.200000052153998e+00, -1.169999955296543e+00, -1.139999977648218e+00, -1.109999999999929e+00, -1.080000044703457e+00, -1.049999970197766e+00, -1.019999970197838e+00, -9.900000149011345e-01, -9.600000000001065e-01, -9.300000000000355e-01, -8.999999850988831e-01, -8.699999850989365e-01, -8.399999701976953e-01, -8.10000014901099e-01, -7.799999552965964e-01, -7.5e-01, -7.199999999998579e-01, -6.900000298021625e-01, -6.600000298023045e-01, -6.29999970197802e-01, -6.000000596044672e-01, -5.699999999999645e-01, -5.399999999998935e-01, -5.10000029802127e-01, -4.799999999999999e-01, -4.499999701977665e-01, -4.200000298023224e-01, -3.9e-01, -3.6e-01, -3.299999701976776e-01, -3.000000298022335e-01, -2.700000000000001e-01, -2.399999552966142e-01, -2.100000149011612e-01, -1.8e-01, -1.499999701976776e-01, -1.200000223517106e-01, -9.000000000000452e-02, -5.99999664724673e-02, -3.000002793961509e-02, 0e+00, 3.000002793918877e-02, 6.000005587839531e-02, 9.000008940547513e-02, 1.199999329458938e-01, 1.499999701982107e-01, 1.799999999998936e-01, 2.100000149008413e-01, 2.400000447027374e-01, 2.700000894054039e-01, 2.99999940396421e-01, 3.299999701983171e-01, 3.600000000002131e-01, 3.899999999997869e-01, 4.200000298016829e-01, 4.50000059603579e-01, 4.799999105945961e-01, 5.099999403963501e-01, 5.400000000002133e-01, 5.700000000000709e-01, 6.000000596039341e-01, 6.300000596033657e-01, 6.599999403962078e-01, 6.89999940396492e-01, 7.200000000002842e-01, 7.5e-01, 7.799999999997158e-01, 8.10000059603508e-01, 8.400000596037922e-01, 8.699999403966343e-01, 8.999999403960659e-01, 9.299999999999291e-01, 9.599999999997867e-01, 9.900000596036499e-01, 1.020000059603863e+00, 1.049999880792842e+00, 1.080000000000426e+00, 1.110000000000142e+00, 1.139999999999858e+00, 1.169999999999574e+00, 1.200000119207158e+00, 1.229999940396137e+00, 1.259999940395853e+00, 1.289999940395995e+00, 1.320000059604645e+00, 1.350000059603579e+00, 1.380000059604005e+00, 1.409999880793268e+00, 1.440000000000568e+00, 1.470000000000284e+00, 1.5e+00] +tan1.y=[-1.410142040252686e+01, -9.887374815413839e+00, -7.601826115546201e+00, -6.165356083530985e+00, -5.177437233115566e+00, -4.45522170086631e+00, -3.903347666807665e+00, -3.467205774752797e+00, -3.113269034344981e+00, -2.819815733372622e+00, -2.572151695499103e+00, -2.359981048444761e+00, -2.175875141371414e+00, -2.014338183442734e+00, -1.871217378173971e+00, -1.743315412078084e+00, -1.628130397153165e+00, -1.523676771027147e+00, -1.428357547756727e+00, -1.340873817618058e+00, -1.26015820450566e+00, -1.185324860331316e+00, -1.1156322876344e+00, -1.050455119880158e+00, -9.892614763328818e-01, -9.315964579582214e-01, -8.770678731914811e-01, -8.253361530519888e-01, -7.761049328202556e-01, -7.291146731090656e-01, -6.841368606368048e-01, -6.409685713026726e-01, -5.994295783279446e-01, -5.593587678331688e-01, -5.206108826104062e-01, -4.830550331510841e-01, -4.465725938031347e-01, -4.110549259930083e-01, -3.764028386242348e-01, -3.425248084765659e-01, -3.093362646890255e-01, -2.767581228335295e-01, -2.447166622575337e-01, -2.131424621844687e-01, -1.819695160484656e-01, -1.511351845767373e-01, -1.205793649804371e-01, -9.024378296992214e-02, -6.007207308656847e-02, -3.000903199753029e-02, 0e+00, 3.000903199710351e-02, 6.007216282527954e-02, 9.024387314962294e-02, 1.20579274302436e-01, 1.511351845772821e-01, 1.819695160483558e-01, 2.131424621841338e-01, 2.447167570358983e-01, 2.767582192099088e-01, 3.09336166835865e-01, 3.425248084772789e-01, 3.764028386244776e-01, 4.110549259927585e-01, 4.465725938023656e-01, 4.830551436131802e-01, 5.206107692398058e-01, 5.593586504977714e-01, 5.99429578328378e-01, 6.409685713028234e-01, 6.84136860636019e-01, 7.291148103115863e-01, 7.761047901712893e-01, 8.253360029476939e-01, 8.770678731922313e-01, 9.315964579582214e-01, 9.892615649350229e-01, 1.050455214508243e+00, 1.115632489564646e+00, 1.185324753580106e+00, 1.26015808933166e+00, 1.340873817617763e+00, 1.428357547755746e+00, 1.523676920883134e+00, 1.628130726014354e+00, 1.743315053177988e+00, 1.87121717899742e+00, 2.0143381834438e+00, 2.175875270036343e+00, 2.359981346009297e+00, 2.572152214189558e+00, 2.81981494312602e+00, 3.113268565123776e+00, 3.467205489147122e+00, 3.903347849554273e+00, 4.455222419078826e+00, 5.17743915277855e+00, 6.165352930281273e+00, 7.601822973838238e+00, 9.887372210631513e+00, 1.410142040252686e+01] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractSignal.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractSignal.txt new file mode 100644 index 0000000000..1ecab3563c --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractSignal.txt @@ -0,0 +1,20 @@ +last-generated=2022-10-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +extBooSig.u[1]=[1e+00, 1e+00] +extBooSig.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extBooSig.u[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940395475961e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extBooSig.u[4]=[0e+00, 0e+00] +extBooSig.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940395475961e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extBooSig.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extBooSig.y[3]=[0e+00, 0e+00] +extBooSig1.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940395475961e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extBooSig1.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extBooSig1.y[3]=[0e+00, 0e+00] +extBooSig1.y[4]=[1e+00, 1e+00] +extBooSig1.y[5]=[1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractor.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractor.txt new file mode 100644 index 0000000000..dccb636019 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanExtractor.txt @@ -0,0 +1,22 @@ +last-generated=2022-10-12 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +extIndBoo.u[1]=[1e+00, 1e+00] +extIndBoo.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndBoo.u[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940395475961e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIndBoo.u[4]=[0e+00, 0e+00] +extIndBoo.index=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +extIndBoo.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndBoo1.index=[6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +extIndBoo1.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndBoo2.index=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndBoo2.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIndBoo3.index=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] +extIndBoo3.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIndBoo4.index=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +extIndBoo4.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanScalarReplicator.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanScalarReplicator.txt new file mode 100644 index 0000000000..e5c1b92dff --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanScalarReplicator.txt @@ -0,0 +1,12 @@ +last-generated=2018-06-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +booRep.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 1e+00] +booRep.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booRep.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booRep.y[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorFilter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorFilter.txt new file mode 100644 index 0000000000..2499499edf --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorFilter.txt @@ -0,0 +1,13 @@ +last-generated=2021-06-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +booFil.u[1]=[1e+00, 1e+00] +booFil.u[2]=[1e+00, 1e+00] +booFil.u[3]=[0e+00, 0e+00] +booFil.y[1]=[1e+00, 1e+00] +booFil.y[2]=[0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorReplicator.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorReplicator.txt new file mode 100644 index 0000000000..9d13cdae4c --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_BooleanVectorReplicator.txt @@ -0,0 +1,12 @@ +last-generated=2021-06-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +booRep.u[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booRep.y[1, 1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booRep.y[2, 2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +booRep.y[3, 2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractSignal.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractSignal.txt new file mode 100644 index 0000000000..487d0525af --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractSignal.txt @@ -0,0 +1,20 @@ +last-generated=2022-10-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +extIntSig.u[1]=[1e+00, 1e+00] +extIntSig.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIntSig.u[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880790951923e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99976158545649e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIntSig.u[4]=[4e+00, 4e+00] +extIntSig.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880790951923e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99976158545649e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIntSig.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIntSig.y[3]=[4e+00, 4e+00] +extIntSig1.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880790951923e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99976158545649e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIntSig1.y[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIntSig1.y[3]=[4e+00, 4e+00] +extIntSig1.y[4]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIntSig1.y[5]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880790951923e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99976158545649e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractor.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractor.txt new file mode 100644 index 0000000000..4a7d27356b --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerExtractor.txt @@ -0,0 +1,22 @@ +last-generated=2022-10-12 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +extIndInt.u[1]=[0e+00, 0e+00] +extIndInt.u[2]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndInt.u[3]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880790951923e-01, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99976158545649e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +extIndInt.u[4]=[4e+00, 4e+00] +extIndInt.index=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +extIndInt.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364401e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999880792728245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndInt1.index=[6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +extIndInt1.y=[4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00, 4e+00] +extIndInt2.index=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndInt2.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndInt3.index=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] +extIndInt3.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndInt4.index=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +extIndInt4.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -9.99976158545649e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerScalarReplicator.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerScalarReplicator.txt new file mode 100644 index 0000000000..7dbcc61e61 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerScalarReplicator.txt @@ -0,0 +1,13 @@ +last-generated=2017-07-25 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +ram.y=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +time=[0e+00, 1e+00] +reaToInt.y=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intRep.y[1]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intRep.y[2]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intRep.y[3]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorFilter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorFilter.txt new file mode 100644 index 0000000000..cb46360ea9 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorFilter.txt @@ -0,0 +1,13 @@ +last-generated=2021-06-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +intFil.u[1]=[1e+00, 1e+00] +intFil.u[2]=[2e+00, 2e+00] +intFil.u[3]=[3e+00, 3e+00] +intFil.y[1]=[1e+00, 1e+00] +intFil.y[2]=[3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorReplicator.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorReplicator.txt new file mode 100644 index 0000000000..21a991457e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_IntegerVectorReplicator.txt @@ -0,0 +1,13 @@ +last-generated=2021-06-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +ram[1].y=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980225988213903e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +reaToInt[1].y=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intRep.y[1, 1]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intRep.y[2, 2]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +intRep.y[3, 2]=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000596036356e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2.000011920727176e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractSignal.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractSignal.txt new file mode 100644 index 0000000000..7be69a0c20 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractSignal.txt @@ -0,0 +1,22 @@ +last-generated=2022-10-14 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +extSig.u[1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +extSig.u[2]=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.9999701981822e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extSig.u[3]=[1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299991011771211e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299982071226054e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01] +extSig.u[4]=[-1e+00, -9.599999776482632e-01, -9.200000149011579e-01, -8.79999992549417e-01, -8.399999701976976e-01, -8.000000149011668e-01, -7.599999850988288e-01, -7.200000298023179e-01, -6.799999999999999e-01, -6.4e-01, -6.00000029802278e-01, -5.600000000000001e-01, -5.199999701977576e-01, -4.799999701977486e-01, -4.399999999999999e-01, -4.000000298022336e-01, -3.6e-01, -3.2e-01, -2.800000298022158e-01, -2.399999850988566e-01, -2.000000149011389e-01, -1.599999701977265e-01, -1.199999925494327e-01, -8.000001490113007e-02, -3.99999776483082e-02, 6.661338147750939e-16, 4.000003725283197e-02, 7.999995529659643e-02, 1.199999925494328e-01, 1.600000298022601e-01, 1.999999552966052e-01, 2.399999850988566e-01, 2.800000298022158e-01, 3.199999403955507e-01, 3.600000000000001e-01, 4.000000298022335e-01, 4.399999403955683e-01, 4.799999701977486e-01, 5.2e-01, 5.600000596046448e-01, 6.000000000000001e-01, 6.399999999999999e-01, 6.800000596046447e-01, 7.2e-01, 7.6e-01, 8.000000596046448e-01, 8.39999940395604e-01, 8.799999999999999e-01, 9.20000059604325e-01, 9.599999403956394e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00] +extSig.u[5]=[-2e+00, -1.970000027939673e+00, -1.940000055879345e+00, -1.90999996460977e+00, -1.879999992549401e+00, -1.850000026077003e+00, -1.820000048428746e+00, -1.789999962747105e+00, -1.759999985098812e+00, -1.730000029802162e+00, -1.700000052153998e+00, -1.669999955296543e+00, -1.639999977648218e+00, -1.609999999999929e+00, -1.580000044703457e+00, -1.549999970197766e+00, -1.519999970197838e+00, -1.490000014901188e+00, -1.460000059604325e+00, -1.429999940395462e+00, -1.399999985098883e+00, -1.369999985098741e+00, -1.340000029802305e+00, -1.309999955296579e+00, -1.279999955296756e+00, -1.25e+00, -1.219999999999858e+00, -1.190000089406487e+00, -1.159999970197695e+00, -1.129999970197553e+00, -1.100000059604112e+00, -1.070000059604538e+00, -1.039999940395675e+00, -1.010000029802518e+00, -9.800000298022691e-01, -9.499999701977665e-01, -9.200000596044317e-01, -8.900000000000711e-01, -8.599999999999289e-01, -8.299999403955683e-01, -8.000000298022335e-01, -7.699999701977309e-01, -7.39999970197873e-01, -7.100000000001065e-01, -6.800000000000355e-01, -6.499999403955328e-01, -6.200000298021979e-01, -5.899999701976955e-01, -5.599999701978375e-01, -5.300000000001421e-01, -5e-01, -4.699999701981039e-01, -4.399999403962078e-01, -4.09999910594738e-01, -3.800000596036854e-01, -3.500000298017893e-01, -3.200000000001064e-01, -2.899999701981041e-01, -2.599999403963501e-01, -2.299999254955619e-01, -2.000000745045626e-01, -1.700000447027376e-01, -1.400000149009125e-01, -1.099999850990875e-01, -7.999995529726243e-02, -4.999992922068328e-02, -2.000007822977725e-02, 9.999949709432063e-03, 3.999997764863138e-02, 7.000000745066925e-02, 1.000000372522811e-01, 1.300000596036855e-01, 1.599999105945249e-01, 1.899999403963499e-01, 2.19999970198175e-01, 2.5e-01, 2.800000298018961e-01, 3.100000596037922e-01, 3.40000089405262e-01, 3.699999403963146e-01, 3.999999701982107e-01, 4.299999999998936e-01, 4.600000298018959e-01, 4.900000596036499e-01, 5.200000596038631e-01, 5.499999403967762e-01, 5.799999403962078e-01, 6.100000000001421e-01, 6.399999999998579e-01, 6.700000596037922e-01, 7.000000596032238e-01, 7.299999403961369e-01, 7.599999403963501e-01, 7.900000000002133e-01, 8.200000000000709e-01, 8.500000596039341e-01, 8.800000596033657e-01, 9.099999403962078e-01, 9.39999940396492e-01, 9.700000000002842e-01, 1e+00] +extSig.y[1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +extSig.y[2]=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.9999701981822e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extSig.y[3]=[-2e+00, -1.970000027939673e+00, -1.940000055879345e+00, -1.90999996460977e+00, -1.879999992549401e+00, -1.850000026077003e+00, -1.820000048428746e+00, -1.789999962747105e+00, -1.759999985098812e+00, -1.730000029802162e+00, -1.700000052153998e+00, -1.669999955296543e+00, -1.639999977648218e+00, -1.609999999999929e+00, -1.580000044703457e+00, -1.549999970197766e+00, -1.519999970197838e+00, -1.490000014901188e+00, -1.460000059604325e+00, -1.429999940395462e+00, -1.399999985098883e+00, -1.369999985098741e+00, -1.340000029802305e+00, -1.309999955296579e+00, -1.279999955296756e+00, -1.25e+00, -1.219999999999858e+00, -1.190000089406487e+00, -1.159999970197695e+00, -1.129999970197553e+00, -1.100000059604112e+00, -1.070000059604538e+00, -1.039999940395675e+00, -1.010000029802518e+00, -9.800000298022691e-01, -9.499999701977665e-01, -9.200000596044317e-01, -8.900000000000711e-01, -8.599999999999289e-01, -8.299999403955683e-01, -8.000000298022335e-01, -7.699999701977309e-01, -7.39999970197873e-01, -7.100000000001065e-01, -6.800000000000355e-01, -6.499999403955328e-01, -6.200000298021979e-01, -5.899999701976955e-01, -5.599999701978375e-01, -5.300000000001421e-01, -5e-01, -4.699999701981039e-01, -4.399999403962078e-01, -4.09999910594738e-01, -3.800000596036854e-01, -3.500000298017893e-01, -3.200000000001064e-01, -2.899999701981041e-01, -2.599999403963501e-01, -2.299999254955619e-01, -2.000000745045626e-01, -1.700000447027376e-01, -1.400000149009125e-01, -1.099999850990875e-01, -7.999995529726243e-02, -4.999992922068328e-02, -2.000007822977725e-02, 9.999949709432063e-03, 3.999997764863138e-02, 7.000000745066925e-02, 1.000000372522811e-01, 1.300000596036855e-01, 1.599999105945249e-01, 1.899999403963499e-01, 2.19999970198175e-01, 2.5e-01, 2.800000298018961e-01, 3.100000596037922e-01, 3.40000089405262e-01, 3.699999403963146e-01, 3.999999701982107e-01, 4.299999999998936e-01, 4.600000298018959e-01, 4.900000596036499e-01, 5.200000596038631e-01, 5.499999403967762e-01, 5.799999403962078e-01, 6.100000000001421e-01, 6.399999999998579e-01, 6.700000596037922e-01, 7.000000596032238e-01, 7.299999403961369e-01, 7.599999403963501e-01, 7.900000000002133e-01, 8.200000000000709e-01, 8.500000596039341e-01, 8.800000596033657e-01, 9.099999403962078e-01, 9.39999940396492e-01, 9.700000000002842e-01, 1e+00] +extSig1.y[1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +extSig1.y[2]=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.9999701981822e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extSig1.y[3]=[-2e+00, -1.970000027939673e+00, -1.940000055879345e+00, -1.90999996460977e+00, -1.879999992549401e+00, -1.850000026077003e+00, -1.820000048428746e+00, -1.789999962747105e+00, -1.759999985098812e+00, -1.730000029802162e+00, -1.700000052153998e+00, -1.669999955296543e+00, -1.639999977648218e+00, -1.609999999999929e+00, -1.580000044703457e+00, -1.549999970197766e+00, -1.519999970197838e+00, -1.490000014901188e+00, -1.460000059604325e+00, -1.429999940395462e+00, -1.399999985098883e+00, -1.369999985098741e+00, -1.340000029802305e+00, -1.309999955296579e+00, -1.279999955296756e+00, -1.25e+00, -1.219999999999858e+00, -1.190000089406487e+00, -1.159999970197695e+00, -1.129999970197553e+00, -1.100000059604112e+00, -1.070000059604538e+00, -1.039999940395675e+00, -1.010000029802518e+00, -9.800000298022691e-01, -9.499999701977665e-01, -9.200000596044317e-01, -8.900000000000711e-01, -8.599999999999289e-01, -8.299999403955683e-01, -8.000000298022335e-01, -7.699999701977309e-01, -7.39999970197873e-01, -7.100000000001065e-01, -6.800000000000355e-01, -6.499999403955328e-01, -6.200000298021979e-01, -5.899999701976955e-01, -5.599999701978375e-01, -5.300000000001421e-01, -5e-01, -4.699999701981039e-01, -4.399999403962078e-01, -4.09999910594738e-01, -3.800000596036854e-01, -3.500000298017893e-01, -3.200000000001064e-01, -2.899999701981041e-01, -2.599999403963501e-01, -2.299999254955619e-01, -2.000000745045626e-01, -1.700000447027376e-01, -1.400000149009125e-01, -1.099999850990875e-01, -7.999995529726243e-02, -4.999992922068328e-02, -2.000007822977725e-02, 9.999949709432063e-03, 3.999997764863138e-02, 7.000000745066925e-02, 1.000000372522811e-01, 1.300000596036855e-01, 1.599999105945249e-01, 1.899999403963499e-01, 2.19999970198175e-01, 2.5e-01, 2.800000298018961e-01, 3.100000596037922e-01, 3.40000089405262e-01, 3.699999403963146e-01, 3.999999701982107e-01, 4.299999999998936e-01, 4.600000298018959e-01, 4.900000596036499e-01, 5.200000596038631e-01, 5.499999403967762e-01, 5.799999403962078e-01, 6.100000000001421e-01, 6.399999999998579e-01, 6.700000596037922e-01, 7.000000596032238e-01, 7.299999403961369e-01, 7.599999403963501e-01, 7.900000000002133e-01, 8.200000000000709e-01, 8.500000596039341e-01, 8.800000596033657e-01, 9.099999403962078e-01, 9.39999940396492e-01, 9.700000000002842e-01, 1e+00] +extSig1.y[4]=[1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299991011771211e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299982071226054e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01] +extSig1.y[5]=[-1e+00, -9.599999776482632e-01, -9.200000149011579e-01, -8.79999992549417e-01, -8.399999701976976e-01, -8.000000149011668e-01, -7.599999850988288e-01, -7.200000298023179e-01, -6.799999999999999e-01, -6.4e-01, -6.00000029802278e-01, -5.600000000000001e-01, -5.199999701977576e-01, -4.799999701977486e-01, -4.399999999999999e-01, -4.000000298022336e-01, -3.6e-01, -3.2e-01, -2.800000298022158e-01, -2.399999850988566e-01, -2.000000149011389e-01, -1.599999701977265e-01, -1.199999925494327e-01, -8.000001490113007e-02, -3.99999776483082e-02, 6.661338147750939e-16, 4.000003725283197e-02, 7.999995529659643e-02, 1.199999925494328e-01, 1.600000298022601e-01, 1.999999552966052e-01, 2.399999850988566e-01, 2.800000298022158e-01, 3.199999403955507e-01, 3.600000000000001e-01, 4.000000298022335e-01, 4.399999403955683e-01, 4.799999701977486e-01, 5.2e-01, 5.600000596046448e-01, 6.000000000000001e-01, 6.399999999999999e-01, 6.800000596046447e-01, 7.2e-01, 7.6e-01, 8.000000596046448e-01, 8.39999940395604e-01, 8.799999999999999e-01, 9.20000059604325e-01, 9.599999403956394e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00] +extSig1.y[6]=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.9999701981822e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractor.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractor.txt new file mode 100644 index 0000000000..bd436e9e8a --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealExtractor.txt @@ -0,0 +1,22 @@ +last-generated=2022-10-14 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +extIndSig.u[1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +extIndSig.u[2]=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.9999701981822e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndSig.u[3]=[1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299991011771211e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299982071226054e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01] +extIndSig.u[4]=[-1e+00, -9.599999776482632e-01, -9.200000149011579e-01, -8.79999992549417e-01, -8.399999701976976e-01, -8.000000149011668e-01, -7.599999850988288e-01, -7.200000298023179e-01, -6.799999999999999e-01, -6.4e-01, -6.00000029802278e-01, -5.600000000000001e-01, -5.199999701977576e-01, -4.799999701977486e-01, -4.399999999999999e-01, -4.000000298022336e-01, -3.6e-01, -3.2e-01, -2.800000298022158e-01, -2.399999850988566e-01, -2.000000149011389e-01, -1.599999701977265e-01, -1.199999925494327e-01, -8.000001490113007e-02, -3.99999776483082e-02, 6.661338147750939e-16, 4.000003725283197e-02, 7.999995529659643e-02, 1.199999925494328e-01, 1.600000298022601e-01, 1.999999552966052e-01, 2.399999850988566e-01, 2.800000298022158e-01, 3.199999403955507e-01, 3.600000000000001e-01, 4.000000298022335e-01, 4.399999403955683e-01, 4.799999701977486e-01, 5.2e-01, 5.600000596046448e-01, 6.000000000000001e-01, 6.399999999999999e-01, 6.800000596046447e-01, 7.2e-01, 7.6e-01, 8.000000596046448e-01, 8.39999940395604e-01, 8.799999999999999e-01, 9.20000059604325e-01, 9.599999403956394e-01, 1e+00, 1.039999999999432e+00, 1.080000119208153e+00, 1.120000119207584e+00, 1.15999988079199e+00, 1.200000000000711e+00, 1.239999999999858e+00, 1.279999999999573e+00, 1.3200001192073e+00, 1.360000119207726e+00, 1.399999880792131e+00, 1.440000000000853e+00, 1.480000000000284e+00, 1.519999999999716e+00, 1.559999999999147e+00, 1.600000119207869e+00, 1.639999880792274e+00, 1.6799998807927e+00, 1.720000000000427e+00, 1.760000000000142e+00, 1.799999999999289e+00, 1.84000011920801e+00, 1.879999880792416e+00, 1.919999880791847e+00, 1.960000000000568e+00, 2e+00, 2.04e+00, 2.08e+00, 2.12e+00, 2.16e+00, 2.2e+00, 2.24e+00, 2.28e+00, 2.32e+00, 2.36e+00, 2.4e+00, 2.44e+00, 2.48e+00, 2.52e+00, 2.56e+00, 2.6e+00, 2.64e+00, 2.68e+00, 2.72e+00, 2.76e+00, 2.8e+00, 2.84e+00, 2.88e+00, 2.92e+00, 2.96e+00, 3e+00] +extIndSig.index=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +extIndSig.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.9999701981822e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndSig1.index=[6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +extIndSig1.y=[-2e+00, -1.970000027939673e+00, -1.940000055879345e+00, -1.90999996460977e+00, -1.879999992549401e+00, -1.850000026077003e+00, -1.820000048428746e+00, -1.789999962747105e+00, -1.759999985098812e+00, -1.730000029802162e+00, -1.700000052153998e+00, -1.669999955296543e+00, -1.639999977648218e+00, -1.609999999999929e+00, -1.580000044703457e+00, -1.549999970197766e+00, -1.519999970197838e+00, -1.490000014901188e+00, -1.460000059604325e+00, -1.429999940395462e+00, -1.399999985098883e+00, -1.369999985098741e+00, -1.340000029802305e+00, -1.309999955296579e+00, -1.279999955296756e+00, -1.25e+00, -1.219999999999858e+00, -1.190000089406487e+00, -1.159999970197695e+00, -1.129999970197553e+00, -1.100000059604112e+00, -1.070000059604538e+00, -1.039999940395675e+00, -1.010000029802518e+00, -9.800000298022691e-01, -9.499999701977665e-01, -9.200000596044317e-01, -8.900000000000711e-01, -8.599999999999289e-01, -8.299999403955683e-01, -8.000000298022335e-01, -7.699999701977309e-01, -7.39999970197873e-01, -7.100000000001065e-01, -6.800000000000355e-01, -6.499999403955328e-01, -6.200000298021979e-01, -5.899999701976955e-01, -5.599999701978375e-01, -5.300000000001421e-01, -5e-01, -4.699999701981039e-01, -4.399999403962078e-01, -4.09999910594738e-01, -3.800000596036854e-01, -3.500000298017893e-01, -3.200000000001064e-01, -2.899999701981041e-01, -2.599999403963501e-01, -2.299999254955619e-01, -2.000000745045626e-01, -1.700000447027376e-01, -1.400000149009125e-01, -1.099999850990875e-01, -7.999995529726243e-02, -4.999992922068328e-02, -2.000007822977725e-02, 9.999949709432063e-03, 3.999997764863138e-02, 7.000000745066925e-02, 1.000000372522811e-01, 1.300000596036855e-01, 1.599999105945249e-01, 1.899999403963499e-01, 2.19999970198175e-01, 2.5e-01, 2.800000298018961e-01, 3.100000596037922e-01, 3.40000089405262e-01, 3.699999403963146e-01, 3.999999701982107e-01, 4.299999999998936e-01, 4.600000298018959e-01, 4.900000596036499e-01, 5.200000596038631e-01, 5.499999403967762e-01, 5.799999403962078e-01, 6.100000000001421e-01, 6.399999999998579e-01, 6.700000596037922e-01, 7.000000596032238e-01, 7.299999403961369e-01, 7.599999403963501e-01, 7.900000000002133e-01, 8.200000000000709e-01, 8.500000596039341e-01, 8.800000596033657e-01, 9.099999403962078e-01, 9.39999940396492e-01, 9.700000000002842e-01, 1e+00] +extIndSig2.index=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +extIndSig2.y=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +extIndSig3.index=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00] +extIndSig3.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +extIndSig4.index=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +extIndSig4.y=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299991011771211e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299999952316284e+00, 1.299982071226054e+00, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01, -2.000000029802322e-01] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealScalarReplicator.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealScalarReplicator.txt new file mode 100644 index 0000000000..6263174260 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealScalarReplicator.txt @@ -0,0 +1,12 @@ +last-generated=2017-07-25 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +reaRep.u=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +time=[0e+00, 1e+00] +reaRep.y[1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +reaRep.y[2]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +reaRep.y[3]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980226121440666e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorFilter.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorFilter.txt new file mode 100644 index 0000000000..5d9c676d30 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorFilter.txt @@ -0,0 +1,13 @@ +last-generated=2021-06-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +reaFil.u[1]=[1e+00, 1e+00] +reaFil.u[2]=[2e+00, 2e+00] +reaFil.u[3]=[3e+00, 3e+00] +reaFil.y[1]=[1e+00, 1e+00] +reaFil.y[2]=[3e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorReplicator.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorReplicator.txt new file mode 100644 index 0000000000..5ec9c5a39e --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Routing_Validation_RealVectorReplicator.txt @@ -0,0 +1,12 @@ +last-generated=2021-06-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +reaRep.u[1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980225988213903e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +reaRep.y[1, 1]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980225988213903e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +reaRep.y[2, 2]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980225988213903e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] +reaRep.y[3, 2]=[-2e+00, -1.95000004656613e+00, -1.89999997392297e+00, -1.850000020489104e+00, -1.799999947845941e+00, -1.750000003725286e+00, -1.700000040978201e+00, -1.649999977648259e+00, -1.600000014901188e+00, -1.549999970197624e+00, -1.500000007450558e+00, -1.450000044703492e+00, -1.399999962747137e+00, -1.350000000000071e+00, -1.299999955296507e+00, -1.250000029802234e+00, -1.200000029802376e+00, -1.149999985098812e+00, -1.100000059604538e+00, -1.049999940395391e+00, -1.000000014901117e+00, -9.499999552966142e-01, -8.999999701976954e-01, -8.500000447034214e-01, -7.999999850989188e-01, -7.5e-01, -6.999999403954973e-01, -6.500000298024822e-01, -6.000000298023045e-01, -5.49999970197802e-01, -5.000000596044671e-01, -4.5e-01, -3.999999701976776e-01, -3.500000596046447e-01, -3.00000029802269e-01, -2.499999701977221e-01, -2.000000745055929e-01, -1.500000298022514e-01, -9.999997764831148e-02, -4.999992921961749e-02, -2.980225988213903e-08, 5.00000186264114e-02, 1.000000670550787e-01, 1.499999701977309e-01, 2.000000149011257e-01, 2.500000596044672e-01, 2.999999701976777e-01, 3.499999999999999e-01, 4.000000596044848e-01, 4.499999403954973e-01, 5e-01, 5.500000596037922e-01, 6.000001192075843e-01, 6.500001192075844e-01, 6.999998807926291e-01, 7.499999403964213e-01, 7.999999999998582e-01, 8.50000059604005e-01, 9.000000596036498e-01, 9.500001192069446e-01, 9.99999880792842e-01, 1.049999880791989e+00, 1.100000000000426e+00, 1.149999999999574e+00, 1.200000119208011e+00, 1.250000119207158e+00, 1.299999821188411e+00, 1.349999940396847e+00, 1.399999940395995e+00, 1.450000059604787e+00, 1.500000059603579e+00, 1.550000059602726e+00, 1.599999880793268e+00, 1.649999880792416e+00, 1.700000000000853e+00, 1.75e+00, 1.799999999999147e+00, 1.850000119207584e+00, 1.900000119206732e+00, 1.949999940397274e+00, 1.999999940396421e+00, 2.049999940395213e+00, 2.099999940394715e+00, 2.150000178812442e+00, 2.200000178811589e+00, 2.249999880792842e+00, 2.299999880791989e+00, 2.349999880791137e+00, 2.400000119208863e+00, 2.450000119208011e+00, 2.500000119207158e+00, 2.549999821188411e+00, 2.599999821187558e+00, 2.650000059605285e+00, 2.700000059604787e+00, 2.750000059603579e+00, 2.800000059602726e+00, 2.849999761583978e+00, 2.900000000001705e+00, 2.950000000000852e+00, 3e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_Assert.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_Assert.txt new file mode 100644 index 0000000000..fa3676f443 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_Assert.txt @@ -0,0 +1,9 @@ +last-generated=2018-07-13 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +assert.u=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSet.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSet.txt new file mode 100644 index 0000000000..92ceab0879 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSet.txt @@ -0,0 +1,20 @@ +last-generated=2022-01-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 3.1536e+07] +sunRiseSetArctic.nextSunRise=[2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.63381025e+06, 2.88969725e+06, 3.2331195e+06, 3.490975e+06, 3.834971e+06, 4.17909625e+06, 4.437246e+06, 4.781496e+06, 5.1257885e+06, 5.384027e+06, 5.728365e+06, 6.072718e+06, 6.3309895e+06, 6.6753565e+06, 7.019726e+06, 7.2780025e+06, 7.6223665e+06, 7.9667225e+06, 8.224981e+06, 8.569311e+06, 8.913617e+06, 9.171825e+06, 9.516067e+06, 9.860251e+06, 1.0118336e+07, 1.0462344e+07, 1.0806156e+07, 1.1063772e+07, 1.1406247e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.8404958e+07, 1.866682e+07, 1.8927732e+07, 1.927516e+07, 1.962233e+07, 1.9882604e+07, 2.0229542e+07, 2.0576398e+07, 2.08365e+07, 2.1183264e+07, 2.1529992e+07, 2.1790022e+07, 2.2136712e+07, 2.2396722e+07, 2.2743396e+07, 2.3090074e+07, 2.3350086e+07, 2.3696784e+07, 2.4043502e+07, 2.430356e+07, 2.4650338e+07, 2.4997164e+07, 2.5257322e+07, 2.5604268e+07, 2.5864544e+07, 2.6211702e+07, 2.6559072e+07, 2.681985e+07, 2.7168508e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07, 3.4169436e+07] +sunRiseSetArctic.nextSunSet=[2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.63677075e+06, 2.8994075e+06, 3.160341e+06, 3.507811e+06, 3.8550245e+06, 4.11533025e+06, 4.4623075e+06, 4.809202e+06, 5.069331e+06, 5.416126e+06, 5.7628825e+06, 6.02293e+06, 6.369641e+06, 6.6296635e+06, 6.9763525e+06, 7.3230385e+06, 7.5830555e+06, 7.9297545e+06, 8.27647e+06, 8.536523e+06, 8.88329e+06, 9.230101e+06, 9.490246e+06, 9.837172e+06, 1.009743e+07, 1.0444561e+07, 1.0791906e+07, 1.1052669e+07, 1.1401365e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.840076e+07, 1.8657282e+07, 1.9000628e+07, 1.9258438e+07, 1.960238e+07, 1.9946458e+07, 2.0204572e+07, 2.0548782e+07, 2.0893036e+07, 2.115125e+07, 2.1495558e+07, 2.1839886e+07, 2.2098142e+07, 2.244249e+07, 2.2786848e+07, 2.3045116e+07, 2.3389476e+07, 2.3733832e+07, 2.3992094e+07, 2.4336432e+07, 2.468075e+07, 2.4938972e+07, 2.5283234e+07, 2.5627446e+07, 2.5885554e+07, 2.6229598e+07, 2.6573452e+07, 2.683111e+07, 2.7173708e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07, 3.4173204e+07] +sunRiseSetArctic.sunUp=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +sunRiseSetSf.nextSunRise=[2.6792416015625e+04, 3.724201875e+05, 6.316188125e+05, 9.771905625e+05, 1.32273225e+06, 1.581869125e+06, 1.92735975e+06, 2.2728225e+06, 2.53190175e+06, 2.8773185e+06, 3.22271075e+06, 3.48174e+06, 3.82709325e+06, 4.17242675e+06, 4.431415e+06, 4.7767175e+06, 5.1220055e+06, 5.380963e+06, 5.7262295e+06, 6.0714865e+06, 6.3304245e+06, 6.67567e+06, 7.0209115e+06, 7.2798415e+06, 7.6250815e+06, 7.884013e+06, 8.229258e+06, 8.574508e+06, 8.833451e+06, 9.178717e+06, 9.523993e+06, 9.782959e+06, 1.012826e+07, 1.0473576e+07, 1.0732576e+07, 1.1077925e+07, 1.1423295e+07, 1.1682338e+07, 1.2027748e+07, 1.2373184e+07, 1.2632278e+07, 1.2977759e+07, 1.3323269e+07, 1.3582419e+07, 1.3927977e+07, 1.4273564e+07, 1.4532772e+07, 1.4878406e+07, 1.5137649e+07, 1.5483328e+07, 1.582903e+07, 1.608832e+07, 1.6434056e+07, 1.677981e+07, 1.7039134e+07, 1.738491e+07, 1.7730696e+07, 1.799004e+07, 1.8335836e+07, 1.8681636e+07, 1.8940988e+07, 1.928679e+07, 1.9632592e+07, 1.9891942e+07, 2.0237742e+07, 2.058354e+07, 2.0842886e+07, 2.118868e+07, 2.1448026e+07, 2.1793818e+07, 2.2139612e+07, 2.2398956e+07, 2.2744752e+07, 2.309055e+07, 2.3349902e+07, 2.3695706e+07, 2.4041516e+07, 2.4300878e+07, 2.46467e+07, 2.4992528e+07, 2.5251904e+07, 2.5597744e+07, 2.5943588e+07, 2.6202976e+07, 2.654883e+07, 2.6808224e+07, 2.7154082e+07, 2.749994e+07, 2.7759332e+07, 2.8105184e+07, 2.8451028e+07, 2.8710404e+07, 2.905623e+07, 2.9402038e+07, 2.9661382e+07, 3.0007156e+07, 3.0352908e+07, 3.0612206e+07, 3.095791e+07, 3.1303588e+07, 3.1562826e+07] +sunRiseSetSf.nextSunSet=[6.100040625e+04, 3.203701875e+05, 6.66171625e+05, 1.01198925e+06, 1.27136125e+06, 1.617200125e+06, 1.96304725e+06, 2.22243625e+06, 2.5682915e+06, 2.91414775e+06, 3.17353975e+06, 3.519394e+06, 3.86524475e+06, 4.12463e+06, 4.4704725e+06, 4.8163095e+06, 5.0756835e+06, 5.421511e+06, 5.680878e+06, 6.0266965e+06, 6.372511e+06, 6.631869e+06, 6.977678e+06, 7.3234855e+06, 7.58284e+06, 7.9286465e+06, 8.2744535e+06, 8.53381e+06, 8.879619e+06, 9.225431e+06, 9.484792e+06, 9.830608e+06, 1.0176426e+07, 1.043579e+07, 1.0781609e+07, 1.1040974e+07, 1.1386791e+07, 1.1732604e+07, 1.1991961e+07, 1.2337763e+07, 1.2683554e+07, 1.294289e+07, 1.3288657e+07, 1.3634408e+07, 1.3893707e+07, 1.423942e+07, 1.4585109e+07, 1.4844359e+07, 1.5190001e+07, 1.5535614e+07, 1.5794804e+07, 1.6140366e+07, 1.6399517e+07, 1.6745026e+07, 1.7090504e+07, 1.7349596e+07, 1.7695026e+07, 1.804043e+07, 1.8299466e+07, 1.8644828e+07, 1.8990166e+07, 1.9249158e+07, 1.9594462e+07, 1.993975e+07, 2.0198706e+07, 2.054397e+07, 2.0889222e+07, 2.1148154e+07, 2.1493392e+07, 2.1838624e+07, 2.2097546e+07, 2.2442774e+07, 2.2788004e+07, 2.3046926e+07, 2.3392162e+07, 2.3737404e+07, 2.399634e+07, 2.4341598e+07, 2.460055e+07, 2.494583e+07, 2.5291126e+07, 2.5550108e+07, 2.5895436e+07, 2.6240784e+07, 2.6499808e+07, 2.6845194e+07, 2.7190606e+07, 2.744968e+07, 2.7795138e+07, 2.8140622e+07, 2.8399754e+07, 2.8745288e+07, 2.9090854e+07, 2.9350046e+07, 2.9695664e+07, 3.004131e+07, 3.0300564e+07, 3.064626e+07, 3.0905548e+07, 3.125129e+07, 3.1597054e+07] +sunRiseSetSf.sunUp=[0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00] +sunRiseSetAntarctic.nextSunRise=[3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.54663475e+06, 3.808946e+06, 4.15711275e+06, 4.417872e+06, 4.7653025e+06, 5.112556e+06, 5.372918e+06, 5.719993e+06, 6.067007e+06, 6.3272395e+06, 6.674192e+06, 7.021129e+06, 7.2813305e+06, 7.628273e+06, 7.8884935e+06, 8.235484e+06, 8.582527e+06, 8.842856e+06, 9.190054e+06, 9.537404e+06, 9.798073e+06, 1.0146011e+07, 1.0407642e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.930895e+07, 1.9564998e+07, 1.9907952e+07, 2.0251428e+07, 2.0509202e+07, 2.0853038e+07, 2.1196974e+07, 2.1454974e+07, 2.1799018e+07, 2.2143096e+07, 2.2401168e+07, 2.2745278e+07, 2.3089394e+07, 2.3347476e+07, 2.3691574e+07, 2.4035648e+07, 2.4293678e+07, 2.463767e+07, 2.4981576e+07, 2.5239422e+07, 2.5583038e+07, 2.5926268e+07, 2.618305e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07, 3.508222e+07] +sunRiseSetAntarctic.nextSunSet=[3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.54135425e+06, 3.7975315e+06, 4.14055975e+06, 4.4840885e+06, 4.7418975e+06, 5.0857725e+06, 5.429745e+06, 5.6877675e+06, 6.0318375e+06, 6.375937e+06, 6.6340245e+06, 6.978148e+06, 7.322271e+06, 7.5803575e+06, 7.9244565e+06, 8.2685255e+06, 8.526549e+06, 8.870526e+06, 9.214412e+06, 9.47224e+06, 9.815823e+06, 1.0159006e+07, 1.0415718e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9313894e+07, 1.9576208e+07, 1.9924354e+07, 2.018509e+07, 2.0532488e+07, 2.087971e+07, 2.1140048e+07, 2.1487096e+07, 2.1834086e+07, 2.2094304e+07, 2.2441238e+07, 2.2788164e+07, 2.3048358e+07, 2.3395294e+07, 2.3655514e+07, 2.4002506e+07, 2.4349554e+07, 2.460989e+07, 2.49571e+07, 2.5304464e+07, 2.5565142e+07, 2.591309e+07, 2.6262256e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07, 3.5077808e+07] +sunRiseSetAntarctic.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +sunRiseSetSyd.nextSunRise=[1.7566767578125e+04, 3.633510625e+05, 7.0914275e+05, 9.68495375e+05, 1.314308375e+06, 1.66013e+06, 1.91950025e+06, 2.2653305e+06, 2.52470475e+06, 2.87053675e+06, 3.21636725e+06, 3.47573825e+06, 3.8215625e+06, 4.16738175e+06, 4.4267425e+06, 4.772552e+06, 5.118355e+06, 5.3777035e+06, 5.723497e+06, 6.0692855e+06, 6.3286235e+06, 6.6744055e+06, 7.020184e+06, 7.279517e+06, 7.625294e+06, 7.8846265e+06, 8.2304035e+06, 8.576182e+06, 8.835518e+06, 9.1813e+06, 9.527086e+06, 9.786426e+06, 1.0132216e+07, 1.0478008e+07, 1.0737353e+07, 1.1083146e+07, 1.1428938e+07, 1.1688281e+07, 1.2034067e+07, 1.2379848e+07, 1.2639177e+07, 1.2984941e+07, 1.3330692e+07, 1.3589996e+07, 1.3935718e+07, 1.4194998e+07, 1.4540685e+07, 1.4886349e+07, 1.5145582e+07, 1.5491202e+07, 1.5836796e+07, 1.6095974e+07, 1.6441521e+07, 1.678704e+07, 1.7046162e+07, 1.7391634e+07, 1.7737082e+07, 1.799615e+07, 1.8341556e+07, 1.8686938e+07, 1.8945962e+07, 1.9291308e+07, 1.9636638e+07, 1.9895626e+07, 2.0240928e+07, 2.0499898e+07, 2.084518e+07, 2.1190452e+07, 2.1449402e+07, 2.1794664e+07, 2.2139924e+07, 2.2398866e+07, 2.2744126e+07, 2.3089386e+07, 2.3348334e+07, 2.3693604e+07, 2.4038884e+07, 2.4297848e+07, 2.4643146e+07, 2.4988458e+07, 2.524745e+07, 2.559279e+07, 2.5938148e+07, 2.6197178e+07, 2.654257e+07, 2.6887986e+07, 2.7147062e+07, 2.749252e+07, 2.7838002e+07, 2.809713e+07, 2.8442658e+07, 2.8701822e+07, 2.9047398e+07, 2.9393002e+07, 2.9652222e+07, 2.9997872e+07, 3.0343548e+07, 3.0602822e+07, 3.094854e+07, 3.129428e+07, 3.1553598e+07] +sunRiseSetSyd.nextSunSet=[6.87860546875e+04, 3.280208125e+05, 6.7363075e+05, 1.0192130625e+06, 1.278381625e+06, 1.62391575e+06, 1.969423125e+06, 2.2285365e+06, 2.57399875e+06, 2.91943675e+06, 3.1785e+06, 3.5238985e+06, 3.86927625e+06, 4.128297e+06, 4.4736425e+06, 4.732641e+06, 5.07796e+06, 5.4232655e+06, 5.6822375e+06, 6.027525e+06, 6.372805e+06, 6.6317615e+06, 6.977033e+06, 7.322303e+06, 7.581255e+06, 7.9265265e+06, 8.2718015e+06, 8.530761e+06, 8.876048e+06, 9.221343e+06, 9.480322e+06, 9.825638e+06, 1.0170968e+07, 1.0429976e+07, 1.0775335e+07, 1.1120712e+07, 1.1379759e+07, 1.1725172e+07, 1.1984246e+07, 1.2329699e+07, 1.2675176e+07, 1.29343e+07, 1.3279821e+07, 1.3625367e+07, 1.3884543e+07, 1.4230134e+07, 1.4575749e+07, 1.4834976e+07, 1.5180633e+07, 1.552631e+07, 1.5785582e+07, 1.6131293e+07, 1.647702e+07, 1.6736324e+07, 1.7082074e+07, 1.7427832e+07, 1.7687156e+07, 1.8032926e+07, 1.8292258e+07, 1.8638032e+07, 1.898381e+07, 1.9243142e+07, 1.9588916e+07, 1.993469e+07, 2.0194018e+07, 2.0539788e+07, 2.0885554e+07, 2.1144878e+07, 2.1490642e+07, 2.1836406e+07, 2.2095728e+07, 2.2441492e+07, 2.2787258e+07, 2.3046584e+07, 2.3392356e+07, 2.3738132e+07, 2.3997468e+07, 2.4343254e+07, 2.4602598e+07, 2.4948396e+07, 2.52942e+07, 2.555356e+07, 2.5899376e+07, 2.62452e+07, 2.650457e+07, 2.6850402e+07, 2.7196236e+07, 2.7455612e+07, 2.7801446e+07, 2.8147276e+07, 2.8406644e+07, 2.8752464e+07, 2.9098272e+07, 2.9357618e+07, 2.9703402e+07, 2.9962726e+07, 3.0308476e+07, 3.0654204e+07, 3.0913484e+07, 3.1259168e+07, 3.1604826e+07] +sunRiseSetSyd.sunUp=[0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetNegativeStartTime.txt new file mode 100644 index 0000000000..8556ecbff2 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetNegativeStartTime.txt @@ -0,0 +1,20 @@ +last-generated=2022-01-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-4.32e+04, 2.592e+05] +sunRiseSetArctic.nextSunRise=[2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06] +sunRiseSetArctic.nextSunSet=[2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06] +sunRiseSetArctic.sunUp=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +sunRiseSetSf.nextSunRise=[2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 2.678694921875e+04, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.132045390625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05] +sunRiseSetSf.nextSunSet=[-2.542112890625e+04, -2.542112890625e+04, -2.542112890625e+04, -2.542112890625e+04, -2.542112890625e+04, -2.542112890625e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 6.1031375e+04, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05] +sunRiseSetSf.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +sunRiseSetAntarctic.nextSunRise=[3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06] +sunRiseSetAntarctic.nextSunSet=[3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06] +sunRiseSetAntarctic.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +sunRiseSetSyd.nextSunRise=[1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.7546154296875e+04, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.040175390625e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 1.90461e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05] +sunRiseSetSyd.nextSunSet=[-1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, -1.762033203125e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 6.87953671875e+04, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05] +sunRiseSetSyd.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetPositiveStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetPositiveStartTime.txt new file mode 100644 index 0000000000..dbef0fb455 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_CDL_Utilities_Validation_SunRiseSetPositiveStartTime.txt @@ -0,0 +1,20 @@ +last-generated=2022-01-07 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[4.32e+04, 3.456e+05] +sunRiseSetArctic.nextSunRise=[2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06, 2.63302625e+06] +sunRiseSetArctic.nextSunSet=[2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06, 2.6375645e+06] +sunRiseSetArctic.sunUp=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +sunRiseSetSf.nextSunRise=[1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.13197421875e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 1.99611625e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 2.8601684375e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05, 3.724201875e+05] +sunRiseSetSf.nextSunSet=[6.102227734375e+04, 6.102227734375e+04, 6.102227734375e+04, 6.102227734375e+04, 6.102227734375e+04, 6.102227734375e+04, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 1.47476390625e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 2.33922671875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 3.203701875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05, 4.06818875e+05] +sunRiseSetSf.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +sunRiseSetAntarctic.nextSunRise=[3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06, 3.4592835e+06] +sunRiseSetAntarctic.nextSunSet=[3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06, 3.4559035e+06] +sunRiseSetAntarctic.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +sunRiseSetSyd.nextSunRise=[1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.03987671875e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 1.90460984375e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 2.7690553125e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05, 3.633510625e+05] +sunRiseSetSyd.nextSunSet=[6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 6.879203125e+04, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 1.55205546875e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 2.4161403125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 3.280208125e+05, 4.14425875e+05, 4.14425875e+05, 4.14425875e+05, 4.14425875e+05, 4.14425875e+05, 4.14425875e+05] +sunRiseSetSyd.sunUp=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureReset.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureReset.txt new file mode 100644 index 0000000000..3c43e545a1 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureReset.txt @@ -0,0 +1,14 @@ +last-generated=2017-07-18 +statistics-simulation= +{ + "numerical Jacobians": "0", + "nonlinear": " ", + "linear": " " +} +heaCur.TRet=[3.131499938964844e+02, 3.127863769449941e+02, 3.124227294759326e+02, 3.120590820068676e+02, 3.116954650553807e+02, 3.113318176540447e+02, 3.109681701172508e+02, 3.106045532334929e+02, 3.102409056966991e+02, 3.098772584308751e+02, 3.095136414116049e+02, 3.091499938748112e+02, 3.087863768555546e+02, 3.084227293188018e+02, 3.080590820529232e+02, 3.076954653046228e+02, 3.073318174969139e+02, 3.069681702310626e+02, 3.066045534827348e+02, 3.062409056750259e+02, 3.058772584091928e+02, 3.055136411190165e+02, 3.05149993853138e+02, 3.047863771048375e+02, 3.044227292971286e+02, 3.0405908203125e+02, 3.036954647411192e+02, 3.03331818017071e+02, 3.029681702093802e+02, 3.026045529192313e+02, 3.022409061951831e+02, 3.018772583875105e+02, 3.015136410973433e+02, 3.011499943732951e+02, 3.007863770831643e+02, 3.004227292754554e+02, 3.000590825514071e+02, 2.996954652612764e+02, 2.993318174535674e+02, 2.989681696458585e+02, 2.986045534393884e+02, 2.982409056316795e+02, 2.978772578239705e+02, 2.975136416175005e+02, 2.971499938097915e+02, 2.967863765194788e+02, 2.964227297956125e+02, 2.960590819879036e+02, 2.956954646977728e+02, 2.953318179737246e+02, 2.949681701660156e+02, 2.9460455287589e+02, 2.942409050681862e+02, 2.938772572604825e+02, 2.93513642137646e+02, 2.931499943299422e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] +heaCur.TSup=[3.331499938964844e+02, 3.324227294759326e+02, 3.316954650553739e+02, 3.309681701172508e+02, 3.30240905696699e+02, 3.29513641411605e+02, 3.287863768555749e+02, 3.280590820529279e+02, 3.273318174969139e+02, 3.266045534827348e+02, 3.258772584091701e+02, 3.25149993853138e+02, 3.244227292971286e+02, 3.236954647410464e+02, 3.229681702093711e+02, 3.222409061951831e+02, 3.215136410973433e+02, 3.207863770831643e+02, 3.200590825515163e+02, 3.193318174535674e+02, 3.186045534393884e+02, 3.178772578239705e+02, 3.171499938097915e+02, 3.164227297956125e+02, 3.156954646976909e+02, 3.149681701660156e+02, 3.142409050681759e+02, 3.135136421376576e+02, 3.127863770398179e+02, 3.120590814244e+02, 3.113318184938817e+02, 3.10604553396042e+02, 3.098772577806241e+02, 3.091499948501058e+02, 3.084227297522661e+02, 3.076954646543354e+02, 3.069681712065482e+02, 3.062409061084902e+02, 3.055136410106504e+02, 3.047863759125924e+02, 3.040590824648053e+02, 3.033318173668745e+02, 3.026045522688347e+02, 3.018772588210475e+02, 3.011499937230986e+02, 3.004227286252589e+02, 2.996954656947406e+02, 2.989681700793228e+02, 2.98240904981483e+02, 2.975136420509647e+02, 2.96786376953125e+02, 2.960590813377175e+02, 2.95331816239888e+02, 2.946045511416221e+02, 2.938772598615569e+02, 2.931499947634001e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] +heaCur.TOut=[2.631499938964844e+02, 2.635499878019114e+02, 2.639500122249096e+02, 2.643500061303332e+02, 2.647500000357568e+02, 2.651499938666871e+02, 2.655499878466244e+02, 2.659500121951078e+02, 2.66350006175029e+02, 2.667499998569731e+02, 2.671499938368898e+02, 2.675499878168156e+02, 2.679500123143014e+02, 2.683500062942181e+02, 2.687499999761622e+02, 2.691499936581063e+02, 2.695499879360502e+02, 2.699500121354906e+02, 2.703500058173528e+02, 2.707500000953513e+02, 2.711499937772953e+02, 2.715499880552847e+02, 2.719500122547068e+02, 2.723500059365873e+02, 2.727500002145403e+02, 2.731499938964844e+02, 2.735499881745192e+02, 2.73950011777787e+02, 2.743500060558218e+02, 2.747500003337293e+02, 2.751499934197282e+02, 2.755499876976175e+02, 2.75950012493085e+02, 2.763500055788838e+02, 2.767499998569731e+02, 2.771499941349534e+02, 2.775499872208613e+02, 2.77950012016256e+02, 2.783500062942181e+02, 2.787500005721074e+02, 2.791499936581063e+02, 2.795499879360502e+02, 2.79950012731463e+02, 2.803500058173528e+02, 2.807500000953513e+02, 2.811499943734224e+02, 2.815499874592394e+02, 2.819500122547068e+02, 2.823500065325962e+02, 2.827499996185951e+02, 2.831499938964844e+02, 2.835499881745135e+02, 2.839500129698297e+02, 2.843500072477133e+02, 2.847499991418517e+02, 2.851499934197353e+02, 2.855499876976161e+02, 2.859500124930807e+02, 2.863500067709643e+02, 2.867500010488479e+02, 2.871499929429863e+02, 2.875499872208699e+02, 2.879500120162589e+02, 2.883500062942152e+02, 2.887500005720989e+02, 2.891499948503463e+02, 2.895499867441208e+02, 2.899500115393279e+02, 2.90350005817357e+02, 2.907500000953527e+02, 2.911499943734153e+02, 2.915499886514444e+02, 2.91950011062397e+02, 2.923500053404261e+02, 2.927499996186008e+02, 2.931499938964844e+02, 2.935499881745135e+02, 2.939500129698297e+02, 2.943500072477133e+02, 2.947499991418517e+02, 2.951499934197353e+02, 2.955499876976161e+02, 2.959500124930807e+02, 2.963500067709643e+02, 2.967500010488479e+02, 2.971499929429863e+02, 2.975499872208699e+02, 2.979500120162589e+02, 2.983500062942152e+02, 2.987500005720989e+02, 2.991499948503463e+02, 2.995499867441208e+02, 2.999500115393279e+02, 3.00350005817357e+02, 3.007500000953527e+02, 3.011499943734153e+02, 3.015499886514444e+02, 3.01950011062397e+02, 3.023500053404261e+02, 3.027499996186008e+02, 3.031499938964844e+02] +time=[0e+00, 1e+00] +heaCur1.TSetZon=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +heaCur1.TRet=[3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.131499938964844e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02, 3.014833374023438e+02] +heaCur1.TSup=[3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.331499938964844e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02, 3.148166809082031e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureResetExponent.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureResetExponent.txt new file mode 100644 index 0000000000..a33d4c05a8 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_SetPoints_Validation_SupplyReturnTemperatureResetExponent.txt @@ -0,0 +1,12 @@ +last-generated=2021-02-08 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +heaCur.TSup=[3.176954650878906e+02, 3.174227294860927e+02, 3.171499938842949e+02, 3.16877258282497e+02, 3.166045531982636e+02, 3.16331817647269e+02, 3.160590819946815e+02, 3.157863769612513e+02, 3.155136413086367e+02, 3.152409058592346e+02, 3.1496817020667e+02, 3.146954650716289e+02, 3.144227294190507e+02, 3.141499937664633e+02, 3.13877258317043e+02, 3.136045533851826e+02, 3.133318175294373e+02, 3.130590820800352e+02, 3.127863771481566e+02, 3.125136412923749e+02, 3.122409058429819e+02, 3.119681699872366e+02, 3.116954650553672e+02, 3.11422729605956e+02, 3.111499937502106e+02, 3.108772583007812e+02, 3.106045529624685e+02, 3.103318179195006e+02, 3.100590820637735e+02, 3.097863767254607e+02, 3.095136416824746e+02, 3.092409058267293e+02, 3.08968169970984e+02, 3.086954654454486e+02, 3.084227295897034e+02, 3.08149993733958e+02, 3.078772586910628e+02, 3.076045533526773e+02, 3.07331817496932e+02, 3.070590816411867e+02, 3.067863771156514e+02, 3.065136412598515e+02, 3.062409054041607e+02, 3.059681703611564e+02, 3.056954650228437e+02, 3.054227291671348e+02, 3.051499941241486e+02, 3.04877258268276e+02, 3.04604552929945e+02, 3.043318178869953e+02, 3.0405908203125e+02, 3.037863766929411e+02, 3.035136408370542e+02, 3.032409049816038e+02, 3.029681707514293e+02, 3.026954654129385e+02, 3.02422729557199e+02, 3.021499937014556e+02, 3.018772578457142e+02, 3.016045525071507e+02, 3.013318182770489e+02, 3.010590824215258e+02, 3.007863770831441e+02, 3.0051364122733e+02, 3.002409053716613e+02, 2.999681695159198e+02, 2.99695465802996e+02, 2.994227299472545e+02, 2.991499940916223e+02, 2.988772582357697e+02, 2.986045528974265e+02, 2.983318170418669e+02, 2.980590828118015e+02, 2.977863774732016e+02, 2.975136416174602e+02, 2.972409057617188e+02, 2.969681699059773e+02, 2.966954645675229e+02, 2.964227287120725e+02, 2.96149994481898e+02, 2.95877258626011e+02, 2.956045532876678e+02, 2.953318174319244e+02, 2.95059081576183e+02, 2.947863762376194e+02, 2.945136420075177e+02, 2.942409061517762e+02, 2.939681702961075e+02, 2.936954649577987e+02, 2.9342272910213e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] +heaCur.TRet=[3.1155908203125e+02, 3.113545532180826e+02, 3.11149993887344e+02, 3.109454650741698e+02, 3.107409057434379e+02, 3.10536376968359e+02, 3.103318175995319e+02, 3.101272583068794e+02, 3.099227294555986e+02, 3.097181702391934e+02, 3.095136413878899e+02, 3.093090820190628e+02, 3.091045531677729e+02, 3.088999937989867e+02, 3.086954651000779e+02, 3.084909058836818e+02, 3.082863768799472e+02, 3.08081817663542e+02, 3.078772584471369e+02, 3.076727294434023e+02, 3.074681702269971e+02, 3.072636412232626e+02, 3.070590820068756e+02, 3.068545533079667e+02, 3.066499937867995e+02, 3.064454650878906e+02, 3.062409055667235e+02, 3.060363771724947e+02, 3.058318176513457e+02, 3.056272581301604e+02, 3.054227297359316e+02, 3.052181702148008e+02, 3.050136412110663e+02, 3.048090822995686e+02, 3.046045532957795e+02, 3.043999937746123e+02, 3.041954653803836e+02, 3.039909058592892e+02, 3.037863768555546e+02, 3.035818173344602e+02, 3.033772584227443e+02, 3.031727294190097e+02, 3.029681698978972e+02, 3.027636415036683e+02, 3.025590819825012e+02, 3.023545529787303e+02, 3.021499940672326e+02, 3.01945465063498e+02, 3.017409055423491e+02, 3.015363771481203e+02, 3.013318176269531e+02, 3.011272581057889e+02, 3.009227291019117e+02, 3.007181695810385e+02, 3.005136417961547e+02, 3.003090822751723e+02, 3.001045532714058e+02, 2.998999937502401e+02, 2.996954647463994e+02, 2.994909052254898e+02, 2.992863774406059e+02, 2.9908181791966e+02, 2.988772583983502e+02, 2.986727293946186e+02, 2.984681698735271e+02, 2.982636408695772e+02, 2.980590825678792e+02, 2.978545535638929e+02, 2.976499940428378e+02, 2.974454650391047e+02, 2.972409055179783e+02, 2.970363765140648e+02, 2.968318182123668e+02, 2.96627258691057e+02, 2.964227296871799e+02, 2.962181701660156e+02, 2.96013641162284e+02, 2.958090816412653e+02, 2.956045526372426e+02, 2.953999943355446e+02, 2.951954653316311e+02, 2.949909058105047e+02, 2.947863768067716e+02, 2.945818172857165e+02, 2.943772577645523e+02, 2.941727299796684e+02, 2.939681704587225e+02, 2.937636414549181e+02, 2.935590819337538e+02, 2.933545529299494e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] +heaCurM.TSup=[3.167040405273438e+02, 3.164946289015638e+02, 3.162847595120916e+02, 3.16074432358927e+02, 3.1586364744207e+02, 3.156523742833351e+02, 3.154406432821024e+02, 3.152283935610176e+02, 3.150156554794885e+02, 3.14802429275507e+02, 3.145886535963536e+02, 3.1437438963565e+02, 3.141596068758864e+02, 3.139442747995347e+02, 3.137283935675659e+02, 3.13511963019773e+02, 3.132949828324492e+02, 3.130774231346385e+02, 3.128592836034437e+02, 3.126405333950244e+02, 3.124212036787193e+02, 3.122012632832705e+02, 3.11980682346708e+02, 3.117594910591741e+02, 3.115376280546482e+02, 3.113151245117188e+02, 3.110919492497055e+02, 3.108681032678318e+02, 3.106435547142937e+02, 3.104182737374617e+02, 3.101922915295212e+02, 3.099655457084299e+02, 3.097380674638993e+02, 3.095098269596886e+02, 3.092807618007681e+02, 3.090509337005572e+02, 3.088202517953171e+02, 3.085887452277091e+02, 3.083563536487347e+02, 3.081231075757539e+02, 3.078889466729922e+02, 3.076538390270727e+02, 3.074178158517722e+02, 3.071808168202111e+02, 3.069428100016959e+02, 3.06703765583378e+02, 3.064636842827018e+02, 3.062225036332784e+02, 3.059802243487507e+02, 3.057367861213565e+02, 3.054921875e+02, 3.0524633765547e+02, 3.049992671051958e+02, 3.047508842964428e+02, 3.045011296876746e+02, 3.042500308175244e+02, 3.039974671013705e+02, 3.037434385383343e+02, 3.034878535758325e+02, 3.032306816959577e+02, 3.029718328942004e+02, 3.027112430494681e+02, 3.024488221469925e+02, 3.021845396683224e+02, 3.019182735431451e+02, 3.016499322185081e+02, 3.013794257607321e+02, 3.011066288748184e+02, 3.008314516135545e+02, 3.005537108708878e+02, 3.002732540582058e+02, 2.999899591051902e+02, 2.997036141041469e+02, 2.994140020198444e+02, 2.99120910925524e+02, 2.988240661621094e+02, 2.985231320346405e+02, 2.982177423320344e+02, 2.979075003240293e+02, 2.975918891097347e+02, 2.972702945757999e+02, 2.969419861629659e+02, 2.966060178224839e+02, 2.962611688481437e+02, 2.959058828386566e+02, 2.955379342405353e+02, 2.951540838116103e+02, 2.947492372584496e+02, 2.943140256592488e+02, 2.938270561107623e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] +heaCurM.TRet=[3.105676879882812e+02, 3.104264526335571e+02, 3.102847595151406e+02, 3.101426391505997e+02, 3.099999999872307e+02, 3.098569336044252e+02, 3.097133483693951e+02, 3.095693054242192e+02, 3.094247436264505e+02, 3.092796936554658e+02, 3.091341247775735e+02, 3.089880371006439e+02, 3.088414306246496e+02, 3.086942748319854e+02, 3.085465698330408e+02, 3.083983460357593e+02, 3.082495116654355e+02, 3.081001282005945e+02, 3.079501954198929e+02, 3.077996215460517e+02, 3.076484680627344e+02, 3.074967040018184e+02, 3.073443298157763e+02, 3.071913147611848e+02, 3.070376280912371e+02, 3.0688330078125e+02, 3.067283323712475e+02, 3.065726320032478e+02, 3.06416259784306e+02, 3.062591856596121e+02, 3.061013795829782e+02, 3.059428406140432e+02, 3.057835081865126e+02, 3.056234438138085e+02, 3.054625855068442e+02, 3.053009337412115e+02, 3.051384279672779e+02, 3.049750977343209e+02, 3.048109130073573e+02, 3.046458127514493e+02, 3.044798584975722e+02, 3.043129271862309e+02, 3.041450803455086e+02, 3.039762574452541e+02, 3.03806426961317e+02, 3.036355893951554e+02, 3.034636842257857e+02, 3.032906799109406e+02, 3.03116576960991e+02, 3.02941345382336e+02, 3.02764892578125e+02, 3.025872495857504e+02, 3.024083553700533e+02, 3.022281488963141e+02, 3.020466007324001e+02, 3.018636781971545e+02, 3.016792908155772e+02, 3.014934385871188e+02, 3.013060299591942e+02, 3.011170344138966e+02, 3.009263615401792e+02, 3.007339480302425e+02, 3.005397339797039e+02, 3.00343627835611e+02, 3.001455380450109e+02, 2.999454035725293e+02, 2.997430730427932e+02, 2.995384524914567e+02, 2.993314515647701e+02, 2.99121887156681e+02, 2.98909637195972e+02, 2.986945185773881e+02, 2.984763495047121e+02, 2.982549137549868e+02, 2.980299989952437e+02, 2.978013305664062e+02, 2.975685727736602e+02, 2.973313899227728e+02, 2.970893242496359e+02, 2.968418889633813e+02, 2.965884707642056e+02, 2.963283386857664e+02, 2.960605466798621e+02, 2.957839045576773e+02, 2.954967948823672e+02, 2.95197022212686e+02, 2.948813786359163e+02, 2.945446778997547e+02, 2.941776731527093e+02, 2.937588799385817e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingNegativeStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingNegativeStartTime.txt new file mode 100644 index 0000000000..8f204feff4 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingNegativeStartTime.txt @@ -0,0 +1,13 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "2", + "numerical Jacobians": "0" +} +time=[-6.6e+05, 0e+00] +optStaCoo.tOpt=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 8.6932861328125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.79079345703125e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.74376025390625e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.69676220703125e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03, 5.6539560546875e+03] +TSetCoo.y=[2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02] +optStaCoo.TZon=[2.971499938964844e+02, 2.971503601074219e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971364135742188e+02, 2.96923095703125e+02, 2.967496643066406e+02, 2.969124145507812e+02, 2.975598449707031e+02, 2.986782531738281e+02, 3.001107482910156e+02, 2.988165283203125e+02, 2.971484680175781e+02, 2.971499328613281e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971443481445312e+02, 2.969462890625e+02, 2.967550659179688e+02, 2.968787536621094e+02, 2.97480224609375e+02, 2.985603942871094e+02, 2.999738464355469e+02, 2.992104187011719e+02, 2.971481628417969e+02, 2.971499328613281e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.9714892578125e+02, 2.969696350097656e+02, 2.967630615234375e+02, 2.968489379882812e+02, 2.974045104980469e+02, 2.984452819824219e+02, 2.998375854492188e+02, 3.0133984375e+02, 2.972657165527344e+02, 2.971495666503906e+02, 2.971499633789062e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.969927978515625e+02, 2.967736511230469e+02, 2.968233642578125e+02, 2.973331298828125e+02, 2.983332824707031e+02, 2.997023620605469e+02, 3.012062683105469e+02, 2.999542846679688e+02, 2.971524963378906e+02, 2.971501159667969e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970155029296875e+02, 2.967864685058594e+02, 2.968015441894531e+02, 2.972656860351562e+02, 2.982242431640625e+02, 2.995681762695312e+02, 3.010713500976562e+02, 3.004169921875e+02, 2.971433715820312e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970374755859375e+02, 2.968014526367188e+02, 2.967834777832031e+02, 2.972025756835938e+02, 2.981185607910156e+02, 2.994353942871094e+02, 3.009355163574219e+02, 3.008950500488281e+02, 2.971517944335938e+02, 2.971497192382812e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970584106445312e+02, 2.96818359375e+02, 2.967693481445312e+02, 2.971436767578125e+02, 2.980162658691406e+02, 2.993041687011719e+02, 3.007987670898438e+02, 3.013853759765625e+02, 2.971623229980469e+02, 2.971502075195312e+02, 2.971499633789062e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970780334472656e+02, 2.968369445800781e+02, 2.967586059570312e+02, 2.970889587402344e+02, 2.979174499511719e+02] +optStaCoo.optOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingPositiveStartTime.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingPositiveStartTime.txt new file mode 100644 index 0000000000..7e0ba4a507 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartCoolingPositiveStartTime.txt @@ -0,0 +1,13 @@ +last-generated=2020-10-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "2", + "numerical Jacobians": "0" +} +time=[3.4e+04, 8.64e+05] +optStaCoo.tOpt=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 8.6933232421875e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.79068359375e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.7437607421875e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.6966845703125e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65401416015625e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.65121240234375e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03, 5.64937060546875e+03] +TSetCoo.y=[2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02] +optStaCoo.TZon=[2.971499938964844e+02, 2.971498413085938e+02, 2.971499938964844e+02, 2.97109375e+02, 2.96818359375e+02, 2.968193664550781e+02, 2.975328063964844e+02, 2.989842834472656e+02, 3.00844482421875e+02, 2.971523742675781e+02, 2.971499328613281e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.969385070800781e+02, 2.967481994628906e+02, 2.971436767578125e+02, 2.983148498535156e+02, 3.000650634765625e+02, 2.978899230957031e+02, 2.971496276855469e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970651245117188e+02, 2.967797546386719e+02, 2.968895568847656e+02, 2.977460327148438e+02, 2.993042297363281e+02, 3.011838989257812e+02, 2.971517639160156e+02, 2.971501159667969e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971443176269531e+02, 2.968817749023438e+02, 2.967654418945312e+02, 2.972988586425781e+02, 2.985993347167969e+02, 3.004089660644531e+02, 3.012548828125e+02, 2.971474609375e+02, 2.971500244140625e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970117492675781e+02, 2.967550048828125e+02, 2.969850769042969e+02, 2.979830627441406e+02, 2.996351013183594e+02, 3.015155639648438e+02, 2.979967346191406e+02, 2.971498718261719e+02, 2.971499633789062e+02, 2.971499938964844e+02, 2.971189880371094e+02, 2.968306274414062e+02, 2.968048400878906e+02, 2.974801330566406e+02, 2.989011840820312e+02, 3.007530822753906e+02, 3.002462463378906e+02, 2.971492004394531e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.969540710449219e+02, 2.967471618652344e+02, 2.971068420410156e+02, 2.982422790527344e+02, 2.999738464355469e+02, 3.018363037109375e+02, 2.971840209960938e+02, 2.971499328613281e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.970780029296875e+02, 2.967888488769531e+02, 2.968683471679688e+02, 2.97686767578125e+02, 2.992177124023438e+02, 3.010939331054688e+02, 2.99263916015625e+02, 2.971489868164062e+02, 2.971499633789062e+02, 2.971499938964844e+02, 2.971477661132812e+02, 2.96896484375e+02, 2.967586669921875e+02, 2.972549438476562e+02, 2.985216979980469e+02, 3.003171081542969e+02, 3.016982727050781e+02, 2.971435546875e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.97026611328125e+02, 2.967600402832031e+02, 2.969569396972656e+02, 2.9791748046875e+02] +optStaCoo.optOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeating.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeating.txt new file mode 100644 index 0000000000..4bb07af542 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeating.txt @@ -0,0 +1,13 @@ +last-generated=2021-01-30 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "2", + "numerical Jacobians": "0" +} +time=[-1.728e+05, 6.048e+05] +optStaHea.tOpt=[0e+00, 0e+00, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 1.08e+04, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 7.3458525390625e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 5.564533203125e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.725474365234375e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750643798828125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.750772705078125e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.7474794921875e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.747568359375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03, 3.74755859375e+03] +TSetHea.y=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +optStaHea.TZon=[2.941499938964844e+02, 2.896638488769531e+02, 2.901727905273438e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.940346984863281e+02, 2.930039978027344e+02, 2.908515625e+02, 2.881498718261719e+02, 2.881499938964844e+02, 2.941452941894531e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.940999755859375e+02, 2.931686096191406e+02, 2.911500244140625e+02, 2.881551208496094e+02, 2.881499938964844e+02, 2.914275512695312e+02, 2.941499938964844e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.933190307617188e+02, 2.914343566894531e+02, 2.884085083007812e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941503601074219e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.934559326171875e+02, 2.917038879394531e+02, 2.887902526855469e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941492614746094e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.935798950195312e+02, 2.919584045410156e+02, 2.891625061035156e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941535949707031e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.936916198730469e+02, 2.921978149414062e+02, 2.895242919921875e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941408996582031e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.937920227050781e+02, 2.924220275878906e+02, 2.898748474121094e+02, 2.8814990234375e+02, 2.881499938964844e+02, 2.939381408691406e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.938818054199219e+02, 2.926309509277344e+02, 2.902132873535156e+02, 2.881502380371094e+02, 2.881499938964844e+02, 2.926377868652344e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.939624328613281e+02, 2.92824951171875e+02, 2.905391540527344e+02] +optStaHea.optOn=[0e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeatingCooling.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeatingCooling.txt new file mode 100644 index 0000000000..f5993b9705 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartHeatingCooling.txt @@ -0,0 +1,18 @@ +last-generated=2021-01-30 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 2.4192e+06] +optSta.tOpt=[0e+00, 7.95337939453125e+03, 7.95337939453125e+03, 7.95337939453125e+03, 7.95337939453125e+03, 4.31832470703125e+03, 4.31832470703125e+03, 4.31832470703125e+03, 3.24136181640625e+03, 3.24136181640625e+03, 3.24136181640625e+03, 3.24136181640625e+03, 2.161732421875e+03, 2.161732421875e+03, 2.161732421875e+03, 2.163635009765625e+03, 2.163635009765625e+03, 2.163635009765625e+03, 2.163635009765625e+03, 2.1644345703125e+03, 2.1644345703125e+03, 2.1644345703125e+03, 2.1644345703125e+03, 2.16497900390625e+03, 2.16497900390625e+03, 2.16497900390625e+03, 0e+00, 0e+00, 0e+00, 0e+00, 5.74002783203125e+03, 5.74002783203125e+03, 5.74002783203125e+03, 2.12517529296875e+03, 2.12517529296875e+03, 2.12517529296875e+03, 2.12517529296875e+03, 1.59286767578125e+03, 1.59286767578125e+03, 1.59286767578125e+03, 1.061448486328125e+03, 1.061448486328125e+03, 1.061448486328125e+03, 1.061448486328125e+03, 1.060780151367188e+03, 1.060780151367188e+03, 1.060780151367188e+03, 1.060780151367188e+03, 1.060423217773438e+03, 1.060423217773438e+03, 1.060423217773438e+03, 0e+00, 0e+00, 0e+00, 0e+00, 2.165054931640625e+03, 2.165054931640625e+03, 2.165054931640625e+03, 2.164988525390625e+03, 2.164988525390625e+03, 2.164988525390625e+03, 2.164988525390625e+03, 2.164999755859375e+03, 2.164999755859375e+03, 2.164999755859375e+03, 2.165007080078125e+03, 2.165007080078125e+03, 2.165007080078125e+03, 2.165007080078125e+03, 2.164992431640625e+03, 2.164992431640625e+03, 2.164992431640625e+03, 2.164992431640625e+03, 2.165001708984375e+03, 2.165001708984375e+03, 2.165001708984375e+03, 0e+00, 0e+00, 0e+00, 0e+00, 1.060263061523438e+03, 1.060263061523438e+03, 1.060263061523438e+03, 1.0602626953125e+03, 1.0602626953125e+03, 1.0602626953125e+03, 1.0602626953125e+03, 1.060263061523438e+03, 1.060263061523438e+03, 1.060263061523438e+03, 1.060266479492188e+03, 1.060266479492188e+03, 1.060266479492188e+03, 1.060266479492188e+03, 1.060265747070312e+03, 1.060265747070312e+03, 1.060265747070312e+03, 1.060265747070312e+03, 1.060265625e+03, 1.060265625e+03, 1.060265625e+03] +optSta.optCoo.tOpt=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.74002783203125e+03, 5.74002783203125e+03, 5.74002783203125e+03, 2.12517529296875e+03, 2.12517529296875e+03, 2.12517529296875e+03, 2.12517529296875e+03, 1.59286767578125e+03, 1.59286767578125e+03, 1.59286767578125e+03, 1.061448486328125e+03, 1.061448486328125e+03, 1.061448486328125e+03, 1.061448486328125e+03, 1.060780151367188e+03, 1.060780151367188e+03, 1.060780151367188e+03, 1.060780151367188e+03, 1.060423217773438e+03, 1.060423217773438e+03, 1.060423217773438e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.060263061523438e+03, 1.060263061523438e+03, 1.060263061523438e+03, 1.0602626953125e+03, 1.0602626953125e+03, 1.0602626953125e+03, 1.0602626953125e+03, 1.060263061523438e+03, 1.060263061523438e+03, 1.060263061523438e+03, 1.060266479492188e+03, 1.060266479492188e+03, 1.060266479492188e+03, 1.060266479492188e+03, 1.060265747070312e+03, 1.060265747070312e+03, 1.060265747070312e+03, 1.060265747070312e+03, 1.060265625e+03, 1.060265625e+03, 1.060265625e+03] +optSta.optHea.tOpt=[0e+00, 7.95337939453125e+03, 7.95337939453125e+03, 7.95337939453125e+03, 7.95337939453125e+03, 4.31832470703125e+03, 4.31832470703125e+03, 4.31832470703125e+03, 3.24136181640625e+03, 3.24136181640625e+03, 3.24136181640625e+03, 3.24136181640625e+03, 2.161732421875e+03, 2.161732421875e+03, 2.161732421875e+03, 2.163635009765625e+03, 2.163635009765625e+03, 2.163635009765625e+03, 2.163635009765625e+03, 2.1644345703125e+03, 2.1644345703125e+03, 2.1644345703125e+03, 2.1644345703125e+03, 2.16497900390625e+03, 2.16497900390625e+03, 2.16497900390625e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.165054931640625e+03, 2.165054931640625e+03, 2.165054931640625e+03, 2.164988525390625e+03, 2.164988525390625e+03, 2.164988525390625e+03, 2.164988525390625e+03, 2.164999755859375e+03, 2.164999755859375e+03, 2.164999755859375e+03, 2.165007080078125e+03, 2.165007080078125e+03, 2.165007080078125e+03, 2.165007080078125e+03, 2.164992431640625e+03, 2.164992431640625e+03, 2.164992431640625e+03, 2.164992431640625e+03, 2.165001708984375e+03, 2.165001708984375e+03, 2.165001708984375e+03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +optSta.optOn=[0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.50350909079134e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +optSta.optCoo.optOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +optSta.optHea.optOn=[0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.50350909079134e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +TSetHea.y=[2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964838e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02] +TSetCoo.y=[3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964849e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02] +optSta.TZon=[2.921499938964844e+02, 2.941534118652344e+02, 2.941499938964844e+02, 2.937181701660156e+02, 2.924385375976562e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.928896789550781e+02, 2.924524230957031e+02, 2.941499938964844e+02, 2.940725708007812e+02, 2.924861755371094e+02, 2.941502380371094e+02, 2.941499938964844e+02, 2.93120849609375e+02, 2.924315490722656e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.925740661621094e+02, 2.941640625e+02, 2.941499938964844e+02, 2.933986206054688e+02, 2.924234008789062e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.9270751953125e+02, 2.956985473632812e+02, 2.971499938964844e+02, 2.972089538574219e+02, 2.984024353027344e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.97513916015625e+02, 2.993062438964844e+02, 2.971499938964844e+02, 2.971586608886719e+02, 2.981323852539062e+02, 2.971500549316406e+02, 2.971499938964844e+02, 2.973801574707031e+02, 2.989988403320312e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.97891357421875e+02, 2.971493835449219e+02, 2.971499938964844e+02, 2.972803649902344e+02, 2.986942138671875e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.976842346191406e+02, 2.963826904296875e+02, 2.950361022949219e+02, 2.937181091308594e+02, 2.924384155273438e+02, 2.941500549316406e+02, 2.941499938964844e+02, 2.928897094726562e+02, 2.924524536132812e+02, 2.941499938964844e+02, 2.940725708007812e+02, 2.924861450195312e+02, 2.941502380371094e+02, 2.941499938964844e+02, 2.93120849609375e+02, 2.924315185546875e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.925740661621094e+02, 2.941640625e+02, 2.941499938964844e+02, 2.933986206054688e+02, 2.924233703613281e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.9270751953125e+02, 2.956984558105469e+02, 2.971499938964844e+02, 2.972089538574219e+02, 2.984023742675781e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.975139465332031e+02, 2.993062133789062e+02, 2.971499938964844e+02, 2.971586608886719e+02, 2.981323547363281e+02, 2.971500854492188e+02, 2.971499938964844e+02, 2.973802185058594e+02, 2.989988403320312e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.978913269042969e+02, 2.971493835449219e+02, 2.971499938964844e+02, 2.972803344726562e+02, 2.986942138671875e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.976842956542969e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartNoHeatingNoCooling.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartNoHeatingNoCooling.txt new file mode 100644 index 0000000000..3d5db3063c --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_OptimalStartNoHeatingNoCooling.txt @@ -0,0 +1,14 @@ +last-generated=2020-03-25 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 2.4192e+06] +optSta.tOpt=[0e+00, 0e+00] +optSta.optOn=[0e+00, 0e+00] +optSta.TZon=[2.921499938964844e+02, 2.920377197265625e+02, 2.941499938964844e+02, 2.937181701660156e+02, 2.924384155273438e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.928896484375e+02, 2.92452392578125e+02, 2.941499938964844e+02, 2.940725708007812e+02, 2.92486083984375e+02, 2.941501770019531e+02, 2.941499938964844e+02, 2.931207885742188e+02, 2.924315490722656e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.925739135742188e+02, 2.941924743652344e+02, 2.941499938964844e+02, 2.933985595703125e+02, 2.924233093261719e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.9270751953125e+02, 2.956985168457031e+02, 2.971499938964844e+02, 2.972090148925781e+02, 2.984024963378906e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.975139770507812e+02, 2.993063354492188e+02, 2.971499938964844e+02, 2.971586608886719e+02, 2.9813232421875e+02, 2.971501770019531e+02, 2.971499938964844e+02, 2.973801574707031e+02, 2.989988403320312e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.978911743164062e+02, 2.971519470214844e+02, 2.971499938964844e+02, 2.972803039550781e+02, 2.986942138671875e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.976842346191406e+02, 2.963827209472656e+02, 2.950361022949219e+02, 2.937181396484375e+02, 2.924383544921875e+02, 2.941500244140625e+02, 2.941499938964844e+02, 2.928896179199219e+02, 2.92452392578125e+02, 2.941499938964844e+02, 2.940725708007812e+02, 2.924860229492188e+02, 2.941501770019531e+02, 2.941499938964844e+02, 2.931207580566406e+02, 2.924315795898438e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.925740051269531e+02, 2.941924743652342e+02, 2.941499938964844e+02, 2.933985290527344e+02, 2.924232788085938e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.9270751953125e+02, 2.956984558105469e+02, 2.971499938964844e+02, 2.972089538574219e+02, 2.984023742675781e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.975139465332031e+02, 2.993062133789062e+02, 2.971499938964844e+02, 2.971586608886719e+02, 2.981323547363281e+02, 2.971501770019531e+02, 2.971499938964844e+02, 2.973802185058594e+02, 2.989988403320312e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.978912963867188e+02, 2.971519470214844e+02, 2.971499938964844e+02, 2.972803344726562e+02, 2.986941833496094e+02, 2.971499938964844e+02, 2.971499938964844e+02, 2.976842956542969e+02] +TSetCoo.y=[3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964849e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02, 3.031499938964844e+02, 2.971499938964844e+02, 2.971499938964844e+02, 3.031499938964844e+02] +TSetHea.y=[2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964838e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.941499938964844e+02, 2.941499938964844e+02, 2.881499938964844e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_PIDWithInputGains.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_PIDWithInputGains.txt new file mode 100644 index 0000000000..b722033bb8 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Controls_OBC_Utilities_Validation_PIDWithInputGains.txt @@ -0,0 +1,17 @@ +last-generated=2022-05-20 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "4", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PID.k=[1e+00, 1e+00] +PIDWitInpGai.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00] +PID.Ti=[5e-01, 5e-01] +PIDWitInpGai.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01] +PID.Td=[1.000000014901161e-01, 1.000000014901161e-01] +PIDWitInpGai.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +PID.y=[5e-01, 5.09999990686778e-01, 5.19999981373556e-01, 5.299999720603333e-01, 5.400000223517302e-01, 5.500000111758584e-01, 5.600000037252728e-01, 5.699999925494228e-01, 5.799999850988654e-01, 5.899999701977309e-01, 6.000000223517196e-01, 6.100000149011523e-01, 6.200000074505406e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 8.137588987134604e-01, 7.079578216303023e-01, 6.75346736289788e-01, 6.697009218262596e-01, 6.739532864769328e-01, 6.818436353351124e-01, 6.910501775726797e-01, 7.007831194056565e-01, 7.1069317582545e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 8.774170243203979e-01, 7.716368014726137e-01, 7.390448492627223e-01, 7.333810937881043e-01, 7.376160141842284e-01, 7.455072635850436e-01, 7.547188771106752e-01, 7.644033888020471e-01, 7.742881131527446e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 9.219928346223786e-01, 8.162043864878715e-01, 7.836006921384461e-01, 7.779276979318089e-01, 7.82165300588035e-01, 7.900578016496561e-01, 7.992791903056254e-01, 8.089927294509028e-01, 8.18887348207449e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitInpGai.y=[5e-01, 5.09999990686778e-01, 5.19999981373556e-01, 5.299999720603333e-01, 5.400000223517302e-01, 5.500000111758584e-01, 5.600000037252728e-01, 5.699999925494228e-01, 5.799999850988654e-01, 5.899999701977309e-01, 6.000000223517196e-01, 6.100000149011523e-01, 6.200000074505406e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 8.137588987134604e-01, 7.079578216303023e-01, 6.75346736289788e-01, 6.697009218262596e-01, 6.739532864769328e-01, 6.818436353351124e-01, 6.910501775726797e-01, 7.007831194056565e-01, 7.1069317582545e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 8.774170243203979e-01, 7.716368014726137e-01, 7.390448492627223e-01, 7.333810937881043e-01, 7.376160141842284e-01, 7.455072635850436e-01, 7.547188771106752e-01, 8.631590484799047e-01, 8.715933520988245e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999999413593323e-01, 9.626983615673881e-01, 9.395208008269087e-01, 9.288343820753084e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] From 0b7339539bbfa4e90d7ec72c1e5230745e49cec4 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 22:53:01 +0000 Subject: [PATCH 02/15] Added images --- .../OBC/CDL/Integers/Sources/Constant.png | Bin 0 -> 793 bytes .../OBC/CDL/Integers/Sources/Pulse.png | Bin 0 -> 13714 bytes .../OBC/CDL/Integers/Sources/Pulse.svg | 429 +++ .../Controls/OBC/CDL/Logical/Constant.png | Bin 0 -> 873 bytes .../Images/Controls/OBC/CDL/Logical/Latch.png | Bin 0 -> 103777 bytes .../Images/Controls/OBC/CDL/Logical/Latch.svg | 2678 ++++++++++++++++ .../OBC/CDL/Logical/Sources/Pulse.png | Bin 0 -> 10769 bytes .../OBC/CDL/Logical/Sources/Pulse.svg | 380 +++ .../OBC/CDL/Logical/Sources/SampleTrigger.png | Bin 0 -> 10145 bytes .../OBC/CDL/Logical/Sources/SampleTrigger.svg | 274 ++ .../Controls/OBC/CDL/Logical/Toggle.png | Bin 0 -> 100429 bytes .../Controls/OBC/CDL/Logical/Toggle.svg | 2840 +++++++++++++++++ .../Controls/OBC/CDL/Logical/TrueDelay1.png | Bin 0 -> 500 bytes .../Controls/OBC/CDL/Logical/TrueDelay2.png | Bin 0 -> 490 bytes .../OBC/CDL/Logical/TrueFalseHold.png | Bin 0 -> 11138 bytes .../OBC/CDL/Logical/VariablePulse.png | Bin 0 -> 16752 bytes .../OBC/CDL/Logical/VariablePulse.svg | 517 +++ .../CDL/Psychrometrics/Media/Water/plotCp.png | Bin 0 -> 14760 bytes .../Images/Controls/OBC/CDL/Reals/Acos.png | Bin 0 -> 1017 bytes .../Images/Controls/OBC/CDL/Reals/Asin.png | Bin 0 -> 1135 bytes .../Images/Controls/OBC/CDL/Reals/Atan.png | Bin 0 -> 859 bytes .../Images/Controls/OBC/CDL/Reals/Atan2.png | Bin 0 -> 1054 bytes .../Controls/OBC/CDL/Reals/Constant.png | Bin 0 -> 858 bytes .../Images/Controls/OBC/CDL/Reals/Cos.png | Bin 0 -> 1267 bytes .../Images/Controls/OBC/CDL/Reals/Exp.png | Bin 0 -> 1065 bytes .../Controls/OBC/CDL/Reals/Hysteresis.png | Bin 0 -> 5884 bytes .../Controls/OBC/CDL/Reals/Hysteresis.svg | 298 ++ .../OBC/CDL/Reals/HysteresisWithHold.svg | 1290 ++++++++ .../Images/Controls/OBC/CDL/Reals/Log.png | Bin 0 -> 1153 bytes .../Images/Controls/OBC/CDL/Reals/Log10.png | Bin 0 -> 1153 bytes .../Images/Controls/OBC/CDL/Reals/Sin.png | Bin 0 -> 903 bytes .../Controls/OBC/CDL/Reals/Sources/Pulse.png | Bin 0 -> 13714 bytes .../Controls/OBC/CDL/Reals/Sources/Pulse.svg | 429 +++ .../Controls/OBC/CDL/Reals/Sources/Ramp.png | Bin 0 -> 7088 bytes .../Controls/OBC/CDL/Reals/Sources/Ramp.svg | 281 ++ .../Controls/OBC/CDL/Reals/Sources/Sin.png | Bin 0 -> 11830 bytes .../Images/Controls/OBC/CDL/Reals/Tan.png | Bin 0 -> 963 bytes .../Images/Controls/OBC/CDL/Reals/int.pdf | Bin 0 -> 14695 bytes .../Images/Controls/OBC/CDL/Reals/int.png | Bin 0 -> 3494 bytes .../Controls/OBC/OBC_logo-only_150dpi.png | Bin 0 -> 82520 bytes .../Controls/OBC/OBC_stacked_150dpi_small.png | Bin 0 -> 49807 bytes .../SupplyReturnTemperatureReset.png | Bin 0 -> 10618 bytes 42 files changed, 9416 insertions(+) create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Constant.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Constant.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueDelay1.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueDelay2.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueFalseHold.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/VariablePulse.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Logical/VariablePulse.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Psychrometrics/Media/Water/plotCp.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Acos.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Asin.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Atan.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Atan2.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Constant.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Cos.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Exp.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Hysteresis.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Hysteresis.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/HysteresisWithHold.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Log.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Log10.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sin.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Ramp.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Ramp.svg create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Sin.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Tan.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/int.pdf create mode 100644 IBPSA/Resources/Images/Controls/OBC/CDL/Reals/int.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/OBC_logo-only_150dpi.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/OBC_stacked_150dpi_small.png create mode 100644 IBPSA/Resources/Images/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.png diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Constant.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Constant.png new file mode 100644 index 0000000000000000000000000000000000000000..309e8ad4e4a06ef20a83d378d34c6d19541efcbf GIT binary patch literal 793 zcmeAS@N?(olHy`uVBq!ia0y~yVAKa<4Gw0Yh#hM?P=LWKz$e7@|Ns9$rmwGWO-;>* z4L@kwU6_cV(bw1uGfoQ~H`(^ua#G2< z{o?vD&)pk7KH8eHtMYPJxNOnQYr)rU9WE7rGov#4`JQm=IMe4pl3&WW$4!^nc75x& zg1>xkW~JKqZhic9+SV+uuSZueTY0Z|#kq>LJJ*;$?pV#ZEk#bkJ+9Q_*{ix1J~S;w9JnkG}Y^}wWwXSLR6U&}hOT5#QR*2hP?#n&Bg{`jc% z_0NM9K#E&J|9tYNM@PN)0C`8drz4T#`XCW;{WxTD&k>Lal&t6!UvJ+J;saSA@}m$E z`A8Kc0y7$`1*-8U!NyhW^}D?EcK7wdQ&Hx%zaN?I(K{Jc8@H!y-M&hb{^h-^FLz(x zRcyL<${No&tG!cF=1oqXKYdbv)!ZW451am5spkKU+w*F|o^RD3S82*K$L;Amx$=H@ z_}-MLUwbRA&SBR7ZVhusRSc4oNcSz0?;t*f`VsEabIq5JytZ*UmL1S@-9mDGp;6r9 zq&>G%_OzX>=S~_wp0}-LI?1{4c7# z`n5Xl9skb%FaB+NuCC%aY05A5q@&)RK`XsfZ}NTjf1fHBJT>=kWkSIFZ=D%;y03?Q rJ+@j-Q2)8U>dz-%bP0l+XkKo=K+^ literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.png new file mode 100644 index 0000000000000000000000000000000000000000..84526dbddec039b2dba4c245a4b0f7a5055923c7 GIT binary patch literal 13714 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 GxBnMx6Hs^n literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.svg new file mode 100644 index 0000000000..bd62064c51 --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Integers/Sources/Pulse.svg @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + offset + 0 + time + amplitude + width + period + y + + + + shift + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Constant.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Constant.png new file mode 100644 index 0000000000000000000000000000000000000000..ec036582adc43893bed68f4a6126ea4f6328152b GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yU^DU%vd|!-p9e8Jjk3dinC@&6_v(?%mtd)5E~t=`Ln`9l-p$Tl93awm@$agg-_8F2KhGzu)an)WeTq=m>z@~rxqfasVW-7$&27?> zg>?oAQf=`%Y&;SMarZ@-x1Ih`_o4K_s~Lw&?>-OduFyStZsxkzQ>I4=ZkSc{Z~L0L z9trI->+8e)R5t8NG0#su4O9_Vyhp-pgudmqTMcuIEbh+ri1XeUyX>3`)9Pd+ zQ-+4QlWUn7B7ARNRf?ORn{<`qhMhkzL&EOUe>RBNIGxb-~)c+4QwX$!_>OBX}*}4Mkr41YiAx-_yi51fS-G2W<)iX9Pd2JB> z>z!(2>6V62*`5jgx4tyqJUk_ZG0ao$ovP=gCHs5#=$^j&>O=)F!!UTd`njxgN@xNA D6~|#0 literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.png new file mode 100644 index 0000000000000000000000000000000000000000..dac872a78fd346c6eed7c32eecc108927fdb2276 GIT binary patch literal 103777 zcmc$_cUV)w*Dgwt-g}eYJ5mIscLWgx1(B+NMCmp39;El8^eQS4q?gbHfzSzpNDVz8 zkkCWVjlXlh?>qPYasEBeGkFqbGkexvv(}nf?|OH<$x}TFQdUwN92|aL zZApSLIf$iKm#-jqfAK>asGZXljNd5o68v8`Hj2((Lf^N4C&%{Y-&C`216!$)_nO2v zZYb4<@J?DZGn3vhl(I)MydRd~3?TbxZP=XyrVvl~(nB}Z5qC3N!qh={ne}7b1U}jh zZ(yC%m2g*321Vqcmgc`b+Wlga1dY( zQDt?KRXo?8oQwF+b%($TB2Upn-Ug9z95`+`?;_8m@ehXyy_^vq4hZ9WPc;mN6mD&7 z>~Ke|R|tCPVgzXr9gpM*CWyL$2;~=s#lL+Jg~j?9Dk;VtyqiL357L)UU2rkDQ`DJh zb^qmUVr2Tx!hq$ktsdD*8%|uRp*v2BF@LA0-iR< zc-yc*A)NNXB-jG%ul2qZKacL_Ta*(Aa%A7~hcrdMR31-jX?;cP4Hyxo*CYdz5*csa zxm@_VK=FXQ|K*Cc?kTP=_m5r6RXKYaDP{#`h2)#X=mk7UoP1t_wPa|*mHjHA0(%(3mUEUV?KusqF+6B+wsH;i_@#oWOd2^}0j9iE-jb=0>#dgoQ`O zTs1=riO)4BpG(f=)bHeR5ZsK;UZY?AmBE^6!Uo5xQCa=h(rHHKl)>np=U>L$Y(B~3 zn29|9{F+(U%t425GBkM`MTDE*-hBVf6@lo@gd?0at@7_ z7yEKhku%p-2}c$((}(ApzrT8M=#cjRifqI?tD$mz@<+4%rMV{QTrr(6!~>#TCnJ2Y%=(9jg+<)c4{mrM z-B?8@9dkv>V#cn|XO&EdOv;uUo1LZj7_r%0L5`TeH~iM6%|BTuv40q}HXFH|e*YoI zS*XUxjENt?C|`XtESJJ11FE8ekL zq_n4CZ6)tiGtoy9cO$|%0$#pMT@)h0`>3=~Y7%l%te2S2ZHJDIg!6z7nE7g!Qfj~% zvU*^uu#J&NY~mNmS`f2iuPCKfEitz^!$lU7m~h<<*xr{OZVYCw4Al1yM`<2sPV~ypRo2|ylgalR=In)Y4SdL#=N{ z@zx_oTHc?5mGTnlXvuo-s=r`!YImHvC5|HfIq@~_ff*mUpqd2@g_u{1Zgp|_ z6zO-g4}`hv=SBd?v)-UTgmkTa^NN(vQph>t#hZ7w+#v=ADs)pg+eF|F6XIM=RgkBe zEG&?uw)1)qC1~$8aAM-k&=+l@mcvy!7$0-XhC)r;O0FR`+=0rDH11eca_+~jWV4*A zhTIoEVZ;ef*fKODt^?gmC8rhP1a3K6D<05Y!gYT?^1w?i@$!5?Talu_>9#f!$WG#R zl6H8i+VFW;5BlLSQsRJ-@4JyUnZKF!m5?_<7bmRkvOo#(y5i9G??NX1X=fBLSv`Nk zcj(*?gG#Q+?37ZFIFHZWBNzoYpR(}vKJ~j)i^~Q&i%o{Cvh%22Y*;J#>m{Jcy+s+; zwJgFisvT}GQm@B!Ha58lnijEk%l!anSl(;Y3N>_gsD5V}O5Bq)n0X7$8NcFf_4Z29 zY0$B@Y@=i~mVpMzrdSY5s^>JTLjV5OA6A^3#o(mxw^Am=n`wcq{S!q|xE1<@$)Bot zoRG|Y$4<18YLeHxb*Sfkdm9Kk{7ujT%QWV`(Hc?2_#%E1(bZ8urQ5Of9fCkGY#o{b#HKeA z+EFLXy#zZ~JzEPf`J8Z}*JKCcX;HmIpGUd2E|B%gL+z)5o8hYOPZC|R#=vx{iRzz+ zN`@4G0r!t$==;Rer@bD`C+3V#1kFNcYdgSw`A!2nHQNYHFk%3Q?ngL`GtnUXFP0PJ-V7o9@Gn_LebaBDmI>d!jiq79Q^vXs9jfa&6I!M!%dV!sON))_f5R7PNoln5M7sO{Rg#fO-Z;e&5<_rSX9u9_eS* z2!2QY+1!0lZ^x>yW90K)oWTBJ+Zc(nyrM+#nq(Yaf7FduQEJwWnq<8zc4xZ!OtA2_ zhqw!&g5m+~n9yf+(uQo0Jo?}&IvsMV0db`CEMEfHdYhb<6t369Ii2gL@lAeMczb{P??7D zm~u}3wwJXRjFxQTKHhst-Uw?ctD5?`EeV*GEz} zjqG=?(jb3J#@+!6L~^s!!w1pnIQjH%LJtc~2QB`ce5J?_N&@5dLF!WyX=-Kc#Y`3@ zU>{h@fM}#z346*UH@pMIe+>Q*(&&+AY7T9c=-pJ$liz$SqOvixzD3~)ugY{&+&_AN zKTRH&;AXM&QC>aa`Wo$Uju7^{I8BR^vxA>Bi~HKd(oo(Yw^m-@4G9oT=kR=bME{E` z`3QQkWggnQvb}zA;vSRfZeg;|x&dqFpQ0wMD5ja(~PGEfD%(Z7KDaIdtrY@`dJYmY6 z8bj$$r*O``78t=KpcQ4SRb@Ii11Wf!dc(Li?ADHrCKL=kjXq@FaF>-@*t6bB>}d-m zO=x+}5#^unnn>T>qobiI>3O+O4jOjv)#-K6AAGf%5^mTbS{dRd)^r>80pSAJf4b3( zH;QlBm*Xv#0#9dcc$HH1!5?g178Y)!%Gdd4{}Z#mD0)8r#Dy=FGY;<$@`EG7Fs*bN z!ca3Rl_W56TtQ8EsTD#Y?2p!6G-BjQT-Hh>FjK8wCWA4~(WTG+^3ne>N9VRSPe*Ym z$%A`Q44^$yKIUGcQLIAkPl*0x372C|CG22J=ka6qWPTNBbS2!)V3RxdY_%x|V4tUj zY~h=Fm=EU$-H-uBcM;kK#}u&Nzb&)ssJn>>_5x`vPbAby5rydk0o*C*NiFm#jjV7U zC}xc=O;Z`nrAB$#-3co^$s7GeW@&?p%MvN&Qo$zZpLH%)Er%_Yrc<*iJ{Cx0z4<%FID>x!PY0o7^{pUi+| z_TiiN{6~p#4(ZkXu~Bd@w&O*rbSF<~UE|8bt*4(4KWh68>}f06L&|kPztVJqp-xzV zbsvj)kgiFlzd@n_{BGg7s_bsK$#n`(d4L4o9LM~AlnLIC`YI*07|Z0-#D$6zvdVhY z7yWX1)-G_cM=yfOU2WCOgxBdx9zi^}Y~Hv0fuB2kG^@)j%4&OhG{QJ?OAi_Z(;*C7 zrhGzFdUJjc@}{tP9dcOXlEQa6RgzGG=^Em2 z6x`W6%WjdQytfcY4)aG4>;zdqIcKc!FtPtkqkn|r#gWtvE0Yko4a25JGyI(8=qvk* zDN)9{9XG?xC}B>mWpuWqXtaisGpmTr@XFEp5o~P3>cy?XZ1&PY$t`riiulDe!cNgi zLi;37BGN%TeTtp4QK0Nn*RE-H-kO&s7WPq*{D8il!qO&Ifq7VNh*~)2Hu!-XZoNqk z4-+kr2UG+c-qeR`aMqVYsi}(uD{5%0J1_j$-@YMNC>`zO;6q;r; zzntN(R@PT~iMJaPih;wZxI{LRNxDg;fzS_bWeeqBtU} z&xUSSkXq+$s?2m{@yDtsWZn+Ux(>aPu5O zui=q+1zj2@oDEP*0!4lN1gh*3g?(rN7qf=;!#^xJ5x9@Vp=-Q9Xm>iQ| z#a(yF*(g#Grqr&cBtKRJinQN_O8O#{6aAF~&ov1Z)Y7}4?fIkOfh9M7%k{x{Lyu^R zGOf3#i+SfjGo-z1jzjB;Gh4=uLPbVkE6VVmI|Hy+5s)VR2|VSnxsz&KPjeFV54Cc{ zCKha1#~39VPsiEF?t}1ZxEb>47cq>onG)k$Z%wP|YNoa-tgw+JAKAMu@|K>_HHntD zj-qK6W??1_eKKhg{;Z_-jjwBNAhef6T)4iEyrb(m8U(JHE&cf!`nYhzSxAL^@0s46 z$FUdhP8f;+e*MYS_c|1{SV^hhXcmqMM@@v&EH@g#Byx+F1iw-vH>Pt+Y@RKa@3m7b z=*SZOY3^;oO87i6c?yCedvC|rHM*tp;}*VBn5%(0*+pi0IJ^1ehLgOC3%+kjWbCsG z96Ele^&85vDX{in6CNNOgqo;8GW6NN)}082f7$^LZgIq2-%i~xdni&%?M|V*F>y^} zGgJ@ge!w~Iw*LGT_Y$r6J;$`>Lo2}C&LRMr)=5+;6l1}YrzNH{nFGxAiZ#TLEEj*6 zN?CFOcmWr+EsZ;FK2*+lVAaWt>8J1er%uTOlbK_u9UGLIA(WB+7k%G&giQLhZ05z7 zfV}-*kp64dNi_4Z@Df&qoII7tC2a^N&wi_yf_K;I$t;dMU2@f9&>=OSf<$s*qw{`1 zJ?Yw8sB?*$WOR&{u^Z_cLp&qtjWg?avJOV>VzdjMWcoF^qX~JGADJrz8|9k+kPT=E zYd>p=A7z76Op~Dqrl zfIzoDd?qMHe+cTf=+$DAxnhD10^i74eC_-UX;5%hM3 zqDOZzBvn1S25Y(XH}xV5c?%?$MZt-##q9^_)M(!Junmo?*P_4-fc;wtLn2 z6uOhdlFd__`L)CC@lQLSXqZ3cF3!c;0#!)^~oFAwB>90^9%Zxc`jS zb=WXjB`tCIv{is>{d`lg$JZ}+Bh~@mVvvzwTWw*>!$!9-dy{sxi8MY=6zY3#u(p3N`o)L(@7$nM z*4ihEq&js)rP45l>a04#>(af}H=q%#fo%C2&8>e4?0>gG%*&OikuF?iVlkn{f^hs) z{^=GC^Xk3N1t$sBN@j1D&yrgWR=zDz#2?{z%L$K&jRa+csRhvJlOJ2dlqz$;m;Zpl0KO)CO1y`njRi&Ef~I9D z?v6H}-;#~U*MK=4ZeMRd_vdd5v)|ynpZv=px`LSCc#AZQp^>e8g-gV-74+ns*vpVRmq*qV17Z|}~ric_J{9H4| z{x5GX72k)qip<)P4wXM_t@hXYmLzYm)Q!cp(+^CpElBV05fzZ%{Mec=`T1z#URbgI z3HSw2vVJUi>Cz=DAS~Kh&t74E5k2Smjt$Rk84kp0<=&f^N`Xe}{E`OgnLmxxniG^C(W_p6Bw7)o)6c|}6 zs=$0aX%4AYA8q3CJqG5g$qKdj4y~(oJ4Cilohc>mEF9$2`2_x~4)sZF`< z-q{iC5EM||uq({6!≶E@2$|DQ6V-UE+(<*jIP4PzZc_%ftpknZY}Sm{0M{1Kt-@Z<#_0KrJmO7`qGJf~THw=~Gt6$Y`! zI?=|`pSsx7q}K_7R3qLNIT2-zy5chI`gWc)i{Oyq&;4zZ~3LQs}?PNx)NkEB;`Pjyp9kNP+u; zWqS`neHJ{^A;jTSA$UoiXU4#T^U#B0C@Q-eQLb@HrIZ)qA|s!fL3hP%h~S~d|~)$Ykzy>(vRns==6@FzFrBjF1-hi)x2Q0 zfBMNu-HD+uwPbI8ilNV?OcieXL%Pdzt~$zzH5TUkHAb_IB}lT%EX+p)j7?95za~ez ze?eisMmJFDjeM%zE7|YZHs>>r6$@9>@yU`CH8HjkiqY_i2+ZQ_|4PqVu6bc_TI2u4 zUyIc7kyJh92zvs!|A(K6zl{%L5K?o{$C&qa%%9;)l>~hs4x;p-yR9w@MGh7_1p%f` z-!7}bdW$r22D~&iwkA9Sf0=*KB3--F*H6mN0P;1Au%`=^(~_>qO|@iz>zmG@$1>4b z&0dsVyHyo4M^?ZaxdywILKC=oT;;g#+@)C=m!Eii*2i$s65}*G?oQ$hS~o9T8`P-v zT`=usmu3Ko=R?@}B5p52U-&+To4%Twu)P_Y=8k(y1iXpL+IalX^U~vqBC>8v^YrH8 z$Im)x#%gMJP?nToL}nZqW}rV@ppi3=1wGu3g=0iP!ZB=2pQ#^`mzOqnipH?f`F*8! zukqEAUgnK-s7<5!wa4(S8cg43)h3-`wYV2O_=VctbtYT0t$v#Jf-pdB>w*btQcwG@ zM``+28K>PHH^;e~Fh!$~$g;*Z!Td$5rq!wFI8$#i-Mhy0bvNURq^^oSzo(jD*7Y$R zgEw}FK!Tj+vQZ`cKe?{_mtx-6gwmyIwC$!i6pok=OQO&F2sB(A-INAzd&n&-*^8@g z>U(GFF=~2YWt=(*cOCSraBVUi4~w>?s^KtygR}flYEw-+qjU30mL1hFkXSC}*_%u3 zZb~H%i(0jA5adyT^)2V_+$z!wFA9{}e=&r9X8$g-u=aqg>z9RAqDSr2x%#9pAK+R! ztV+9~GudYGRS7|V{Y-7oZ3}eE#KYG{RZqh?ci_0mb7-*y^gW>GZ90Si_=4}$S7YR; z73N+p`&-XFg0X~MLyZx3#{s6YqapZqfK#(S@+o==NUo7sfzcuR{P>Co_s|N6^aogn ze>l|kf8pCBkP#ei?p=(sE`CIFX^2!mKg*B0xAbOLtEsn(FnuwO0KD=RY##gC^~OvP;X=H1C-SLnSs)8-N*{1@*^+4pbrcq4*|--{5ikzlWB^}(92SM zyv;beyc;==)Te$^A!`(;s>;+XxntU>Ib(c3)aJq?0Z&)zJeSV+!I{~(q`;1}Phg0r4Ya z^@Nb);Iapyqc;SKI=X69+9cIrQEVH=+R`OP3y}G5+M&-^4hwXFYGL#h0L1~kk0TS(Dc^Z=O1CDm#9^3^>SLAv7V?0)I zU^23`H^MWT7YN~@#AfQd4~Ary&k1YSCABgcur?>rMRHBe0lF7W5l^3VcY@oV^AWpA zu?bGZhfnwgV)qqH5j54jVZ{$G^h*rrkU$$8vtDdGd=8o8HSSqY{B{tj6uKLCKZ?C>1N>vMmQ<|rq;#FTz|ad6AsC6+=TcvM-tk*R6%d{Ej4u7Uez3mbeCRe zj~3|qN7|lPn#C7 zL}kWAgRqt20AfpGDlYF&xi?7~2IP~IrpNqSAh3QQ{fPX-97%WX5Q%n&Q6~DX=H^=<7#<&}S;BsonPf@5 zjz5>8lHR#H*)@PY#ZbFPU;RCi;D@Zdp!IW2%+eY@HxiUr9TU+H;Bv^&*u;`~i z9PkgI)WfCtB$Iy9;4zc5W=-*!e0(5H`-dmCttQGOJ#>M9_r{4Et~{-o!|fI!cOTz! zFR_Tz^G()i_;hZbgzIp55RR8;NC;>kg=BVs4pvB0KovsoBG2^y^PU9Fb{8oed``AE-VcsSsOL5*_i7~ z(#ZG>zEMm7K(aX#lm)tf+1Eq_hXXG&kMuHpd@x6ev7#lw$3l};G0T1Q4%{ImSIO7# z$04rs@+RkBk$;Yigrocba>E#|zak?J&Zp~l)Fg2hbi&RSdVRK)3~uaG2HS!F>P`Xk zs@7FuS=ukHcaOng2wpe2w;c07?hFQcOftrF=49yO1e)-yqs^ntOV_U7k<&DIihxv+ zN^a}*bgZ&QLJyM$$LRpxEex-4u88uU&ut6d@H#e2v3JSH$A==pTT7JMG%?papnV;E z=J0}!K(zn8ySSK)FzD54h-{IH#wKSt>)-w={hc`U9&2tD0jqJUKLYu8WC`yegrs&G zLuvVIKfZ?GCTf%Yxj+OIq<=WSn5}l-=shN(h9aXTo{={EV4<0YHiHtlTj{NqzIv-L zKPL(1Iy_08(sa)_NFTt1E)3@8T7S1?QfbZQ**clX>Mrz>dNpN7aIo@h;?^4!7$#qDvDWy%IlBxZmcu$dr10z6rpY!^nzKoxh*IzG|CmN>Y!QlAu)U<>m zpWC6lKMk)#EeL*!FChu}uEI9b1bnIajcRC;u*J7RXeoVtSG zN^HLH6Pu~DCzA!XvnC&?JX0=^O;HcM70dv>;`tQL>zm9pbPP^L`YBcDzhW64y)Li6 z<1RzsY_@pFRAgDsXD^f3>}g&%^1SlJ5R1nR&KC={T``xr_$3*-#DaHC8j9DHV4;); z>*86(r8*$zsgQF1JS7UVXDi}rmT>X%fHoM zP~uoXoLags4y9?$G7i5gAE>j{uWP}d&RjA$SK6}xAVa8N&97)|>O_T?G=aeta|XyJ zr9yzk09t$QJrS^z#WWW6xaq{(Z}Z9*$5beH#GcR2NF62bF{^^3vRBHU?D6xe(K>xn zQ(;r!wH#3F9j=uy+3TK#Ai4JHE{xyMx@v&vYwnOtLrA24>E5M$yC@enQm6V3Nr-+| zQT<{aXF)9Ltu@2=Tp|X3M^80_5RX9{Dk69*n9tE-#h}9k$GWkgZ%*8umLo?YjD0I* zqVC+vBbB$bmftHwGjORX`T;Lbb$hnbK;Jn(tT(A!u`y-138yzvpKqRU7rf;z7}Sx# z*v6lBoN|Y>j21V|j3c!Eqz{%CgWXM&KvMMES{Gz!l7k}B^vMt3Td60gQvz%fK!=Ucgg5z1`%Bv+i!Hy+ zv9@g@Jov#=rl}byY+5q-OQzzQTD6ZoJY`{s6jNl-ZLHBSNS<(_cFC~I*at7ynO3kJ zG?-xM9J`We5B)R59?YF?i=8bCp>=@|be|S46LjR>U!-10&)THP1y1%pfMeQ@17+Kl z%n}DC3w1x=w;N`c9ISPcsqnNjK)$s70{Y&XBmQ=uZG9rJCeBCGSG{L0Fve+~kDKhZ z$1JDmcR%$(CpFWLdo$zKmO#GgE_(Q+7dLj{T-mNqM)w#k;FMuyq!;gOn zt$0qN{;Wu)W5qd?v|gy!nVHAdPBhFKs3meWvp;#AYp9hp4mTHwBVO0kPH?8-d<_byj)pzMryiO*s9kbhdO@JB;5Mg4*09sc`*Db#p89GfyPO!ZqgVyDpbo+4UW5 zfYhYmrL;6Q)jgW~i5X4P(PP_GEtPl|PoK&LNrl&EF1f#W{HpEIhqgyu!6loHqMTtz zW5$oj*4({AbyB?HrS)H4A~hJtOOLPb9ZT|9yoN9fD_LbgC|afi$l{%voy4NvLD#FT zAMtXAdeGVQE38yGv@@z<(+%s6Qi8$4^afv2R<+;aW#n}+ohf}oq$rn%6UvTRGsz?S z-)@-FT{n)*U%&HCrV8OeJmwp6*IPdLCZ1)L2;H-hFHpZ*u6Ik9+jZ<4sTPE_L9i?# z=?s43&!@{zSDbXddf6+#oAiV>YjHpEhYw|TNo7!Z=;!+OKNC~p);V_oJgB0-Sr3NR z{9}vt0C3ky zI4eKuY8%khC9C>Fk=f||dXDx=^G|ATMZU`Yi!(BU`rY-E%T>eXHKLg}MU4vGRBY*8 zLCtut4R?p83|2pFf^XPj>qF8s%<&%I#C#UrMTU)(ss*8ux_@ZPXVBKFL6ApiKCudh zjk~wvXqzXV^&xZZv=Y3UTfuwZO)fJ@tfE8qyZ7FEbx2%hjNBVziP?VAl{WB{w(dg6 z*V~O*cVms-@e|`hGR|5d?Yn^J{Dmm7flnVZRPk9rHQHW3wlre~6WjGk(jIc~ zv|^+D?-lyFNrQ}sxsNv(9UlNi8X`g|EEiRE&)Zfwh4B_k**m!_fn*I%Xwfv+P?d!S z3@NJ~N7Xq_U=bw}GIJdwBK@fPr_6l>3R_S~hc-h2oA1}WrlTvaRb$9A5=yh+Sl%E` zSJEM+h1%yK6yiMq*+%smo%!x$R?=+RkpJMa=;>96_-Q`D!QVwn75FT9hE>uV40lDQ z0?u+`Jz#C0q#@d(MFZ)_*x^u0P%M{r=fGcKcPX==;w4~8+7s)`naaz=1~Nflzg{3i&M-I z<_EW%<{01xI>=@BJ>HmkB+o#3WNeuT&3%zb3Di1OK=$-`l>#-FgWd z%V~ajJ)9sgv`2r_-NDBfGpC_iV?ntY&TRDNT;0lru=IM7m14x1#^1mLyOeL4L|l-OdC_ zGEpk;RsurY;vAJ${Y7O;=1kFh<2mt)$ai}FDHeSe75q!xWVL=^yK?2o_MW)MQV7W^t{wEzj@#*gP=838Ram9#%?f;DU`I6;dC~(5Jy)9f zTms(@+_7AtyreCTSh)tZg$pC(Aym@Zu8EA^{sKXRVTj|bt9+a75hd2Hs^8vzol!;T zH1794O%XE7VliaS_q}PumD5q>pEg?`KBBXHe@9cx7e()D(SB<4x1`XSyY!k$TNU%F zT%(+-{TX48PWtMk;G!Bb0T4WPurq`Xu5dklMrKu>YhHQ>svcJS5-wQEWJH7xC2tpf zi~Tv#tUa>+399xdbJJU}fkSmVRDCfyqx%6_C83JEd};1SXNPGEr;X0UqB@^p+sD_E zLA(67ymMTmYl|?E!^w0|py+8Clv?Ldj=Wze3mXFlbhPQ%jrpwwV-A&GOX#6)6iOpp znvYao-Rv865a?{FQ*TvYaqa|{x!2v zG+jE+YoYc#pyB)-2A{U~nsCI$mCs=%;N~SQ+N1O1>FN%J)7VE4xfNJ9VXQD+3|k14 zUVbuD#R4FDR~iz%t-!>cxYq@{ak$qofi2dagqBn-v;X9y`$yPLeo5R`4auTB4y$2p+s zBHT(Gfr;?tt-N^~4q{|H=SR0MRmB`6;%^$jTE>GXBa>4G)o?%5!DR4^^-tFQHwHf>X(AiO+8F~k;`~6dW z#cSt^JxM?(6Lt>z3N{*!UvZ^R0?X5Wx8SVpY)-m`MR(1n ztunGqx1RvRgs8{OH$@~=b^G?Vcjhl21ZH4MsQfBv%`d&5_TaTgu5c{~XMAS9l4KS2 z*YnnPcnkE7E;!S@lMqa=J-j9qE_{{lHvcEj^KdV4lMtuQc$?P{uBiWT@xE}3U}^1D zbQ+KM8xkjDy@ZeF`oC8S7O+Lv5*O11_!I~9i|AK!cf$)7i4Pzlg*p1oe7_TQjvkkw zC#x?Xbgp*;b$n7y*Qq+Aw#6XNK5G79Bk$x?FrV{c6#0SNWZh}jn*71jQ1?R~%IPiX zy>&gMOjRK-^3c<^@@3TadU0vXwR0Wer9MaOO4q+)8~uR+%? zL-dw+CgO=k|14G(W<#$zWq%M8M4hBJY|wZBxf2xF?Lt&(jSgi1=qCk7+Kct?9YQSz zDe9ZtY!-TkThbKo8Hs2qafHmQO;v=y;By`42I?7GG!U%VLA)vXnK)G*wQKQGa7I2_ z`QTu)@F4Prt=(ace>$|-PH?df9=7v|+4%gSK4;~{gEF0?9Kcb>AUhlDD4g8rOAp`j zt93FoHpz#i=CLQRF2^qL&h)Gw-)A=5i)Pexf!c^E3~z;hvKBq|hrX{!(??*>l25w1 zs)m^rONV_|1!aP z;QSdlNyc=-QX71{M+uzZX#&mv!eb$DiXfvyC~r<1KiS0a!u+0y@Pv6Dhz}O4?OaJt z_}pk(!0+mtx=2uzkH)vUL~{J`U;!)*S@&b;jf=F1uSdIPvweJvS_T6rwy2tY_<>>- z`>d%&Yi-i)EYIxw$)z_F8b4Z>m(ba)tkpN!kPz{xEp2u2dXA~7u?bEumg;19(W_Dg z6ab!PDmzm&P>dmgfkcDTK|BM?)_sp6QXD5|TX^%VezxwTH52h!yeS|z*8JjwCaO30 zC6PmmlXM;iiq3fLKlVb{GJH6&G?r*a;dSe$0e1(8?<>iGf@gpg)wK11ne1Ffa+C@1 zrr_m5N({m}xT7=m=d{1(Nyntw#4gCXJ>Z;Mx+&2oNAwykeDK6ObF}!gda_{ z)A31FW;{658@V@BsGyW7>f@Gd9V0M5wiPPpx!;;~N6w~O{^K8uL6+g~EAAT^9v$TU z3L%woY#~1;pSN0AEj^6h2$0LgWZ+jy?XJsbZRG3MjaWDk{DGw``0L|LaIL+5l%6O! z72}hmbjPyb_JGl7YTZx%Ip|P9mZl&W5ebxUok=gPdi9$bm@GZ>4*&Ti7I?I7%N z+qfX)6I2SawHUaZFnGu`{37ZDeIHl#yyDLM{p6*vm6V(534W{Ba~V5|;Y=#!R5UiD zpJZJ@hx)!Y99k!zENreUHbvAe^lpz5If2~a9X{!p%{0wFqGC*C*U~B0t*+eIr-8>I z=h=3aLnszzyQsz6_<firsmlG`zi_fDco7i%S}R$JEYz)m~45-#hU%ZIp!505z8S~mF!-rQ=W(bY=?1&3~u?k<`++(R|%TK)bC7@!TDqZskA00?ULS{!t zz#R&Ls+bXyn4YA|=`!&}6eS6`8Cu`9MS&^ul6tJ|!*koERpTpDwKdg=90#sxXcvk# zGsiF)2i^!5KAiA4@UH;b$LCIApqM2B@R$U&?;Rhh!ZyPn@hQGT{)T1o2=F8}bQ`NK zwE6c$fXgMr2|FH|;cZF!g(lifCZ;Wx7sAe1laQC0P}A$o{WmYSuUF9BT z`sw-72C~m5OA)K=7DcJ9`wUWU@jQyoUkX0~#_ouhQ-Lu57N9lfLR;A9%bDUh`oRNO zS6*z)g<6}>P{x5kKYER24kfV@Scs>bd~?+E%zhCIXV0D>{?^0ICe+yIE z@|3-6)s*ZbJ&pei|GkZDvyzz{ozSy=s1DVOykm(!Ra6x4e!w@&Vvb=p*0CnYN< zC)c959cz9WdKSOF>BZFfCX;o3rfc$Gr{J4+*JT3(yf!`OTnmFCO0Tk>5EkSot)TF& zm416-I1^S{Yo|K7kp`&1rfNr#pgIXH)E1S?E`r)(qDy$lLJx(kipzSSR_fCJ*#$13 zO@`1b*XdI*E_E)i9)(n1UlUcNb!I|)?u@|)(Q!2=+dNL|@$?)?=XAL}g3r{oQqlO2 zIFil02HSmzXjS?>N}U5#VKVno8|IrUXbvdPRUi*K<`=A>Qmq4NRd(4My>qEQ;ef5= zZjC~h!@9eb&Sg!XGxRA}a9KqZ)s}*b6Q}wHerZea5S7B$wY1%9Jl#TYRHCC{Du1Jq z^K{@^Y@lYHYo**#bw^A<2nNpPXR?`EpB{k1_9jg_Q(oK5wO+?FDn9B^?M~Ug|5$Sp z(*gyonfkhYD7|23Pvg0k@?I{R@OMK-uV}fH0e`;US^ho1juG*n$lp;xgd1bMe|G!5 zy<09^R3Ot=Ywk#gr`-u_N1?E5fQzqWk@}>qH}{_3>Aru`7Ai8V3ZqW?7DXv`r}~H7 z=9iPca2R>}oJg`q1pd^UxwFj)DtWy*)S7k&72pr&?dRWKmnm3a{B+_RecS!=m9xcQ zwYJae@MUv7CA$`lMAOM~#hV>%D?%R7@d02-I%zBC2Q=4Pi^SFbAJ67&fYw_u@*m+Q z{ihW%)mMM5JT4}#%FWnjC)W~XP}VzkyrBt=P{WQ4sgWToVkSCb*cbAZ4#nMX<@JYx zj(*E^|6$GiW7+&AH2V)p5M)of_7}!@VE#TSCn%o_pV2jVydNPg& zN|CNTzmg+408BqH*0%J2M+g3gr-NnFkdvA8R?DRae{q_1d-_aFgLGKWG=^r8BB_^jk-PGL7v(X=Bw{#*+MK%@F<0HAKTbP5XbN3H>);=>Ou6zmcKU%Mk*aGWNyq z<^P8c_D@GipT~*xE#J+E*G2%Vmx-}uIJNQWWt{)R1C+1*YFwZIX#Q#b|8d0r-Hx&u2K(41L&SA6%T=bD7m@*Z%2fM!j@Z|` zw+eE4Gke`<-Q%7Kj^VvEhtTN$DsgINGkNU4>^C>0m&`irw$d5+cr-dk-?EdM#2qw+ z_Yzjv*p~FRSuc9MQ+kA0+P*hJRqf`me@4+~d#uiPUT2E+CGMGrrH#4lzf16N%^d3ul7dXcHf>a3ZHC`TfIDJnIQ_jI%R3X{trjU z?b%$9I;70sG|$;Cb}bx8<#DjNx2*+Z zB}6)Zdh*#s@%!^vcn4Eum<;KW-H6R^8IDC~zpXq9(bz}tm;Ni6&Cx42uVcm(n2bGLW?-h*iR zPe55C{%erUqjSLyb2Znf#E zm)cJj{Va{O*8X*=We!`{PaBAKS^ZlVtU0k;nwj~$%ayPZz?##U#$=I7&$y$ss0D<5 z(0f>FmDN6)G#A3-DY-y#rJRcPsmi#`g7q7#F}uL6Yy-E@zZ3;zPs#&8hh~7);^(C; z{{qEUz1-AS%8^?(Q$jn68_xOP#?`o~c=EWMCRj8F(exAJj5mkpj5+M5@{spfxtYhx zMa4P#iZDnMyKHy5QIOPAK<}JhGTDFHzB)A3*PVk^fAZT!h5F7#oO#)4D zNO0Ex0fGmY#)7*`L$Kf$8t+aBE{!+P$h$e`|K5Agoq6V&nNKtOL&NUsy?52BT2;H& z`mJ>YN;}mH9@p|2?r6N5=q{Ebc}?3`&HbrcPfX$`#3=X@Vn1vdCfN1e)9I07LIvo; zHwJB%#r`;kT~pz8lO#w>$qLr9u6^_vE)J2lWvP?UW8hK`jCkfmJFYeo;-S>wwhvf?2vA*cYw zf@VLo3+8q@yyONKhNHALk^`OJb3$-jLo=H{`7AN|U!EOK^WPGwsPLu#NaSo%@>^uM z_~?rvI>gXl|c$A%|GPlS$8U8U-XghAMRA#y}_{b}k3Gn}8TJcr~ebe+;ApxcD` zotKm_S|dq8)!MdE_J$SEM?~?~pxq0)g*{IuW8BmIDE~0`@4dDmzKyXe1s-y%3yzx| z{yf!2<=J$TW0T841sPq4iStWw+NPsPf|!rv%$S9C@$p&?^cYw34QsCoGX2SZe!Uu$w3|F^e{mq2EQ7Znyf+bK+qnTH$9(pii{}V5WE>v zl`p$%37>ktQ4vm&s)=bUoBRID&q=%joL4&$<#qmH_kKg;`({nv62ST%)6bDyPyQ>n~$(Bb$(guY@*8?aF5DlKBOvLB3sGJPMke4S&!>nVJte34sKmcJ~{ zsnh9GLd(`pBLC)+DahxGRu=jhZ{1y95^(G5(4>5ZNsKMR`U9l+Q~LLD{RPe4!zmCK z2-YA|wT%SZ_=wv@1SaNE&FMrw9P>|q+96>6%=S+#?$}{9+IGL*I+$Px^gVmf zm1{m6Peo=K2wbQta3R?us3|<+Ci^5QIO)h7eFZ@BKo~h?ZJ;Du${F?BU*cZ}JwZM! zO==RXV$Qm6HBj~Hu=_D2;CNTjmxX@@x^ka5l2bSn*H@z+F4)#7X1h^?Ydk(e9R+NJ zmD^0(Sg>l$EtW?b7UPgrtUIvP_y%XG{XAdkK_$L=$7OMO7xW!~(GM0I`z3H#Cmeifw-A=QxLT7_v ztg@-y-Fi1LS~q-zR+4%Mg_Ih(!8a@WD5pUdo|`R=ef|Wi^VTz7MRNSPr*T*Od3Qe! z*L16wf3jb?=~r*(#+%^L`SI4rT@GD$;LG0r7^<9vX2|oRCNqntj5ValCo-vPd*jdHxID$7xMdq}^fe0Z=`eS)QO+ps#5jgYtKycJ5_v1xwYw+} zB_kolumh(_<_607eI{XIn_DKQyuC)8wx?6&@n?#&{T|G>Z7x^BIg={Yl_YW|CKBMi zuG6p_3bw_m7RE(jqc@qvHN!rmSHNb9{%UhdJReQO#Y{=+V*q-4Xk${pZO|1Q5l7Ma z(99Kv^QDYb>OK%|OKiQm6ckmhwb`;<_zvt%UtV%T1!mA#kPlA7%o|=}|DG?(Uc6gpDZYmH zmv($x-he$2+JB8_AG$IeN7_PgL@@A7h34wfk=N}#XToX{XIh;D#)#m9r3@V?7hH@& z_4)-%*F_T$T;&j5aS!n@x+qbbIrn3HbytvtnIXY%AF$$t;2YaFOUSjswSI%a-~}fQ z$EfIIVDSFT=fUTo7I~2twX*n(>s)lu)0)?qc{!5n@sd@2Aiy7o=KRow`u<%mDOYqimNOMu|&%s+ahJjkYIa;3+zH7pC3A9xtjz(+>bmrK z30LyvAE+~Nd>2Ht>0xw1VqjCe-KU6&X3-FPLmYEftYgHN;8Wt%TW&VOeauYq;jWqF z`!IiR=34&Fdsy;*BzOzTt>W^$AJ*7Bmf=I$vXwu7#;G*#2bGtuC=S6_0s9<8T;Pi^ zCf<>%HM-lI+i{M?chh7Z`#rA~V3X(m&vi1T!y2h?zpwFeYUSLGHhLZws8SOt)(^)J zLhp1|0*mpkAjvPgXF9yslx)L;1~rmQglCjd|HkhWmdPMA({|?-jL(PaFnUt z>65`p?aV4ets8F(q;v#cfAO8A;XAROc-`$Lp+o9(`~7(7)`XS)qdFUtd1(KO#8d9L zyVozUeR{tB5c{C`hCbVFgN%RfzAVP-wTh9CCVZ(7lC1)lOtWW-jGh#phb2faTo6Ij zAT3PXIfGq$FE!EJsxJ zep+;Yp6&$IazXI3-cbb%r{dn4t~Sk2KFc=xP{%5`Mx$*rs#o>+S-a)$+k(^Sx}c*} zX4%_R8IiZ$d&!H?;u#*y7G=khW&}@HzRW=ASx}w|MRRj~@_~ zGm$#DZN)6nzEF~L4XC%Gv!T(kH(QHE$^@@dhgMXD$5;Fr&5i8)sZwnpL@{`gH0Wk( zYAfd!&?CFHBCBl!Rr2#=GL7CC>_mcp?CpeA#;9VQYJh^_A#6*LJ$-H=DiMQdILfZ18#ICcd*!%q(yh3w zsK={EtA8mgv{ot7hy^pDUyqAzWENZ51}I2)7qK6$M7-^JOJkn9Q+xji{dv$}T+N1P zfkGSt&717eV%*0)pT$#4x*iFe7%~^xHU7T>Mw5OVRg#)1{lRA$V-ZqePt$1B5&7WQ zzN@*+$pkAX7?=?Onn zxyu8RCIko7O3$MU5xp_&2|E0Y|2ueSPkYZD_|^F%g@^4tXFWhFw#Vt%ba@U1%U^Pi z;|G6^w(cWNCsM{;AZL(me!nUOF$dF2?Z}fD?ZBF*NrRcLyo$8Hp7T|dVy+f2NOAXD zO<^`u4gFcDdqA1rx#UO_UPG^&A$M+1u~|;wS{v|HT^bXwr9(S6_1N_C5aJc&>K}f! z&#@zgcFseVe)~y-`)*8ZKg}659n%EuY{*eO-(#i-^A%kfYq^IdCV~4XX0`sq7G3Yu znT$UURQBd-Utadd%Dr&CPM*7(XuBB5xc(vr#h>8U%PdS?caT?$;d8i`NNiZK>2ioM z#FYIwifB8&#k(TDSbnyh67gl^_C3wJU0q;v?e*z@Hhh2=s|?In$EVGv&GZqaQb6xd zI!E_lbBaW9@_XWLY<^<@j^Ci4fl_B!qfBtEgXB}7&ZT{vkenr$X1?Ofsw=F$^m$xS z(io#KAY_LCf426SYu^V3W8ADbjAYuoev&U1OCXQ{=l;B&_zl7qrKY)h9@F0>wVyd1 zA05dyz}zx5jrBlXh*(pRKa&HkO|P0nY1vuKwe8)^!UP*mAqFW-9Ls5UTV5b5;R@#pIfR5gQ~DlXZMM35{hkp7 z%w>g)3I)g9#g!|`TS_Gm*yN*GxzM=KJf#(noC>Zr3x7NA@Oqv(`j<%HVo)d733z@`aQa5@ViWR{oWB2H1Y^94V5FD+eI22`paye#MlF zMfPEuB^#+|U}&`DzUaWvc1Bm*V|44uW`l9_uQ$PQtzBY{uQM*or%OEEPvqM^ z8iKDw#)GIo0dM3@8X{m*;S9{Gh9E;1%`+qu2jck`KV`YvJfwftIwLN*0Usm(&_i(rbfgo^{bqc5>1uR8%Adc`kuJ^ z?p&qRju5xpH>!5NB_uUuAo2~6amUDO%si^RrWORPG#ySEeL4!=ns?tJThu3uPMtlN zlc>A+No>0FkpS_V{n_)YS>A9bScMs?&EoKBwqF2$7yW_*^s?N;7W?LO7RaGeY1eV) zar2utJL7T2YEu>LhW~YY(f};2@5$n94}Lb>}5_)9pHADn7HJM8xQ?&5E`e zyMPVe*Zn1$8!o%Tr;D&YKJnV}H(l?F#!dDwN_vmInW5xmxeQ>JS!Y;?NUO?TmQAg zB(JX9&=^mbIqcN2b*t!he8q1-RX;0${+6(fw}Y2YD4B&Tih<6(h9gS*O=L;r*Ai`T z!mBq>w#FPuT9X%gLT7U^rq#&sPxuBhSe70}mnj$5haDn<5)$uh+}*L=yAV)2^Wl{i zx8cgMmJP9u=bEbP9V16zG4x*_7@#l2^Vt=@C$zgWr7^KJDp11dUe#E=i)(#(-T!k& z(c^u8!@IrYaq6Z;FTJJ(6*ip-C1j^Z=>qg;jdoQfJC-D3I7h&?X~%o{J!||KaN6M{ z@ZOxv^20cPSO+Xs%6!TZIT?0~TDeeCL=m&cpZa{@-@Sf${lTRz$6>BRcnVyN^cg54 zSoGj^Xfn&Y?bMYrU2;Ukv{GLo+Ujq|_E1Ox0ehzD6cfW~ zzr~~^&CaA=RhkBIR!Lo&>Hk1@Y}Gv_dt`6C9G!EXXPaLT^%N6yQks7y%{hO*U?q79NBhO z@uS_w-}Gdzy_R8??+S*@BcW=Lu!Q-pm!ofXX&G zSjqC>NIG<41`|djCyRmLY(O3@ifyp(O!u8P8{R~Z* z{w&3szn!|cx9W0f)g#k%XC)LobWeiw>WZV9P(SP?AufWDm-y_7prA=sp?9b1PvuOe zD~Z=$m*PYOqtAZ2!js+#d_a(1uQIvs>FXF6%-M`Ut@(rI@aKZXz2f}Y_webzc5H|4 zd{W{}p%h1Bj8qW)INo!1i*9z){we_GE#?0^-CZQhOG|d#xE#gz$krqP2C}t$BQe{^ zZud3OcDvY{{eav`{f(^b#wgjD59TYn2T9c(g4NpO^&hQ3&tY9P>zrvn5$;_7DJyDJ-4-4R$quMQ2;umwmq?9Hxunk=c zI@&XK*)6v4KhA#E*48OFMkl7AVBJ+Z=JQaDwjA`;>0LUkSh>CBMJ^fN`v)d7{{5PV(wG&_X`#V` z$t5adZ{f}DD?w>#M#ILR@rxRZZT)(QK51NSVJ(Fk#Ps6?R4Hw-@JCCmGsDr7B<6HC z3@qsw{Taft8J4IN)zn%5mrj%)jrACl=G$w&9;3%bYT`Y9C{rIRD2Cfbih z?dQyKI514W@8n?j24Hle6fwjZX=#+h{-AXor_(h`=3SeYlm9~~xr>F|WIk_`sH5NYAxKd)m_OU-s ziXnki76u{T*}HoGNiI#vQwqR+=2KJEJ7VCb!N-lXJfKXEw}!1jl0qF|Smu#b;HVv- z_kp9)`xAyPd1FV0^=+8YK5|s82JswTLtix<^(VTx>LKlQ^0ZQYHOP;F`n7WqW{>r( zJ#aspzpuUfEEB^C9Ub}W;I-lBHhjPjlwSM}tWNv;SQ}AX!yiyw8{uW5Clwa_>!{28 zR+8D!oLiEaX5=QuZ2v!Z6Vugh0o4eAe-cCwrKLSf1)lb=!y)uvXDNcz$vmG`R39N% ze4J_ozK%V01{Z0nv z|B?al06W%yoz-Qwl)ScV1_ZJe{m+KdQzr}7`8vzY{Vn4W*G70kbhTno?6p%E#DQ3w4!SD>Udn>?A<@)0O%s!uYXJBu5(y*bcQ66OS-$m|Gd*( zlgHrQA%N5X75rzjG5%^c`9GWe-(CNI@~r<7!e7n)^;fe){@HBOyJkOk`FFF|^IgM! z<-1y^2oU1}`u#sg!~K7q8I1{x?m7V@5G_7IXCH6|TbYNaHDLTlx%e5q)~-58aQ4-k z7%TJOe-={tpSc41?C?p+Ydy^-%8&A&ZO%BINxr-Hl2Q)*+-<6lvpd!-;c$V9~vhHuNtiHO@~ zfdK&dYh?BW9{2EXa42kM^Uf zFc%uC8-k4|6HJ~U*zn~C_ z?yfitYxFLBe<}K}MD4^&(HM=>ff|DJ$1f=E`ICFnp9^^+#9dGyusJYc7)Z=GY(z`S z99l(M+I%SsJ^Td~;XZCT(^QjNQDKsY0Aa;O_ zFE@_C9TX9GGurYH5H+Erj9@5W1I0`f$+P8a%C~S9OIK|t9-{G8PG5Dvx}s^OALZZ2 zD324bx&6F|ForYF#Gc{CqHvPhZj;twDS)`m?87g^z=00I0THU|(0kcvDQM<-Kc6vS zEDHbnDv+nD;-+nW_|9TA^x8k@GTd!)_YXeY=`Arcpio9s3+QjOZs5t?T}UFcHrmmz z;=~U=r!;jEToF9m{I-N|PqZ5*4$Z(|%A40>4e<*{AI}>*nuTZvVg?6D$68YZ_h<;E z1d)=>JgmTN{E6O$^%A=@7%Gjqk3P$Ks+Km{jV#tS!GFv^X(!2Y-oljb_nfAgfU>4c z9({{C2nMF00=mBM3~!s-AJ3Qc3Z>a?N0KKLBCS}a(xkKp4VXZ)dsh}= zrd2z&*Fabyy4~aEdBlfc5F5?R{Jw(yy$2`GlRTm@M=liyK#jOyxilReS~eb}?>WCG z^K@ue{!*wyQ`gQ#a?fmC6E+0ojfT7#%{$E9HiX224o(->S3&_X3i2uXb*zCJY~~O< z!PYqA%(Ku8g4dt1pEt>%uPA(?bG_|`$HVA$i1P-bT zM5G7!%#r~Ui1S|)$V1byp5fIqnn3X$%h(ch+Z7R_!iaO$bjqt|`1b|`nwHVOs`5Ud z$7kYg{C>9x@RUD=yVqM4QjLB#ezC5nl#|;dv4N3_ZivPNMmwY|(Os07Lyo|C()9HOog1U4hNdd?J62rCPDQq-=D4P3(>}md@JATg#I)yctQ2bye=X6=dmrUFf)NT z>-dA!gPF2&Qz6=lk#;vm#Yo>e=XYR~snIhM7OmM1^EzVlHv9Vx!=+mjVCndTWu0iFUu}@Xa^?5%sPC#j0G484P95`k6BZ8=GEVkFJdaXZ^gH_= zp#2*buf)8csh*-2OtSOC&e&Y=)dR z5xiF;S<3fyVIx!Z1-;k4D@JuA)FeJ~U0pMZH@1tDMV52@@v_^=Umo{{w3~fgLDgDS?;T@UAA;0OAQ` zl&b<0G7rI`SwYdN-JcXV?_?U{X=gP)t>v9VJgBD^PWx~x`$Ex{hxV(Gtxnefz%E4} z9UbWne=zBxEvYak`3UdASyAHg`@IO>oA`K3+sqfe$`l?<81n(K(y_X(%qUjVel@fc zgw*IG&sxZ4W=_s(A=vW(X`TEj2qmJ&j9BO|=;so#)mwG(?t_ zm9;h5jAu(wp^Wh@0X_>8V2L=8yYp_ZYpM!KUp_zVu2N<~D~|SYaPM$h588fufZ_?3kXz4)9RYkBGc<_Zpj#lHOF|Hm&D&R|O zk{4bXHu>rvaND_Yzh6*hiN6RNTY0?mjpvfld)oaO#d)tAk3nOc0?RRhw@z+lV<$8; zqm%!f3yP#1Ud-`3n{Q~_Z?%)<#GIL-*zn&FD19^p^SBsl&0i8=XIP}Z%AB<>#K%P{ z5pBy^*v$O;ra-!R{hC9|^xpo)3Xp2y%1{71 zi(c_P9#vwPpMELfu$OA??={V?o|2UMVcU4I4Dp4@-+!sa>1_KrG5!2HcIi#8B>Ubl zx1;yT>YH>|vp^fBHaB=gm2{h9(e>HwJR_=V`S#N=OZ=dZhNSybk0loXt4`!}>bzLb z2)NvkzP%WJfnuumLXJu6eb_;BUO8MPNxwL3pYdm<&SnJ@Wy^lm_E}agF_z7QjPHZ&P zyDN1!(~&nieeHX)o;S9?2huu;<2vpA3_tA#rRb?I5PnryXQ`f#LfgoNc;O8tz7E3Z z3Q*X)4dTLGqL0Ym2-8wdvMy}}j{Wrvr+xg)@L=2vTwEqX`rw=WdF;^fV%v~4YwL>c z2k@7A1na4gVi3d)Cy7Kl3prtf5{F1}nIAMj6p~yY@5(R7>8P^_N{k++=6261wSL?= z+q=3r_Aq%9^DM=>x!+ps0D{?ci3qqwRRJvC)t@`Stwwr(vI~{Z{_%FFZUq^qt~7SO zS#fH}Yr51?UcNfzj|sh8PwkRGWihV#(blteExa2{G;K=_@LUc-WTlK=*!Z8gLzVYi z9HWQFpRdkMCAhaKfy1&A%nh%v6LB18-Q-kNZKs&et2`JkK^v8lQXMzah@8yv<5-6I zEm*wD+c;mwx<@Y;?JPpNobo=?Od6{ zM-)?BW?FkpI2(+63i%-6q1VF1jpo!%dq(hR!U5P*Pjk`l+xkgP+*RKrR{LX6Cv$J& zt{r;Ty?R~sDzf^1DS_>z9$BK&Hy?6Ei3c4|BKV_Hq!`kwZwd9ZMd*~V2h>se#>U2m z`uYuuDFZL9H{f4egvJ*0BN|_*mkQFze7{wq{Z>-)^|g^vi>=^z-9kxu`IU#FVxLl9 zXRO?}^73|%Up--9LBzcHX9fxPF+9%9gJ~;sWjd-#ofbC7#pzAA=l*CQ5{i@07$#VY zJ!h6W2gijF6D|-9f^6pH2l>6_0WPGauYZtE{nhEhYscSz5;gZl-p`cu;bmy%S>F8i zZ9!W`t_qnI*73A9t(DY~;8Q4T2Q93h%R6UgQSrZ?1J~9bHCQtWOlEZ-`mA3x&x=Yl zhd2BdG0@jPEiEbWY!OY>^Zfbq=QTGEk2&wzM~a~Yc6Dq$0|P0;-5stZa?R&1!%yDy zvkiZDEUVlCaX4*0KQVg7V%Y_|x5(M=P$nZ7I4vgZ36m<3d>ys$wVf6KE2oafB&zH> z<1%`kX9N~REm7hic5Mo*&J8g7AlG{d5|z0CDekG%ikQI7No6KUY1){^;bxB;q8|sB zui-VmIrX)*wYiBlQGCs?hNt^;YV{2OT$U$K(0aMJ(5OeGSZlk@-Yd@gjdn)6L|&4^ z5=CgG?j%dpjV2T#xz zXY>gT7Ee#r0p@Mz`5v&w97>Kp*OY1}%#2MT%t)&k+n39!8qZD3L1Gx@Z?EV6|CX>BTIJ!O*gTJc8^3yYl5EeGCdSTQY}#N5E|9kI%y&s5RtrK2uyK{h0MlQlHC3_yr1Ehf(aU6nYwAyrj3cESxHnA z<(g+0HS>Q!$-f{vmn}-#Zcr_GD8_DPTRqMX@;WN)c5za2@M~A)%8geg5h}ZohDdI9 z#eC?FtO$x0Xxpu2v;kHKIQ%Lk-I-CaE`_49Bq|4eA#3hlIzJmyP$-hi1-`f1901J^ z{?L}+$h~6873cpOvQuhJwN2f@)Z`$#Egh@0XDTogup65Fh+DhuAUfF0cKEz>j(Q^8 zH_MA!urQJ9$uwD?$G3Dk5*FhU6Z~ zG$h4lB~pBGdP3zGujFCc^au*$S!)~iEn}GYNfoKj!GmaVcgac68aZTxCe{mU`wN50 z>V3qw?n5a#^^)JmnjGA+Vgw?}-AJ15!=4ZHJfLR#2LAKTgyzEjYZTI4Ea2v93cj+U z0N#$kf*ujl7T(g1f?_=^oUeMj%-gfH(XRL@&`3gMy;WE3Tybk|Lu=fFbt%(*8N?~%KR;P8;EP>6`X(QMa5!n9wI#>B?>lT9}dvdi|J z&(`~|gRQYbq^Lz?_x^~NB#O|@MZc=io7l}Iny@(wFNyKQSmVo<_5YxpHR{gAMejaF zBA?U5c@Iim`C1J36?HS$FHxUdw6m@5@rc~sy|Iai&BKC! zN=!9>(c+*3%hQ3qeYRKEU}szh?VRtumP}T$!{m!1 zN$vMhOj^0;YC0ambx+dgp8kx{QZC1T)_jW=D-$!`1X4JAIy0#G(xu&X2Gk+9y`~u* za$Lmo9!ehL?-a$Dl9CTw3j+yHai%$zcjHkDI7ToI@+-$Ulgw00homq|tE~necx@sQ z_?dkl(2g>Fy2)nBi->g7l7a79bh&IgozZS#_6+3GSk`GrT#JApmLfVHLrw}LAvkDj zy2UTAr-1FyaAIL^aMs~I>xIpgKAtpZC(_L-89IGY6p32frcYY1Vk0svD_0P7tKz)) z41du>(;!f=%+nzY`3bT<7>^`!Ux~w}4TxL#Z67*LAdzb{l04ensbzX_$|EF7yRKkH zPGrsa@;m!X+H2C+i%PxNg|{^HtM`QHBq!AZ3)NE{rGeN952aZ87X1XjkrCqsJE3x> zn3cF(>lVKKY$6%o3&=t~rF@%t~gsl-;lv z?AJXC=do1te5+#fJoNcaki|(CmtWs2_=_3gun_l*d(dhM4S)Q_oSKsHTIx%Nr3Xu^ zFY32HipO`3{wH+KB z?h*Ce8MH>putNokT#jxGCkJ)&l|!l~zTs7kgKe`$)n;((^#;xzDJZV*KRdVF@Kc|8 zY^t=oun0zVM7`qgRxrth85X_k*rIith(JD=@r)3h#?FUa@@-mv`*DdxFi}1H8h8^9 zP4KpM6*kCcK94PtH4j(nHh^w6%_@Ebjxt?Z9z`tXX@^9!np|mNaO}ZnM)= zwaki0x7h69(JK^~S?y|S(@<+eTtBFQOD2v{av!nS@&&%y|L7C$HQ-3 zFH5(V#1G8Tw11?-U`)0YHirN|I#VXWN+l)0&?6-nDK^G7iPJH8{qj2;@bA1s;3O1t zf};91-P*;*i7dqNzc_(Z2Py`Zr&hqqNb{F#nA^1t!SS|_^Fw^?Dg)A*74RrP%2i>`7LAnfR4XClBw zH*uS%Dln~u-=VA>D75P~lTSe+fi3MJvqfB`;PCS$7lW2zebh-3#l{ciTbFD2H6~~& zfd2Es`su__;s-LEm%680E9&Q7jQB^yFWh#W<)+K<7NuEIgxQi2&Mrr+P^_3_YSutPp`r@ZRL(G%lEYROmZbYkNL zh5N%JBL!?f8hh0aH1n4b5%E%dGe#wDS>>3`%;z`76je>3y)QlEFtSAINgMq92z<>1 z1=aU3W)R}^qZX2sSR4WhVVbhGtd0tMzc@e`lfzt~=Xe@N^Zaw!+=UiWmvNR5ccCAK zpw8*uRiOsWRQte&sFS)cC@h!=OB+4v3+#iYL-1dIm-@b>`!>1v$0{ayf30fy|9Z5w z66&g?52lZZ7eYA%m;T})7xuhW@(NA#lgvIOPEda)Av)h+E!ZZ))Ttao5{VvO1d22o z2X=#|t?t}rSlferB&4ZR%?v&me41Gbyqs3~swIM1?`c-;x{+B4?ZQ-iKSxuYAG>Jv zoasSVbn-z4vyDP8;`D;8b*>8`&^OlBN21Q869kn08L?62dkpP26qn^I#D(gfbf;M6 zzthy9J&_)ey)E(i19V8;p0z`(zeCZfX>=DHw%WHfnE&45q);?tr#!==ybkcG?YX4tHdFVz#^MToYK&L~qCL#`qJjWgkt z$tSUuO1)C}#km)=v1uYdiR&D6C#l*`VkY3Ffy~m#NK`o=cIZa_OVJ?{#> zMGXa6lLf?zyBcE12k$WiN=}lcS(aG5tbJeev1Dr7UC5VfGbm-wU&Vjgb3{SiqbJuH z2fhtoFg|h$Aium0-B(0EJ&wH2hRO+oh4a0<_(n&{^H38T*G)oW8>yS(GiO(rA6{h@K!bBp3}aH;dAt<>b5bc1qXl zAGlrF!)`I!a*dh~8#Ig1q_KoK{A3=$ktMfYg2syEXR;FcvO|UwwFIKU`|n2Tc4%^MvM>CjA{H zg73sgTH0|j71S{34MJD5tJNj@jY?ZbfrTXh-nQpfgcsZtz)U{X9R` zz!)p~1^=T$q42UElSpFMXUe%{$4xbsi6}OJ5}yj1OFtytzjrL6Co9z+hZB_gQevMY+|(@z1#o_IRAVQgw;n@?5mj)uyPu zjbzs62ZkrnES^q>R27x5%%;5{#5GK8M|-)s1LraO{cIHM;@B&ox}Oo6V*@}wLO%}W z3A9XdUSJX7=#&L*AFd7{@uLR50s|v62BTggH%W>>J6H4xmju?SX3CWF=>|dfS)UMZ zI>XtwB6fNke*9cw#l&drTwzPvAJIM6!Ql?h>_djnsZI?S^O94>r>b+r2F zH~^WWL)fXd{Rt&GM^xr+$S#+!C)|D$3sAK z*0c3{*x7@kl)$K@dp}FB)lOmvg?R;cNl~ye>d_A}DX7bZk=gHsK3Ai;Kq)+B& zXU1&-*T0FMug3Rz$d7V1FKIiYsJ$PTdWU2v?QaFf4wu|pIB%#i$14GYb)@WXBh|Ak zja6BViSo4;F0M=<7yZ)@57R#ZT=}+Z7pAUT$Di5pb0}AG_bKj-0YE2GfPE1X>gKW1blI%RF z^~BmS3VSXB!ykpK1^IryvYky971*{VV5Q zMSWO`YyR0T%77E|=_sig<{aKy3qv@qUto7HH^?c>^;fX?lpTlIOY;PrB#C^QS3cy! z5qGX?-ksdw%=ZOIgcHPFEa0gL4; z)7HX6TyAEhv0!XGcSPr!xvoy!*R;aqM`)<$&Rp-yZP20j7MXAy6~hM1uV^y`v8WX#ENkJRb?iIO@}{ER1eqQ{S92$kt*=U;>$4-|zDF%;xbWbM z#$h$eVCJ=fdvXFC#}w}a;zll#SqQO_V=|%u2)>v9X(y58Lub|&&SL=C8I-}j179O^p ztr)as{!48U_`!CW+;tB({00t7%@=+WWiT=#e-TzSdNkLCKBk=br4^$ih#^Qr+j-8w zAr*YfSdP_4nGB4ol%hYRFN>)7a+XQYxgwA`xHIVFK|>ac8xR^Gp^5D875b{XF<020 zwu%xa?)1oY>FlG;#lffLEW1Z+?7t}JvI;86UAjH-Av8s5@KdNB`Izb+No^P0;4WAJfm5uDz^dt7m)V$>Ts{>`gP)5VZx`z z)J)kjDs+vRe&1KTCTQ*vSG6yPaYJHh7N7-nynko`1UY^wxH~r@be>CK)!1b*^&YH= zc_7dkNaJwl@znVIg5S6vH+OW&>D@c_`aD!cX(|= z&84MLjYmybCBR<*OLl?18%}A6^l`KcfLVS|NM3nrM>C3tJ3ij7uGXOizIBg+qO3h{ z6NL!bFb{rk<`4pF+jM1VdAa?Jtz%)U0!zFf4-d~yl;6WJ(ny6?1@L6Y;?y;Uw1Ya5 zE>gkWi3hn@W>}TYsvJxIdUvO~{8@vy`#@+;SqQ=g?RMl>dlmRy9novQ)1UH=?T7sW zj<$xSMml1WbrRc}&P8zU{DIU0ELZ zy`kN~n_h?7R}Hu-6LmjH|CzH4Gk@fyy2k8 zLP!jZT7j+mJN8!FiA>9iOtlefO>xno#C$fqk`aD<=mm& zJXay`*3G(UEdZ!+^B6JJP@Lk(!}1oM%B!qMmqS8|%j%78J2FA_-w3|(8s2eAKHw-LrkZi@rb=ZKHIPAn`VF)yg3w!An`>jpYA;d8ojm%EqUYp^nmst zS_oBnuM($G+3S=EM+%csNigkqF{_3`GSnO=8F6k>nZ`#}$FoFGJ)^0K_$7Rg*s^dPO%UB06p}4~x1ZTFURaqY*3c7_G?i7{+3osny;xX|;)9 zkK%WdV);>Hn)mG?u^!Vle53>Nq#)5r?hii!aKc9Muf(6_ue+c@J5#$p63+V7Fdm4O zP$USS$Z$0?GPqk4jHghiU2|v}3{6=-CFZRX7Cm{tpu_#$Dl#d_74Xke{!R9%$(&=% z*fIpB^as=4y!}yWu0(OC}C zU~2>J{uv1o29_@D?Klp)FAe%C1Fldt{-lOkW1i!e*48ut3;P-`GogC#QV7*W>f4tQ zk}}X=hPjX5`8OeGfBKkQl-qJK?a^5bh6lF!p`&^&f(*U@A2whmu<4BA2r!9`Qu4aF z*qHa)$cpx3w{A=y_5dixzYjZkYsoEuwY%d7ck9Oa|L^gGSsonL=1&BNv;Rr)Wj>S- zr$CVbjMRSsj79mbv%iD?+T^bNlSKS4I`IEBB5CmCxB)=Y7D;1{dI$t4P~88lfbj8; zTL9g}xP!Q6jcoqz>VH=dSioZbeda3c4cH$jaUZ4DS3Xo9}w=}n(-U6=N*L0LMvt90p91aMasKns-F*12HAs**LuQa;7S&$Db07- zroM`yg=DT~3S#lWL96@S7kUp!&FIcCz7n^8U3*fA!}w$M8E|<+JsJEl+%{LjS>8op z0Ki0(>u?Sj4xSt|@xo9T&Z;X_g9b+bM(SvNZ;8@r+DYJlqye+#!YSGUCKJY~Vkgzz z6DEJiFjPN$Ts#Q1DiZ||?Z3%oTpL`Hd+&pkgS`6M=z*V6H3=M893U_QZ31&}q^q!& z?)hSj;H=<`;k3RLT~~s1P4bpHO~SXo^fK@gM>hHeI=Yv_*q;2ZaSf4}d#Yu!KZ zTC9PGInO!!uuV-!HT+?HIHACIQJRQ2w0FKV| zHFv}kVo@OY>YbyBmj9Um!miG5jTE7ougSqD;Ib6Z=ozS2dE57nD>J{Q( z=3sB_uoFEVls&}@s=_aG-R!89sPpdv`-Vedcc^CQz~%8`oVz-}IQ!GXvAAU&XVq=2 zkYYvZmy&oW(gc~IV(n0H*7RF1G{0O%Bvi}DOUzE7i?x9+m@A|)xLvE&o4886Z^%bG zd+%P5Z{E^^R`KjDs=k}7K-&YCsxm0<&SAoWY+qGLz(Z|@>&Sd4iWGL2(Os_y&=zEO zH)n0MyfE+x80M~L`GM)u;@GMqdLFi_5$C^~V&gkpu_22Bir%zEkmyiSoD-%ydfLo2 zWWc++T8ab$XbqYC&8v7}4`KCB^v9*)W!yjw&wW!?1U#+3$o2~kt1W|<_-Dw6pB6tm z88LCaav(aE4_Q3l6zCsTNqeJh`ln=$XC5%-IIn$yEcuM}gavl<*k~PT=%osRXzHDf za+PJGu<|}D7kO?hP0YY{*r(+)oK0 z4P5Ou{^QtJ8gP8%e8w`nfZGwLbky;riqFsjBs_Jh{Qclm@q!#_fBw=5D;E2-=PwYm ztvxs|I9^8ji#Q&Z+*X>V<`<$p7SN+hp>$kN218bKLkPazA2yaYsI*FB9R;Ub%D@wg ze$Tu0FbUD}+3Ad!2?*VW-d=7`N}bKQYf2pt%iVddCh2!9jQs(EvJG}oJbg9H zF>PN^P(Y^`M<0l|LPCSCB1xG!Pl2Fs&A(3jd*;0tCC^JMJGNZEsjG7`u2bp;POzd4+G9Q? z?5I@V3U;B|FMZ4V)T9NpI{4~VZ@@1Udw~OR(x~%`PMPHQ+|p}Ugj`vesg%AnV_3ay z#Anb4ls}Vwcf;8v&Z=3WL7y4=Rf9H4PrcbZ*5{iN?-gQ+p9_TWKEKG_Ly5((d-tad zd{IO;kI|O4L~9Z$>2p0a0$fA~wVMBE$Zo*cWbiUu0%bX5LF+wgb1_^)p-Md4n^?a)z zBVI3#)<1i0!V4R88xLn37OrkNYtp(|xjantUeN^v0ogQ~6AmsA%am2Ad0DrdkJKo?E zbvk+ma`AH|TK~1OUZk~zv*m22t}yZgiivQ@;ZN_Dh!Q+oNv)Rr-N}H(ys*SGnD;U#J5M z9SR^8(fv<%rrGwq{|TEtb>uqpUyfpTG5~ER0UiFsN0$!VtR3D5#6ex>r>{^ zUPYi>eM$Nnq}Y7P%SNGQs_;k30&|~=ko^(shfn!II9f(VM*8~t-nxJ$3ZFiY10q;z z{ucT3F^gS2{dlW8iX5sD5O}csgLO#q%y{wQXx;lMFRxiOT!H3AdHd;1OzyamWBoX! zD}p#DXg$lj8C)NSbn&QCVw&Dm! zyg-dwahs`&c?voYTyyCCcdDaQ z?WE=D+M<6}Jm0nP7-VO4Kz`h_*53EKo>T?xb^pd`u>SKCNXc{j{{rF9FQq3SetcH@cK4{Q&$Cq_3yvpm&ep10MV-d5lF`rY5zY05KM`+<^n*x^8L` z9)9vX$NxY;+^oRWe**jb@sxL{xzUuA8XjaJr^gYqb6fkfcs0JAu&GAPV#pKCHxn9C z7b}oFg%}lD7IC6;&Xhlv&rmT#q-AT1yCPPkV8t7v%dH4&Eg2D&4^&3B1Yp_S{q3Pn zSE6a#!Ym=bKY)#iu;ENOFtTipiWX{}9h)Nj;>C-0PEO8*8{tvT7xxJ4va*2cdqP!{ zpHgWV7+e6r>pZQ$!0XtBpn~}XNB)hL~R_oO}@YB!Tt+E{Nm~d^RfR*^z38GB@i5pq-&{%qw;&Qtr51%N$)zrB8eH}7T1LB2VVLX&~BA)^L@Hd9P_6r~_lNpMsKRiPnu6w`x`fC$e z!Zto_tk}%gFc?))h#C9TDW2hBV(Rrbc21E`9>q39Enk4d&6tz>b^>vexZJF_%!V)9 z&!2PLS_G`Y`U}D3iNvY1$^*@bfK{qEuLPru8`;0Bw9?YkJGh*l@95I2^ zuDCw189us2oVc%YgVH6^-!I7LwJdG#fra}=&K&Dyy=`{jGF5z6-0w2DOdhs=N} z^ugs_0$Le|Pe4AHsad*ueJD|bbKJYus2&U?@d*~-o0HWjm$a&nRe6JB`~eNxPQH+$ z=KKJ3E@Y(XZX+$aQS-ch@#Ct<>^NYqA-f29B@V*1f4U{@ z6nRk8?CV~@>-Zvt~TMLmmCZF z;mLOrv4GvpI^XP8D%4#|?cUtuz$A~glWBnmaaKnB3 z?Pt8#Tn~<~aaB;YWgRRB>uq5B-bL=%e??&`@9XH$U3PN(pT7xzUrkEP1G{Kyjug`< zM;;TxqmWb21&3{`!l1#mS{bcY-(6#|AaZ3#kSBKJY^42XsT=g4*F_A(iiUqbNm3wG zAr@q8Y6$we9^xRL(3%Gw$L&0$K0ceqlYF!D!OACMLe{p5Ef*HRA8($+r7hD=b2;xA z@{%S7Rf_nuowmNcSjTuL_|Pi$@yk@qtO6%Ni0%569l9~){WJV~2SthGD(DtYO!7dNv8VB94)48EYp zuq!%J?9f0*>M;fhZs|`F6?3Ebm(16aIz1U8?C{=OeS`Z$>%K8K{V*Q|Z^@-Fkvd2Kykrp;=#3y;a_^wtGNguiD6ztMV=Tr%}5r6_*> z-B>5$6c$s2+JWlHvnY=mQI-M)BDOXX%+FRAh2Ei5YhR`))4y#ZUcFISmpJyHrinqA zMTlMHlvp;R!?`oG=Jrp)ly4JnPne8nrvTs(=j-c0R7APFOot$l5; z)ytd2t@Q~ZJ2G^gg=HIUaf9p0uL)+ZmWz~>$+ve%q!w{8KR5S4Ne={355k-(9zH2@ zHFOz}-GD|^YRALAUE)Y$&?)?(+QiP2=|>-Ie+76P8%AMCx>slRls--{cyEmtBHpioA@A1cRDSo5%1J--0N{;0zI6WVWi#ppFo5Yw8g8uJ$W6C{>vD#0=|e@E-r?k=IYEL14M4@^I7> z2COfT9}PvCLIefck=}Ial5HI6Abt^%)3Ua?_&JoPI2G3FW9y>CC!-Ch+0O;u|IrWn zC?`9%2O79&6|j4gqv4kA2!H$KDzS|MiJnkdM_}?{CI+`tkXQk_F8Ong*C^!D{Iz6O zND=WRYP!f6pOf^v8@4Y{**L^ZoI=pq+vMCa{Xbg6;!@m7Qxlfyk#7x(%FAQEq^$#J zBmmr*0>Czgh(SCxo9nD46 zG_eY9iBz-!Iny8A8|9d*b>TYjVO1D+QEg@_@>w|$n=349$<(I#u($hGXiz(X{yh(4 zGJ_AQA>^98CSx#w-0yr!(#ePtM2>XgFWh=2P`j29H-j`D8@_(d_Zr&|9rTPEa)TwQ z=07B+c z6}^U5CG;e|P0s7+4B#Gz@deS+#Ev-PG03i6oO+svHTm#M z<_hX~6?5iRX8}iep24ppo3?x_Dmx`%`Tmlc6S1wT^;sia>4@4czXY+kx4HiCvQ_3t zZs7%dNrX@L)Iiy@kplOhE8?JjTXi?h?J?H#TYT!q0#&VjM*YF&M!kf=i9SojrR#&? z)JQR8*KkQ*H;4?leR^~!TWgM#OMI98+)?YgJEz#@A=eYleGQv$4vzasF0J%jM>xU4 zTL6VQM^f;yDA)DQReOKt60}##>IcNLIhQhN(>xZM#STE$a)$MnX zv_Cb!9^<}-)w8FI8Z)$2zJI0C$*z;ho^#V11>9b$Z%PXRsKheOW|D$5rFE;iWl!v5 zS{D-PS2y0|6@xV?Wx+XV1}}9UCfN`EmhVKMYj1^?Ym?n|U%!Z2kQZ<{8>m`D`P}h1 z?U~?r`6Be}9ecO%KZObE+UYg4LvUJQ?DZSgKE-wsZ0(4B zH4DHAemC~R{*CC5Z6x+$FN<%v#GfQ9_JN_y)bL_aTaNTU6k|OM!84uyN@mV5pmQ38 zcBKkvH0bLnd0LF_(dIeN;`U!YF#)G0J9G9iw{fUY^2LqWMlXQTlhZEa>=RlVoP6tK7C9+rlRn8MdM^p`&!R3r{>Nz88S8^Qf$Le@dPMF4e`{ zil`Ic2yO#IX2PmnXJch;lNe7kwL+2uPoLKoLg>A(onXpO=tk8*`{@H+MSlW>R3;zH zkfp|aNL^EX74W2^3q-s6G<%}M{OF5y$@R8~N-YV7f#`0*OLPw+yf`+rU(oHP^FU7$QjFiUO2%iEm4*${ z@W_nH#*Tz+e>ONG;7wLPn{r8>)xhHbp?LmfA&YP%VPxNC2rLQ40gj%{!yLL{sG^HM z10ve!*QKgyKsG6chCa1v# z(8}8UvmfhGH1BHN`h(=vU{!qas@e&9L4{^b_f`mz73ygH@cuWyDG~GKVX$&L}x3b2-yv3iPhUs5GD@UukoxP7*QiDw6C>HsnxX7${%LY`ks8dL z(L)963o6!kjGUeRBq4K2Q7_kW$WVvUns=e9tY_ri>M*PBupq8n{y@zA$GMYQ@fXEU z>nDOJ&iy+N1tQZ1y_wNql;pBA-f&UIYnz$g!594y#kmKo5i;|i8V1>Dn*?uejK_rv zN#v4`Oxd0Ig>u(T?Gy5EZP^v_^jg1W>{^pBiTQd+$8()Q9Z+fk?|ld(wO&!zW(s(|qJ_^3YkwNBLf`C{SWc3V_YHon71uS$>EnhnO4j^3 zl~Vo4W~fy^*bHvxTeP`$&W&wUo>2(xRbFKwoKhmjfy%DD?`!3eJp4U)V{&X9*|*P7 zEScv}AHYh(BokoecieOB)c2ft+fSG3)~r+NR?T(zH1_!CTq6BAL@)2DZq&rio6T7k zpM)_R-AJSoyHDe`jEKN~5>bEOeA^CRGgC2XwiOo3`A@-4{>Sk&lKZt z&b|yK}m;N+8?66 z{&`^=A#?LA->9i7SStei$=X8)3!m8Li{Or;J-NeKpo-0318Wo*iw^+0}5b3y|HmhpLvT+=2=KH;B|-EVBb#(aC)@%60{AjTm{hB5ncxnJi3E<&HEb9#%xgPD|XCUj+*l8KhB5R*3n zx2E8JU<%G7>V$495zxe-yXzHS zd~q+S>vdx8C#_Fo_Q$!hjhq&~$I_+m1T;D(AKhGyTWgs5u0CW-G9fxKaIW;fpuI8Z zi*nZT7g_x?zk@_}M`mdN0c{&!WCtAnn%w}R_E>m$c*u}vIgfzWXC08v0$I-X_FRD7 z+;HqDnR+dIYyIdYN)K6c)RAX*+2hwSPTA7g8?Wbn0C#x3^pNu|wI>iestw)7Aw)Rqok{8ba?up;qVGEa#M=3!F*N`qc)5nUk4CRDJsHkp!9LCi7v= ze3E+*kYn`sw}g}?-ZgElUy!TW#f8h-oSQO+R$$3#5#-0>?DH}?zK-8h_{4)z@zjtH za(%8DM=fZVBK6sxWvU&HJ?Am1P7|nva(f;(DPoJ{P={Ax?FT{qV-ruOJ!WhA;ZL}^ zxl#N-o5U*E8hNt&Y=qQAe`VwQ6zmdDWYMI#aM%pZK~2u}l4)XZe8`>Iw!`m8!_yea zJt@?~WNSmy`o+fSAt9+jT>64BbB?<75qSyyCx}(jynhr`n>1FY!g_X(8Oj>T1%gGH z+IEJcf>{GKTMY`8`S{H@?RFg4E0YxEkAy2WhD#bVoIBEX8y7o1zj2-ipWOZEsdMS) zZmgR3noTl!pxk8)QL^VQZ=c)qUH&fBVK>cU@om~}5?wc>aV5DDORdlz#ULSH!8f_+ z736_PLMmN*@-&PNb`_i$OpGdxCB)`;V%60_ftCZrmr`h^#n>S>mRZ5t8v=VKup|{X zdUjK8q*JeQdsG~?%MS3?ia+CP+?@@U3;A)WtswXl2rcocpcBrxW#jw@m;i_AAD=*I z$83z(OnmUcTNsg~gTK+tx-HBKJb5dPa;MQ>n-M-5IkC8ihQyq}K7DKzFPWTLrIC=& z-}c-%S^*uKj4;cfB*Gf6K|1)+H@_$Qg1PKt*ili=^yM>q`rV!fFPLzy=j)JXBm(Zh z(PP{ugW-9Gu`t)w(1=Qd+Dj5shD3)DNr2bkB4$iF&rH$Ij0h^V8pSv=uv4oaopQbMqPyvT{8V{F>rl`FJn*pl1Eu4rV}B5oH5PZLn&TcD|Q1-FKcQ#Ji`9rC8dk+cv*}$bmJ{ zk8LqF)Md^!EG8!T^xWttRCJ_sQZa8xm=yPSN<1$N%os3EH7s9|g~Ae8loLR-nZ(Aa zkRdU=ag{6K&_|C2(tomE`x%;oc-1CcS{`ZN1(ef=jU$YJOO!sI=cD`e$$G@?gO3Ta z*kPN>*jb^S^9Jub&6R<=s5NFd=mib?nK(NU*#lkX`&Dj7gTg5$@7IRmodB9Z$BTm{ z1|<*|NASR^j!dZl6`RU1pIoL68fa| zQGx=>zrVdt7FQEJ3<@Y`9S=o){rBxLXAO@DMmoAVAOw(Q%JUH%bD39vD?6D5E|ZbOYKFp>8h>b?t?yXSx6yn%){fF1IlT;sn+SFJy z!~XZ^0p!TulauwoyZL{di~nI*fbxIt=k7m9Px?zb^yc)xNgq^RrOwN1kJ%h8Ofex) zW)A-6bg?Mg0hUbG`~K-bv;6m(H8>|xxXbeZq_lhAf6mZWBM`$0y2At_WZzHJBmVb0 zqQ%Cc_p+%N-@iubzNs!iNFR^>pV|P*zxgZ6{#W^Xq5eOY5a%Q#AZ8T<;fMb&)4%im z-y^D=kpBLEFFDT1N8EXaqE|b$|Fx`usRYI&nZnFo+4J?k77D;<=U;k}rib272RSeu z`Bo=R2yJsB7cGWtVZsd*DS<~}z<5wQ#ftBV02QG8Rq_mEeE1L`1QB9cYVQvk;+r1@ zAVXlCQ@PSzKXFn0Wf{+6TV#MM!f?*D9~2m{w;0SY-VRP+DdwpO-hU0&EbI-YxoV1g z81iEK6&oPh&+5S30AQCT?5`-UEcaVDgqZxK>+0%!PB3_N+nAp4H82&A?nl8?p)ki8 zZ6@k*Eq)(YEQ@le6Lpo*Wndse3n7Fsvz_*W5y4mx1_(~X68)(t-W2-OgH)6O6bP|I z+N=|<`JG<4S1$Ir^T7-kAZRUMNT7&FnMk_j*8XDy@#9S;*>pOhH()mu8%k48VTzEP zGirzI#vFhxuin5qU|WI>M)c<>+EhW<+EK|Yw$Id=D>P9uNG8A7%HX@uy9iVXyY7n7 zo-2-@%J-m6qC=T0ih=W+yghbNw|;&GJbZBlGlYc$K0WPVXG`UT@OK4~+td88)Z?p+ zk_kEJ4r2w!74U7I z^@a?Fc!o%mH|O2rKP4<9$ixrGOw}sv9tFn%y8tYb=D(PgqYH)vuCW=3)`|mn5O_ELY z6bucfwfy2$ErbVx5Fu}lX+fWn7c4L;R1TxEoh=N}4><|GBMDjQ-FEk*Cg`Q}rUjyt zMc6W983+|;qWUPK3x2RkYsW~U#*F3 zdb#)M)|AqRhA)2p&5PN2O}(1MILR+8%5q)kV99;bT(}z*(<6!WN6JSJ;MyDNV3~7b zaM#)x^;L$<7&kAgLS#h_#1!W`xX<%gpnFcJm$W^$5S6Cz1X}jz0yqJWTS@~UeC0uP zcGJ@^{owM*uhsJ3(1ITO-9E45%#p?L%hBwYQm!LnkY{yXj)qYNmqvle*Uy$DfZbMv z345A*HtGiswd8{5QCh61#xJ51lP0aiq3Dw(j!T-<5B6-X&*=FvSSPDrnI;wmP#Szt z5`h0Qu+FL<$<_YjYtz$~&d#bV*NM+tFWX;~Ej*?*f!CJO^s*y8nVV(H5s504*F=dd z0kq$mG#TfPNmhDb|QWuIxOPN0PtCyv=q*n4DQVPR00 zMR{vNrMupl3c;4Ue8~w9p3X`GBNs!1iAk9)AxbMuQtyfetU6Z)BVo=9?H)nuK(|2N zhlo&Oo{r_7R@a^r-i{GDD#iEOfCT$Tp;67}&Fd?B%aj6AiN$zFJyq5IDLA+4006lu zyjMnio!j{Qw0k%BEK}sr`E!~Y$`w{nOhc6@>=mLwf$ojmj0JxPTYy`OBFUYJNuJ~Xu_ z6wA;XQ<{GvMU37drzUiU10O9G&KY8k#6Rhc4A9yI-~Om1m9>ZrK1={tF16`L2I$OR z2*O9^e%<2@Pl2vw%dIduVX1n0c(lPsMrx{d-hqDVbo;j!6%r~&T8S?fh>MAtI@{U; zT3%M04LrA@2LG!@hYCSppuqmn+~Kaj&mI?euX{97Px-1~-9%n3Ht_^<$>#D>y3b46 zMFz4I4+L;rEh(*-+5N8BUOdq)!Q3~HCXhleXg4-a&aN@nvQq>44roOww$9FXH~Gqm z4czy7+l+msx~;u^>stW2CZ24Ptl$G=_tiIUa#;$yf2-jBEg;xf`#5TvMQ z=br~xXxfSavDxejj?C}c*vSYB8Q9+S2VqGmj?vYcAI5s@f-qdOOmZ{cs4-HzxBB=x z;WLO|rO6MD_HZn^ zifRL0@caHtiIi`S5c_F)t)u2(mF=h9Rbydb!${W`{p>o*sPWCQzb{Bi%a!vZd_Lh2 zIHx2_%dgm#m6~`>uP)|XudovrpFtu@rfaQp!~vikcR!C}UfW?G7v=ACLHpW!EeTMv zTh5d8O{epB+(3P02DLnCfDc>U{a3RNwSxlpDSsC%Q}Uv?<&1|qUexbsSS+X8al`0r zXHQ0IY&VfZ`Op+5KZ#X!&DnBUkVS)Tnn>Zy;juu_{y{H;v}Guvkj;mMFcQ=yAd&C9 zwwEZiB>?#AzbB$G8BorAck3s=4WtWh_uMyG37}g)+>_LCPtD(fr!aCj(3xJ<%8|g) z3&P%2G@jJ>=C1hFWaMz`m$unsH>~w~lB3>$Y#dJLb5K4{&gsFCSkleiz0|x0x#%~` z9zIHD?z-29r{QpI1xRv`_H*oBfEdZCjW@}gVU(smkw1^-AEfWzWQlo}_#(!h)$=?s zB1sypjhvVrF!HY+s(x`5NN~;vuPq7fd+Tw>`0n>bz(?-+&&mn;oyP=xu5)&q$ZBxh z0_*6aiNZIQMb>w}XkKvBpgRz@WuIO>h=0Dx4E`Zni^cb0?F^l#9bo2MrTDk0ztK

eCSjUMfCv26y-1qdlGytL{^mXSuPvYCT6t)a(=%<#}JiDZ+EJ@tW4)lhH%gC|s94we1B02c=^>KQ_lBB||`0 zx^3aE;)(yW&w=pcOtOw#&@>|7OcY|%QIb$wk#NYKvq{Kb+CoEMAn+{4`VYG|QoTth zYnUTZ_JrMrT0a&EFDQ%&eXEt2%!)MP&>gIL9Fkf_pi(mH2i`7f(p$wZZ z3Nh4}^O_Y;l-m<9-v_C$OMs4|RJJ?8yi4nm3vF>ENt5W2udC?5hEY*3hHjp~qwN$e z-i2U?n4v-oMpQZb`8?^Xu;cp={FbruY~9dR5>#qG{S3)DBXDu*JPgWLWV@U5%6;xH zFu%RA>ILZQyCAV4fg=_^rsF&?a$!4?NRF3;u)tr(*5(FpAAETumE>K)Mp1Zt&IgjLtJAxH+7f&l9 zsh>lhTP~XrCdfxq)RW|uWLO=#Du;IA&izw;ELQ%PLW2(IRfLHDR4%D;{w+`cQ-c_h zanScdO_xpAa{^2?k8RHd{;5Y`Ef>nDPKQ0(1WcLMpG}CAyK?^j`oxHgNUTVtPDcRq@i50aHOF9Yf&AZ5M5X|j>iG>Q!`z{gzXJtw*Sfe%Ne#A65OUdwiJ^W|2lFht#>xyueb@4Yn zAC*T7HO<1CLQ{p_NEh@RC+zylCiIUp=iL(EnXpgRY0xyhOhgcZi_gk`6giVl7awA>Fm3nNzx!xhXuqNHvmn|qmVduhq~8(w%`hz2K^Ehp1qo# z06^wmRAUkfV-b!3#F_Z1VV#YJkR=MvDP-A0bUEN$GAWTsGEfU87{k2tEdAoFNmZ6HRhe~w(prPX!c4Ruwim9 z`uvGG>F0?6(caLAr-6V7P^1#Gy@y{5x#zHq=|?u!UvS|yuAVi`U>cL%OtbkkLjK$*|gL?#|Eb0+#) zQhw>Af7*&dxOT-wm|)eSrS#V*qpYL*ul@EPEB{|6AVRa~;K}~`1~K+HTS*A(KCShU zN-~_=-?w@JE4^=Z4fQP91P3@bV%mcD19A_?o|>}#ZZ;UmYhGAP3C6rHlD>O)CZE0? zASkkiu6a*lIzFxLJ^e&{U+rpB3DtOkxE^6noA zfI29XOoFle8+On@smRKFQ&F0!mYwG|!^SucFTEavYb9p`; z_9-3a4${|{w-U(PL9@}ixK;VbSpQ#qh8Iu#<211}K+wTvgI9wKgBx^I^E+!ut8ky8 zztVFv&|@e?Z$&X8zk?1f`*Q&ka59Yt^MWPArV{#dJ4f-<&?tCY8B0o&qV5)LVHT_@ z^3+5N#BEpu>}bl4u%M8WzNeqDer&-UzM!WX-dDGXN`ayYq z*N1#q$ISrb(?jM7{)57-$aQenN>@entYvOliTVQt`fqm5F1pPFvi)p+`~uk{!ez-@ z(`ig?lQP^nnYO}8^j(-5Vu~N1mC)6mECeBqMm}0|5^{%1jFP9qnX*-h*_4fQOG83W zMZ~z!PhN~sn2frIZiT9vqQ_&KZ$Q-)rE*h+?t?K^Ht^h5s}3cIY2i=YXJd--UN0Cl z^2|fy^5W5c1yH^1#sw)~_a2Tpe-*_(cJBHQHr8a-le3phI3wYxOYvVGp0mTbwgzpd z$zW97@^@XVNvhOa9rD+4Wl2U5AHxp!E?{sEIdZFa>>rWPb3kP0dRG*?Xw}<#TS0B$ zk)NYzbFv;}e%NrI7E#y53)(6@U-?l+k<6m2d*WX*iQ&xSm8B<_qZs2qWl{L7Le@`a zcDufo%u6_c&ST>d0O?rd=y=yVNJ7#v>y`Peuvmff{6P3TT#DnO3w^~Ym zr)y^K;0jWjVDZBW!V`If{+;;;RkuxQfF^=G^6Y%jB>Qo3r5D?6j#QFShod3H?ZQ-Q*yGGjkoDO|IzD3VOS+oMIGd6S8T zu@VkAZCZE4`iSo{t!>kDD4?#BY}PLrGdCkN20J$^h^LiFh1XuC3h+@_WgOE^L##AeP^ z^2U*PDc({X;hL)>9_r&9q`pFy401^!KM7-MB)towzKvx)?5`kn2$p=W_<^JQZE1>5 z8jH(=ee&g&G|e=&;+*g+wHN~uTdU3%{gENdNW7ZxLe@xAoploOC$=j#z;y-BUL1M( zRX^EXZ3LqkLlEB8tSN3{Bzr z@s>^4@9hcMgZo^L_y{?pv3hO0uL1(5G2vf)xT-iv2|6-TSKdflU`_W&^;PG8AY#%t z)zNDXHn2EY&oy|fF>?nro16JpHBt4>3k6Xa9`{%*q z4~zYDqlbyqKtAGp>OIN#wbz4*&vK)v^NR6(5bn7&;Q1W=qQ4e792$9H zEfr_W98v0xezYNG))NDEux7CM?yHOrnnVBISeVmFDyP6-{-VFFn!dw{jps7at=}jz zt(je08C1DseQ;cBGqo^vY-4Nen*aKb8o~xK3r0p^f`=~2L!jtE9F;cIU!aAG3!O02 zZvVZvN?o(#FjO$4+X3z8OD1AASWe%Q&!F#fM6?U=*BUQy;v%l zW$kMd>Z6q8dK7EY&5a4(VqfWgC zn26|5kg=H{URY2EW!_?o>^kU>H@Zd@<;l>SRXT9w6)|{JomcK|1&?~75@+ru;%+< zEkL}3?+N`QG&HDOXhSI`B=_AI`MEELa0kS%6d?=<){cpntV$goa6n2f*S{)cxbkuL z+vD+kn!-XzxriYa4A@^jnfg6S1;k3f*Ai81&x&KOj5&67@5e(=u@XH95S!ZT#I>XD zfHP||%p08@Eqc;5XBOQ(SO`G{T%PnpcC4kBJte+DcLnbwrqX;&pvJv{3wU*t zu0i(|jr}UB!T&-piEWH0q30#*x5Nw{ejO#Ycl0V3dxE0-(|Uby>vmI+^2l(lR6PIl zg#3^hv?g}R2BcLhVX#R^0k!rM!7SVEb$dWgk7o&nTT;qMUW)H`)ZlC9dInPlLz956 zQ-4p!6k?@b$ws|JeY(+gl!74yBtrz`8r{~EEes~}Rx-ZjHB>~wyIsR5m6HH-o+=Nq z9x_-?u>AaIYmP6NsV4Ofe7PYmMDf_Z>P(aS4!K`lOr03=M))Z6-85LS2sGizslC)X2-i+Bj8jjI#!9!iZKb)$lG=IEDNzbZD-9O#Y_A$0 zl+h$k>;g7Da`12ix(H9X^nzg2{{KKx^%o=VAvlHy@jd;x_xEly&I1@r~8;$2W`o2J(-*J<30mz6n8+ zp>}VrORKs1WlKMFXeBv!ozbsXAGu^e>m^4W+!2*ro#O@^@q#v+k!tI6ru9(ksBMM% zhodd3k@mhP2b5ZwA2yvmh@R_Hs2`i%~#(?6mVI_^j(lbgYTWj}`^ zkOqIro z)VF6wF7HU&ox~zPxGoHhw&WG9bZ5z9JZ{zHir9|^Q%6{yUnJZg@ab*C(yeEk+XQr{ zXG%`JJq@K}`uuOu;*ESDmsc-azLh`0!{Jpv4&DMRk#~$z0*>I4Si8IsfzgKOVD`w# zY9Qq4s|w0>7UdIAhzbcZrTc7d4J>t58-iZaQ2vmlgN6GJecvmWEP&-eQYzX8R(7h% z1Z!r8YhCa#!KP3H#2XzcNFX0K;xB!flmZzg*VBTE8;FRl+zAi4aE)&>=l-O>>OGhID5~J&y1qB zH#$7Zkq%&EVkr!@&97yuWRr2BQ5p(dXH|g<7RAPiql=~ae;}z9XGHyI$j84u6X{P| zF=@CiTu!Je;6l zm1nNyC96o4S!uO(Q-1M+^`|fE9bRxg{1fPQHH7xvJqqvbODfZESEE}(j1oCG@12s8 z>&YJeDRVRA#>e4hIXtww$eUEYvdMFIMs#4kN99rNx5re3%CkP1H@Z`eYa5S3aX;A> z4%t}Bm_L5Og@?nCog5hU8@bEhJ*ZZnINCr-E-XmW-W{jhA2eB78=rr9L6$_{B*}q? zgH$iTb~F_-m`Q7&I(x+QqubtNk2MqXz4(Td^_%!TwC}_t^}>g|qb*z7Vg@ozp%sgp zTx64fC^wC9k*YF}{Id0&EOYseI;pq+7jJJF*7W;_4NG^Ybc3Ww*Ju!w6j3P=rBj-X zk`4g@38i~UJ2jUroDlL>g3z4t) z>8X7FaG{NN4NdP_vvt?xyu8i)1fYa@VrLniOAKA`cSSyY%&b{3JI*F;&KJg0S!$#o zf>KuX9875`?5SvXP&bq@TD0FwtOng z5%{7{yuo@`^Yth`H%BMCIIS}TQ$^Fngmcg05OQhC4~3x~zTr*!6zFV?K)ZX*IS$-j z_t+6MQ;33Mo8}dV+3Uav;w@nBj1n; zd~*1awGe04mDbO91T*1KUUXBGZnCQn;#u(?G22lprM7S!(b-X9&H9ie!nBI>Z-Xc@X0Jj?7k^B&YoU4Tl zv*b?Ty+|#V%yzm6E*qyPun1vR-WgL9tljCRFkA1UDf%J_XqMFa!z^vYumW#zAEs;Z z);U1-?pB=Yyr<~*r2@4G@{OUQ&Xf=4;^DUO zY0xZ&m~@bGE;SYt2@(dUO#lWI=WSPRL&I#vO7k@PPP7F8Jyml@?Y(3^0&loy_ND$| zU+o(&zfyGOfe;ArILgX?15>;vpn(wha$@@pzZU6X4yL|_7u^uTnEVetp#L* z&9_)B>JF?nfWcORbAR!c#yG>`7A_7%3y7hoDhceeU@)M?Dg*(O2 zOdh(zf!U)$DI~XshoUm{s@VJJ9qTADtmBsk`)*^bA=salr6uliO1N(|<%gFhPnp4zHLE&vI@`^BfXerrHcUUF5lmmx zi`yAz&iDq@q`!;9gc@5+4U}Q3Cx(eGe2cb~xxd(;4L5JN5->3``$w@F9zg7&+=}{6 z<=pD}TOTf2OWNa*2J3eqvu^Azc0QBlk{C8U3K|)@GUI@|GHMxGr3-rH=+?C(-Sh0+ zAD7qS@;&4W@J*gLW%hUDh&@O&4_WEwL8;p`tb>n48|WT^x5Q9$#4|w@u{l-R2w6<7 z4jQMUL_3|L2f_5r`H`)#@$}OS$0u(uof2Gs<@RcRIV`BLs&(|usk-Y2%3SO@mWq2U)ibafPO&= zCcYiJa)mwwaXmF+b?8aoV6g}wiA`V9o9g!EGAn?oHm)MGoBsmX?WZpIO3b>4%u?`2 zEo{F3+4DZ?TVfES;)qFyme1wK?^OHyu0wXf%t z*kFrd)J&zJOHTBCLd4TP80{gz5rH^1w!W6_3@$(s$AWh8$uX~{1_MV&N zMX}$)pex0+>~Ea5!wR|tCSV)Ge#QF?m%3Wnkh)(TnV^OvZEH^Xw&2Lh6=g) zWe|SK#8nqaXUVUSf$6bNu+|T_-gOPD?i)3k^j%&r7>*w6+c?aKM8ge^fm%JOWui7Op?aiHL<+27|J^N`|VXQtO4B!6sLRjodm@_so8juAf4c17&VAHvpli%v@ z5zw$v)LEd0P43sH8@aT_z7f#w5~AoRab>05X+cU7HkH17Iz%$-|7aZ z(%!iqW$6d~X5Lt`RqVs=#W*DCLEkbxFn6i83mR(fqVxB6QkOYRQTkQ&fUHpP>`gbL z=E;5!{}A2!D)7fhU4!s(5YEZ<4M$pN3{RR!mf?A(=RO1#%A5|zerF&s zg8g;oC1RArT3^tJ^p&&mAD7nPwIdb(pzCh;;_l^5z+>@qDH1b%zEf^1jh9yVRKh`t z4qYISne-QjHih(?(nxTNPi!o9L;3`3%*bsZSL?SQnvD@|FV6dOR66O0v7_ha{iJo4 zFvy{E)>MG>B~5IBf;Q|l#*#4 zunSLbR2Jc&islD^`1%OmAZ{g`X5gc;?$#uG#l0Ht8+H!C^$@=Cb>4QXq+l&cH+_EW zwhXF--ykX)$c|FRWlIonwP-i_wbd~7Tz>*duK8%>AZ}R*7f@JP_Z+ZaojUay$rJU{ z>cvZ|vtgzs1B2lk+|MCr+8bs!3^p}k@n9vfFbojD&I8Q3&qjPRKEINNuA$Z|;I>M- z1StbPY$taCjN+3X&ysV=3qO*2=VX!=zB#e(kho)UDgqwyGqtu9Ts1+Ms*%jan=*So zyQA=ZM;n{=l_^*UsctNfR8ulFWfY-PaM~X%Z)Pgm>=);kyLyjKnF`_ijDDylMH1XFxCN9Nc=P*-y&+GO)od-y+oV|2OxY60Ief}*d zIkWnLBQ8h1(T)8%X+nE6A%G%kGxmc5j3Wv%#V{$A3WHLv%p0I1qBRG3)boJM%(q7}8YR9G8y&%38y%>Z@)Tu(av~iG-5n7l8a_Wj zB#Ft_@6AxCFds3h+ELfR>uN3BUobV&lj=(rXnp|IXIG1)*5=N%=QKWimbE8n4A+w# zXRbusbT=zCH&r>~X!+&2#tpTH<{~WIai!8RM8@arRwDM%Ff0b6F&4Wpo20j2GvcaD zF(2J3)0*n<-onQuC&tAzWPe_8n_|*jRpSXTDiZ=`XD!hSI{HZ?2I}d{Qo@_fNYco) z77QO;aR1DA&40n;sT%qM^SUID=G!_T>(C zARXfXQ=S@72IeAN$9SMK_Ub4kI~NH->Mhwl!I9zfEQfH*hgzsXc4(6VG-jS1UYe3A8V) z_oPZzzJ5{Osm#Mft$?unncq_43K4kQVrJ&2+1GC5XxZI@T-1OU`EnhDXipZ$bVpCQ zO_b9wy@V|fvuA@^tXJA;VazXiwYI$}SxdY1CBNoref{H941rG1cxZU$bPtQ3tCA_tmnrd()scjdduWVsTfiOFqjDf2;H)+O=AGa#*>bhKl>XTy;wqDsIqzd5 zzv}L}6v8P2t5};SDDy$nS7GMXH{bW%aW+`qR|_JU2j%iqkbJo?#lr_7ynR#M{c+*9 zGJ@4Yx&w{UnAqEd3eUTQjk6`O!!iMm4j(hrb(qhqsdjd{sw_3!-+7ht_iAf-8oj=4 z6|NL7(SHe?ICpjezHgwDx~5JQCZ!hyDlB8?KAFzcGf>hH!o#~o2LI&9Y1oVCq_o>& ziZzX~J$aGBH5z zNB8H;uyeay9-WGEnd<+b;)6Iy)Bn{482G1Xvva8cS~N^4mVc{pPI{CO@I5cDE1|}V zgcOeiytO1U`hu4YM80B>l8ZTp>Be&E7&A=8aEgpxG#301(r5BC<(+i?e;E(|A<_RI zugP!C*mZmp&wB5w^m&|+@vlRr@coxdVonVZ+m}K(uL%6dfR3Ca-8QV3O&W`H#y<0N z9@6-46Z}PfUv6H%D20o@gQ)2+88_n{VFBcO?^wQH{_>e?eAen2e<=|KznZ_b=1cudv`R#5h_)gm#V*JOUHoFZChsd_#vD!W zEQzKzzjq5A?qrm;4Mm4KG%m3)zK;%aC3P{0z9VfGiG>USe3s#~nAn5OUhFmTwV~jn z{eQjqK7ts+UW%kmLUHJ^^^M>J)&U0N-#fr878q_8$G|k%;J!?0BKlUkj{lfu4W}0! z(_6>0eTO4UdUf^)byn7x7lI*55*!#DS`D<6!k5K+KW40V^^V&zaM{Zrmo$(-Nh&Gx z;(hj8Axg2<5B4!y>nJSc%FTOTsWLwrn3(#|cd z-V3&EqaPs=AyDA9NUv#7puX?FLj!nz-zA?lnmVZm=VWpE7aL&Sm;XpLYejw#)S~rw z8&NA2Y8l&ZY$a633H|F8vH_}8#vCjY3oA>4E}OaaR?Rfpv{7f*>Z`cc)Hnu@>%D;{ z`%gGJX`g-$9aehAx_Q^Nd{1tDk7=CR(BsU;JZAh>_Ly_RRDpW}W+x2vbIWn;&3frY zY1E9fUni#X&z|^%_1U~5>0+okrkh}C{2*su6K62aQ@J#VIel3<&>a&OT1(GW5b+Fsrld3wI4&mxJ59OhdVWG zpv3~jGy8jPPl(&KMDN$&qhB(ZFu~rynk2|lo&ZwEM-19)YrE7{ylH=N9Jp*J019m- zU?p$(o-ahv-<`y_+L1)o-%WslB>?m@+!(;8&BsLPW~ty@v)z~Y)^O3j8k(iFK|x8yBr&M^4r@OWsDh&xkUb_Zr5WiQjLj(NN+dufp1c98|N!?SwkZ= zEN=$h^r8;{!MP{8jV3e;$#KXLYhZxBLicE>occS#>}jv%Jb-Qs!^R5@^modo4a)?9 z=`|v^LS=^(+&k*BS%`}}O6aCe4NGCa1oaQzLjIdUBI*jhU7pz!yI_rx{H_#EZl)1zf znp=6*fSr$nxGFQj?>9SF|G2jB8d15`F50Qe>zB4iA4_XQiY)m8j?=7iX-v$RmD9{~ zFA$4i;5E~X?JV!Z$M;2z!2}y&uU9GpMJ$DWql8wA>{B;Kt4n?i2eqaY>jqRJYcuG#DqGWIONljk5B9OMPjt3H3MU}}YHruU z8=zCOwE(VsADk1V*3hfmn#;DvJf%rk2MyM*#PeI{O11@$;qa-Oz;2W_W{0LT8LS!@ z{qM!_{qsJ#>7wXkoL-FoWl#R8<$^vgwnSE$>tgI2_@=X>c9g%=b@h=O5B5Na4%{f{ zpep*9BF1^;-(bS*3&(56E=93WI6_{m*U?c~nP;`d{0oe#)?HgZxCujYR;EHO1!-_x zwKv{6w&ORl7x|hM!b;(`0foxyowKZiKHWDL=3K54BGn;v=qWrdfe?|jRa%tEp;(6& z9JVC%B-mX-Qz@eMIr_nVaky>pVIZ*m(&ff;@zQpq=^mrXv;zly)=!B_#I%o9?$rak zgA*S(gkpXDle+v|$<0Q@`EsCTv+@Xnv(r(2M~1-h!B+meY|Aq~G;5+#M09HX;6BK2 z0q?Pz7FNdna7w+beKY1Cd$Jdx97w+P369`#?!@=JnoNj{F4@n2A3@wT zx&8!Wkie3dICQLrLGBrG?%AutVH7&{Y$d7H|LzB&D2o5^w;Gp#hcI;DGS$SYWl!u2 z&ZMvQq}TS9;+lS8^!&?>3mkvJyMv>yuJ7YWR}nPTmq<`7YWr~^|6EqgT;Zad#t>Sn zkowkd<1A3ogY!hwm{ucQQqtx5ZBp$E+v(Bhn2~uR@AviXQ4R=9G=kctt>?(Vlo!2; zNS1D(a*kHu`+xfb_rOiYHDCFVyxN~5C#)MCPUI&mEzBpZ_l7r0?r%0gmpzU_7ysrz z#euqmGh0hxS@%|0SIj3X53k#Mh7k!#RCAjOQ?OAg6h$;;^{v=eGvsu_p6p*SEJOph z7HwXB&vpX5O(&E@@vd2JDGxdaK0C(SxbghxmW3H0ugW`HnyOUJ^LxS^6sy@Zn}u_j zQ&F5&5aw7&ptPC2W8sI*%0Z=Z6@IF8lWyKvsOKon+@BtaW0Sy-F`zwL%(*=zwvl|r zwdXN3|B^DC=9@*-NJI(h!Z3HtY|!}(8;aBDvJis_+CQ#Qn^qsD!pa)n_rLwC(G`ph zRk;@E0oX&sL z1jh}r(8w)72}n36zoRus!2O`PVoAPkx}jG8ZG-doOgT;iTR-a{UcutSM`ZUv z75GRwv8QDMMD;{fMO9O?Ug$DxFxTeAbS7g0Z}VH5czmh)x%mX94y}&|UCdI_CWG@- z8Y;Ul=pt6`?oNJOuPn5A?XPx`9KbIW(FYio`YX2|5^&J?b*^6cc9NZJbE}I|#J&+l z3HSpd{MN!HU|#*o*;pwf&?P`!M$LkW<3tIT%wFJ1jAc1`ZOxRnq@n3sM$U()ySTAw4eI@)7WAnWXT zj~Ee%5TdOb3f47wTv77jXM`G%Q2mIde+8Jso(0x-Wa8oHlhUZ~* zQ7rkk3ybVdsBy04hg5AbTfcK58dYaSbw8%b`m!)VLwk5O_FiM3d&a?ARnH|y6Z}P- z_K>rapG^B;rVxFu7PZR1O-T-#VvDG$h7FIOx~xs|wu*NZ<2SN zCJx3wMC4qwCo4{Z#M^6M#+}hls$anoXAH21t%#42CfP1R4suvI3OW~!q)L&*XQd_3s>D^#V9LI)n&ApG6#|O(qu;{E1K7?Yg6<^SJJ8`QW^+^~t?!kxDAxLJzp+ zKz;+riE!i6g;G1&mB^%>GsoUozYEk*DNoRNVsFZwX6|c!tnen>q~2ErYiQ=V6m}F@ zU*v(8v-d!{`!}YP@X>W=7<)pE<5!ENBv95l8?O)e6hQm>CO+pIf5t*Fj6ibs5^*Q8 z({)Gt+9gRfZzvi{c5^!qtTqh&z@%$S1%a}Y=dhR_L$el6i5;puBOztVcgayUH3rZw!{_NWC zMeIYp_r#Z69+D8|h0(=t-yr*z&sOy-G{}(B%ia4hkPYv*9eseXL4N3%g9%`TIzV^{ zx0byCe=P`#$U!_`d3x0>MU1cr+mm)RRNC?X|m?`j7*_*s5&9+NCFDK9I(Fo;(%-D&GYJY9Wux8(FHlJ!y+|anw45! zLS1(Y12KJ2m^?{fUZBK8yz*^zEUAcHLb@r0Yc~GF#JX~Jj@GZy_a^cPF zbmhTwI#^0)j7P>c6Njy{O_2v*WGGUK7hgctAz- zqjU%*)(Bu>Zc-S^fM1dSAn;ho8`dKt4=J1I3a(Gp?@nOCuhFcpbQqWg;koeNu4aEd z!c0k8EA*Cm-D)SPkO>U!*D|#b7JG^KrNFW>r$l*RPcXfXOk1lz{&}Hr4(Lh%HX5j6 zZTmcTXBn{rdAojnuUxB=x3mwnN7VM6I`$z&5%(v$l1{<+dx0L3<-dn)_?_9Jm}*K3 zND0{s=A0<^2BA;Z<=hKVegtb5>C}|^BkXkDszYPGKWl>w#g+@e&i;*WTsxl`3xW#7 z`sERJJnaxQyCzce!Bw#}x%Vlznt6%iJ@wt#>9+I1rHWlTU9Q7Lb0H2yiRIZ1T`fAb zFP2>qzxOz4^Zm(Jwz{+i3U~*&d)!~nWA5URUoiel&7HdK0eBbE4v~WO7rd+XQteOB zL=`4Unlk$FT>Fh8CjcR%_`7@XiMy~r?hg3M)ZA~T9 zR`JR|^LT1C{97t!Rtie&O0xc+3Nf+FQFN`5-DQyoZwccoR- zZquC*1;gF1Nx=3_O5KxVzLDDHwtLVMth+a7!vA$TLrg{y!hB)&H7@D&pWW!1UyW5v zwUM>2QQ`$*VkJ`-`w6u2M8}3gyKhawah@5iL;Ey{5pSeFcXJ)Lf?)C~{xKslfRAWy zDdjg_#8Od1J9)x=0Qc!UHxJ}7Z3}^X27}=@`6?J75_`kF5P5c)3}<}UI1>xob9yi9lH9FR9Nq}s6xDGiXO0|fsUn?oY(7v7-3h$n${jg~iKGP)N z|IS7ILGj!SPE$sx42n*^S4uKy4`hmaW%0FUpayuw{5qw4+ARvozjyKVMuP24kV3 z;=srcwp??OC2xoGWo#cgB`7e_-J=WKkb2_G@DGSEImV#g;3VR^y9v$eZ$VLA9(J_H z*;f(X1@gLQ@(jQ3UIzHtrRM6|1YDXw>uJeLfq~F$Oex+nd-ccs)94S>Wc;NhLY+ZI zVo_HH%-);k71=U&&7N1h?bn^Gc&sg2G9S=J%NozFujB;HA08igRsI1y7_Bu2tH?O7 z=mv!T<9Idk%z{nqg+yAOtFD)&AA?b2rN!^_MMXW#KO_|wuY-kBR*6Oh!?&R%4*vDJH~QXsZ%y6oQ?9%I$t2N% zhtE|JQuB|RzUM^n?Yv`HVH_ix?TR|5my>XQ+|Qh$#zZ}E+xsSEm9m3Pk9*lZlU*z? zXf|b;!zx;EZ@*C2x_;ng){RZjhUpHv`|)X3H&i~R+f)U1loM(y#;&o5$vu@amTrE$;I z5_~0~8ofH{-*jIS>~Z$6-;gWEYlU^GoIXE&+21A?mm>gV{Z4PgZE`fI4PnS?TBD-% ze;{cm2k7hpzdd1O{|y9&;`Cn=3vpeO-?>D0w~D3Q7re`w{+d%lYqh+}rDWYI|M$zv zF=NWOkjsyyZd!u5ug&~HY8@ibNC5B)Y4jxD1@XM(K=S}ZlbI=GGhMG4Y?QcLdor+ssq=guRWyc1}tm_PodFor)9( zFF(GJAOBwZM5h$L>?y)1&L~aiV$5O*GEFGYn#P&)t{b~Q4WYymtMvkqxEjqqA!nts zX~Wv1eNhN2%w3EA_VbTopl}9WAJRfeie%U4O5`T{9xrW%xqz)+3XC&91YYmJak2nw z_N~0!`9>Vt9d4YLttS|w49*RdC$1Wbgg0}n*Q-SoWp1RR=?aC2Egs}Y<-MK{0V)jF zK7*!XP8rJ~hEl);iJ+*s-6ucwO6Lt(e=x60u&Q5KVwQY!{m4$Oy!_woUPeDtt0(T} zC8uewqO7~>imVtKLTVTaP%ZS9%)Z*YyuPZA^eRtW?p1=%oVL)G`p>XScB@pdcFS~D zHr*Il4C?19{vz1!JFOM6@{vduZ?ev>=eZZ_0@rwwHp3!%vYaa()6X(TQHX&KKm|*r zBZ<7x&rU;~y@`njABXv0n-JcOVYkXWg9&q&XpP9a_}h zGdjp_oeNDDxw4ypqmb`H&P#NugYK+e_}}7spIkGy@zea_yIHN#t+189S=~uRdJ>pS z43iwx)pNLXUWpNte$}Wxk{O(>)nb_9KLg-Mm_w(Frk|P@?vL>!@UI=88R%Y1jyU?U z5?ASIbiKNd!;TGqrdTVUtGer6qc(>UgCe4P@|mHDM34Xm%Y7u_z13IGu%Nipp~GlF z&45A#jnxn|pbN|Xk}-eVIsZP?NU6#iri#N49r(_~kAn&y)rv0Yw- z;9Cl<*}E5Y_w0tpo8;$ARdGN|_6R<65lOn(A0o=4Dhcvg6CRDY#iw2LHloBYtJHRJ zG`5=scT;tuM>*+w3HMWfXi;u^xr#<6_dz~_?JXK}m!da33A9Bti=K+9+4d(2NX-gJ zc7`ZDE8`%F%!@THE4*PzTX8k?@MoZ9QD6`17SqP6w-tzih2O%p{8@88@=F@qzcJZ~ zrkNb_T8L5#XI7{XybYA%yBM_aUdH(=#=h?+z0Y4udw*9Wus$|_y`i5yb z`C4IV`OD@62w~NM)6Vw5crn?-HuU6(+eiQXw}1%q6#no$Hv!lATrmHsIzr)lCBM&= zoK+?%5KKWKpr4~26(F%9>{P(Io5N+Y3O5SWXeZ?IOAuHcGtRK_SC_8F{_ z6Gxo95 z$dE^PZ68VoIYVFvI@H0CM($fw;I+3_#1spzfg$ZN$A0@oJbG5J{NGUoJDsZg}0K(Eb?La#UH94$L|cfJ_?co)9*1e7mZY z0K8vSsbCmGfvb9CnvcQ-w6}DMPZc4WGAZa(Hp<*2tJJeFc!avwgU(Uh=YmxgfJJ4Cf>{}LdAED5gOe_6^+!iE_X zK!%k1nm4i5kC#2W=-a*$1-sA2xOPT&Cz+?b=kGq2ICr1K*(tdvm5S7R-oxM&F0Uo5 ziE1ivhyJN8{%)h=*yDF#!+1t= zU&9K`EIX|tJv;S{!E`E*TeUU29|5ETvpG+2Nbd&=uK7y}f99-Ec^}VpI+wC46;x~8 zvBZC%@E10LCtpFm-Fy9X9xl^YUmZpqWv?^G?laIM;eQ)Dzqw+_aZ6*Yln2x3idLKH ztGE9dbdHofh)n(0+}FGj5R%L1b+qmLJVdEhm7!x@;18PUhB`@GDKW+Ec?I-oBoV?w zS*vT%lqhlcJOX|YIw`2gSVfbwdm3TAko!1M;qL$sWb0k5UH%xViepc*~Lne4-?5DPncY+(U`D)r2O}r0RSDEgT^}FUc zv*>ww*RY3FWAY0%B}ZS*nHL2KGr3< z3}kc+&XyD3L(Z>Xq#P<1)S;xO?0b~=b{qLe#4{@i%o)6un`M~d<|Kx1?3!bH{!MtgYfeA>ADg;$q+S%~S$5=4}LPVX}wzMLY*6M*Rh z(yBx$np@OeuEoN(PXas_^KbN&cCQ@_DAJM4=77kka^l5gIsT*6;=Rl^Z>=tG*x2z^ zcwh4~z4I3LWB*3-#f&XlZ1pgo_p!og%en){XE2gGfdQBih+wG=uwLI0KD?2W3Vg(n z5>V`F!8|SJ`h>W3_%#MP+aI#-f$BW?@=EoKOm*3wvrrJtCZTZMq5+#1#ReV>!TcL} z!+~FUmHurRgdZl1A7?)nSa~y@*5|d8oZBySOAeqkXT$H>{9K=0-2IFDV^R>!LC-|K zhrh_^binb|+KD>X=rhdSGs$d%uLC2ia7XGEQVnkeFUNUF8*fQYXkha*gkXR8>_N?G z(ASv!KpY`Y8B*JST9g~bYRGXN^k7?e^f%e|?zw2zEYWNbrYv4z!-_@?)zkf<$N2w( zI54KYwv-fv7;~jhI#}yHMf+Qoy;u(OcL`wonYSr8{RYXz#a4-77UtS)58B693}A^r zRt^#WL?jQMHg*z33>U0U5fnsCWa*St$II~KF)G5Dy~m>qO*GGp?7{vjjI^XR+E_EA z6Z@@3JE zK8`>(aIoN`->bueILQ>UY>i*4T;+i`7xIkOykxvxe?-)%7jf-3YjWf6LqWi2dqg0C zcKX0r071d$KDk?}pt4Jiyo5IJfb}HLh)yEs*@cw3%9W%sa;_E%3jSP&JoYkmQMocR zxxB^eD(fiRUxU9(ydd+g7A-!DS|A?&pIf%hf6nDEbchN4R0k6Gxs_9mo~{Eitrlc- zboDeEsHCezTcN>?Yd_em5FMoiNk?HC-J#gQa*O3Y9vk%ewLoU0aKq6Xhhliob8-yo z0u%{O3^Tm=WYEJnLQBc__VV=><6f8-LVXjvU&+YB8;cA!#VcT#`^3*VB@YjxB)?v7 zgWXS1(EBdvz+Ulh>Tc8-K_G*954ql3w!5nASWozH%bh40j%R^U-)0$)V)N_c`4^AJ zMN+GEq}U>qoBDhUv8rBTtrJTU=uZZG)hxm))cQSJt(mHKX@5;Yh$LRt9YC&^2_(6s zD5u;U%@naTpbJ#oja6C+oaS#br~THKNtY4@F+D|*c+JBMu4;y8T)~<39a!S}+Pc{+*>x3k%=3TV~sS1i%O*0`n zLO%9?v=gEui1;^F#rs)heoRbb;3& z+TyQ!R8<}1B_LLk*9l>><|&HbJH*Wj<~S9H{dE%pO^VjW7#qs01x@^{8ReUUw}S74 z42j38C)z&kv(7V@j4XaVsNKZ@4?7wo;TVwBX^CYxP3OJ0+kil@arX@Lx<>o*Z*PT> z7*xba{`a;eBjqaKO8G`O(omqfC0`nONsOis~N{khcU_S~dlj=tnka*aug!s-9#9P+(GX39P!poyCp zALVw0BQEj3^lN83v~D48=)bQ0f0B@y`*$~RdmF{z*y$urkiCT7;{W-B|9{@MrEw9H z%LGt07eW&$lxil%EB=4!-KY!!!JrDSi;1~J)ZXV_;Fc`7g1!}>_&;4^7Jef}4cx#BvPRTJ(iHnOHIa=xP z6FCihBb$avEA2kcM)0L3=Q+_|_K@7EY z|8x#D#k#LHAQ+?C_Tsjr5*B%H#KZ@Tt?r9-5%Xq6d~97&S=i8Mx`@zg+u*j@@>gZ# z7*pt=csW=iM#IRW)Bgk|vKv6}eZ1J?t6TqbmG0Kdk`DTkXuIsn zV9j7{nJ@B`%%9yqGO7>i8v5qTdz==A)+Ec&FDH@zWgDYyI?RfKD?eQ8uIX5NVl8#z z%05QmPv<{6S?`_emB3?zd3cWxW6#lEEqBgLPkYx^R)QMMTincLW&r8@Uhwh5*XHJ+ zkhvPm7Wbo%Pogmny{LEX-n*8T9lowqSd$-pwy;N==;$%fm*ZB8PXD&ectJA(spG zN3QOs;2ht@-CsqC@_T;Z6oz{jf==8(d=^TO@DjwV*MDt-G^rN*0FMR#fW##Z$Tlqz_bzQTXESm$po0^KX;5>`~BTNdT zsg*F=)U$K{LkV=*g;CdHU&UmlCJ*!A@&iUFlg#;OQ(z8)@#`-APad}8!z|%{&IYvw z>d~SxB5cIjFpZ8|)~5t`!DR){Y>kc|hI{M&v@hX~QarIyroe;zyZrUy%Tgzgzt!B@ z!^ql$cD!u2Rd0E(mZqYN`+t=RupiH!`{~I(n)+XbR+N_qwEb6M^r9B?Wu>J%kvo7y zPr3W6O&QpyR6RRs)aSRO5}*Ej(+s)YWLJP<;;y+3+gkmihS86dH4~DRwcD&yXF&|D z1u=Im1k#Tcd=KnVu#k|~kH=fErO0dFlm_wMkL4<%H+PnMAaii@kv!FKe39Q(FHI}h z`XABJ(S6Vq_vR<|wR#k&d#|owj#Y`1^AWO3Zh?18{hF_+`;k62TfFdo63~!NzSvuc z*5x1KtHgNb6~-EV2qKf^q0+*(fNPP!(DP|SZ^@G{BWbwOvSe|%YxUY zrp@59YA`t8XMa{?C-C3T2>}zW9HWgxw&;t1RlnUu4JX zR}hR^WQU2VDPRRN`b1td-r498h&t_j#CY#1Ho3#PSx}j0h6}Pn&9&VQl79^hC;0b5 zdc}K3lWlPf<;)N#pNFHJ^hn%rh-Ss2|{l25K|IyLC*H zyS{LIWi2viwup8%)jtW{87ZY9{)a@b8xfWS5Kkg`sAW?sQ zyr%C=J?Kk3)FCTJ2QOR|Ye`|k;Ya)0iHoUr-yZW9AtSuDdK9-MG{7QK5Imf`M`RI0 zHWA>5H>+Jc(}cL#qkJcp$JXx}=94msl^r_1gjpom*b9Kx-k-GH*Lr%7dfOZZ?dSxx z$yFV{=Hh9kUp!~FXI@h`(GR8*R*<`b{hZg~&zWYvz?YG5{+?D7?V%C!{Wq4$+R<0R zh7YwReP9MRitpjayw+NYu2x^edbM%pw9_GKs_=}^&jN-wVhwP^MbdeeE`mI42+j+d zS#(qs9r8gY@ap)wUb7O%yy(%z_ci}gdxZj0Uwpno>|mZc{kj}`$15h+D8Z8jPewA5 zM0m;kDJS>>O_u_}4N0LfypB)DDWUgwV{4*`PB>fhy%aKdJ1_3XJw1$3^koYyZOL`Df z13xng+TUEOUq>vmlO34m<97%2E+ucz^j?BjO~NspcP^>ZQ!{HRT7h7W)6U0W@r&2A z7D{9#Ok>5^GiUvhG!N>w0X5lO&Uo-E>Zg3B3_cY%;>4y&>b7qi zqjzeljb@JjdD~o zulmVl_X|P~JFV~PI+ujsc2iVLDMpVpfegQ0@Po0QGLa_!jFE@E{Oj3iX>{Es@>E*( zh|I9d+podT>4w!qk!k3RVw$6aiAl#>)F~ggi?1c0N*azkJSB7$z$k@?LXnrHuI?f{ zPhTkeD-&xW+028bD)>7xK9gry0eAiWXX&y${J~DBJ5A1Z&{aT|gekoppBTS3DXL-> zn^X;J982IE@KySuYZOp>o47`w6Qqe26JYFo?;)I3q-+0vZHHxP{1fY%i+Aw4Ty>P& z(|dhjO@&2zemYDBnlQEqmhtiPPPN9AK3#q~94;J}g%wC=BE7|=llsrVD5>%cGYMcF zY0*vNQ0M;Q-rMbzs5{eQc5S@FEUdGjj1H(;3J09D|d7M3jjk`CB9p-I32>&mk$gm%(c@pQx8xKGRvTP(X2eyur;SrUD7VPH zrKBy{+`pe7$w0b2Rz>0&W*MSpC1KeNm-KvEI{pIr%^UESOQ~sxML+|azFfDh z<*lJ2v<^C$R$LV0jdddcT78IDh86J+V(YmAbQ(V$r%Icwd}dy&%207n7?#u(_B_I? zg^)JOm4|Lt;n)@CPOm$k(=*{W*4kP97r6Hbf+wIb(kH5X@Ty0@a7mr zvTX}C3OnAgy#%k1}HYE3JAYsmKfN!Hc_<!`T4rC$_lT!Irc3BfhE zH%MC;!9R?z zz|i@IIkd-m$!#FSTTqcOl=66Anaar}>^>p)p~0Zi|7`_W12wKp;b6X*ruzYp;`5qo zbN$ChC0W-&KfyYGu6K`T*_6B5w3!~O5kUCaRC2@tKwTgJ)L`YfJY&W!K}2Gw{VGum z98nMs6SIcavRw@3WkbbVf2D^oJC!j?pQBDWRR3~Jkq9rnd%VnXJ*R9{K6%dwa%XN6 zAnh;9IIjqkuUgOa<8aQ*$faDK9G4(=;&=JRXI(zWa$nLK7?LrhgR1ewu8flV`uga; znep0V=>^g=QptCP4VawF%c(}Swgg83^^8j&$eVF-<%p%yzuv<`H4sH*Y_#a8bX}f}oVyP7FQ$o%a>j64Sn^R3BbxD7WXNIB z`^JqW9KX1?9yV|H$WCg7iqU(_b(RpW@IyC8IPya+1k4YoPmCG=0z}SW9(AJTT<(x$ zIP_#yLQM|E1NFRZ0dpPi0RbdyD0QAPsI0W|8x{}w%C9_=Q1Z~gp6b0EcHX1VtLN`S z*K>h2N@uKXu2K}w)tGT+(3|=?aqw4xhm|9H>)F`h+k+NUGmXEJ0QL774n`zthVG`v zqK`{_C4QO%o4jy>_YT{bws0`-F*S(LjhK+Py5YEy<5*$6fcJx!#8pQ6W6DV}}b>dvgazl4smB60% z1abq>f+`Uq0zY?k_wM^0auFQGfmT{fqC*l^nmBrv1yoRoA!gDrVt1|!fpBit&s49u z4>Ha@(bA^+1t!=0%(}XCA`f7ALyDTeP2>x!meG2Kv;;S&*v)m}B0Y~df{7$-=M60( zC1!K8{3nL5R<_Ty`(oPjC5@GBF`i-PHP6{5y_#dphTiNm&?kP>57LR74f%}Mk8h1G zdru}A{U@{{71rKRoFDDrYr7E@A&JfjCXN{;D6yo~JH9H8mJ1iyC%JAH^tMk;EsM^Q z#c^ChGI1*PW-I<98X1;3B(XlN*ts^^-Df_EB1{;#t1RQrloqg`vMe~4H_9VVl84W# z071CoCVJsVq#njGyt_x97Nw#Uja^5)fiFg?7(I@5uJtahvK$_kBOjjI>OU;I?wmsF z$(5F1&UHX%V>U?{2HbLri)N$wywg3}sFx*ip2ilCOxtgW=q9ml8vI*{kTSHd*dIx5 zyfS_Ooe154YCra*Q%L%QvGh)BqgHuc&3v+95;}9M}W(es>3xUYWak-NBIG_};I3Xss zjKnH3u<5WU%Lq?>LXP2mmboONQnpo(;4i*;%S;{y7ZoVrb_fL$SHtbZ5vST1wXhtJ zew#k1shQct0okTeTVlN?+unMupRpMcs=1ZR6ipLoAau(f+(&s(ikVZEUGk}3w9TJyBmO?}GZAXae&KOYWDzp*(`aTX$TwPQ{m}@X za?46Bkw*GAhgVghg^(i2K_fM{o)ZNuP@O}YXw+XPBY|b(TYUqWf6GCkw(!?HE*4Te z(zP6z0e(m#h^!H1{(L*c#KjW)l+E$QFT|qgIa5fq?e!`jr%nWhNg-J0)Qkf6;+3uW zuyZe8wYUDHHrztqdsLl|r?2{Bv4*(qT=wpU3XK&G7&gpyJc%^YID7yipQwctYv74Hz?MWHygl-=v>j;MqaVw2;(%eVE z?6~8?T=N~SGp0|Jg4d6&@5~wZmy=)*Q~VwWa&Uh`znO8d{n3`H=s3 z2S83 zwjLO;@pMAp;Z0D=%K(gOWm=2$?rZa}zV7m!a+7oKzHP6EMnF{DXdl81|@9%e^thd#l6*yYY znjv|zo+<#GsmABz>0ID=3MQsm2W0{WLrm+}rJcdx&Sp!Ms&ne3|)-im18 z_z0&z@HSD~pXar+D^HCxe%e_nX8w(*h=&ak`Gx?Y;@Js3j+|u;l3%b2y0kZPtxOl^ zlnfKrqFkO#>SGU4o_p;S^drn@+3J_Hh$2{PK4#e6LZKk{O1 zSE5L$w>UStZnEG?VNR%b+cdgPgVhSyi67lH9CR3T7Pd30n*x$^oRxwAe z$lCNKjo};DRWsfQ{vZvPh{uqFntQY^nwGHfHG&a%S<~Vm(MPscXH6tVR@OA#`9-?w z$e;4bpASGz&XD*%;QaTl{KvT)T(y|r>Ryyv%MZ_iw-_#lnt{*S9{Z=I!8|@IZyTLw zWm>=Ecjsw$p5zjcWLvN$miaq$els14G31AyL>1ci>*CucWO$tq%23StNXA=W7fi0g zVKE?)4lE;iG&K&&$iB)=<)b>x^-xg~4`N;qYQU#ty1W`$F5}Id*>b%ISpp29(&Yh1-LPj5;k4Qqq4Whv877z^yJ@BRBw!46nQQm+>@54%eM6-PEa;AJ|^oq{dQ-} z2bOUjk?yr#SlIoZL|3G3TPz|8vK(4FVw+6pBO&Z^LSKd&7_zpiXM68v8O@ymaemHc ztEjLkT%@+%qq|s`C#c;j#Y#iCx zcW(v3rQ5}{1;;2}p)6*+R)jE~PAg<=g$CNVtbhJ<#l3^Sc>wMHi+{`^A z$mV3m*QbEWWZJvBx&pT6+1Xh>@%kjEHX!ewu4y`-Z3dzJ zFYdzLO;>EcaHdzQ-Oz|FF70@=*@8!Y%du}4_qUh!y4u>;Z@=`YCkX8@+j*I~O(~+* z8R`t(Pfkv0itxGlor}t0Gwxoq>ucybo|aTM+wnjLHgz=(kFTb$C)}yqbhL-->)M)D zH#E&%7c9iXtFjKqW}6}zy4gzG?ki8S4)JOe6YE=qn)|~{{rvr5WhEY~U7i#5)H;i& z`c>cRP9~=|T&Ne@^|cwQGn$Piiu>$>1E%^Kby?co8QIC^kq0$Tu`5;gzH?sHzL7zp zW?^P#mW`#HS^G(-WP^V?0iT-EWYemIZnk)y?l@KGlcQ04EJJ|=b#5E@a+HvZ1VVr| z>TLNB2uDvU9Sy(Td@(XAwgtY#O47vxE{#}AZev`hPHZ67dC2SXX{r90hHH-}xR)Dir}aGOGL*M`uL|9QVPJZy!};TN$cHsI5sXqObN>MKAZo37^7q=8qs z3SKsUai_rkZ!Cb3BbD6z15U!N4~x;c`fS3z&!(SYKhRPjS2hQ{TDIaO`>+($FR_hMwQ$?&HAj?4&FcHq)>5YdLF>U%W@iucigw?L>bi12E5Xa_b+|_2VcSG# z7hXlSHe};;;k39yqe#=dy6VPlsH*RBNW0|Cn=iS0_a$o@&)s@sREuX5E>A_u%(T~= z^ZNbUnhhQ%nAO$S{r$}cbTzIoW}dpJK4m|sX_)9;KPkye|3dF=lu7#ZBUT^=EU})f znVxOls-$c~Q$xe8w4#Dzw={hs(P10WcLwU;>~xUCO_TA?6qLEMyW5}U+}K1=ekB8* z+}B)`y%?vyO2XU`o|>B4G-wPdE@5ui>F~qeS6w_6U4JMVbZS#iblC5_e_myEXFXT* zp~)UoJ&_prdg^{hu5`4dWwUww4F_Dxv*P*WYZ8=p%@{UA@Wtb;#no=XH?)vuWL_eT z@-)CE6o*+x8%Blr0|5%N{mwkLt^2Zlp33>=8j@1DJ_2d{e82JF^dn6k;3#5RlXAA$Y8x=|>QM>EMX*aR zvLppdc9x^@<)PAu(Y!8W!d|?0nXPp$B;dAg@j?2bF#0UR2Xj@vv&mW}X&)CmPV~`^ zhjj}+eToO7@5uu8e~l0E0TCU)J2pEcv?uj3^{{PX!&usa>BE{q=Wda1qG0UxMSqMd z1iCRwJT*jy#1j<2`I_H}MpgPnGNv4+ulC1%kQt|D-Vq^u6`6Y;F z%}2lSp9Waqwik5@3FkztTLqp51MwEPSb*JA_6A`Z--BS{mc6g)KoKT(_40_16CH@_ z%lwS$t1llWIyi(rIXy^)%@%=D&I%=t&7A&yiunH5&_Q1^wjVzZ#R}`(c+o-!OGi&I z(6htoyS5dIU-?k|l@MZyUHQBcJc8vxO8g)N>34upU(q=TV`95Y5pLWOtG5gSbQ&jG zzL~B4?jhU4{`lSKiSATT?&;|eXMCQt`3-MkW*Pv(Klj091zmf`I(@2>;JW*asMj zMT_)O|D(QAMok0He1N=!|3O}0HDay&uZbP`e>FT{8f%~ZuLt{o$szwSg!Nw9xU+9g zrd%HNV6P{tV*DE`T358z0aS?p04Cpfnw!`EF*n)*_X)i6aZ$_ z`sGvc>ZD@wX&}T5nO?`K7g8ZoI^QpeC+01C`?QMwo`^&X@doZn-b%Z`xoPz2;!kp) z0C7!yi4=$EFS~Bo=7mg3azzP**)nf1>lr49bO>N4Fn2y(5s^9rZ*Xf=7ixB|` z-b-Haw9)NhMCRQ{jBD%n41lHtlKRi~18^m_N>->E^f!(i3-PYVCS=^L;WJwC!Y947+ao1^ zU3->kS?}#Uu@6r%Bv6D52SkoMfI%%x0t$b`(F@1iT|x$fCZ!UmUnfJ;Lv{lhMr`)l zK^Jn3k(&tnqk~;WYBSVvUYZLCHrSNfO{zS=u$HlmG>$F{JCHk4IZD~Hj*9%8 z3pM4L$c4LFtUlU&cwgfhL~4_yqY8V@2U`nm;*vhcYndhx(&>jViSQ65JEDgHhx$Cm z<=w0((g}fCzSm9}r0##o3~@MAH+(@RC|%m@Ci_ zG)<>B0%6404ZT&(%KgXUM9;*i)hpdWS-6vpRO%y2Qv75zB;G1d8^_hNm}m_3Txvzt z;CBCzu%T{648KQ=L}O!u)}B|pHep^$qGa9&D$DX}>~3ggr2bbxA-ZF#Vp8g$zWmDA zX=>gqgK#0d&<*GZF5=ivk%DTPornY@Ch7f)fjTgV5wtqwMd=Pk1Ec$&9X_GzIf5%o@8K*Bt;az=i27> zMqEWk4qG48QWtUl2ISrOf$ng%2({=gv}D3IL%IxxB}G%a^G10ubA39YMqHg+3IUwO6@uwjK8zPuY~+Ksa&iR`i;0kCr(w#fVne-o&=`33s8aVMXJ1e zA1V6y!RR$P3~p8xta6p-T#8i%E)pqkhdBO_E^$9cLTl)v%!F85#HDrP4%5#8QpdYSg4p zgNMcs)wChf@uUP-e@L7kXIy<7v%S19a4Y{h+@Q0bU zg8a*g=ndf|w53d`xY%{kC5%CrHsbTz!74+*$Ok9fmPq)q!ouUUE)BosPsdUo>dJ=7 z4t52`2XAI7S$!MyWn`22`dhp1k$30ILfr??Ja3{%Ft*}b8`*7kR$_MS zw%@ez_{RC}l>Jba_kp0}xFUZhss3hFKfCVfm;#6Bej)gNn{7(pUBAHj!x;ccJ4@v< zeHVUpQmkPsMA^33)YHbdF@CFI=wAI?-}^#8oGJ9UXI4YgrSXpReu#$KcxCBp)?7jz<^03raJ}Aaec7JlHR8Q&Tx!Enn$rO( z)Vpw}D%-wCBe6uU%6|#m%I^r7b#E>@-<$U`223J#)*pUPyubA-Yf6jA>u*%DCO{s2 zJ7NrbSxuZqfyy<-)-Dy3qnZ0#b4j`}@G-PcCtwlQ*7#=I^=EnKp$!lxzk}v0HDETF zw@qfMe=z4uOihbVe><4lbaKGCn)H}ZPmRmz4&h!j_Z`a4|StRXt%^kkh`MhS@RMt(wKj5ATFBY7ZkQgjhqo1 z_Va;KD;lXC%Yy7RZYz$@UnVr;%1VDwcXq5v2eQHT^QE9#!?6AWrJK?&ia5RYja<*_ zIopOcL_^#Kr}}NdI-HJyqP01&Z+|vFW!>N+A>Xv$Qjz@bz=NA)vuAai^<2HlW&0w|@9l*GU?FWYKbf(Ac|o?gUT*@VT{4>tnr$gpt8UL6IryDEJZrH~ zc9GJs5{vf!_kHxIbZjf7@H+MEz3O4Hxv7Z>^@rP~M?1B}{wR(%j|D)1bIG$VZ`}B@ z(iJ}3U$bb?B}^l>u`5Gp&IV)K{cA@N%@wMeUK}TXHNcynZ3AC-e`?YSXi~6oiam2s z^H985BN31b*>>>t-b;G62Or>F%^^f}*2zImsHXgerim|6G5Ih{*m`5Y)~c^jsegNu z5#bIiq39RD0s^%wfn z*Sjj#feYJXuPuZ0!B9ni0$NEijq;0oEtTt3QiRsSw%Y@a1K>{~qU)GoWO&p|z`MGk9BxI8$(q57ArZxEc-BC)PJksk7OZMSovOLwh+zyLFXxZ16Z+aZ(d)3{_ zN|!6Xk>{n)!ytJY`?vQ2ZPg@jKB2hI>iTScmxJivRF|UH-R>vaj}4h#dtqWqrnS3X znUk5d&^p`3OYgg)&Apjo^%Cb%^EMkd{q|EYpm^QyRx?Ygdgs%YcCbPFc%?R$Rlitq zzTb`aZIXAknfn+gS(PZW_-dDqCRUOmh4zI=QPRR|+tFt;UMilU;8%ipCV6``;~%oA ze9uOYZ?7*$j|%1jGqI-Uy|z-6KC@Mzevq`}+@S?4C?EXE`F;)tJ*am0Nj3M>WnXZA z{P`IJ0BtUm2H2KUiCiZ1R_O+rwnhnbhcgYnep`srQ>jsxxG|9Gtf{D|IL29Y;MaFdwuNTNrg^NE3c^g%k1@(_lJG=FMOJ z#Z2=f>uo#gkoa7sliv)NCXhb7vLNUv(0j{%`Sby%;?XNMQBT-5uRsVK{RKzZtUcIIr5BlQtO| zUr(D&kC$>?J&wMLtw<1)ipMEP6?V6~1n{q~aoP=-2D8EKz+eXZ2Yo5ms~lE-i1G6B za`0R_CiDZT#M`gw(`~+1^S7~SiWL}Rey-G;6RKMr4q6YFO&WaZjcmc6AeKv=AG8(F z_r;sSy>~kd`+1ec+1BVfnPEHKI|^d^Pd340?-X;4eeLia(5ya1rv>(PO4=g8X&isz zbMGWh7BQ(qwK`v^SiVwNhrmljIDqD9l06>#d9x4uY)7CHru*MMvFR32|L_f7S~KbI zk`z+~U$k{Rz%<8djAlNnVF=@a5+sPTX#-p>r^n{729<9Gc3Q`^_LVz5u=2OBAUGmH zVaV;Dy~O+@PQV8!chppmaihvGl?F7$Kgk<^N#S05j-7DzO?vka*vOn>HkCgGEP|9W^b+fAmULFQm`3PwYP5AI z4zhd=;Maa-1`I+t`8Cr5C%0O+;>5rlIpXs4>ABF}@Fzw%1wgxl_2Er`zoTDWZa}SG z4=-k?AxN#FThQY5P9QAyO2~?5;d!FMXokmb9&~$Lx-Vp1S>Oj>F%|h>6)*W0CnV<6 zro6C8+EMFj+8J+g4kZobhrpegm8~I(j`ut|eQ6^Az@j(RcHW#RsiFIYgpuo0+X!pw zMEbZ$fSf?ZT4k}AMU^8~!Spyg5hr}H43{$J*e-Tc(8ZzA$c@u29|O70;1$8TDU3{O z-eP6HbmLYBZ%bT(HXfhd>gkJ{oGJcnN*Ah8 z>niNpSLO;>BN&-oui@TCR4*!CN|~8?7E9&n<}z6f$t5ljj+{UEs^PXpd3~cM7CC%a zZd`HQBXMC9As0Z`k7}n&!f(#B#Be{M^hp_vCIQGg%1{u)>Yr?Yi*@7Vm0 zYuI*EPK{c6Jh?9qiU$_&7|B-=C(>mNo^RL8M1O5Pqg-qKM&GNCoVojbE9*u4OW+n| zU|&rZBh~NDPt?YQsPDxxc`V0PG!1=SPwCouxUCs87|-!wcUz#0cg3{B^jqZQN;qSL z`C(*1qlxboM>90QeRD3bjvW)Z&_%s+$5bWDq? z9zyS2E1COT1+Z!Zs6&uoaVWdKfo75Sh{WX1${iKFR#b!DpWl+S(@z9%p%YQ!gqKkV zgn|4&>!g9@B#zFjZ7O&%349c-8r0^|7>!zlQ-eE+Vb3ySy)Z;$g6c1Gu)M!tV8q($ zRSpi1T;p(j)HQ@gUSDq&EX$mwdY~;ZhMXuqcYM`!e2Zr#m@U~=L+p49y|kVJE;`Ew z+5slJA|UvVMc-!-Y;P-!9H(A9a6A+yvKP!;l8rXp%6l@O4ymk0W~R`TS~u|VI1}vz zqFAk)`Kn>Cs%Nz;j`E&Tz;CzsJ5OjvTx&FsZp}e)toG!}Yl(b94dySE8 zAw0)xjG@z6OcHT5`|G=@Gcv0hJv@DuP3Vgw0iKU}YJ#vS30h_PTzsxIWvPQVoonVf zvi%khBZ06tSEA$ve&k_0K(wMPu3UBmk3+=5A!ZOsT4Ow&qQhy8zE z!FzA9)c9Fly8=?Rqli#L@MMXTU{R2g{y-WbGZiW!s8CzQ^^pJJ2B5* z6`qx6t5DrNzp`niQl$Z&T8;uas!lY8vJ5V~zfhQ&2MtP*iWg*J6YQmWj-6y)g~1G` zd2y?puh}c+bLOE2GYIqg;U>{^}+x#txzGrLP6x%~`J?Q8)9CV^$6QFf>D| z{?j>MuGh?7tso=D>pCE)*Izd9w2L5XobASWQrp}$Q_$JW^~hiAWjnF@>%6?EEODHQ z&_6SHacC~!BfBGa-%8QmFS}x90!_n>)U6v(1B*ha@mQ*g1UyUs)CY$Um)v?`Ke zg{yj_3K!=TG=&7*nTW0(b=`Zd#xM_B*t91oox=e=m#T+4F_zxC%AF@({hYfz@!wl; z_fb=Scs!nZeMS=b3dU*#qNvl?WQ9$;@3;EcS{s7&wDtR$n@A?ht+l-ky|ulyiKnVc z%3m>~qmv{s)8&Mu4IIW@wzj9v4}ALi`xE`A#o->>xWCf94>KrUm=A4coL*bBO!5m< zV1u-(F~ka-Imm}`#n)C27~fv=^DKH&<(IuZkP6G~a24pr*^j)5Py@-jOPg%;z`QrN z+TVWDeQ!!c9vr%M6w7$!$CU;v@5ki9@D)xwvkSgSv4nA8BKNIeE~G<_n%LgC^3Z$S z>wi7Cwv60t1cAPCKaX*n%ZTp&(Jqd-TR6Jp$=pB6jVJf`a8cf~TcZVt*K-@I0<|~X z{qLF*@N-Np@-5+Cz2?2yYc*x_xuWJv(PMQ!e7qgwBGCQ#LsHy6-eQTAaiPoMEbPUE zxZoa?Je~&}h8mO&P2F^mnI7L#gkxB+I7*=bJL3DpuhT+j#Fzwe(t*=Wi=U*`bND6N zX-8+~;}&1@*7VK@ZXI6g5mev!OM{1N$Mp!a_z}y-xB#GIy22~Y)EF!B`mdhp%g!8D zs2Jj%b80eD)-B+M{kplQf8zI_G!yF9tZS^SHHmDto@W?Hc3};NiYbl9R-w+*&d+eM zJKg0i=dmk{c*h^$c!+XW`xL!!y{Qjnilr+lcraJzKLgI z{7WcAI`)16vh3y!UkV8=ca!q%es4ueiq{ht!xTAzyD#8H%vOc5fObc+A9ByVt;!y< zR@^*#Mat87ONq&OnPax|lm9Kz#VrOXw_Vybs2e^ybhBr+{jBDaj-a`eB=60Y;Yj4M zh2zrEbD=yLnHg3$D~KC#-7Wu9GRfFLX&7*oHOYd!?{W%b@LdJ*ogk%nx%^ImO$v41 zn^5eVoEKZx7U#BA@}1T;!F7nC<#dAshxy3{Lf3%V1KD-59&(%Ng;rQD(S`H_y0843 zJMMVdm0V@MfXLR+FFsATMI(3LIQ7q~~+2~u>z=8Ef&+2#-v}i@-F0>gPNdiF62Arvt~0NV4}yFiZ1}cU(NJ&E~Opt z=9SEm@w~a_#zgWDxPksbDxt|$|E`()i@*7c)^ZgKxp!hN^w`$YfPr+a2RP@sAo04d z6Hp4Hm;IquSjZK0FGS1sR(59C5dL!7Ch7aJ9sBYyeC#tkajFjdj)s`6?SbxGf#Te3 zLsdtN6mT8sF?9zxc=G^PDO`b&f*mZXQ0|Q12l|`Zu2_a^uL&kR^1Ni*{DNmQ=@Ej_ z@D`b_OoVH2wzSUNXMp(D2rm%ir6tt5KcSv`7c_k%@8ENxuOcM>%Urm!OeqHi7)y2- zHf65mH!<&Nbow`6t}3fxA)fQ7 zeGBt4;(y-{x}W>R6c8Lp?j-%HrTzmL*)zK!H%%rG#}QA)o_p8VZozH1deQV!XwWya z!WJSfSeU)G!EUiFX&bIif_@_WS8wTr{NB?E)hY0oEAT#~MUhZWtRr!eChijYWF@Z{ zYw|SU!8mT4~}??rHQ6J8k;vr>>&ac!64j!!yyN z`o(%t+SA3_cMmWJuNa;Bs12+rF)mYysp=;VpBm$n_qz9;c-e=(;kMRM7&YQ15fpoI zaz4%o^?tKGPIiY`R^Ie-@Uk6StdMyiX&>eM2Dapzk=D8F`W9ORiw^s(9M+^=NL{yG z+R{c!s)R-(!`l+T6XpK4bas%( zZ%^XJkCPG{c5h!CSFdWAmWXQ^yZ-8mtbpivdSsyVIb(Og(a`I!TMYI~5xCR2W;sJ{ zcxr!GGjB%*oQh))bZe}N@w`s|+M!KnlM&8K9O9QQw|~ofR-hc?q-LA4>K&fDuL0a| z(`8Y<2^sUsxJ4%4qPrwT`?5vYC4Ov^@F>d4S?xP^oo{h|L}5WZnrLaT>&Zjbf(~+& zqR7o;>)IV%ggN|Dbpns$mwn7qy4O%#?;C|_eVBgq4_UO&kp1YYg}v_8@{Ba(4L3^- zF=OHqdQDe8l@2dfZ{2t%RH1-X9bOw6PkXtA+4!nv<5(+7vLzQuHQ}2Pxoj!+8e)^$}3O|BoZg{N-AXYCOT(I zzv@J2pfXgvrw%e}$vH6Z%XbY>g}5$`STl}PDvW&(wBXhBJpr7?+Fd@8V?=j&=W?!% z6gZ!kBuWC75ZTcVu-mfdE9L_uV=kl`iOq8txKEYw$0IDnGuh4Wk!qyOUoeZE3IGBh z>)>1~ZFh%@;ym*)T*Fy3G7|9~>wIE2CtISO^GK_ zlSnK-G*$b}EE34&GLjMx*=FV4v_RU{JU&~S{7~5~J0`ll(v1s#&Qe~)cyf_oDyGi! zI|1_g1*x5m18n#vbxhEY9J1LJFPd8SYo6|7_}(p^)V@FXeEV_9gFt3pYA*M?amDiP z_Lgtg3jDoZj%Ofye}RrDxRUpdV&J^BJ|$JU8&qwMCe-U8FSw z^u;dW7S0cp8uA8bhqxgNQ+U2>3lQHarxtJYg)6RC-ggGhuV>r?sacjBXJLN~8K+x( zkKV`SsO#JQ7O9@oLWVqBc}1Z6ja?30ojd~d#VA%0CTwVmm@_fch%T4()v_nBBtL+< z85ji};z^byd*w(R1Y7j)xmayhwc>dYDB9RX2W5hD*lK8GhwgFnxo&v2r@_IyxKi8H zBsp!DAS;cx{$#eDWy1lR7Vtv*7?Xp zJCBuuD$G#~8NjC|utSBcXMX%1i@?3T8!0%AUzW>|D_n2e8E<>s30Tc*(Q<2lnJfGA z5wm3pk|{dSD}88-z4@s^z!DvmWfZ@oKhnd^&im!`#P*3v)XxmU>SFvdT=uAWwnPx}{m7zDFor>X zfg082fpwenG9Njq$b(V8%Ry&W7cH>%mPRPTwqBgbTW#p2MWQa5=e{`UwzwUzgZt#Y zVe_~@KKB?x8;L%VkVqH9%d&MldLJCX3o-X0)rleYA_e8dqvc)ZeGuJ|CqTATF3fD9 z^Yn6f{KH)Dtc-BSx;zD2YocmMm2T^C>~vk3Tq^3E0#6(d0K#V03C=)QVx4~^y&T#5 z{Sk$xh*ef%{=J{1;9;KMYu~Juk?QjXe+%Lrf0}5@3Iw}%H(t2BnjXJYYYwdmK%rk{ zvQ0lkT0cJbksd@SSDHBLSol%_#0Jp=T#FgZM)oz;pGa%Q>XBmn4BC zrvc4%i(b3FUt@gcj7z`#uxtO6{PxxZ_8P8SM&%R3OK{nyTq8`G^SY&)f=@TO&E~Ln5aGs+bG0K1DE? z2Q)W#RWsC1u8mcza{0^2$w?U&@P>(l!{4Se2o(JEv!@SE4|mrx@xnGo%bnxlI23jE zIdjIA=M3%F=G9zIe|oc!(Qw}<=E7vs!2W*Po}Qjf;;vDu5Xh)6P)Tatb{$z13EPgg zfq_`T$bN4!5WL`w9jLYB=>uTEx334zjs>%U=9Ay}<{i5F0N;(NZm&%(P{Xmh2(`V1 zRd3#?^tPRL+g>JI-@Nd5LUOVa)qa30yJ^8W)$zXt|%3RskVpK-s{R~t(ESHTwj`1&6}G0$nz^=x~r`OkGq2LVpl-GNfdS!WTj zlufhFV`tjSZAwa|p+wzC%(g)(Pb-F;yI|V%4agIWVBjLuE?^zr(_y)FugG@;k+#If zWGaGX0HESeH!>%D@2(cnh;J}UvfF|pp_E~m!L83J{mInzW5^W;QBI*&b4od%wj2{| z9?YN?C&Bc;~ZrxUa1rxac%W}P5_U~Rw+Y@xl#y%2)LfpIl4)Nn>X6~s!ynK4zDaYLUmgdg}U;Jn>pQ-$6tVANW787jIHE zf0QY;P5#Xu0zdJ6@7B3|!HDyV`*l!f4rzc1#PI54o{qWVdWj@IR15n#*H4-C0agZb z)de5=na5W;q_)+H{9VmO_rXYsVg7qh>%b(1qG5 zWSzzR`ly?noJ`suZSknZ$_M+L<=#3rHm2C$-=9p<^zzyPz=)N72f`$jL$=(sg3J1R zFri3Jzkg8v^p|b6S4q|Dxqk?D8-_ao)`fFl^MU3y8qqRClbh3tFWL2`r>Aw|+-3vI z8ScqKbb9@lsvD{*I#~CH0)Ne#{5*Pmn=Mp+7~r%#S>FX$DZs2Ur95F_{sD&q2>vqm#-w|s+_fg1m)qK4 zwhk#7oe6U$7QZBT*hD!dO|9G1V}U}&HxKY1$t5Qw5b1VSmz`dJtY7qE$xc4_xxe{9 zpUsh8YSI1P`@m6PD)Z`wFH=Zn$*ay{?$0f#M^U$XtIKQi*7W*tAG~?bTjsIu)t#3{ z6sVJM$utw!K@J}foOnj4LbW%Rui#p|2COBVXBTv~JC1f*G2Uyv$ErcYD@N|DX?r3V z`LgeD4;Il`5!me=6rOOK?M>aES5z8iEcg}aW@7M50)~N(y6(1c=&u^J|eNi2EXaurCPhQh2X`Z9FMQ2HMNtcxb{eZp&ga z4FRN_>NN(=J0(PR3DC-zb_jDW4eC59Hd+?Sq;%qR7sP`2$h*ersvXv_vke2{;4g>k zfuBkdT5XXzw)TF{97W0*aZ-~q)7Fgz8Mz*M0lZ*Aw;8INUZhE1#-N7pAj^Mkp!*5mqWRviM?6MMC8b{ zE?k*R#GPfM%thIwFK#23^UyFw+QTppScfhGfi1yld1aY)X2o(SGe+Z9HZx&$`Z3_q zTDtjZw+N03)Ky+w6b`tA+=Q!PaB?6v<@}z+hjECY3Z$nAOMwx?5Rwty^Dt&C89nxD z-VILISdPPVAgr#HSS2T$_C@6f3i!l;9Hdvt4mc7p8t?rsHI~tgDZp{{xk>Qk9M41f zzu>NQO`d#LZ%GCVY0|<;uw^ncR;PO`h`*P~+BK}8k|ZBU?^gz{&wkrv&p)}_XROL~ zGMhvZDFdKb|Krj42P{}!+5ppgXaF|U^?yLHNyMay{WO2uC;ox9R-FKT>L!?8mfFJ| z)x^X^s9jiUEy6zlN{#aN2QQN046Q9QqEPu^eM!^&;6oss#lL<5APL z%Qyk${wLA{5T;CESP}pK4(orL!xFd03sq}BTIQrfh?1I~7Rcv+n{)uLoAisjo&9Oj zrJq&`<=-nMQok8B%MjD0e^uyzAghC%pTOaf6OJ87MobQ7$mJC11874Qk+OdyaX&oG z!{pp9?I=*T}Z1JDA0ca-3?^qh7~>+$sgJd0YHa$BQYPs*T^kOca(LPX0X;_^2Vn;w<@#2nY7dqC$ud`@jW^l6WpC%MtmJ{c_I_ zJ^+nhI@3r#P0>Jjo{Td}yp?iFqFw#xUrbUKG>jZ*WrR{$>@Wy~qqBCJL%Id|FJcPN zT#+6z_2IREE4lj!MUXuZuk6FT>kx6V4yN!^BHTuN@C7T-9FQuX@3@1JsgX!{S3QBH zlJ*0^h|)nZhvMVl9ALBSUmeQ~P{dqFAhBPq_AfYTnc9LEsph1AG%IP;us~==R0dI^ zu+o3w%cVV{fZ|nBw!ZYJpuXJ4-NQJO4W55Q%q|qL?^k>`?2z>^ zqEXzC{Q3shfVtp($8Y4$6VXT(L+bzfjbIZ=CFzb7DZ(RSTXB!?EwXT~p9ec9>eb6% zo^y!82xX9_NX>x0(kwtH8c+dJhRbF;U2W2ghzH3(USOOZ1aIvMpLO>+Ul4T>yy7DS5BMoC(+m zWy*ykq^%+qN2PZ&ffF}0V%&UG+B#jfW&z-J%{EDsY9_|av6~J~xY7cmPXtm^Gc;l_ zJTPjc;Y}jD#m94YxaI+wob+&(T=M{FR@^Np~_t( zOT74HE#uye7!g7B)2y@PioP6(GrclE&B`--SmrERuJ(cUnsZK7*!U^;}JO9)V+SJ5BM+fK+k*Q@HJLEDSBs&*qM~!M(`qog$ zISWtS6Y!2{m!Bs*7$Zd(aawfOBVD!k)~@)XLF#K&YJF#_*1v-kOa`>Knmo)VThtS4 z*jxxp>&}&zK<_en@Nv8VJFLStD^eIjcwP-2DZnHZ0fdlB0c`q9iO!`@{mPJL52}h$ zECEihBS4z(z?W9^GFbzn29lk$de^xzCT@#_%s{tp%b{10Dwrjl}E7Gx`r1(+@xh zx9Q~+lh{;80Qxp$JfqiN4gekouJMaE$mt75?eMgpfXkZT%WK5 zeJS2`FXHuQfh^V0IZ%?*y1n=wT;ROZpAtfHpMho*sPe20{k@V{9=CuN#`g=BZ*I2yO3$vp?~V25sT`-D9VAF&d~DE#6$#PT z?t_SH7lzk_cNU0u7YO0+DF1d=KjjXn)6VFGT6q&#CgzWBR%_1JY#$B{-b#&{)_YKo z_qAKJ1dS~i)r8Acv>eYBSlrfSaOcrx^ZkMRw8$nbwxe% z`Kj7y1&m5t^wZl1_u7tuz}^Kv0IZW*fIDtgL7~t1ejHQz4%6$WbFaylS1NmHoQ9G*Tq9zD#QQw_P}lkPu(;;=E)^0)^%a5A{bS_8r&%Hu=1IK{S)WPikn-!-L^BQ&E%=z2A=Y`UWaX- z;dmpiDKUnmkwMfJrRwEWt>x8uv+;mQ6Hxi&vi}m_+XCg~?PsDg}8NVYR zQ6YsYL_@3Znq5%r*KXIrd~)J-d=?1#YEgR^krc6YdOz`2n#>7B4TzT(@sEffrG8&F zjGVrScuTQ8%hlu}AGfy?=OHbzss-dgUzu<(Sp!}|DUr~d zE2y!EfZsl110dE0$X~%q$WHA-HAGJ>5!v7US>Q8>1@x}k&!NI>XDvjkSR^OWh_(=L z)E)-{LXND8#uy`b{!b658J$Rw0LN68V>UYf*z@K2QA7xv0QwbSz|^#|`tv;?#e-!0 zbO2A&sX9z&TMsb-2)`0_Zhsjl!M3cKhX-2FF7R)cszuaTeuoD8YyZ2JvvWQU2-~arLY?})N@D%ee>7u$jD2r!qLM~Bz zom@x8w#^@QsZ<`k2}sSNnDnjalbDv~bTxp)ebxkKdkibriI?x>=xwPS{v>nAnA&@$ zg_RND$x4OmSpM#w1g{-yf~};mB>Hy23dip2BB9{lTVB#K5kgu@rUOqy&j-2^f(S;l zYfi$P_{MMfaB5ru!Hu9K9U208&V12A+4ALzH#bGY2Z0P1i?_6-Amnh_t#Q~PqXC32 zUI~i!d%Vj(QfqkGz3U`l5^K$uONP_W5KS#&brOtdN59CG!Yy{-P_WNQ_LjbOZ~D^g zJ^IH5jJVw^@?4T58xVp(}XoC7=#-JGK+FL{pC+|OH$KPQ|bISiZe<~ zUYozISj>QO_l?#+Sui_{U&Z{qA42dBw>p$OGyGz?%m<8PZ{fr8ynBA#H}J~?6Ov$> zO|@Ow)gBkPB-n1KwksbgaCkD0ww0EVA#~ECCZ@-{&ozP5Ah&13Mf8@C-b7_6K*QG7 zSVhS50Z+oxntZ3@*jje>Aj87j=VN%B4wmZB2HL1|Lu zBtXz#1?PrEbk!85StB7Yu0_c)B{8mZcFU31qVN6nfi11+Pbbd+-q?$?&eMFQp1*!+ z0g&1fF#Irc@C-K-NKMiQK_6iPvnfv$cM0x6x_0#@s0d}z5pHOKqWveAEoN6d?HrW;; z@tqlRGIsZ>xbak_@>c?L$2wD-bfPmqQs@XPs{a}jBrhh35D*E{?wX_qE7*Ve4BkR@ zAuqM0&wN#oFxm2l9awWhpW9Ey$WiL2I1^8$V)Iask1ua)){*X_95W%F5_{7h2A_y- z{(O5O;VE4Ev7cZ)xT~7^m)tS#oUMja_ZwX2GD{9k{yNd(O9eh`0*)HYU-EUij0Isk zO6(acDH9CfV8Vqs1HA;LdFx;J)z_Kwgk8u;&tdtU{@ENJKg$gNb>k%I@VF>2#Y8YO9#eS8+j0yLq_eO9#7{Q-5)uxGg3EM*a3D(?DUqwug=wF4BOPx^%!C*z(&p)enVNhwQ#l@s^f`-| zpu?zDmAud|7TYCg*pc14;Iu<8t6)<9=#0Xv&S>b;PWd7K6w9DHjX6cS(~|&KVvUz1 z99R~z8-k~b*FWagCAy`;c4%fwMj1y(t{)3L*onbdvMWGQ6OdFZc7U+P2O^$#;FyKq zyx1xvz5e8*RGFT#lZ3tMjWs+pm{o`~8hD8uJKM1l=<*}p#2+cK^6L@jWAS~=L5(UGR8XeQ z@tL!CTt&2gT$9e^Talbli8g>#i77#=iuuP3(y8Gu%XG`+IU`(({%kMLmXR%C>Br|L z;Z3wF4B>4uX@~h~7Tme>WL$uChY*<*Xrw^D0fmX$WoR3|50mi4rkPnv{6)8&`zItD z6s%opZdiZZX$PK02P;hBgHHpgFGP|QBUcCb%<@&KFV2T#MCeNk3D13weR*NwsI9OF z%D_VLggPz4@5}7(gKgX_>|hDPxqaGJH#0?!(lX&TW3=sNSTciyG}aU}e)8PXG6QAy zT}tee^_EzSAKwv4W_2flKR3o@onIS5%%$cF&3+I}G8Stor|}hboXU40mI`y97oe!v zpaSY&RdRiwr5wPcz`Z(Wk~RW(0Yq3gQ(=KomCZ}6wexn50`g(B7t|q^BY}$vc_)5) zMnYc97l8qF=sSG;oNu%zKJoL@YB(??V!RuH)=oW!)mi(Jb~25~*pO;T@rO<;_w zgKdVOIMk17tzqx2!E(gK0t5KU$XF@R<pFD1bOb*l(Abd1oWT&x+=C3H85nHe;#{r^cU^FoNH%c2cx`blU zqU$XNj5(6`;nj=%4^GtOob|(sbtMqJ$%sDfPH|bwp91=$GLcoESFag{UST-Ji54m; zV|MicYk4$hHk}$5ym6zVLF7D|A!PD(bV?@64Tke0QL3u<)msE|9PMN3*Ea0?gaIWx zW3;(^H0h;o6dYVllCfq6me{Dd4}-2IvU|{v+hk1B_i^X0qOoDX9w<#|&Ng6LT|0OV zQxxDb`pA(b=)%blR){2Lg<}07gG4|NAl)&8tMMEq*EN?BndAaq@ku}&_kww|6Tr`A z@*_qZx|kg1r4bf`-2 z=iry{V=e&|e-e}TsXUz?nU1FfFu4qb1yNz`j3{`4E>DO8t4|JpG;x%y%s5kg^AsWJ z-AsfPtXX6$eRl77Z#De>G%c^gM43o5oriL@!9cb#3Fo&3{?)N}n-7k!B*x%gkFs8B zWOP6Lbd%-6=@fjd7(O*!-u`<1HEiX%N%@VFK%~Xi>gl}e9&HXkiNv_+`p0fr_m`&A zKcH2Nx^Z$z1a7jNg|X^={VAEsSF%*_~aDXr4`7gB|Pe~ zZZOrV9V*Uzc3}mp`*Q;`1PBq`?6{w(oEX+k>3BOA8T?q=LIr8L!wmFoduS$CoW!&qE1OCLUdK{f| z-1>8{L&+m?(gat2tW<(KN8f^d+IcFaJ*MjG&kV8L5)iM*cDIL%?Ibm{*x8!U(}o$| z6In0Y=462<9CMAX`3vcFqjol;!;l%PDh@Xapv zhjfxip*zm+SXlM7J4RNFBxzORWwo0IFh~U8Kx)4SgCh=tCmJQ*P~wJD?&ri&&L1m? zvGo<;cE?A0Vi$xtwS>9x^d*HB`7EEh4L0)Zd%wLLj18hcts29!9=j1q-0XN&p+-ho zr=f4hHoFK9VNbBmjI&1L7wcl=ab8Csc z60WJvw{PlRr%vU2e7^cn4~AU)E{G}-M!6yO$uz~EZGXNcT2sElbpByZCZQ`AkIgcm ze^Zh_W_8W3=N(K0QyuK}0wm5|S;{M8Q1L<6%rt&x$`=aQW$b5E%sz4*Z@+P6 zLw<}>gT>Ey`X9APn$WkU9^3N*)MHTC+-etSY^I|22|-FR$2$wv%?Q6Ad=zQ;?GX{f zY?zje;c+L|b$L6S0e9}&W}SEF%S@y9H|)W^n{5cc+xycR3b{MsUxV4^9D{teSV{4SSBp4ja8;TLg2O9T2t$w*`_=&YUdi&V`eThsQW|^<668>X1x}S z5g?>@H5p|En3|o|@TobR{SL_3?P)u{2o<5)!g3 z;($_E=9yg83T@!)l_)8Ac&t6aFrF*3>hq?=L;3d>WZf>={@KV5{LS~;`mq__7OhRm zV-oGccAW$1UD)JN24< z0MFS1we$2WjUS2k@WvGhMQ9+=8bwY*14)8BXv>SjnqOj^N2b+6!PRRRyBe!n_B?K& zuE|yIngcwb(6#k;1uV7)P8B+1^asa(G_GwSJyB~PMI$5sz4Lx$Ar#WJRLh>*#SBw* z0Hy9e6mh*$ooHN$)S(~%)LR*~Extyp{IJ(6z$P>k`bq5+w^e12^%78?mQn z0YN`STp>{Ta%_9e!j%ftD?bKcm%?OxG;@sw5dg!7aaQ>1C=5+t)nFmLifm0{e6>TT zVp~An1?GZVpimjIh7s)iR`g3K)IA9;RMj(>?hIt|{+K5#GdJm5o*mZC_hJV2jKguT z&}bT%?js$nJ+i0!%gHG7_Q$Sizza<&U>t}$=Y1UV^JIK<|cywpp}~?iSB{MRFUpr@BJpk$5TbnQE5cr zuxiU`G{Wfc-La7lRU5VDP}&Gt`ME3jrCW`jX&i$r`ZDsnS@_i8;1?lU0;iNoL93wj zIs5yp+O3cM!Djm(evnTXDz=jZO{^sbEJz99>^mi+{$|iy9i_3QdQmwNpW(Bqg-rN1g%=YP%o{&i@$*vP))PQmnN z&uDegj#fd}-E2aGS7LhzD(`!qGER5PJmfxlwikNhkQ>pdy{FT9<~Jb(Z$RdFzVO&A znFl(~E+VOn0u1@-@7*?BqeIt9R^=7)bYo^IGD$Bafz^xg)2cUD6tIUZ$iu z^3Bde552XU%L=t=5`DGe5=}QH7j^z_+ooM$zCp?2?hVmYV5~K^5Mo8MO$P%pt6k1f z9=SE)c=-~sc-}6QSN@*l3ztthl7F%Z-^_mxp2O)&N}>Zcrv@(Xoe}k?wQ7@zM^pU5 zVJ~$HZUk`bsuzj!{x(&wl@0akJHA08D!o5OMSNq@dSqHdIQ)-2r&s-tf;dcA^xr1W zXv(JHKUl|+nnTpn$Zgw-e6ULKdi5nc{8Hy{ZmUg|zq3$Eei>(ooAn&b}4zfe5Df}@;!p^wo`5`d(4TdR^!fxn& z-Ur}lj5MO;7DWBpa9@{F!<0hQM4`fFayxyH5!2t@a@7)w?rg}Urn9!-*iF|#omTH; zX_#ENM&v46p%9jKG=`y)1xh9LMZr^5_D*~nEh0w*Kk%Eb^)n+%5F<~~LuCP2P!!bx zPTLCyV}XOyplL!&5DI-DtmWsQudZ66!fx5Pv2e6&f(;^#pnDyp8*kQlQA7E3o`D50a_cBL$zIqRbj#$EPL;{t10%Rw01~g1gj2j&5bQkF{o5atwv2mNs7 z^p9RL&4V>oeH==Dd|~DL=PKuKs7m2$T4HRLsQmo3deGSEeC6Z5uR^gPKC@1;(MJJp z2P?g=O`U3ceSp+U{^l=FR%W8MUR?Vdqk=kE;f|I(3%0}E`kkHI<*tOoC`YR9>{TjP zkxJ{y*$j!3p>5el7RFx>I{iim57WLr4cyEY0r)}5Hj$8nKm7fM2~EIde{3ZKPf*|5 zseCs9;tXKprnX`%u$H>IQgeIvk{;_2s7bU2` zD39uRu=ltP(Ycgf0q9@ATo&h|-kWsb8e2@`7r!$C73V2W37v_*KSp0RfRE}emBrP& z^nQ!B44KvK`}F;bb7h)uhXrhkO6n%)7g+qFc|XxMI5HS!Fh98C@!)TNu+ zNTwU)urR084%$n@YWRT;{cL+|_4@Ve>6`0I#w3G>$f3{<^Pd5;{SH&xW?9oOe79l! zIxz%q{CNo1QO9~`XY0EDTfN+0I|>>1@s8;))anh(_`#ywuCn$ zHYsGF*Jq+{&^yc%OQl3mozzh|cqxAXD82YOs($i1W01(e@oe-bi|?H)NPVoZ+>Ik? zFXYvlFr3iKmlo+j9T7T${B!ATd2Ow|@p&Yh;l9K@Hbp%v*+`@N+(inkP8PEX8$!G$5|Xmxoun-?}DlP}0kZlw607i~9H4j4j(ayF5dk!rc z)3On}S~2q1gIFPgMr>3IEjxaqH(p{Wp%b9V1B^Ip3z~2>I0Wv?K9l`|PMF@={hBxv ze}S0JRQ9ouB>cP!b@Qg7odJH!K?k0g5bTFIRQv?G- zw?J&)D$dgqV@eUU7!KAs!q>xO^S|8WuzKZ|F9Wv)pB(&ow-VVUZ2DXAbAwf?~-~=PJRTFXgQLvW1R`cn!$faVm`+V z!Szzy0CmdQbp0+)oP_&>g@$Uz;t-6Zn}~`WsqnSIy99Yr8@ih;CXHvGW*RTP}_#0lUw?miS2g7tkt-V{o?_-!;I&jlxA z!5_wsj2i~<5Lu4ZFWom@z*(bQRO5vXHt@^o&S?}30PZd;tTYX<&wqaYE86!zVvzqU zPN%0=-7-4FTSp21x5(!}zu>gl*OiZ!R4vpBFIUE?bc~IS*KIS6@e%))wgjfa5C2j3 z{NnLbg{>K&ERUCLn(io^7ykhOjc2XnxdC8Iv*mPY>MxW2Um(fB9FdgGw1GR;6#;bC z{{!~BxtQ+!0{-?!R;ZBuzoDMMlcew;QPTgBJN$nKQvNr36QJNY|BHUB!5!~*vG;87 zzc>GmLiO6YRr|}q{g>|GbDZJ=pqP~6qtL&BQ~$v*xi|}zl6(Nr@Z;Gr)?f7PKk(vz z>(l@BC;Pv_F8`<72W;j4yPc$SyWIh$e^vbc8r?srR7 zOh08-GdjeM_jk4VU%1)VfGQ7cceMV0I`@A|JpTV^3U$`?4EsU|T&rnpvuPqfGT|cJ zxqsrwQ$@+3Zn8I{;}!jPu0t0dYf&9vU}uHY;BQmBtu5Fq+sx$%RSJ z@ZF?AHS}0?DO=daM|a%fcqpn4h&medczpjJBcL}Xj6PEvjuIvnmWXx+qL~~WcEY*C zl)_WO8u91v#7u4N$oC((J^ZW>RKs9qrvSg>C$|DR{~B2AzR-`nE~F)f6jj+>(ui{{ z>`zGsScZiYB%a|>U8s3cdoSsjQ!AVHey515LH~%Gb;rsJ$5fWHV<1XBE-%>YY%rSxtfv&ZMAsG zoIhya1D2SF%b199#7HTIZun|sO%i$trXfb0f|!CS@Uo4t^M8SRvm+9TmrD-F>Xg3~1MJ$cLi_bV;=S zvB4w2byHwx!|)wgdPH^>Qgov=7No&_AwPcLgx_NIiDG0!amS*!nwEUv>j;aT@aOP{ z1t7Q3pZ<*nVMn-NL3br`Wd_1`PTO*Tb+3JYD8RFD?@WIm85p@&70;@k0l}S66$qir zSw^4pal7VCCN+Pl+4db_a;dXltUV&+xCIOyETWuCF=cp+>4lx3(5VEyubEVL( z$2Q9jz*=qI^r$w*8EWDCGidFxneXCIZ#auD3WE}IBRr?E6S3c-JzY)%ls~7u(hGkm zkHWoV+&!gk#|JYNpkwlp#*gigkN1-nQ?5~rf7`%x^1vlHHDaFz(T%$2ubP}FAQ z(uH5>hjl{QF4;h#isk8_K2i&SiK~{btN%S3=}fyOJ4TMYBwTI)<8y-*Tt&&kB1b7_ zO0{3+_QF9b$n7|ct|j?uf+gwgznFQtWz`r@2Gbbx1`(LWy$0}#OOt)fC|ne5EHLZ7 zMRQTCO!_+6YnW{Gnqo2qSg+)ki^$-^jqP$LTSk1MdqV<`8c&`COh4|iu1)q6w=iG# z`5g~LOL3MU&6_>+KY3Rs0^tjSFIZH)F*o@Gaq`75`vOXvU9dMbZ_x&^Em%H0=Y99s zM;2?Ck%{C!VLNtC;!hp%`I+d?3!eXqDoAU==r)Ds#Iz>QeACrV3S@W_(J53AeozYD z8d)rh69c;~<{nQvjJJQhCvpE1nZ((~%+tBy&`vr1Qg^A}CkZF0BZG8?HjUYCfN$i> zufg|9>{}hc+i$@lN$P6_8m;Z^~ z5A^r@aC(^@zTEg(+-~^E=s?TZc$VRAfocY%IqVFmvmTEBI0CcXB}VXBp{X7j5^&*m zP^oziJx+bR!XRMWg6Bu&hnGN`Q8=N>QpPCBIuyJK5Sz@ka`kWhkN%(!CiGfwe9Pn3 z5F#zFIa~p_CN<>Y^H!M1avq_7egV&u*!qgkEOS;98IoR~VwL5#=MsEBtHZLK*+;iqckgFEtzAcN88`R!Wp zQ|VNT6+Wv6b9|RfpGnW~)^ycb#zW6Mb?UFFwyLj}s#GO|9a3a2J5yJ(SnFRPe;xuo zvsTXpq*R_v1L9wj`c@B~9-X&D>FDV2wNzAWK7!HI^m1}@w*!8NC0%`e!SYe(AJIUl z-izxtAvZ&OZ=7}1{?++WrK+kbu-F4Ks8p~+JC^_~l4A0R$M{Q8S)T9N{<1I+su&Yc$$2ZM72ebm6o)t99PusY5}Nz8Q?6C+E1-P`*4E*WnsmQa)k`T!e~~L1 zECl4j4hFKFn}38PaLd};ZyW*lhJ*A(b(y-hdvByinkI=@jqa`gJ)S_8rFyOhk z1fu7P@$Uh_h^%>_wiK_R>xt4*0eXT8SGoB>K%gX_N5M4m0xI4!JLoi|;r$r~d*#2D zqmrUIS9jZLyx@5k+N^D1VshaOyh8sH`z34i*-AzMXzxU|c`Fd+nVykhh^8BOysphP z()zim=#?sJcQJm&ABTvc&13eAj?fwQN3v<@(6;Fx*8i$8JaK$Y14Usm(kG!zEZT84V#36^#X0 z$~6U&FnYnQxe3D@f%7PvTBECt()^o%i8Af@x~4scQYh5gztLs!Tc34p(2MSOAv?1; zCGDr%peKDB8s$I?g{#>}v0x4y1NIpMC1_tD)>7;8vYL2nemK?HeQfXsDeP z6N=Ud6(A~5Mat=#p)h#w0RjVimU!ZL?=W3(D4`ukuk^I9bzuQ#9taz&P`#qNxDXNi z@q4T_4twg>viyq=+!WCQ4Z1%q+oYnJ)T52ABf>Z0jR5*{Sx;+4uG~%3KEN z%a$(b5?E3+utVtSI;l=RY+=}8=&Echx1%NS0|aB~_*ewwCHrj%Y$ivLvHd)BXEF4> z`Rm}m1K$v*?>w1K4`ZK6y@?sCpm&dX)t{LjV}m;*D{VudYpSQC`1+e_QEI{yWp`p) zjb}06Y6VR~)V0Y$Cqk4_l*L+31DcOWNr_dw9=+#!v&ekC8rV2%=5l{g0_E>9?B8j- zyU;xHqZ>K=(Q_|2??`+^s3H4PFOZL|%CfT~@QB znbi{$>-^HzFwfW*hmA3<;YmU_E;t7)Av_0>R(uD&ZdA1}@IKEzKRgJky7L%H*4})u zWU0b6pT=Bn-T<j*4L)*>nEqOD^Zq&7Q`C`-bi)f3+;7Am0{0sUwpF}wG^ZejWA+u zm1+kP^!h(tSyD}AR!RQpZyDdfNtS9!efFu(pUwl-t|ScSludsx#2d zo8>0D-a|c-1s;dISH3GJI-~jEMAa69vo|LBBGAs*Uts=xEasr~jkoqAWM*e>9XJ zLt%|{V`HPXET>2oDD=1TzXwGQddRpr*vg5A|9REd*V@hUT)+|bf4BQfnb~8?v=lw^ z#&_?T%X@rw<^=JC1$-090|EkAxl9|JxCH$>sVsvIii*`Trv6-4TePOE#6z-H1ovI!xu!D>wBrf zlsux#BJ=X{xYg3R?(UX^Hcd?WLy2a72=dQRb}7OA`%Xi-EK$S5!{s0lNE3xZNo9zs z;nCC6^N0Vsxw+|BFxFY$+zhY}4ZYR9zP=W_Yt}-Od!5hj!g+SCnD5lem5;A4;}@&0 z2w$_%>yt+0FjOZS?+Qbh+4sFXE5;If;t)Oa2d3~_=3l<_>R8oSl&^+A^wWkh>ZDM2 z!?_UgaNOp|G7BIarO6*qW$ql#WlF2AuBHwS4o+Gd{-CO))VB>ZB-#_H+6}^pDM+%CC>nJ`4E9yqUr{@`zSme~CC=ctqNQEzAKNdyXD|cWev3_nQ#%GaJuo zfc`Ng7Vg|E$Lz(d6`#F8pc|g;36ub~?{|rDhcG&_#ojoSCtWNEV>M+T*GG6zrd9U- zE_=jKWKmzR=@YUyL@#}!UHVTG)8mToFShw><^Qs&>4c_eHx5no`WYQ9oj~J%S=BT_ zGic(wF8rujPMJf>?w;CTV^h)55Pry|qT}z3vpWK`tO|Ywv^^l1oluV|JG}8X;fGN& z_y}+ZU@|xBU1H#xiaf_KAtZ2I{ZQX?Xc@S%HQ)~}t018Di}&bq#pGq5;t=-J%NG0c z?lU&al{ph)xeU?EIv?>NN){d!(KICmT>r^R5tFtiS|fa)iENw$?kY`t@|1WNly}!V zN}f2%pOON0GGI@9!+L;|LVpM!swC@y#KIPVZacQxMT?y*zeUSis;Hbl*H?6*zBAmr ze}aJjhgoHX>srl#Q|IaG_QStxwzo=UqrZC-ue6g6K+r}4G*u0{?#Q(UEe&!FF z5V~0SBB0ShQ^0A*Uf=77AS}puaAkO&i?*O(*4i3Q4>t_k5RtpP;Pnv?!pDmCGj$WT z@MF7&^+V@{d;7Vb)7!4RnXw&FQYxh~`5rpW^iKhp|!kXdH;mEMc!(N^2 zPnbR=py)b&yRq*>OxR(rm=;9ppcm*Npap_=LsS|SskLx__%+ zNh6IIu_%cnO?`>$=#zd>sfiX`vmA&t6_j7E_Q01Nb#Qd%2XU~&D&3`Y2+zalyJuA3jnbNF^*2O`!)+D#SV!q9h|;otLPk!FRUqsYQpNmR%4#!Yrt)K ztZJFviJvi@DZ$Gg?bI-d_GbLPSKM%py}u{TNO;e%>;6jg{A-P!I+`6z)jVa6=shy2 zwm`BqYmY*yBK~MX2r`gzCNj zLUgaQ>sym9K8ic3RoR|)DEc|>`)}G;= zJ>KViW~w?_OCSt7W3&D?krXS|v4`G)8}!_iZv!qEceWei!`OEjcCfKhM!-rM`6eHy zBSj=WPADt$(G{0_)r*HN5vR)?F*@2MBtqjRRUF$`iR!dU&ThP))7RNTXt&t(euRP~ z;7e#V4sDX8XS#?Kc;}yZR(-WuoHsaP?eivdfh7kEY3%WHt6T^_E1qYU8j~JE`w|Fe zxH>}1TCoom!xEf)+K~M~dGlA_flAMP_Oxk^mCN0>1(^v-Dl{aB4NXXJP7zcYYl5pp zmTRffn9f1MBne)>Z}$UNq(7u`Iz7@bpJJ(-=al1<|mljbu{kYy$O+OMW*hbHW^2RN8t@ zgn^-Z?X~V#%!s5Td0iRSv4Gxj`1{pl#XlK68b1w!7k|hv$*xVP+$aB~sLoD(l_w5y z53*RT_kPpA6)7KjE4OX@OjO$GQ7y%pbctCqA#bSk09Syy;TQq&5$*jr!%T+xm2g{F~ZDNcyJFzX2nNsIA)mL&xhUw** zPMKD0QO6~xL_jx5{2)`A^dxkb7;<#jV{KqH%@%!+$Dc5D{k5t`WNFGTSiU5Prg@JP z>8=-VL;LxAThZHEcwx`aS%_~KlEm^J;}D6eGcuiIav#~_eQ{HA>JB*fE`G-r9X4ed z@%U5Jw)ZRbvxG^6h$?X-E0!5Om$=Zv9UltL%$2gcNQOfetNGKA`he)$<^ zioTy4=4Ps}5p?HCvUiZm$$WA(0<=-o>KgZ%&9P-ne+m*!6OCxUdkt0ryb4!BQZj$s z3e+n7afd&VFSZIDRq0%O0JXW4gRXxwoDF;`p+9iY<0GmISl^>RXrY>eo1H1_tiFVS zr>dy}9vP&;JtLsK#|9-5I1BIjQ|G>+FK_y>>@z=;Sy#8#KiiP+nzV~usZ2f&eF55i zDEY7f&5|`er7X(@D}9X+B1?yDrs%ZyQ)&DB6vRad%&kSsv>HxT$DUB>Nk!_Qz962P&7Z0#c#BV*`Zc#@qI3fd_^2qnkgt}tiugZw CU3IYl literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.svg new file mode 100644 index 0000000000..12c81e8c61 --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Latch.svg @@ -0,0 +1,2678 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + At same moments, latch input rises (falls), clear input rises (falls) + At same moments, latch input falls (rises), clear input rises (falls) + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + falCleTruIni.u + falCleTruIni.clr + falCleTruIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + falCleFalIni.u + falCleFalIni.clr + falCleFalIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + truCleTruIni.u + truCleTruIni.clr + truCleTruIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + truCleFalIni.u + truCleFalIni.clr + truCleFalIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + swiCleInp.u + swiCleInp.clr + swiCleInp.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + swiCleInp1.u + swiCleInp1.clr + swiCleInp1.y + clear input: false +initial latch input: true + clear input: false +initial latch input: false + clear input: true +initial latch input: true + clear input: true +initial latch input: false + + + + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.png new file mode 100644 index 0000000000000000000000000000000000000000..2530f61c4b6d0f8f8951745ff946a4d6dca7321a GIT binary patch literal 10769 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%0AA$=W+0Jvrv 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 literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.svg new file mode 100644 index 0000000000..8d115bbbd9 --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/Pulse.svg @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + 0 + time + width + period + y + true + + + + shift + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.png new file mode 100644 index 0000000000000000000000000000000000000000..339a13706d72bdf0c526a8074af1139d84348cce GIT binary patch literal 10145 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 YoE5!3i`qnxw$}mBdAoC!zj`J8A9ZzEng9R* literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.svg new file mode 100644 index 0000000000..306f78695d --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Sources/SampleTrigger.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + true + false + 0 + time + period + y + + shift + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.png new file mode 100644 index 0000000000000000000000000000000000000000..4393734965cbdd9bbe4bf7aed668f94c71c308a8 GIT binary patch literal 100429 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 QE+pVbOHB`6q-r1bUl?agHUIzs literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.svg new file mode 100644 index 0000000000..a06875da33 --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/Toggle.svg @@ -0,0 +1,2840 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + At same moments, latch input rises (falls), clear input rises (falls) + At same moments, latch input falls (rises), clear input rises (falls) + clear input: false +initial latch input: true + clear input: false +initial latch input: false + clear input: true +initial latch input: true + clear input: true +initial latch input: false + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + falCleTruIni.u + falCleTruIni.clr + falCleTruIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + falCleFalIni.u + falCleFalIni.clr + falCleFalIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + truCleTruIni.u + truCleTruIni.clr + truCleTruIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + truCleFalIni.u + truCleFalIni.clr + truCleFalIni.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + swiCleInp.u + swiCleInp.clr + swiCleInp.y + + + + + + + + + + + + + + + + + + + + + 0 + + 4 + + 8 + + false + + true + + false + + true + + false + + true + + + + swiCleInp1.u + swiCleInp1.clr + swiCleInp1.y + + + + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueDelay1.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueDelay1.png new file mode 100644 index 0000000000000000000000000000000000000000..217bfedf46cc0551d9fa9d2415aa239a1fad6630 GIT binary patch literal 500 zcmVSaXM<-kn*ad<1PBl*o-mt9fGE#1&I)$#9})Z< z27j>7=j}*@pMk^^ly2c{5CjMiAV7fl%>N!N8F%xxTS8Yp^n%! zX|mB{Bf_JP`-Yh+*O*N-)RNgLf;_SE#3ZWc62&!cqdp?U5zVrVnkLi{#V$;kBlwI} zaI5a6U6t_*DeRgw+33(92!f~)5gWCE#PLKxyFuCiA+oy qN`!Azowad~J0MIHO`QJfA;@2w@>FyJ1p=5Qfnin1vK6Mqu?hLT-=|IK2eBO)itm zxN?#7X>zGlF02GBW6)x+6nlbk{;wJa!b58X%wlp5p+uz4gqbfmSPoG ze0k!j-?bx>CNVM3r=W_RiH57d#N<>hk|=7&%;X%CJ0T=f0E7^#lUtF7l!hKA40m$| zxfKEg2oNAZs6WxV6RbCJP|E3LeYDShXtOT&-Vbf}o7IG;csvZ{r?}4sxgmnCg#ZBp z1PBly>JwiNJ`O{narioqn9A3@EcQ598BLYumkK)!^Mkhv1>2i0lg{c)4~ gOH1VVuje272B!FY49P^f0000007*qoM6N<$f|vf%b^rhX literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueFalseHold.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/TrueFalseHold.png new file mode 100644 index 0000000000000000000000000000000000000000..10084130c622c507534bb8acc80e043304b2dc40 GIT binary patch literal 11138 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 XyIQBbyFOw%_{N#TC@V?BR literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/VariablePulse.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Logical/VariablePulse.png new file mode 100644 index 0000000000000000000000000000000000000000..905efe7235967444f9a3b786f8669fc43f2329e2 GIT binary patch literal 16752 zcmeIac{r5&|37})N()-vB}<$#Op+x+)~S@-*@{z^Y-QhzEMprjQYWSE8OA<2Sz3h1 zGRP>EMg|eGi?Ng#W^7}&-#w~xKJU-#zkZIs>! z0Du^1cH9O41n1zN=c4Q2PmWeP+QPqtLyv)fio*Y5L_Kc7&l@h8IfMeh)_43Lf!FcW z6!=4_D<|x)*amxDiMSBr2}DFhsQCu@hq_<57J8Dv?_`@(`3EJU^Tn2A2T2pm0n;`BNJ%>I$c@hIlkci&u&oH%n_Sm5Z^ zqsP4jq&#tGIU&U6^vQ1s@5ijBz7sv)7EU`mJ4crkw@sp#I-?_I`WBZ!D?;$|sGdIZ z4`MKMH&9Xl0LH$whYP5#^dcexYDEEHS5uM5%5`jjHGO-aq#*otS_Oa!hd9`*ErEvs z;7^}!K{m%GZsPi*yX%1XjTD=B)M4^b3b)edkpS@USowcO zd3(_ab~0iB(3PG7pazV!9`a{?Z#flD7&g}WHSmGMhB-#R_qw%NDGs7@n=0BiuPwR1 ze9MTWKSAp7o<1J{c>MN&@XEWsUjy&nUcV9-Vv1sVlyhc9CwYDCOo@z3di~{*td@8k zn6pn`_=**yPeZjjEP0u)Z1aG zqV@~Z+6^TyW4(^>Nzbm76Jj6!J@RFR=p1K<3x=?P#I1%uL>}jl*i!Nc+5GwM>UEOIKY!ASX;FF~r^R0ufY{rp5c&k@>9;X1FHC%-{ylOJr4 zndw?PE?-(#+TRMrsQ0E*Q5lV@pv!01KQ=F8Pb#8^Zn(x({60;drT>+|Nkz1Mv&;>G z6+JzUt`4e!A@-2Gb;vL-JX05mUJ!N(-3E`pu9MMbITZx}8e9FhjYN}AvdCImx^LnN zy=1~KLnjgFsT(fgHhhZmVnRxzuk{E6@n;>%!{DI|tl?pDv`wGiI<-^uH;9ODit->m z0Z|fMNh=;zM0WjVX}ZUV^Pi~RtPcH9OLbznn9IdzND`rUua)NB3avlEZ-dbkE ze7&`}WrUVlk)8C6uaK>ejT%Zkf9Z|B`~GL`MY#s~MOzrJwzduDPzw+}&*#GKSxJr4 zO6Jf2(6B!%mAX=S2LR$PcMTmA0syTO@vt)eB?{Y#(_01P0AT;#23STXgd<_Ky#+`B zz>cjW@EzGJXb9h<Z{!qXioP<10B}2s+C0ah<{>Z-s7;CW zJWd?F5Ok^T_+!|5D2>{xkQEiCPW)Im$#sATP7~tb7D;fZCY(HYXfoU4~0Z;481Omxw0ol?+&sjV#S*%UBr}S#@V5n@Jgy z&l>SJE+9^5bExqma+0vX+yrDG!@6Exn+yHANGtj*V=*Z%@@nik=M_P66a-esNY~`(a@r=D`=<{V8XXJN6oWzBY&)(tsioufA5bXC)~;YY;LT9 zs?#0D_(QG%;_{!>AJHEjHdI_emFo?4$daBq>40=-BCcE zCQpycoLIR)nYTXFly<@4(UYs2XFi!&`9zr)${a)LHbn&A!yv&pBXq-a>@wSjJ_%pG z9k1eumpc!FFr(R&W5`8paG`K-;UYwmn@m_G=PIkJpT`>3;p@;X(+iLjZdpm6T(`qnTgKlD=0;?|!&EKWy zXo$WRGRO>c>#6G*Frr1a)s4lSa~->fZc=%UE|Jz%W0# zpF$DqiQUt7bS)h#b2PGT*D9HI2(#4Kf9<&)ps|5NT@m5Vyx1nK71(aO^cEp+8R7-e z7CwGhdXQdgKFx?CM>nCb#--C%LMdO%B3vv(%$lXgNd4+YL&Lt`4G(%ko>0twvhDjP z@P+iN+yh2=o=vSSD4HtM^W5;ZR*`uTa{Zwi*O?=qcjKG7+Pw6#6>(2z6I2&;Bf~h8 z>Iv3olpSlHu{9lwR*vw9je=MUkcw&bPS|_}bIM*)&u}y^SA=n>rEwu1q$0O+M@OG? zM>mN9odpT&f@ZxwYA!ZY+fM|S9SVF!?WpvJy-zVeeuMqd)c+lR=Kpv{`u`L7e^uP{ z|1IvaCo^y!_Ru|tKxHF>&FRlm{fSci_;RT-7+Q}cMnKQ7F$U!GP>do-dRGJS1JKem zp^TX{L}7u#1s8sxIUc6evWfq>=JT6q{@nMviyG>1c-r7$p}6*q2HJn;ga{m}+MnMp z#^8sj7Hv-(>-b^o%r2Fd<$|-$k^@G>wkGWIlK!Rj&rbz5Q-&9IcbTjCJ=z6ylj1^R zAjU*&v^O-UiZj{mGGrbXmeLb>rkNKVNK`Vv!7NT{Sk_F?-7W)(z4DlLB()wO9_qbc zCeZNKIX&R;%Ea){K)@xf=u_R#j4}`CX%43V7*nXWWbsZ6Qt$F}SNEMx8BUCARMqp) zZgn%cOb@$$ZGlqbLH%C#OX@gC&m>##zAyVZ-11641{q;SPde)|aSQycx#zkD<`RU( z)`b)}`pl+e&3~er1opfTkEypC5)*9rynroHA_n${wWHOi6|G&ywfll{rKvEai6ib6Y@s^RxPF>gr`%OnotF}sPqs!XO|*i>c-W3_ z5&#~5{_7Y^0~XEW*Ii(JZ}`^IQ|^gN7X%H*RvcRt0JoarV4cU5kSL%zdgmxMb}x#_+}tsFVF!WRob9 zs&r4vfPts#kjff8FZ9NT8UCFVfxUd1|^S;#qc=9_kR+6)qpKs!S6=JZ<# zo(^Z5cWXVUQ|T-WXn96JGW}|T9X3Al-QR#=>)8j?mWjC&j5n+Xo(262q94ol5?=BB z^1#Eo{{*06tLCfYV=@g>Qz#SzB}&Zj8jm3tpy^dIso-VjKrKNQR==!MVdc-346+1( z1D@um+(??9L+=bAr*^*+6;t?~>2WAx9qFyJJB#d|$ynu3k@#w=Z~Clr1rSgEl1lwh zdB@F*Z4W)_SG#ynrccdHsw%iXhtxv-Tp}?;D7(3MdSEZvm>>IE=A-pO^nO zcPrXkD2DVo{CH^ffFH7P8j>&9*>R8>{$d*d98uAi8NvR*6D!lr@p{WO=r$ps8~+T7 z$%mu1O*MwM!=~H0AyroOzCN!0O?|A3&2Pnlv{ac4F)tUq5c`r33eEtk#AaNprW`Dq zPr!i}pz*9`;8>_hv!x6a!lLHO9(oz<0be>oBX*#WzbL$6=2`FhL0P%7mTygBGnnX4 z3_izoaHZ9In+jqdo7Ec-S>1mU~kLvr0E40$&U%ISb{Dc0qRbV zYIfP7^oj^Ek2ZXZUM0gL;nYoX0ZS80V0l+LPjA-SPCIN}JwAp+S#{gpi=&>QaCZdmEK92OC~oBily7nK zD>kDuVTJm;Qc+JoT4H06MM%fqNeq&l<3++#-+E!J8DEYC^*U*Rtse)BZU&`j{(-iD zc7ydf)IbXN*ladExb2{_t_+8UpqZEXKVV39n#1=pT1jv3`0$`PHs$~sdGq`A+xTb!HSFCgdD_CPs8(3^8u zW8CVgMDqX~S8GNjb}{?k=T6?+K7tyIiH(NV7qU@dkx(cU<2zLsip|QRKE)m3;lbGl zn%6KE%_IZ7L^iL@ye>|ioH^08nh4IObx=z8kd?t4d`NlOYqYiVXokj4ti5k0AW`0g z=w9?!?YSy1KF2{|YCfP7+YFXRaonZQoqD_X+&2d^(y$v(z$Vt&^q*Jg<+%{oyZ~C7u@8@=`VlXWLU49UlMz%)nw;k z?|Qs=HZSu|_R9-5HocC)=hyXTosDQ2peW>Y#{`EqQ*jb`b&Ya$(U|CobLI}WJF#_t zkSA@7-%KNkn&c*|A<}bOYY4aJbas>Ouz@m}2c}1ARnJD>%qb6>(o^5{qPrYhXGpHH z@tUAnF|}6O5Z2a2X7ee-ePkKP>Aog;stiY9Nx3_1vPTu0F|$R-qQF#_@o_E2J)T$k zv={+XDE?PSfQkZ4P8a_jPPtSh_w-xqP+FWx^4ZdJ_3g zvu8ErRLR4wk@1V}jtX-TE)yBcGWyFMTm2%J+L^qFt4%z&srhkJ#`;PRH6f>$U%<0P zLK3?x^~lq<-HET%6x-tz6-5atn%|U^&h^vQda zu|YxUn%j9@lxb4P4So4EO?v$v&;LxjD_`JF;dH-Gjr*<74E0MYOpsO5^;JHFIJ9e4ym93N@FB`L8U3 zljfVnn{BRB;){iwX9y`FjMry=Sdpg^3oNe9B(E6ScaYO(&fWaFb;X&|lZ@00zZxo! z?+7|{m{*lrJv*J)YM@J&+LTqUoUiRQH_NU;RJl;28WrYrwJW&cLG?Fzb7fAC?ltf@ z?Py((uVMbyS$2(z%Gmau^r>9N5`uYmAg1Dx3ARolnnx_@*}Br%rv~VM;A=L_-9)ue zih)?RL9=CJj?NXXtJ>U3ZK9lf#CeTisjJ?yO@(#Sb;UEs^xfQ>PdcFpNslF3F+T(+>)fa2U3cf+ zysp{P7H7FLPRrPEm6MQE8OPhFFxMudKlw<(iSfi_(zWu)^G2gYI}fIHgxrHyJa*5R zC|jW)=88|~68G)>MfX=QJEz;n+ID@7QYhajHntMk{MSAl3AgF4u|$71)%E5*jK|Oz zD{tYwSgZ5*n_GnJ@-4C~PffWLkB^3>J4p<35|>=H-!OSu#ItwA$rR*PF;|+U0~ecJ zmCt531oWn-U@nRV>PPtS7C;yKcyHOB_b2s*COw(pLC`@Zd_;{QXJF)s*rRNYl*=O4 z=BibQCEq8MwoF?;-Tesv3R!$lQxFr@T$Uolz}yxiF<0J-_S7o(nY--_ywyFt=ojhx zJwfSu_xD#OEYyPyt?~3jkE{IUVaT}G${2_UA;DPUdi5dvTQf0H?#;)C4Dt^A znEQaUref6Y3@jgq#UkkuqEJ(D-e+ccyfqUOdh6?$iS4=MZ%?1u#-YXgeD0Y$IC$w* z$@US3TeaA1m{Z9z^M-Dm>itTkCEji3^v5_om-7(2MR1aB`F+zIC>2K9@7a}+cfjd# z_h_NI^(I)iLW+bnE`7w+w~Pi{7A@Ntm+$V#VHob-|vtleU^QbtsJ4v>%u7(T;1R>qd$it zHR#dWI{eA^+#`3doWYk!d+uJD6whXS-CE4V~gP_s(UE5CnIBD)Gn4yH~-+%q~v?k`^^)WVyX#3$Yai%Rurpo89c z62jGz-i>etH@xxAUtoyU>5^R!Tz=k!)YBhVco_(C_mgRb3vXhP`RcRrh^nAs1A7z) zr8IxNs67}#Jl|}YU70`dZLu8Ws(4;w1VV;~JynPE>TaWBpgTK>L(?|KRxtsmF7X(+ zuE?Pjy6I>hLc-c1gpsKnoF-?`E5Bi?+T5n^2e7L#wPi_o3byxE`8Q^hy=ay9nEm}B zjKwy|GDXkyA{jh!$gMwxYAs3ZcD&bsRJ0&@-jF8Y=}#yjI*RCV*gyI;-*w_fO+}lI z2&5^Sj!2!nYkv57{wA9~hn)MG`(yfXwa;BL%HFi7*qElBylmS%wL~aPvL|G3vzM@B zvZ6ejeb{)YPJR6D>x4T_(<$K4;16{j`m6S7R8=qOLV9S4g_JhR!1Lm4a$a3}Z-%DL zQUWfXSC$lhy}(%+#qfvNAGFYfuUBT%JB$T@2Hb`@;D}hUwL|Joub~4~M>Xmh zD zhI_}udm1|AvOBtU%}I$Dw8g;?eC3^ZwY2=58KKY*-77_Ry<#FjIuU{Ar^zm$mBofR zJ4IsktB!}#x_Nb9U%5h?pcunh%?%BrUWyG8a2IlOpHGo#dB`gS5~*k4`7$;#kW-@6 z+i7~{bh>qZjAmqHc{W6a5Gb=U%$=~Kj)FV({l)^=IcHK0*636bh^vnEa%(qLXeen} zLcsUpHO+BkehfBQf2v&5542z!9V%5MAEbnbKzcR$f~<;-DVRC-Fp%G+_v5#vwQ`~n z%qU0&>x88`QX0`8Ez+-B-OA6V}`st%{%-A@w=@YFWVo*Mc9Vpw{fXbpz+c=1%hp_;$+Q(-s(zkfbh zshywDN$P5;tJpZl!O1)@BSAr*a9>mAU7!Db^9;Q4y1+w9<@Y8&;CKbP zaM=XVa*uANzoP{c#eD`HE8FXQe0aB&X<2wiX!<6aycPZ3**b1^VsV9R;31XJCfu1V z08kL1D#V_IV(NNP2gr>lBU`a>1X9-AgF=!kcVwaXScjU)?>NPz3lq;55#5p!GbqpW zP+Ar>hr)&Lf9YR6&LB)0px5fr{oEAY7x+ut@wEC(TB7DC@PX&mOm zOHsz0X{vyh(ggw!Jz^b&cEhR!Xx!=6Zx~Lao~6L46?Ugy@Oh|d^KMc=N=a?U+Q@e2 z#42Z?{b{4-GHBHD(zi&6H`+3�DKAHK*sOUA$BD{IhjKKVb}}p{9@tzZ??k)h_}( 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + time + period + y + true + + + + + + + + + y + + + + + + + + + + + 0 + 0.75 + + u + 0 + time + + + + u + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Psychrometrics/Media/Water/plotCp.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Psychrometrics/Media/Water/plotCp.png new file mode 100644 index 0000000000000000000000000000000000000000..da4b6983959fa482ae912891fc5cfba83bfd44ec GIT binary patch literal 14760 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%0ALr?VodJp4O+CEiVEl6@nA{% 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 MUHx3vIVCg!0O|fAwg3PC literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Asin.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Asin.png new file mode 100644 index 0000000000000000000000000000000000000000..a10340dfa560ad86dcfbcb311d073f12ce5b89f1 GIT binary patch literal 1135 zcmeAS@N?(olHy`uVBq!ia0vp^-+=fJ2Q!c?4qrJ3NCgJ?gt-3y|35xHo`K>2f&~js zoH+6D;luv^{%_yDtzWeZ{ypFe-|=FRr)+xPDM|M21e+qZ9j{P=P0+O@vE|CcZS zf8oOa0|ySAKYxDKtp7DN|1&cFA3y$IbbaMQ1_tJvo-U3d6>)FxoXq=dA;9qP-M4AA zKetET`|nua-|VSqFzIy9ji#>B1rGP^E@U`~A3cz^Irv>g&Muy=iW9p#ES}suYWKw1 z<p3=PSbb#miz9|@qPBs=DPG+pMUFo{NB@dVGEA!UHYnaZSmSSv)TT*<|QpY z);p_+`AyfV?ukba?3?kL+bruA!|&YI-l)TRb*fFfeal+A|9-XEEqPbMZ1%Ow>lRLy z`Fic}1=UK$LvN@TT&tHz()4G0ftw-gNpDAB0r3?s-$R zF>v;c6;t0BY&w0^EjMX#*rvlL^u(pNcJ|&n;-;H2y$3|EO=<7!jXI$x2^9ybGus%b zeKRp>vDhZ>V<3G%{_7j9w+_0kO>QpRKpI;dmxu9hBD)7zm zSLx0F?%$Ycv#xu2R{CPOV|Bl-ony1@`5RGhwmFbL<@)y*sm*dH>$<|sUTu7nk=iV_ zF;M@oo$HaiuWl?5PkdigA0}_V;dPL@^jD`hxBo2vyX(e+=}E^w>-GPBH_^v9UU4D1zIkqxut3|zcEl*qB`1?Yw?ETiO2j97G-=JJ| zRrXC?3A^>Kt7>K$g1|uJjXL6X_vky*>^NV|A$q zMW@-}v`LHaS{y^w-jz*s{UqjbD3IoXWHhQZ_HJ*MS0@fI$D4w2!p4q KpUXO@geCwjm0TeJ literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Atan.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Atan.png new file mode 100644 index 0000000000000000000000000000000000000000..61fbea59bb519672ef5c7378c5a80c53d9f74c63 GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^H-Y#$2Q!ddBEUQoNSOurgt-3y|DS>3e|&uWf&~lC zpFjWb;ls6S*IvDPwZFgr+qZAepFclv;K26n+uyu-^YP=y_3PK)zJ2?|i4%MU=c*YP zm>zh#IEGZjy}fn1>#hS2+r#}OdBy&p{^?5}D!6bc^68OzFP&JAz2@J#)nIOYp4P@S z)$4-yhp%6CY426}?Y7n-xdj0F_xxJg_yjp3;vSIC;plN4!+*K?sJEiy3q9^*+*1W)zQq{dd-$L>u z)$HUGxL`i5CpV@8|ETS?tyJ$}6=hW}BmBiiwv>_H^HCIuqB#nn}JDI(cj9 zWYg2i+0z5q1ZJ*@b&_=G*;KYOg~9L?gVI!0FUcdC%@L^+Pi;7*;3s)Rt2?AElx^cF zrKyQi9oKB~NUeZKg+(qg+5_ayNS&6Id*g(_=|@u(r=_lSYl{$D&a+V`+tldDrZrcA z;z}Nh(vnG$*RoPNQX^MSRGj8I!O09L`R4WsHxSJcbONNwQCT=;+Q#*3UU8@1-27{D zc-Ye^wSs-kDaRix{61~9eof)l@__c`b8i|h{CiG;{glvBozB2%iyuow_VH(xM+!CO zdwbV%7$_A`aSMI(E<`!&6VJPJmU zyGx81I(*%B`)o>EnQ}JhLpmpE7MTI$b-Vx2GbdJnXQ}CWrhQhW?z(C&V&RUYi(2D}Ofk b-Os2#PvDAV@{e|4Zej3r^>bP0l+XkKKFgd< literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Atan2.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Atan2.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f8f29e0e9a8481fc33a3c8b12fb57247b74a7d GIT binary patch literal 1054 zcmV+(1mXLMP)+uP~g zh3EhP1EWbqK~#8N?cLi>D@hPU(TKFUUuNe2e|CXukj~{p(T+co~ z`2h%j@QaObkLS&ANch?Q58)oqo8OV}JD)^^KRo&s!up>7%KmZ5GL zaMpP6ihIZ`b~1~d%wi|A*vSAk0$v0ATX4N@+@{0Pe;Stx$FLmIh zs*5)8mC=EhR0Dj;-|r-UiYxBpYm?Hg@H)758+|*x7S?XR$Kzg8d;O|c{_>gE4{Ap^ zp@uh{R>No3@PF2?kJ~SRH@x8uZ+OFNyOrUUDDY8u{LCUJv&hK|^6l_}%z(!%4m@fU zyut>-qej7_2En5y!NaD(qsG9)#=$FY3_NTcJZua+Y!p0hARNJ#40X#;w+wa5P`3`o+(hT@~d(DA|?m1O?W|~%6`*bX}Y9d@y-LeF{>ZK`g)Lcl|u(^<^=U3Vp zu47a?!*wXPELtTPymwNdaP0v1@$P%=0UvxhDqeXf#X2BdKL-y?-ULsC7Y!cwH27pU z5?=G+p2IFpgim$vC&*H|t#}n+TC&1@82A&$;a9Rzg)o^AFzrBWcUDtL0 Y1BsU?VQ5#;o&W#<07*qoM6N<$f~z* z4<9aExR8;Nv3&XRS+i#C-MjbY%a;!yK0JQ>cu!ByrcImT#pBwR}! ze}0_j=HKay4U^4MZ{)@uUBfps`}L%)a*EZBW#=NIlkHyZopE)>=WUriYMU+FbN}X> zOx)`hZDgyL{r=dS8C$bFm>VK_ook;2^v+m2^ZMNkrRqkr)SN!G%~mSOTa(KC^uBW3 zoSl)pEbC}aR=?V2@4TyBH@CcT6TYdvWyx=c(>a;4=V!ik{?@+0F!>nI&HT<|J(8R3 zS$ZXn(@yN;l`{U%n|jRW%nYC;CfPF+Bu;>oGzO_5M5ZNy)S!@F`*s6GfL2@c9=>Cg zTqd{a+W%j#XMbPbf)@42~aV(FO~Yd!OLja4O&Ke=O=T(m@OJ^X;A>62R~$-wXc37j_gdIlJ(%*OWvfL>4o+EN>e!;{qX_U`+u zWjC*Vb!^S~V{6`Hl4arEXLI(Q$=Nk;XMUAkF<-&GlxKU}zNg>2{7Y`Zd1H_}RXiuD zoV`8i%I!?g<390Aj{4kORrM!NGA}fH)3s}bCkxihKl)~x%I6t>n#;~!i`YHo&u+EH zA;*tfg`B;eCuMy7^NiY@-E-vHuKR?VK8-q`yv@8OWIiyIulC&hdh%-g$(NlsRS)lc zHRG?XgSXM28*7f`@Gh5au$#6#tu$uR;p-DU>zVUf3omV$R&pJfLl`_={an^LB{Ts5 D*6gi@ literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Cos.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Cos.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1fb26b956ba4e6dd0a434a84af8a16facf7dc0 GIT binary patch literal 1267 zcmV540000sP)t-s|Ns90 z0RLZKU!b6%$jHc#kB{Nu;r90S)z#JK=jXS#x9sfft*x!w+uQN+@xZ{qudlDq&(B=z zn0x>L1b9hAK~#8N?c2+0V@VJO;fR!c@5{{lzwFTT&~kHDwp=GGt1>rQ8b0DLj6i(o z`ud*Ya{Jimg7^0tFTi75cSd-OSKwzn?qv{vD_r6U9)hhAp5tGB#JAlH{#JO3hhGqT zBXEt!*Ld3;;Vr&JY-ezM8sq2o2#*opw=+0Cjqzi9gy*=hJHp#TyliO@@t)<%<_MR# zJnw1{!A@r*U?U(N40cnHMgZ_=@c-?J&CSZP*p!Whb0(P zz3)vZuW(n*af95}fM5XyRlWiNbyEX^@(L<^6$0v(1_ad=lrKd zP)(r`z*7+1Cj^3$DR>fs+k`++F$Eg|H!A3wi z7r{oDG6l~^aEA~Gilxv9UsmD3d}XfY}Hx9Rfj-6wF6(ldeG(KyHUa5YRb8 z5J2?6wI2cqCm=ZQlOTwIr~~GZnt~ri5HJNHKZKjcXapMpopcSdG{OfAPD5};1P^K> z5zqK>G@D`5bF z$!o}e6F?^pfrG&A2rv-Agf%4m$C#ahavuWhjsTp1V8R*_zE8+aVSw@wghm*wU-X|gA_E8yuA_z7DI(7|>Kp6xZ0Uf!9M&MqAC*WmogiBoE<>4Fz=UfBN z@$0T36QfneDX2xdq@SqGsJthxq* z{1i~OM{pek9Kcr(!AAIW3a*7<%@7E(Q*bo|(?iHdpb08rl2f}V6ibkkeGrCBUmg1g1i)58o^oy1ZfH~5kk@+TpqznArK^` z;06e$8{{LPbqokd7=*hZm~N1dfX-{+0pWCoe1kI)oYdgN5>RIxgPe(g>U0KhF2Yek zm7Nfd@vF*y2&kHyK|TWBE}1~}hCuwef0D022?^gku8lw=%y>tHMree-MredaXoN;+ dghuG=`wyb26%cxY?^*x=002ovPDHLkV1gSl6GZ?3 literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Exp.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Exp.png new file mode 100644 index 0000000000000000000000000000000000000000..c1123f4ffb5c91358fd05f2569f5c09f33531ec8 GIT binary patch literal 1065 zcmeAS@N?(olHy`uVBq!ia0vp^zZe)889A7NtTX|SL?9I#;1lBd|NnmmhX3*L@ijI7 zKYaM_>-#?=ZUIEGZj zy}fa>>$Zb{+r$6*mG{%)H|_hM+}7#Y6~V*BW1IK;%FY1sUB3l%JFm@Ly=~*4%?w+O~lz)D`RlVr`SLgoA>-zIVW9M1S-fgzab?NUXR`*_(&%d93(z^1M--q;* z#Ty(-}Gm#+Fi;XH1K=a-<8 zJHe9M7)tbjO7wT>GR*bHsl*1T#C)cn)ZQ0rms=MC%|xeM7mMFb*<}DU5=doySv1>6 zybb6EAk`aJGWq493*8`U5zqxju@WGM7{!`YUG!bn?WVu$WXVN@=@5e;CiKUZ1ioau z?7CFiM|^6YL2SsbgLnmW?ut#*)4H3mYeh-(%SD%XmvwuYPs`)>25JUMO##{&uuE6t zu0z$S%r8@tUp8IJb$rQoDcEoEav5*&DS6yp<`d=>N!dO%0V}xtLeu@y+#){Pryf;@ zEWb=38JsN!`|I=NI4dQ(!?(cAz2w+lLNShaA7OY+snKDqFSmx9--3`pK%Y zW^*qI-)q>{zdh{kMd5or>)xNfvF3{W-8_Z&|K;uO>QwED{8F;{h4S}a&MzhD_Ph&z z&v2S4S9`bQ|Jx^zx6S_jG3sTfU*e^wM<+*JQa+dE_hrUE71L$zC5>{Iug666XX4z>c|TsLSl=r7&gby_^&S7Yp6}ne zY}2g0RlEPgpR}@<+p?cO4BPC!AH?zezFXI3vdZs8FOxlY zE&sHqyh{1x+Xu1Rzbq5F{r%OndqJNJ_AL7gls)<7=7*dQ@3>whpEQXzK3{sV)*)&2 z^(fD0^E@v#i@(|$HmRE5_@!dGN4@D}o_}|Hcdeb9vVB9ldTf>E!SK+l`VN28ckg0f SbrYEP89ZJ6T-G@yGywon3p0QK literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Hysteresis.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Hysteresis.png new file mode 100644 index 0000000000000000000000000000000000000000..efc8cd7b28ce9b92957a7c80b4643b27402f7a04 GIT binary patch literal 5884 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 RzuZ& + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + uLow + uHigh + + true + false + u + y + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/HysteresisWithHold.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/HysteresisWithHold.svg new file mode 100644 index 0000000000..8d70b69e60 --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/HysteresisWithHold.svg @@ -0,0 +1,1290 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + 200 + + 400 + + 600 + + 800 + + 1000 + + 1200 + + 1400 + + 1600 + + 1800 + + + + + + + + + + + + -0.4 + + -0.2 + + 0.0 + + 0.2 + + 0.4 + + 0.6 + + 0.8 + + 1.0 + + 1.2 + + + offHold_300s.u + + offHold_300s.y + + offHold_300s.uLow + + offHold_300s.uHigh + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + 200 + + 400 + + 600 + + 800 + + 1000 + + 1200 + + 1400 + + 1600 + + 1800 + + + + + + + + + + + + -0.4 + + -0.2 + + 0.0 + + 0.2 + + 0.4 + + 0.6 + + 0.8 + + 1.0 + + 1.2 + + + onHold_150s.u + + onHold_150s.y + + onHold_150s.uLow + + onHold_150s.uHigh + + + + + + + + Instants when y should be true, but is kept false due to the offHold. + + + + + + + + + Instants when y should be false, but is kept true due to the onHold. + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Log.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Log.png new file mode 100644 index 0000000000000000000000000000000000000000..2595d274d58869dc8a40bd8fff3041ed8fe2d50b GIT binary patch literal 1153 zcmeAS@N?(olHy`uVBq!ia0y~yU}Ofee{z6Gk-`N=Kq?`?C&cyt|NjgO|KsE1eSQD$ z-TS|%=l_KZ{}(J+@bcyVO`HDL)cikj;>7ah|NHy(_t#_U+-r{}~zo zuU@_S{Q2|a$N%5F`G5QN?Qh<^xqbWgfddEDu3h`_?P3haFyEB=Hgog=YH>hdWfy3$#BZ`P2bvrzuy0_%bv^G_wnkbv!h-< z40dEZ|CQlEgmrRrvMuwENO$d~UmY7(Nk0fEFx#>I|A*amGX-m0cC0+Sx_K*OS!vBW z@%-lLze1n7U6|MP_43^Z5nm7YF0d7Sy?yt=+O-LJABtA6t242Bq_XEXhpv5hmP5ow z>1Cb+!xuA!6a^;M=}8Qm6a&c*o z)p6jO1JgP-r46RYQu)lB5@0EoZ6GOu#F{UW`iA%UEq$V z8(5|>U*9V|C+)@uL568E>by6mA2d1Kw7sIYTbS*|$%Lpxg?o=4Bwa9?P$ea?LSK4= zJ#%ZhWYBrDO;s;;sr|lH>9FYe{e#EfAA0+wyir!#A=iTGz=^X<7!y9kM(qFZzh|rA zk0<*Qk{VXZi8H@fd*A!!+=D-V58mN8rdzo^)0}CSd0GC3r_s?4(u|S}Y;4te*AHAi z@b`)vgBTn0eQ~9;ZV%pMJ#$yOnZu%Icz`Fm`1TzJJ<}WKeI9lBpUwT@)a-ulbizs7 ze{&g6hKCmAvHZWn@c6*$NXeWX`DRSwQXldtxbh}POiqKP z@0S}Y&~a7bfl5*LRUqtP1T(JF#wXVQ7CX@BbLdq$%M69t=(>KYipaCnYnilcXf5m&CTg_czk@E zrsky$8V1C&tC5pL%~@ugm-6Ft76WDoJPCI2s(DXo*gWduZ*VB zstFF|H66|ti;jC5yyk;eLZ3AbKSWC(h=!> zHXJFkg+Tz~38Jk0h3Q--dOa_}fFQKgzps8z}@?OU5T&s?7k zB(IyihOl?{^Tjl(g&?zvU0_#h9~0ii-eaYuUh4g5#Z-XMRh>OD)@T~Bng=BEP%C`` zEE8uSs@(^`3l6;W0N@77-ra&jOr2`sV(qILtK)dLw>i+K}$D@(-K;_@v= z^`I-zpaZSmAizl7$gv$>cT!(wC1Xv1APff9d_F z#;IXfBdv8Vj&%6rL3wp*2vy#b|GIi5f{3ylb2x8sBmL@!Av;6qKpYYXPYRg9up#xU zjDLs z{pPuN)=3$&$HfHB(3ZFvpkjBF0YryO063W)zhS!zZy=kTh+=ZG!f1A~OOs=1t9B9# zU~>{=HaY1NOiuPS8lBv67AKFB$;t94nViItO>X+*CXnv(!A+2w)Na`$INhjr%k0_dNblI|0Q10{n%iCJn&`9BO=?#bE~s7hIa<1? zb4~L6uN`|GmM*DW69j2p=;X4}6)a2Zawk_*uH8>iy41-=reC+>Jac?P}DvjEybBS2j4=*qEs5@)(WpHfE`osKuaS=?ufyIjR# z&7}=j_Z@Azn?zu8^|}{1T7+gYxSkB)z|v!2f`C>(hS5funT?mx~Iwdg~lJ^mIkxHg53;T=!k*=Sbt?ic1Q| z{T!=YY8@1gHr!x$5x{UeaNBQf`wsnFQMuB%ta723Bb|$lODe~`94lS>b*FOF%SD}Q zzm|2b{W^ELtaQcW+WnB$#U@{!<35hnE-f9Dj{3N$a&7QI>#%f1<=Q8++JzpD^e#5( z>KuDrf)wi=EgXCWOX5yZjbq)D_mhzll{olXuu z-^I!5lEulvlg+W5q{YeOY;;K$Y;Y1|FuF;+!AYNFagqmF9myZPlSXWE5=byP5ykA{ z>SacUj??NZ^P!`%cDXzrI?S>?%R0dcoE?s4%*o*PekE2&et))GKOFrq0`NHWbNEl) dhr54$)NjRL=_8)$JHG$`002ovPDHLkV1n6_zY+id literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.png new file mode 100644 index 0000000000000000000000000000000000000000..84526dbddec039b2dba4c245a4b0f7a5055923c7 GIT binary patch literal 13714 zcmeHuXH-*ZzwbsAbQGP@v4P;I8!!q=M~Xyc6n1EuSWv1$XrV}GhCVv#s5Ey%4I!vN zMCk}f$3`ZRA~lqRs01R?B-GGyH}Ctdd(M~h;jVSpyY9K`d|-t<`)T`m{`L3&<-vJt zGr6DSe*yqN4l@583josc0I=@BMj51q^|0wL>u=U;ApA^&YxhvARH}I@& zAkNP%FyuNB4}^q-9P{)g1h`zki9hB?bf-=jBh&l_K);{9cq@IJM@n(MbY1_mQ|lJ( zcZS}#H~Rkd+vj5kpKm<&pwWX{`eKh&=lkbQH!Lkh%8SY>X?v3Q#9r93Gx>L`8(%a2 zIy@2m`U&_@ZQbp$Ek;{3R#yCdvnOUcyLpVN7uEcE()Y@W?-^C|7i~JYPBe9?Mjsbg z)~0GZ09bf7XB`DzHoSw4UD^`?z!q~`CWh}1%~^W(BHwndm)lb)2Ti27PJ&F!*T;|n z=RQSG8LB9|=EY`80eJ_J?wn$%TX$*c>^ur^PW)NNIoyz!V>tKVvfO|A+Wq?{0JyyA zv~(kb=kvmJt?MPEtMPC!^?Q#h>rm1^=C(%WPU-h~;bH~fKkn}U07>bYQiE+T`!6!X zt8JP=@p*U$xhC{ak*qG>#!@68*~qu=bUK1`@;i@o5(m=_ zjab686(^e!>#mPD>@`bRFg|?(4V=1kTc%St582QeH+raD=}AzzX-2f{7Um0+he?tD zT!>)%uZ3*cwy{~SyqbdI!FcaEerkKyPk{45WEBF%7pFKqZW3e%M|sTAGsb1_qS4tF zUHOo83X>!Syx5_WnQ@`oDo8DBsk0w<`#tycmr=4YqgN6SqEm%yJ+}X+9yV}zO|Rd! zpQ4Cc*2w}ne`QL|HZlHrXv+Otf0}&tSD?%vbh2Q2+IT;3DhPQ6O+K=L%_Am3Sa`qA zQmYNox#~^>U+GSRR5Yq6xP52z&aaPANBvv%Yg)5n3RC=!zTXNdQ3antDr|h1l|=DZ z&~KTx2Y@cmwrIm$?a1jL;4ubh+Yjr3B**DKGuXba!4Lp0Dtk11Re!a1Tvawc)}ki{ zg?ra;1uW%GOYfTeC6(`u3s85R%gr)6Yz(zni|(H7lmar3AP@aC5gFRm9`U`ZdzG)6 z>fovf055*garV~(dn?|O)}H96jW-u>KLKdq*UQ! zoJVBz5$+kXe9;818tgs9`U08s7}uX+SgmZ^0Oz>S37r46F zOP$Rp<4#7tN6dgFw+Ydzk3H6V^Dq6l0*5;*32QZ3-5a_#0?rtZw&=Un{_lzUs+E!H zJEedWy+#kjSafYdtijsdAls%Pss&tB{qND7PYv7vT#lZFf_>)-p^~86LA}p<2PlH! zP2JMbm#iPjbhzQzvF+B6PB6DN8_b!P1izmjYp3ude&OI}7l*(ry73XJ_Q@91(B;)X zN2MB$sCsDltf~&Fj07P=c68K^71o7U68LdHH}!O9&j7R z^TCooZ1aBMAdnN2`R0TVMwCL?^``^Y_j`eP<%Q*I=jfr+r=d8A$Q)i#RW*n>CFYU2 z&wA0NL9}YdtH6ETN5WdYm#k(IQTnkk(X|#Tqyn=aeYeMy{!CT|%b_OdykVK?S)+pY_a+S&^fllaV6e zHLudJZ{OL6DU%2=-S4{|CmA+Iv*wpNRiQXb(JF=CU#_o8vVfDf-8v35l<1QM+pu*8 z8ROHhHCe~!ZcTn@o~p=M|EP6_Bw=FTS{%3WNi@ouU0jmwWK7@UY{a{DIJ|WJmD&1i z%xnI6U{qsNhj*d1D1)M@y&p3_??r&!x1Hb^*$JzR@%uhF=?WL2(VqQtB+1_9srZVy zRtwQ%%C5vm*YNZXLw;oMKnAp0eQ7ukjN*hh;_M2Y9t#E{z6VGs(Ou#(x~EC29lZRU zw4#oBL()@rMx5K>sDz2wjznnHfTe)*%`?dm+#c?+2(78up)-)&F0V-yP$6q`5sRYG z*iwn^6fUmZZrl$V6dO1R7jl~kH0GpUe*kr`qSau4G_%>DcBA|=f^2L)>dvgNz{0JaJkL_CuKqRY9}wqfF80e(yte`Iyk~n4WLvPkVF{+B z*eq2S6)_w?;h(od$JeiA8W#{Z2@9r21}qf^2KTMpKF4&iW5$n78#vM?tavvz{bQTd zcEx!O&O7Ywzr8UQX8qP9GVL~5A^O=_%f1=3)hA^;blkMVr>ccnQJ+p69-6Pj(IZ!% z2E{QD75}rlIC+*N+1gv)g}8m^rc5VEe`4chus6n+lz0bx3*jPV%HgkLt ztZxfl{c}SXJoNbx%HejX7z5+dRv4|wM1f4#K;MC|N&}w%&UhhOI6L9$ zN2#HKgo)oomGs;l#=hpF`G|oi0^3#&NcriuOj()xI{8;e<~7_^#qlQ0I=Z05O;Tin zw_P<-a}C}`Zo^-i=aMJ|{&xa%^ad!~;V`kaOslo7CBv>8QC-7K?#_`GW8I4E zeC-2oIJmdx(5kH!L_p&hGQC6M_U&+c_K+XEFL8V+Yuohf0j5z$`-DmBbV>LYYQd~o zbFd2jYjm8ob5Fv=>-&-M@#O;?zi5f_AZCO0T7jp!%26mOmy@9{QEZK=e$x!~y56@@JZ_f{;+vjVMVl(z#rgi+^W-aSC! z0_zU3vYQFjj2T*#9b3Q6&ua3IuZng|TXfQWhx_~Zoqc|?9oF-;AF(-!inCMsAFfm~ ztb2NOiY~T!KB?C0k5eB>cj;+$gN;MC!Q|HThpB#WJb8JegB?`m+sZYcYRA7{xX7& zn0nN%I1}+U-Gy!yqL+)tOqN|9PHV+XPR~9LtTw6Ds;x%nTZyW=r$br|RtG2r7qwBi zxjCYcLjU-x@AxC?gRRl{bDuKH9kjyl<<430x?J);-Uw_=YH|&Icb=IBj;cC5(CkSU zNJEhZJbrF0ioAI_XnMH`oJ^gr>jhga_S)7Wm#uJ|HJ9%mVtv(PvJ`cc6aO&?TFvUM zcW3X(3D&3~z)@Bq{_OcIqh=pw>WIt>C(Km~m)7p7`#JrvcK#r>+ilU*2+;VTMAfPt zKZ?CPgHReT!1*kDkCQxpb>aDG9{Bb)Qf=u2V5N zGPT;m{#<)mjy`ITA22JwTZ=3*;?)h~QKf}GKDEI&7UKtd)bWqsTKC%FR_&^@NRf8z zGf{S0w4-Rx`vxe2bZ>> z=4ZVXj=7PSHL|<#J^HIgj90^fZ$pLtp|F`gKJruNpz@*4FccDWH9SQeax1RtB{yx{ zZ=%3TR4`KyEnj0>wM!I;v~7Ar16_kXE=U+M+BH6s(mk~#_qwr<;`c(Lj)=KIKJzdx zF&MGzR0SQwU>k8osPnEm^Fb+8{spsa?hosd>fQkqkD&x>Y4?ZwSndrYx|Ta}{jMPk zpVC#puKUo2(x0DaFJIZ{v}t{8+w5j}wW!-N4M$w?HycNiD6=}pQUcE+nb|&Oh7bpGga|^`-__-HXxMC=MX>2&WX4ue`+Qul@d(qPxo(HBOtb^svM3QmxU% zpHy7SCGTAD@lk5xkE3|$ktrfRHv;BrXNPsMR{+#?yw7P)D)s1NH3{72ReNIxn|;9mkR@9F4A?&jYZz{hk{fu+rZ z^Sk^r_yn3e?_f*7tx;nehxa5P`oOMfw0E?pe>f}$)lmh69R-_#pHEBM?j1;QZ3X=v zBB=%L^e3QkWDcD7m@7-mwmoM~K#_(l8g(@Nv7qxn5Wlc8*!{*MtC7fzxKXmb zp1{~lwbGC6UaP@^pn`oOB>+fyKFADTwSwa8-!DmwvWLDzM8ruvtF(1#J&dMDX@eEY zz0YPB50_dugCr8HV23w~_fs*@S#hTs<}$;EO-y=@phLQI-;u+snPCMsqOT^i`0HEE z#TDzF6F)tbN~aK|7oJn7tGx!y{k*;?TR0Z-oxly-jqr|W{Y~hQJHTP|r`@!L?}OqS zaMZ-~Kq>Zi_X>73!y&2tU|X;weO?I`I6%P`n-q5EysF!m<|;%2WY4?e24nO#08o42 z>DP9PSj89Y*Aw;>K;>CW>Jo3vZ=QBkqNxdWyL{ihG7sY;tnT53D`c*J%M??WQ>$KU zr(;;)9ame-EG`dz)R+XK%{QTZ%wCzaR_0a=d|IRwTz#3i3z4wK+Yt@Bv2OP<8UfF*`Z`WQ{p?c>LS+KmfWqHxzP=rPu3SPbuzw1UU2Hffjf(gf~sxO>YeLsdNO zCYeCF=zH}X>W|+q6}{8q6Hs8ick^Q~J~be3#}R9c{_jn4@-!h5R1W-FCJt66F#h{r zlsWT=DT(N%5{QIjEj2Q>CGD*`F&34|Gnsls52FM(Q&3N_3rnukzj}K ze?G9@{qh-ktaB{NH-p2iEQ{($DA8}4<~~a?s@?^hf1D`=4xN(_npd9*z5CU71~5GX z%Q-3rJ{g>v@-noyUJh@VE?hXqLb7tVAC@$$WP)D^no zd0(b?eK6DBE^WL;+Cpj#B?AoWGJHdF(7xpidstvrvP>Tz3W{+J38n*Ayi7u~v^YqH61#Fc=BHW%< z{Aq7`i@69MUXjgK+qb|+xtJWY7FD2d{dJyylLjbS%Hw^YpQR`t6zat5A20F+8V(}+ z=!Z~8?>f;0sw1_}d2#{l6;47xFq_8}F7O#K^Ct>Pksh!MJeDYM!gY_leifAA7@1JA z%IwEACfE-g;b+Lt&vlR5Y4sF^N&^kQE24*|{V+s9N@4M@ZZP*ai;Ug1o*PoqmFvp~ z=V^h;D&L|hKW}O{QtW%{muO{8YPn4ZLn3U^|6iORK@=n|A1{_I?VDaKOBjvG9ABE*wqc z1gD;I_y?M2yXuP}65&Es0}cG_h&1+^UW*m+<9o02P{qgXPyMgM)8zCd(PVM^Wh2?> zI%GlvH(aB1I@vemMFiPigN4b*YC{9m?MVDEhT8>P22V?0&gsWqJCU*l9R^%J`S12F z{}$+J4K>Q?7)uj$9#wJJJWQCQvfAQP1J#qdQT3_z5+RF3ATM$CM*1}VP9(rb-Qhca zHg1jy#sVi5hiBQdk6S_gN&3E9OId`se;1g?8QyA7OgWd?Zi%_?#R&by4)r$TfM9cer%9Y+eFr6M~mGj9) zS!@rB?+yEb28_rc=g>{^MPojeL?LwL_LE>wrI%e3cB&52!-Gt5ks!0&^Zd?E-2uRLr8n)}G_GVcd{B!qY#9IODGBuxZg? z=pMvzewh9xBka~nm*C;V+n$Kw1GaFKmQPXzub@lo zlQugr03iDNdN}~dG(0U00MD%vIDah~{h#Llx6Y(0h+Kf&%+a@Tke*7aRY@gt$_nK~ z<@uzlcz&k7&515BXGqKOJ*b;_)Ma*gpy_4Wt@mNn!^);hKL4yFIjCyFMh zfNNfoR!bqI(BakRNELWOb?t+OODYDny^=1dGx`EoSy8OOi6mAfV;N80JC@Z)aT*a{Z^jpufrS45QMe{DTFN(0`iS= zxIL2@f>tVFb?V3dH|D;OC$HCtwL;}sTM)<7iB~RGIrg`qzPK|eQPkEf%Qw{oOp*8w zrPZ)$Gxlvq8YM{2+S2on-W0)Olr%3&HCuTYg&K{?Ly$P&RD_e2=n1IG;J&KxF&Etf z>r(}}C|}JL!K9I-GtHJb2f@MGcGu^*^f>^CcQOtRH*L47w#Qza|9ly^JY=%r=7eN zqprg9Ijw|$$*H9p0OPRG=GWP$ViO^`|Qxam1; z-3LiN$oI&ra(kh@AwO2#B&Sh)Hu_|L)RH8ABo2RTIe~ywBond1LjO2r?(dt2bI!lbo|1E%d!`sSp!(zp-c#^Rk zb7cb}e9j}yIsFf(5)R;PEIcc}4Nd2-%&YWrh1Z-s=C&yi^9xnQSh~yZtUv|^v$>)1 zfH2LCHsN(8=au&i5hqh&!d1^ET!fdcFdxm)QGD;ov@a5wqxT9B7cdx50itPwA7Hg| zZ)H%P_RWPj(-zH;qQL$S`75V+v4%szP^F|g-=>m$zjJ6B%Ajc(bwuFKd?E(^Ub=#j z+4jkV)KGlCVoq58SJN!7d-V&{vJV@1_GiTKfA7~GvKwQ#-@1}2hvNAy@_w`^?%@UF z2$HH_J|gwFJTI%~CzN#L?U=Y1F)%H&&nUADeRxYtnb4ShjIbsg4oIQq3cF$$ z!Mx8!nBe<*nnwy`r((cXzd6~vk1x2RUT9L=nx{|H;qH!Fy-lO+N_Aa0GIS?Wsk(el z-+hKI89$U{H@Bu2RgosV0)tj)uTk5_cS|)UP_>*vU2YkAB(d&(*{|cDgtG|nj0$cp zzy2iIN;<9#Em>)I_%q?&o6i6cbn-=S27UFwp^=tQ9jnlMHg9slU@-4*fOh%bb%z9* zpmD>B-mObDcVv9&NK)C5FrA0g$&uaD6h1p@p9&gF7x-J8PZlrsZkd=8Wx0is;L;a$p`Sq3FS+SsFxq^flRp*X70NRpOvm0`R;?(|J=hGiF-+!izdFz0=V%2uye;6 z7a$2Su;;G`&n+a()IV662E){>f`*5zQH1ar(d$6J0Y0_rsJ&BrU%fD)gzsH$q$18X z!8<-K`P&&yOUhA%m#@;bWK~HM(E;{}C5{;E<>ko6=n}<_1wRwLe{OnKQ%^;l49b?r z@ig&zFOqZezG(R9G4ixlquL!*U3}PHgZsTRkn+g!qfYa(&@rDm$qBsfG!hmc3_oA4 zcywz2NWs;qDiGcAVw6U%F<>3-kPEL(hbIn(9yb>)g4GpqXf2kzR(R3E{+z(aR7lhc zts1g;LQ1c8w(>XWy(V%K4-X=)qH}f%r2EdrTkZXL^8))~?(S@EPoySGK?Pg=W>sgX zQ5=gp{VmUJsTHNaq@SIKjU)|?4rB;yu-BjoSU^LepLI}~n)xME^0IGfy$ze-IlpG-*+3Q{#?l=t1 z*nJgM8nfaHOMD&skwYXD4vRy`HHO)Ek1mZ`b;Qadg*Fm~lV*zRPJgX7lv7a}_ZF=a zA31UIZBUCjG5!~JZ7C_{E1UABx&HC?xM1r|C*NJubmSN>l6p3BR&Sh}bevfo_CL>- zi%|U*7+F{7sdUGltfewEghDeFaqHT$^R=EWhx?h2M9waPVT|=39kA<~Do12mE}cbU z!98@lj`56AE;m8Y1YNnY-rc=F*KPOL9FYI=d~(*So*6>f)k}f@f-wIhXmmmB$mNPr zoLe}C9lGoMT}1SYsvKw~IqNTG|CdSMe~}CRPxJo;(g3dtx&i>sdvCeHAK@{Y;58_# zOp1c3sn*DQiu(Ukh-II_=b2J6=Fb3#eVqIVsEyvSDH?uMpV}$OZ4`j`5E7&ZoK*5)%N~=eP}B^P(4LOd)}Hj331llv!&-QQ~Szihrw-jZ#NhC6od?~ zD_D94?(Qo1*;4z?8>wi#mz&;@Ol0m@y4G~(rOmG=bh`-BIN#hmja0bT=%OLViq*8e zc}^qjOS}DjG1Wl1ckv;_xlvSTe3;au-xx*H-5n#5SL2Q;z+<{2*DUX+Y9oo_qT$h0 zny5av|Fy0~KjudYWdawbJ{2UD$rx01KzKa2eBmp~;&D(x)oy1>gK zefp2QO&U8v^@U25@%Wq00J2-)UVoZ^2W_<=A_a}Crlv9^aa-pcqc_>AMin<>9 z&2YoNC6oW}%3JwA-}gtRCG4&uZUu#^l`lx?8Vs%}9R3??o^0Ps5l^*W+5!JF`#Kb6 z0rSVE7F+UH7@+uOd3~!Lx&YJMVM-pO3%-MN+D!)_sqCNEPik6U7~uiuLvG}7qqfk-Kz|P52cNA)3p|s zXG|t}#kn~5yuYiI=q?0=1ci|IG!em5zS^`W)&WKexK=2aU;E9DhOxYO&-ug|0%Xu0ycchUa ztIcy`lw+oM(i2NQ4@kM>wZ4RnweUaY{Pg2DlaazPgUY;gav;Q+AUSGUP+V75&pC6H zEn0((Vy?KWnbsGa^Wo_CJ2YNQ1`XCocaCHM3pE1sIP`@9^R-P0nO=*Vc64w~1$iTX8?+}Zt35E2f?7-_@_3pVevLHKOIPW`7=k`hN zp0$6r!#G&p_95P8Ez~KDvc76|2qj${#*0ESz|!vN`PkfJghl&$A0I;f$pQgkq{Vi& z#Jk>>Ulb5zKj1xYF_QD)C#1%PoU9lc7#KsM zV>;Lxk*PwnaO( z$`rnX^<50H@JwCsg{O!8;}prp8rcfnam@xu9B{*bDSBS&{2xf^EYU?%UB2kWo-JGd z|95(MYDUT=3~WWtdtU`P?nB^M-w4UNX zpv<)5yIa@PlSQ%K-^~Zy~27zmveTIx)Qa12w-}whh zQzJ0XLNrQ#sgU=R86)r0rUp@nE&LMRXFT$-0Wiw8v@N0-J{eR(J(8~TaeII;*xRNM z>U5wo@cc#v$g!^4uJL{XT2;a0e`MdZgOB2>cCKE5aWFS$4fFo?=a$31R-U|m75i74 z*OqQLeDB^PJ>(sMZ|;s?o?5Me+kLzC9qU^=s7%ajk2Rp%Ip~GbKU-{1Hp>6&zuqJ@ z`&XOfHF!uy{QkHufsN~;&WX6hKB*m>-fkK zyQ`!kjB*rfK=;T-KrNRB8$Tm)gSH6y34&FqJLU_w;n%C?pI)0{K7R0KS8SU^`05B< zNPPL}4!t^xYXr?}9bh3iHnLj3oQjnAi(=G4j~aCz`c!@Q;DS?GT>Y&t$l^y9FCvV2 zV|R0d)6&mx)SY(WgLc@}g> z-H~EqW4UQNB$_k9`&x-6+@d6)S!^{H;jJK6{V6Ft^li{yh11eGt;Nm3dMuVSJEEX0 ziu?MAG*I+&PQ~4k0Nc`9L)K2Dy|66m+rkTJV9Qh<7=kG&C#`-0>(Pv+y=!&OB!Pa~ zicMCNR_|O2!g(dS!1Y$C3q!lf%k~(Xd(BWCEKqNbWM-gtF!zz$Pa@DS-BQ#-8Tk1f z7mZiRlg+ZU3^2u2M6o^}NB^-Yb#hPaN8B~-7NsX+!-4Mfb%4qsWriMCH@(2TEWUo{ zjU>k)_$s^tr*{j}cY_8+q}F$7qFQzYiq#_hy&i`EhE0LJg{zVb*W@SY2fNheH6nt2 z%CE$opIZc}S_|>AfQF-=Rpl>HLF|=TAsp^zovOX-=0Fg_k8N-NkwIxFa)HfM5M4A< z6`#U9Vn?Y|Dzlt&UY+5hSO_qfDnPtps$f3U-X((V^<|r12Av|{V^ydKIh_m}E3?St zaF8{4;|n@Pe%iAw1)8VciPW|(TPZ><-PzE&8F)_UyvjJ|)0Sd2VlrE#gda%vvC~^s z&91)KzZIoz*PJtRyQgQ+xDX2A6*x`e_`-^US*{5_def~jQQHvMX-5GY?9^fa^D;QiSNnNl6Xm#6^SLTK-Dm*0m^X0PVzwI(o9z|od_ZecifsM52laLSq6 zGM4ms6_P2tVsoqYWM-Q|66GpbSEPd|(B*`di;D#EG8XP9WN@8trkDt`n{YG`O&?fM zc1kJna>wRW^p~ukT?fceeab%$DOH!2GZ#U#P7^Uve4xQ=`XMFhp)O>SB#`86=`mDc zQQ?|w)ciZJkp4ST+a3>WycnZ%@A^;3k7hp1I~ubd0v4k^6qAI~2qkyrO5uAiS)ge) zmLf5u>t%7Dk9w?;YWTkFm5A z38Af*{Pn{Z$t^|CK^sW)A>~ixM+r%tzNq}YwV?->U0!l^$~-`pB00RyrdDWTqLF1S zv3P{^>Gb!3pOK9XvlBnZLBSqzWp+{sMJLWpa{pw@bQh@5;UhO9Jg73F%XqDV3;k@_7+e9XLXNE0#10Cd*+_kuId GxBnMx6Hs^n literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.svg b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.svg new file mode 100644 index 0000000000..bd62064c51 --- /dev/null +++ b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Pulse.svg @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + offset + 0 + time + amplitude + width + period + y + + + + shift + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Ramp.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Ramp.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdfd8e495959e9c38dfee4129d9acdf9c1cdff5 GIT binary patch literal 7088 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + height + duration + offset + startTime + time + y + + diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Sin.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Sources/Sin.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5d35c9879f0853e31e6a398838c7e85d30c0c6 GIT binary patch literal 11830 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 VJKb?490W(`o;Sd}*S`P!{{WAG!_)u( literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Tan.png b/IBPSA/Resources/Images/Controls/OBC/CDL/Reals/Tan.png new file mode 100644 index 0000000000000000000000000000000000000000..85f7a3a6785dfdccd64941b0ea6bb429d7f899d8 GIT binary patch literal 963 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 z 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 D9kKfM literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.png b/IBPSA/Resources/Images/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.png new file mode 100644 index 0000000000000000000000000000000000000000..102f675b802a5425c9a18c2d65dfcc374a6a8d33 GIT binary patch literal 10618 zcmb_?1yEeUw(S5Rc(C9W2o8g5u!Nw&-95PL;O-hE=->`PgKL5YcLsNNw?Y2o-v8?T zy8r(Auj;+2nK`HWoayd4z4zK{@6{2C@{$;+#HauO07F_zOc?-x=YXAGBE!SJaYL+m zU9rKx4t7UD+s9B}kl51D%3NIwQM)kMfH`M7Fy+XdZu8IVPe@sQ;M_C=4 zDvoPLxqWtGX*L*b-d$m19>ReQ{=uP64|e!P7fu5Jmnow9*8xPhu^f7I|+R-==EwL#$>&J1a>0krx$Fa>7#!2@H`n&^c&c zbjA}IhA?o`A(|O%RZm*`_=r@hy%L$ccX0AfEX&Cmsvwj;>(a25G2b+6$!~ZPAepwk zL`df1YLIlB|JzJxrNw3>2 zT$XKdv-!bWHC%4;N{$!YnZ@!xm>x$yhO~OYxHq@@p(q$Dwx%63PLMiym)~eN7H;%) zFcuX7jaats^JTQJ{qPIFz`}^)h`s!+>dDEUSpE6-%Qg^MG4L+`Gf-y0FP?68jC}Sa z`$zz(vozKxmxKa?=W<}y)Oyi{Xl4{2X`aL6Q_N)5wUf&pdA$0>HT|T0Y=zN*pu@`| zSYe3cbfm=6YVleuuub$Zx%V0SUCHeJ7po4_eclKDREXZaAl)j5<1mg$N6vi5U8Jpi zhKmd6t9UGk*O|hPm(vdpSCH9iEDB%4LT8~MADXvBfpOm&G-B)H>yf0F8(Bt=zEPUZ ze1EVZEGJ|u3)CZiqv^&e_X(NO<|e9p>T|mLe0ut#2NH%3i|WnE{L!wY*{#*a@w>IO z`Du$K^P2&Xvgll0Yt$QR4+WjM{1&AZDyqmhzI5=ib_hA)Z)#B4IYe*kWq)3#(V0-NCU%j+4%OTrtFH{|aIdg;ZZ@Yj3o> z+-9&Ba$AS-`(UkuesGr}hUy@t4f*nR&sm6)wl21QH38MO+-lN|k|MJ+N57?!lKIX9TmSeuIT#xLB z_mj0RyV3UOrUFOggLNgBAI@OyipZQmN5gmM8E1r3vgyxkW*cg(I}8KR#>4Uu626P$ zhQQT_JNY6f4|e2!DGg&!l^R3Z4HBe%8ELJ8yhg{5te2j!`q0323~zRA=Kf%lsJ~d17ZYIq(A5D<s`ZFRX&4iYpXP`gODynfS z?nr@=HTV$Wlg5icp%$T8rWzekD*d~&QnNX*#;%pqSjXh20vf-Bx>+eUXY2Lcx5*}r z>~E~0!M-m~&nL^HxT5aznO5gKnXPB?8@pMj->7_A^Cf?w|2|2TSr&e=U??D(Z2OFE zV%W!|`O(tBeYE5HNl4hPDmUBouH&YE^pUqXR%e}ezzCU%)mv4iUf0XT0kkD(0DX!! ze}eqD>q?eE?(doC>`#gz6VQh8uGZi0PyQkr_UVhDY661C*1>dPgl zI>Y*|bbAhq-e~YMjp4AM&YV=1zC15T5r_JeRKWNqGkV(Vl1I3*RmI)ua_RJ;?z+kj z%&3GVifl6TRa@b(ILdF~mWu9_v)4@AR*$6nnq*}>@-s5!4=$CWHr1dJZ#NDeonlG}ZQVfCg%D1Irt6RuD6kd3jI_da_1*Ns&F@ej)4K zA)~LUB@r3i4N@eZRkM|Oyg3bzBN&ug$+}}2{nJ_+6IqEvX0b{j4!xRC)DjW$L*Jvi zN@fg-7@L#EXndOU$=M!c$P}XCosC0lKWQ}0q+uN$QFS``Qxl$^xkMcoR|#%oWm)8T za7~yVsJzcR&bN1?AR4FL=*K1_{=lTaEZk^4LQzv+baHZR^N}zsGevr`)FXqH<;3px zS$FPhZj#QH0b!mWgmocn#bz>z<;JvqEoA+o2~`O!B@y1d8kgUm0X!C2aoaDUEwYbe z&2j+ScK)o2`ffTg#L(Fgda-P@Hf=qSQ)uA3m}k8;ZLdA!#Dn)j;A&^RR|$?K>4&DW z@s~CB7A=DX4L_t!K{%l|vj#hTd_IlMHRALAKNxYhp?MbfBE*abyWhTs{`sjd)*0@6 z;a1C4;KiyaS#I8NB_9yQc_EZ!F1W8ntXRx-n==(Se-G`x^sq{J;bQ*+{s@cqa zchN5dqVl!eWGq>^)=daB)e=`9&Q0^tfs`9{@9MP9q8xD^{@QFq5t|IYbpHHEI&$A2 z9DtyqixYcuGbmJLZT?aU5TD#v$M4fu$-j`(WjyXBirjM6vxy<~qzF%`WoDA;=x}p) zATvjsvO0-rdG;9{9^O9w+EqeAOR~^+f!TrmW;dM#B7+jWr|t zvfy&SwG;|f6fTy(yThMDXk+2_@WDF&$*Bl?5McZ&r|}g4@b(ik8~`AWB?AC_#O{F+ zGR0Rl|JvN%uEx~8wi6Bje3#VI_VvVf)tEy^siWId#hXE*|70DyD?C2-11X z>m3%NYgD*uX0I^$vjb7KB|rlJ@XT_K;UmA3wOj2VmX~5@_?>NI zeV_)nv%Y#bLdcPKh@l`T5t}j?tHb>C4K%6H=-po-aB6mWV8Bu?J&K1eIPR+%~p)+m2s(>Zw4)B+(tVa73l#Wi7h>Xc(~YTf*F!N zdYrQ9(*NkWfCH38uB{om7NX3kkfQ_J5Q`Wp+J>E+`+6Au1hmr7ey^!C?Jh9?V7rNtaPlmgvmnNEjq?m8K<&irEmV>PS#EH1ww_kisxEnb?+~={?StP;# z$&&oU97*`P+Y@H>c`c1SnvLMwdeg=DAoDOeG{=#q7Q4YWN@qpq!nF7aTKT#N#h7|l zoo!)q!wu|4r%wbiRa%kr>mCCI!_?a^`+NK_x5*VuMmCwXcpk8QEm8@-ojJJe%aZe| z>a5PmPK2X;?b}JZNSWDY^QE|ur~zX^L4=T}EL2Hr_D3{TFfIUKx))0$id-deIv&*i z84bwmc1+}1ZN9#3s>}yQzCZzd%qS6VRF!sEKmqs@Pv0gpV#o`?0Tco4g`(rm@PKjh ztK>-KuVWE8m#{^5+ymmF6=%X$kib)>(0@uE=B$YAg|#2YU>$Xj>oC5*0s{bCDD8z8 zgMJGrLUaHC_b2;OV~1>H0H9vfUYd-}2ovy8Zd^y10_+A4C}F!w<^sTO^S^*y8&H{GEdmrkzN;R5`v2z#coy1G3H z=MnrFllOug;QblVInOOZ z{{Fes#o1yReQ z0JU9tPg$257qCYYgRzmutqEGMI&tg04%#|>6LNJYqk_0c1ABHKS7BYF+b+7iOs?j8 zx(;m^OaHbXr=cF1ReVpg_p?igF3|8F*N6tn^;X9`jnB6YF*_t0&>8>Q%pN?(^7ik#=cAbSELV?3zC*Z)eb?6ehwD8A zy+U!QFRNwML1SfpeqZenI7e&|xhQrw`wU>VS85Er_TRk*s5*aOp zlmB&WAFf9qnaSWYm30&x*xH<$}V;ed+z=Glf4@X>U_0kga9`4L5KM6g4j&O40}KgxMh z-{9Ft^QlP0z%%>tu}5sBBVsjEp8nho)21)e0I5p)w)}>@bFNOH)6R3d-Eg&w@)$wD zuhDb0$?7(_B4Tv*$g7m8_#nY;)h)Hq-GX!Bzci_zSDD*}D8xy~6qBa1i^dZx8RsJ+juN* zHtggRsR*xvQJ zM~5&WK#3S})`j8PoOyqrOlDY}tKP9ve><_X=lz~XX#X#aVy{}Sz?L68WFV_=<%1rm zwRZ^lbSnqd*Xq0iEb-f3fkT|@jLL~lTfq(}lwvIMZ-0jFG*3OGQoTuMrbLV@6g6rh zUNH;_2~$y$FcN=D`!=C%9*aVUQk|rm*Hb#ys0FlVyj`!{ke7uN z96ToFjtS%EDg0c;l6qT$@~y5qNZ^Mh3+=%F7$nA083pn{KbaqrLRGoyLu-4xd{zWb zx^p3-jIIf)3R64x;ZFQ;Iren9)-ky}a)lbp-sL#(q@9X^N z*&??%d(%6NIYtuB$TlI%aQa+Gn8^r~okIYOjGw(DS1QndX0IOVi`ISyLlSc4Hxqa; zNG^Qx5eYEmO1oM2+4|P`AwM?3(2r)0Q^D4%BSR2Kl!8?LzYovD(q)0Dq)L}eXIPNq zw@9}U0D$Y1gT3^F+i8-BQ)p&%TXj(oMhYR{jlj*=35!CqPp62y`h`My-z{`|E>>xl zuE@n|!uq#f=ROiZMVBo#55YInjdC7+;HAYiORK37J)GKh(%STSQk3^Py$$Wk4 zuMy$H$A^>K%IJbYdohLI5W^n4R3e3$m?KHJ3p+wkc_qE-BJ9AhiyuAWT7h$VOxR&} z(!{o}-g$KcGTxs|{piKZ_&ay^l%UgT_HNomNC}ViTUW4?KcnpCy5W)V#@goEB{Wvw z>yaa5v1O>FI?E?W*W(Vi30yXdsLUJ%o2eQsurgdeV|Mepu2wfxaED=at$VqV@-&;| zYB1o8#S%GRwAz+Gj&Lc5td!#rNZ}puBVz0M$p92dM|u(jffoyStvaArJiVE%33N+M zIN1CEXNu`hFZ~aw29f36_OAh|lXLI%)u*FJ<;;`rIED=6@D%I!k2NWVLc_w45Rq^L zp<;kNI#_4oLy0v+7n7t+gq70Y+bSD4_SZEjPH^FJI=QBGHqui!ys=}x@Xyk{RhQ?- z3xdu40ePyfoJ)Y7H?O6)t0u5>;09HZw^om z09k*v=K}%F<^8!-35mIk%g2E8_Q&9^v%wz)V$HZW!l?bH0RO&MNJ!;Oa#uXb7bb*X zR?Xbq-4(wL=C|R0udUu_r6RVv;NaCZm5YR2w`<*(0HYOkN$NvN&)K4!WfXmThYw*y zIKIo04v+~`8R{9f3sCYZ6n_N^0rdPe;bU^@-iKu20rSLks^|x(F0FgnO zfrAoClBm4w@Hv>qD0Q;XlyfRDzyj7sWYS5pPx^fy4U9JDAQ+?U6=ue&uA_JztiA@6 z1ZQ9d*!^k6O}OZjx-We(lM1nK4bC8hQ^mhZ{z#`bc}r^CMgFnyGjqV`)SV{9ju=3d zst0H9yRz??kp~AN%&{2}jZv=BB>EmuPxi39pi-|P8pMzpb1XP^N>_x%dZ812#(LC%*_f}Ol z{2v4+%AhW_d3Wn3LYTM66@C6uyX@F1mvMkXsdpK@^cNGBJb)(G6HDRdMB*^7n6*Z8y5d&Kv0y9~%HTh} z5yrFQONwcNHo3XDp+>08%#Xws%mV@>pQMF6f<<#{*}fbMbc)SeTumo7Qrp`nKNmAf z26XLxvNa0cSm^3T$qXsQp4m-CRw{s1Mv4Z$3DK@nM0azYewnyiUQXt0Udi_JpGao{gc8cP1&TOuKyH ztE8P-c2f=YLh`V})82q;o}|{(X#(m|urUhH*QZ z357x)>G9Xz$7kf$B0w$&a&MrghW{#Sznc^tYsRFdWvFe?%@k&6Oj!V>AONr|>C8-| zO5sLlk{U@DqvsV$eng~QiU96WFfc_;EhQbo+$NrMG!;l0TR76c7U>drCio>}`MI>Ua(f5iV${{G zY}o%X%iu|AGFSnRd*91m`ths0PbUNBPZ3}|O(^R<D{r;6*4E|&SDh~qCi+daFn4Ep8`19^`Gez)36`(H^*PSh@ z@l3wlxYcks*ot`F_6qRISCZ*V8qPSW$?_1(6@tx~GPF}?h?{Tjt_8Y8in)Gr+-BgV z^{R*9PeC+cJa{tqLtHnOXtW3!-`mplr%YzzN{{&NTIM0Mpzl7rE{+>TS%Fe8d zs)F2K-%uWoEycEh%*=o*#f2MlxS*e4(GPq?*rLemUN>*vQtLk%_oIx1@N;#t(UlSUZzNzbv8GE7O{e3l|2hR&sFu-;k3t zp~`li_Ry~nOGhJ*3V7q>f!ff)+HQMt?}5)x_Ut~#Ks>pBCNL&;Cnl9O7;*6h(pM+Z zM*O)xjPMm2j2B6*i+!*Bn)xd4msVluV^OzJGhn{(VZH^)`;v~Rnx!s;Mg`AzAq={_X|%c}4Eat1>gxB#2u{MaLkS1=aj#CKKA!+Jv)EOf~LF zV+6w{TEzQ0LQtP&SAc+I{|txGxCMCyfn?7e$;b-Lr#D3UGs zraek0hM3!G+M(Rey5QpUb>hJ?@x^AGo^O?)(0`^Yo}9EgpDeN?KOW-IZI0H#l_w&d zv^yL7HpZoi!Ayxk`F)?u3CF&~LH{DzpIQ~_A8@O`>QL)av#yfA4CPJyP^t`=3S+4^ zSm~xUTTHFKeU9pba80;rO@D-{zS35xkCrr&#I^B4V!It9@62wEUgt+@u=JN;!htkg z&(YSNN=EB6Tgj3T>~xmv_^o8F7(P2FWQk+I7TI=85yCuBe*LU|&+7hF>-?~L%8U25 z0gvzQHHN-7`=_$@gOcDI2JT0<@99^^4H9OEaYC<0gX~SKEx6RaN^5BNEf#9YA#qMw z*^$&&M3C4o{3wtkS=C(L1fN6Pzt#R$Fum~!?llVS& z^#=V0RAr_|+n^0U#k9110=i5CTVJRLZFI(Ib`!i^;NV0T`Zj&I4{ zIA)7RvgCalBEnj6Xk;+lA2s4#>pH){qbE`S6L`n?{+1mZJNLQ_W%_nswIKNA?X;_p z=oGt(xq{W&pS~558jtxiH{QfbGLl1}h2vIlSc=XXH?R}Fs2@LfX_+dL`@K4Zg_#2`u)i7Wq_?dx7JpfiRpxLzu6K7OapHCvvqmw(Rj8}ICZu2(^x?SI{Z_HK zmx0;+DDd$)XJ~eM zX;i>s&dKP+Fz4#&-T=yVSy%5+3Gukdin@FPFNPG?Sb_-1q%N`=swJ-#l=@R2?Vsx_U|vaz;_{~Tg82RdDC-*@m`J;= zOqbw$MG(1Z%H{O;bF$!0Poz2ZL&c8u;Hf7iP7 zolpRTTFXlnJmT&tEKK96e#lVawaRZu7#8HXqQ{e!EeSt8WaxhjjiXi$_)R#ORF zVwj0Kak$q%hC_4r1}+B;W{lp1pGH>fw&r8YQ9@#GrFk2B>6ad+Yv}L92T(0T>!ulg z5wZ=NGZ{9)%(2=D(PY`pyyq#7ilRN%tF|gFEt-aU6_bth4J_>bL$hDWZaq7>oL`-6 z6!3iYDz+&(R1>}hwmWNZV7&13sNpq)R$&FI3qBpsx_mgRJKvQ)8-A`FOyvKog@ZMI znF$LJW#|pgT#_y}RgZ!6pTA{z@;jQdw8OSMq1LVtlyJUdwORr=`pj0V z;vXm8Hzi=+SoLrj{}e8i;q?JleG?R5O)OBk%uU|GcHenrG0% z?;)T?jDMt#E!uQLX70LqO*&<7b@QWxdplmhj77n?`Au-@U3BKO!(!Yrl6EC{a$d#B zdD3fr51{g8k7NS{29q*Fm8OOy~Z6iZ^1vk0{46~{0&AX zUX@+;V*O6soVE(+)~$~nV3B`Z)sHxiQ9CCB|7zxgo;0vpH|u=wS0FZJ#bLA7Ib!Te z%m;KGr$?=1s#6ckuKQ+6-`E{*o$Ox$Oe`ppUS2+4tcj+*th3jbAhwEGm+L67x3!mF zQ?uL(K@C%_0r_*YbvN;>nH#qb<}#LVb)j>e9ircAe z=Al~D^YTt}x7#W^ORaqARhr`G=dRIQNWIH;I-VALnAwf3UR5YYw*9d-UG>-xggDME zibf`n`jyo_`~4~JLVyKI2N#(?RV1dQ_UwJ>eQy}kL3+})dEu$Ti-+vAn*%E^Ic2bv z!81Nqb?#WbpV>o6YCzVDxxvdy!TCb~X!pg2Gg>W;@ckD>#bvMyf%m2 z71R;>JN(EWd!ZX~w%%os6Sniz`>oIBzLf(^=ev_tx94tFeAh;nyT$+u{MYAyMdm%= i|5p_MKk|Zmk$gK+3T6953D`zPfV8;0Sf!|8;Qs>OJX(nW literal 0 HcmV?d00001 From 8709d188c540a91552bcaf61bcc171de14031da1 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 22:54:49 +0000 Subject: [PATCH 03/15] Addded mos scripts --- .../Conversions/Validation/BooleanToInteger.mos | 3 +++ .../Conversions/Validation/BooleanToReal.mos | 3 +++ .../Conversions/Validation/IntegerToReal.mos | 3 +++ .../Conversions/Validation/RealToInteger.mos | 2 ++ .../CDL/Discrete/Validation/FirstOrderHold.mos | 2 ++ .../OBC/CDL/Discrete/Validation/Sampler.mos | 2 ++ .../CDL/Discrete/Validation/TriggeredMax.mos | 3 +++ .../Discrete/Validation/TriggeredMovingMean.mos | 5 +++++ .../Discrete/Validation/TriggeredSampler.mos | 2 ++ .../OBC/CDL/Discrete/Validation/UnitDelay.mos | 2 ++ .../CDL/Discrete/Validation/ZeroOrderHold.mos | 2 ++ .../Integers/Sources/Validation/Constant.mos | 2 ++ .../CDL/Integers/Sources/Validation/Pulse.mos | 5 +++++ .../Integers/Sources/Validation/TimeTable.mos | 4 ++++ .../Validation/TimeTableNegativeStartTime.mos | 4 ++++ .../OBC/CDL/Integers/Validation/Abs.mos | 2 ++ .../OBC/CDL/Integers/Validation/Add.mos | 2 ++ .../CDL/Integers/Validation/AddParameter.mos | 2 ++ .../OBC/CDL/Integers/Validation/Change.mos | 6 ++++++ .../OBC/CDL/Integers/Validation/Equal.mos | 3 +++ .../OBC/CDL/Integers/Validation/Greater.mos | 3 +++ .../CDL/Integers/Validation/GreaterEqual.mos | 3 +++ .../Validation/GreaterEqualThreshold.mos | 3 +++ .../Integers/Validation/GreaterThreshold.mos | 3 +++ .../OBC/CDL/Integers/Validation/Less.mos | 3 +++ .../OBC/CDL/Integers/Validation/LessEqual.mos | 3 +++ .../Integers/Validation/LessEqualThreshold.mos | 3 +++ .../CDL/Integers/Validation/LessThreshold.mos | 3 +++ .../OBC/CDL/Integers/Validation/Max.mos | 2 ++ .../OBC/CDL/Integers/Validation/Min.mos | 2 ++ .../OBC/CDL/Integers/Validation/MultiSum.mos | 2 ++ .../OBC/CDL/Integers/Validation/Multiply.mos | 2 ++ .../OBC/CDL/Integers/Validation/OnCounter.mos | 4 ++++ .../OBC/CDL/Integers/Validation/Stage.mos | 6 ++++++ .../OBC/CDL/Integers/Validation/Subtract.mos | 2 ++ .../OBC/CDL/Integers/Validation/Switch.mos | 2 ++ .../CDL/Logical/Sources/Validation/Constant.mos | 2 ++ .../CDL/Logical/Sources/Validation/Pulse.mos | 4 ++++ .../Validation/PulseNegativeStartTime.mos | 4 ++++ .../Validation/PulsePositiveStartTime.mos | 4 ++++ .../Sources/Validation/SampleTrigger.mos | 6 ++++++ .../SampleTriggerNegativeStartTime.mos | 6 ++++++ .../SampleTriggerPositiveStartTime.mos | 6 ++++++ .../Logical/Sources/Validation/TimeTable.mos | 4 ++++ .../Validation/TimeTableNegativeStartTime.mos | 4 ++++ .../Controls/OBC/CDL/Logical/Validation/And.mos | 2 ++ .../OBC/CDL/Logical/Validation/Change.mos | 3 +++ .../OBC/CDL/Logical/Validation/Edge.mos | 3 +++ .../OBC/CDL/Logical/Validation/FallingEdge.mos | 3 +++ .../OBC/CDL/Logical/Validation/Latch.mos | 8 ++++++++ .../OBC/CDL/Logical/Validation/MultiAnd.mos | 4 ++++ .../OBC/CDL/Logical/Validation/MultiOr.mos | 4 ++++ .../OBC/CDL/Logical/Validation/Nand.mos | 2 ++ .../Controls/OBC/CDL/Logical/Validation/Nor.mos | 2 ++ .../Controls/OBC/CDL/Logical/Validation/Not.mos | 2 ++ .../Controls/OBC/CDL/Logical/Validation/Or.mos | 2 ++ .../OBC/CDL/Logical/Validation/Proof.mos | 14 ++++++++++++++ .../OBC/CDL/Logical/Validation/Switch.mos | 2 ++ .../OBC/CDL/Logical/Validation/Timer.mos | 10 ++++++++++ .../Logical/Validation/TimerAccumulating.mos | 11 +++++++++++ .../TimerAccumulatingNegativeStartTime.mos | 13 +++++++++++++ .../Validation/TimerNegativeStartTime.mos | 8 ++++++++ .../OBC/CDL/Logical/Validation/Toggle.mos | 7 +++++++ .../OBC/CDL/Logical/Validation/TrueDelay.mos | 3 +++ .../CDL/Logical/Validation/TrueFalseHold.mos | 10 ++++++++++ .../CDL/Logical/Validation/VariablePulse.mos | 16 ++++++++++++++++ .../Logical/Validation/VariablePulseMinHold.mos | 4 ++++ .../Controls/OBC/CDL/Logical/Validation/Xor.mos | 2 ++ .../Validation/DewPoint_TDryBulPhi.mos | 7 +++++++ .../Validation/SpecificEnthalpy_TDryBulPhi.mos | 3 +++ .../Validation/WetBulb_TDryBulPhi.mos | 7 +++++++ .../Sources/Validation/CalendarTimeMonths.mos | 7 +++++++ .../Validation/CalendarTimeMonthsMinus.mos | 7 +++++++ .../Validation/CalendarTimeMonthsPlus.mos | 7 +++++++ .../CDL/Reals/Sources/Validation/CivilTime.mos | 2 ++ .../CDL/Reals/Sources/Validation/Constant.mos | 2 ++ .../OBC/CDL/Reals/Sources/Validation/Pulse.mos | 2 ++ .../OBC/CDL/Reals/Sources/Validation/Ramp.mos | 2 ++ .../OBC/CDL/Reals/Sources/Validation/Sin.mos | 2 ++ .../CDL/Reals/Sources/Validation/TimeTable.mos | 4 ++++ .../Validation/TimeTableNegativeStartTime.mos | 4 ++++ .../Controls/OBC/CDL/Reals/Validation/Abs.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Acos.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Add.mos | 2 ++ .../OBC/CDL/Reals/Validation/AddParameter.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Asin.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Atan.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Atan2.mos | 2 ++ .../OBC/CDL/Reals/Validation/Average.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Cos.mos | 2 ++ .../OBC/CDL/Reals/Validation/Derivative.mos | 3 +++ .../OBC/CDL/Reals/Validation/Divide.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Exp.mos | 2 ++ .../OBC/CDL/Reals/Validation/Greater.mos | 3 +++ .../CDL/Reals/Validation/GreaterThreshold.mos | 3 +++ .../OBC/CDL/Reals/Validation/Hysteresis.mos | 4 ++++ .../Reals/Validation/IntegratorWithReset.mos | 6 ++++++ .../Controls/OBC/CDL/Reals/Validation/Less.mos | 3 +++ .../OBC/CDL/Reals/Validation/LessThreshold.mos | 3 +++ .../OBC/CDL/Reals/Validation/LimitSlewRate.mos | 2 ++ .../OBC/CDL/Reals/Validation/Limiter.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Line.mos | 5 +++++ .../Controls/OBC/CDL/Reals/Validation/Log.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Log10.mos | 3 +++ .../OBC/CDL/Reals/Validation/MatrixGain.mos | 7 +++++++ .../OBC/CDL/Reals/Validation/MatrixMax.mos | 5 +++++ .../OBC/CDL/Reals/Validation/MatrixMin.mos | 5 +++++ .../Controls/OBC/CDL/Reals/Validation/Max.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Min.mos | 2 ++ .../OBC/CDL/Reals/Validation/Modulo.mos | 2 ++ .../OBC/CDL/Reals/Validation/MovingAverage.mos | 4 ++++ .../Validation/MovingAverage_nonZeroStart.mos | 4 ++++ .../OBC/CDL/Reals/Validation/MultiMax.mos | 3 +++ .../OBC/CDL/Reals/Validation/MultiMin.mos | 3 +++ .../OBC/CDL/Reals/Validation/MultiSum.mos | 4 ++++ .../OBC/CDL/Reals/Validation/Multiply.mos | 2 ++ .../Reals/Validation/MultiplyByParameter.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/PID.mos | 4 ++++ .../Validation/PIDInitialDerivativeOutput.mos | 2 ++ .../CDL/Reals/Validation/PIDInitialState.mos | 2 ++ .../OBC/CDL/Reals/Validation/PIDScale.mos | 3 +++ .../OBC/CDL/Reals/Validation/PIDWithReset.mos | 5 +++++ .../CDL/Reals/Validation/PIDWithResetScale.mos | 4 ++++ .../Controls/OBC/CDL/Reals/Validation/Ramp.mos | 8 ++++++++ .../Controls/OBC/CDL/Reals/Validation/Round.mos | 4 ++++ .../Controls/OBC/CDL/Reals/Validation/Sin.mos | 2 ++ .../Controls/OBC/CDL/Reals/Validation/Sort.mos | 8 ++++++++ .../Controls/OBC/CDL/Reals/Validation/Sqrt.mos | 2 ++ .../OBC/CDL/Reals/Validation/Subtract.mos | 2 ++ .../OBC/CDL/Reals/Validation/Switch.mos | 3 +++ .../Controls/OBC/CDL/Reals/Validation/Tan.mos | 2 ++ .../Routing/Validation/BooleanExtractSignal.mos | 4 ++++ .../CDL/Routing/Validation/BooleanExtractor.mos | 17 +++++++++++++++++ .../Validation/BooleanScalarReplicator.mos | 5 +++++ .../Routing/Validation/BooleanVectorFilter.mos | 3 +++ .../Validation/BooleanVectorReplicator.mos | 5 +++++ .../Routing/Validation/IntegerExtractSignal.mos | 14 ++++++++++++++ .../CDL/Routing/Validation/IntegerExtractor.mos | 16 ++++++++++++++++ .../Validation/IntegerScalarReplicator.mos | 6 ++++++ .../Routing/Validation/IntegerVectorFilter.mos | 3 +++ .../Validation/IntegerVectorReplicator.mos | 6 ++++++ .../Routing/Validation/RealExtractSignal.mos | 16 ++++++++++++++++ .../CDL/Routing/Validation/RealExtractor.mos | 16 ++++++++++++++++ .../Routing/Validation/RealScalarReplicator.mos | 5 +++++ .../CDL/Routing/Validation/RealVectorFilter.mos | 3 +++ .../Routing/Validation/RealVectorReplicator.mos | 5 +++++ .../OBC/CDL/Utilities/Validation/Assert.mos | 2 ++ .../OBC/CDL/Utilities/Validation/SunRiseSet.mos | 14 ++++++++++++++ .../Validation/SunRiseSetNegativeStartTime.mos | 14 ++++++++++++++ .../Validation/SunRiseSetPositiveStartTime.mos | 14 ++++++++++++++ .../Validation/SupplyReturnTemperatureReset.mos | 3 +++ .../SupplyReturnTemperatureResetExponent.mos | 2 ++ .../OptimalStartCoolingNegativeStartTime.mos | 4 ++++ .../OptimalStartCoolingPositiveStartTime.mos | 4 ++++ .../Validation/OptimalStartHeating.mos | 4 ++++ .../Validation/OptimalStartHeatingCooling.mos | 6 ++++++ .../OptimalStartNoHeatingNoCooling.mos | 4 ++++ .../Utilities/Validation/PIDWithInputGains.mos | 6 ++++++ 158 files changed, 694 insertions(+) create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/Sampler.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Abs.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Add.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/AddParameter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Change.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Equal.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Greater.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Less.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqual.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessThreshold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Max.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Min.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/MultiSum.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Multiply.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/OnCounter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Stage.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Subtract.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Switch.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/And.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Change.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Edge.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/FallingEdge.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Latch.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiAnd.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiOr.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nand.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nor.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Not.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Or.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Proof.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Switch.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Timer.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Toggle.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueDelay.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulse.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Xor.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Abs.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Acos.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Add.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/AddParameter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Asin.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan2.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Average.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Cos.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Derivative.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Divide.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Exp.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Greater.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Hysteresis.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Less.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LessThreshold.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Limiter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Line.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log10.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixGain.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMax.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMin.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Max.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Min.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Modulo.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMax.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMin.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiSum.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Multiply.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PID.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDScale.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Ramp.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Round.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sin.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sort.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sqrt.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Subtract.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Switch.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Tan.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractor.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/Assert.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeating.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mos new file mode 100644 index 0000000000..4d4ccff733 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Conversions.Validation.BooleanToInteger", stopTime = 4.0, method="Cvode", tolerance=1e-06, resultFile="BooleanToInteger1"); +createPlot(id=1, position={15, 10, 730, 200}, y={"booToInt.u"}, range={0.0, 1.0, -2.0, 5.0}, grid=true, colors={{238,46,47}}); +createPlot(id=2, position={15, 250, 730, 200}, y={"booToInt.y"}, range={0.0, 1.0, -2.0, 5.0}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mos new file mode 100644 index 0000000000..769ac2fa05 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Conversions.Validation.BooleanToReal", stopTime = 4.0, method="Cvode", tolerance=1e-06, resultFile="BooleanToReal1"); +createPlot(id=1, position={15, 10, 730, 200}, y={"booToRea.u"}, range={0.0, 1.0, -2.0, 5.0}, grid=true, colors={{238,46,47}}); +createPlot(id=2, position={15, 250, 730, 200}, y={"booToRea.y"}, range={0.0, 1.0, -2.0, 5.0}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mos new file mode 100644 index 0000000000..501db4ee85 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Conversions.Validation.IntegerToReal", stopTime = 1.0, method="Cvode", tolerance=1e-06, resultFile="IntegerToReal1"); +createPlot(id=1, position={15, 10, 730, 220}, y={"intToRea.u"}, range={0.0, 1.0, -2.0, 5.0}, grid=true, colors={{238,46,47}}); +createPlot(id=2, position={15, 220, 730, 220}, y={"intToRea.y"}, range={0.0, 1.0, -2.0, 5.0}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mos new file mode 100644 index 0000000000..650ebcc3cd --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Conversions.Validation.RealToInteger", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="RealToInteger1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"reaToInt.u", "reaToInt.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mos new file mode 100644 index 0000000000..b4cd09e1c5 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.FirstOrderHold", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="FirstOrderHold1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"firOrdHol.u", "firOrdHol.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/Sampler.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/Sampler.mos new file mode 100644 index 0000000000..aa38db656f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/Sampler.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.Sampler", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Sampler1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"sampler1.u", "sampler1.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mos new file mode 100644 index 0000000000..d78a181a38 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.TriggeredMax", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="TriggeredMax1"); +createPlot(id=1, position={15, 10, 750, 230}, y={"triggeredMax.u", "triggeredMax.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); +createPlot(id=2, position={15, 270, 750, 180}, y={"triggeredMax.trigger"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mos new file mode 100644 index 0000000000..3af0a04d7f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.TriggeredMovingMean", startTime = -0.5, stopTime=15.0, method="Cvode", tolerance=1e-06, resultFile="TriggeredMovingMean1"); +createPlot(id=1, position={15, 10, 590, 420}, subPlot=1, y={"triMovMea.u", "triMovMea.y", "triMovMea1.y"}, range={-1, 15.0, -2.0, 2.0}, grid=true, colors={{0,0,255}, {255,0,0}, {0,255,0}}); +createPlot(id=1, position={15, 10, 590, 420}, subPlot=2, y={"booPul.y"}, range={-1, 15.0, -1, 1}, grid=true, colors={{0,0,255}}); +createPlot(id=1, position={15, 10, 590, 420}, subPlot=3, y={"triMovMea.u", "triMovMea2.y"}, range={-1, 15.0, -2.0, 2.0}, grid=true, colors={{0,0,255}, {255,0,0}}); +createPlot(id=1, position={15, 10, 590, 420}, subPlot=4, y={"booPul1.y"}, range={-1, 15.0, -1, 1}, grid=true, colors={{0,0,255}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mos new file mode 100644 index 0000000000..d72fd775b7 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.TriggeredSampler", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="TriggeredSampler1"); +createPlot(id=1, position={55, 50, 615, 494}, y={"booPul.y", "sin1.y", "triSam.y", "triSam1.y"}, range={0.0, 1.0, -1.2, 1.2000000000000004}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mos new file mode 100644 index 0000000000..144ba6730f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.UnitDelay", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="unitDelay1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"unitDelay1.u", "unitDelay1.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mos new file mode 100644 index 0000000000..62a595c2b3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Discrete.Validation.ZeroOrderHold", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="ZeroOrderHold1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"zerOrdHol.u", "zerOrdHol.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mos new file mode 100644 index 0000000000..f27ea050ff --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Sources.Validation.Constant", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="IntCon1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"con.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mos new file mode 100644 index 0000000000..429ce5229d --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Sources.Validation.Pulse", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="IntegerPulse1"); +createPlot(id=1, subPlot=1, position={15, 10, 590, 750}, y={"pul.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, subPlot=2, position={15, 10, 590, 750}, y={"pul1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, subPlot=3, position={15, 10, 590, 750}, y={"pul2.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, subPlot=4, position={15, 10, 590, 750}, y={"pul3.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mos new file mode 100644 index 0000000000..ef89f261dc --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Sources.Validation.TimeTable", startTime=0, tolerance=1e-6, stopTime=15, method="Cvode", resultFile="IntegerTimeTable"); +createPlot(id=1, position={15, 6, 1488, 1268}, y={"intTimTab.y[1]", "intTimTab.y[2]"}, range={0.0, 15.0, -2.0, 8.0}, grid=true, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 6, 1488, 1268}, y={"intTimTab1.y[1]", "intTimTab1.y[2]"}, range={0.0, 15.0, -4.0, 8.0}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 6, 1488, 1268}, y={"tabOneRow.y[1]"}, range={0.0, 15.0, -1.2000000000000002, 0.3999999999999999}, grid=true, subPlot=103, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mos new file mode 100644 index 0000000000..b490f39630 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Sources.Validation.TimeTableNegativeStartTime", startTime=-5, tolerance=1e-6, stopTime=10, method="Cvode", resultFile="TimeTableNegativeStartTime3"); +createPlot(id=1, position={15, 6, 1488, 1268}, y={"intTimTab.y[1]", "intTimTab.y[2]"}, grid=true, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 6, 1488, 1268}, y={"intTimTab1.y[1]", "intTimTab1.y[2]"}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 6, 1488, 1268}, y={"tabOneRow.y[1]"}, grid=true, subPlot=103, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Abs.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Abs.mos new file mode 100644 index 0000000000..fe0fa8acf7 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Abs.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Abs", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Abs2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"abs1.u", "abs1.y"}, range={0.0, 1.0, -1.2, 1.4}, grid=true, colors={{28,108,200}, {238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Add.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Add.mos new file mode 100644 index 0000000000..cb05373cd6 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Add.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Add", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Add2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"add1.u1", "add1.u2", "add1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/AddParameter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/AddParameter.mos new file mode 100644 index 0000000000..1c9f554b58 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/AddParameter.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.AddParameter", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="AddParameter3"); +createPlot(id=1, position={15, 10, 590, 420}, y={"addPar.u", "addPar.y"}, range={0.0, 1.0, -4, 5}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Change.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Change.mos new file mode 100644 index 0000000000..67eae9d2df --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Change.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Change", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="IntChange"); +createPlot(id=1, position={15, 10, 2072, 1231}, y={"reaToInt.y"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, colors={{0,140,72}}); +createPlot(id=1, position={15, 10, 2072, 407}, y={"cha.u", "cha.up", "cha.y", "cha.down"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=2, colors={{217,67,180}, {28,108,200}, {0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 2072, 407}, y={"changeSampler.u", "changeSampler.y"}, range={0.0, 1.0, -5.0, 25.0}, grid=true, subPlot=3, colors={{28,108,200}, {0,140,72}}); +createPlot(id=1, position={15, 10, 2072, 407}, y={"increaseSampler.u", "increaseSampler.y"}, range={0.0, 1.0, -5.0, 25.0}, grid=true, subPlot=4, colors={{28,108,200}, {0,140,72}}); +createPlot(id=1, position={15, 10, 2072, 407}, y={"decreaseSampler.u", "decreaseSampler.y"}, range={0.0, 1.0, -5.0, 25.0}, grid=true, subPlot=5, colors={{28,108,200}, {0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Equal.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Equal.mos new file mode 100644 index 0000000000..3a8778383c --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Equal.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Equal", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Equal2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intEqu.u1", "intEqu.u2"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intEqu.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Greater.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Greater.mos new file mode 100644 index 0000000000..e3e9c65045 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Greater.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Greater", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Greater2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intGre.u1", "intGre.u2"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intGre.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mos new file mode 100644 index 0000000000..9af0591b0c --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.GreaterEqual", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="GreaterEqual2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intGreEqu.u1", "intGreEqu.u2"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intGreEqu.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mos new file mode 100644 index 0000000000..532015066a --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.GreaterEqualThreshold", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="GreaterEqualThreshold2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intGreEquThr.t", "intGreEquThr.u"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intGreEquThr.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mos new file mode 100644 index 0000000000..93bf7c36e2 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.GreaterThreshold", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="GreaterThreshold2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intGreThr.t", "intGreThr.u"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intGreThr.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Less.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Less.mos new file mode 100644 index 0000000000..e52fddafb2 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Less.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Less", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Less2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intLes.u1", "intLes.u2"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intLes.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqual.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqual.mos new file mode 100644 index 0000000000..b02ef53c8f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqual.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.LessEqual", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="LessEqual2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intLesEqu.u1", "intLesEqu.u2"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intLesEqu.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mos new file mode 100644 index 0000000000..3bb3b3f69e --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.LessEqualThreshold", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="LessEqualThreshold2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intLesEquThr.t", "intLesEquThr.u"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intLesEquThr.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessThreshold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessThreshold.mos new file mode 100644 index 0000000000..8ef203f4a7 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessThreshold.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.LessThreshold", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="LessThreshold2"); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=1, y={"intLesThr.t", "intLesThr.u"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}}); +createPlot(id=1, position={15, 10, 590, 450}, subPlot=2, y={"intLesThr.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Max.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Max.mos new file mode 100644 index 0000000000..7657635021 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Max.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Max", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Max2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"max1.u1", "max1.u2", "max1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Min.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Min.mos new file mode 100644 index 0000000000..fc2c0b0829 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Min.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Min", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Min2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"min1.u1", "min1.u2", "min1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/MultiSum.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/MultiSum.mos new file mode 100644 index 0000000000..ca07a079d9 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/MultiSum.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.MultiSum", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="MultiSum2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"add1.u[1]", "add1.u[2]", "add1.u[3]", "add1.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72}, {238,46,47}, {217,67,180}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Multiply.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Multiply.mos new file mode 100644 index 0000000000..db80fbb9c9 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Multiply.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Multiply", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Multiply2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"product.u1", "product.u2", "product.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/OnCounter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/OnCounter.mos new file mode 100644 index 0000000000..b3850cea79 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/OnCounter.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.OnCounter", stopTime=2.0, method="Cvode", tolerance=1e-06, resultFile="OnCounter1"); +createPlot(id=1, position={15, 10, 750, 450}, subPlot=1, y={"onCounter.trigger"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={15, 10, 750, 450}, subPlot=2, y={"onCounter.reset"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={15, 10, 750, 450}, subPlot=3, y={"onCounter.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Stage.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Stage.mos new file mode 100644 index 0000000000..15460bca04 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Stage.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Stage", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Stage"); +createPlot(id=1, position={15, 15, 1152, 1184}, y={"sta.u"}, range={0.0, 10.0, -0.2, 1.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 1152, 1184}, y={"sta.y", "zerHolTim.y"}, range={0.0, 10.0, -0.1, 1.0}, autoscale=false, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1187, 17, 1214, 1182}, y={"sta1.u"}, range={0.0, 10.0, -0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1187, 17, 1214, 1182}, y={"sta1.y", "lesHolTim.y"}, range={0.0, 10.0, -1.5, 1.5}, autoscale=false, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Subtract.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Subtract.mos new file mode 100644 index 0000000000..276f663817 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Subtract.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Subtract", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="sub2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"sub.u1", "sub.u2", "sub.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Switch.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Switch.mos new file mode 100644 index 0000000000..3301aec93b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Switch.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Integers.Validation.Switch", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="IntegerSwitch1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"integerSwitch.u1", "integerSwitch.u2", "integerSwitch.u3", "integerSwitch.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200},{28,108,200},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mos new file mode 100644 index 0000000000..bd659c048f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.Constant", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="BooCon1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"con.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mos new file mode 100644 index 0000000000..9d461130a3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.Pulse", stopTime=10, tolerance=1e-06, method="Cvode", resultFile="Pulse"); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_a1.y", "booPul_a2.y", "booPul_a3.y", "booPul_a4.y", "booPul_a5.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_b1.y", "booPul_b2.y", "booPul_b3.y", "booPul_b4.y", "booPul_b5.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_c1.y", "booPul_c2.y", "booPul_c3.y", "booPul_c4.y", "booPul_c5.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mos new file mode 100644 index 0000000000..9f6f059e7d --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.PulseNegativeStartTime", startTime=-10, stopTime=1, tolerance=1e-06, method="Cvode", resultFile="PulseNegativeStartTime"); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_a1.y", "booPul_a2.y", "booPul_a3.y", "booPul_a4.y", "booPul_a5.y"}, range={-10, 1, 1.5}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_b1.y", "booPul_b2.y", "booPul_b3.y", "booPul_b4.y", "booPul_b5.y"}, range={-10, 1, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_c1.y", "booPul_c2.y", "booPul_c3.y", "booPul_c4.y", "booPul_c5.y"}, range={-10, 1, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mos new file mode 100644 index 0000000000..6c8bb88fb3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.PulsePositiveStartTime", startTime=9, stopTime=20, tolerance=1e-06, method="Cvode", resultFile="PulsePositiveStartTime"); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_a1.y", "booPul_a2.y", "booPul_a3.y", "booPul_a4.y", "booPul_a5.y"}, range={9, 20, -0.5, 1.5}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_b1.y", "booPul_b2.y", "booPul_b3.y", "booPul_b4.y", "booPul_b5.y"}, range={9, 20, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1385, 860}, y={"booPul_c1.y", "booPul_c2.y", "booPul_c3.y", "booPul_c4.y", "booPul_c5.y"}, range={9, 20, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mos new file mode 100644 index 0000000000..a5ec2f62a9 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.SampleTrigger", startTime=0.0, stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="SampleTrigger"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"samTri.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"triggeredSampler.u", "triggeredSampler.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); + +createPlot(id=2, position={35, 30, 1000, 600}, subPlot=1, y={"samTri1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); +createPlot(id=2, position={35, 30, 1000, 600}, subPlot=2, y={"triggeredSampler1.u", "triggeredSampler1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mos new file mode 100644 index 0000000000..c7ac6c9b11 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.SampleTriggerNegativeStartTime", startTime=-2.0, stopTime=3.0, method="Cvode", tolerance=1e-06, resultFile="SampleTriggerNegativeStartTime"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"samTri.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"triggeredSampler.u", "triggeredSampler.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); + +createPlot(id=2, position={35, 30, 1000, 600}, subPlot=1, y={"samTri1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); +createPlot(id=2, position={35, 30, 1000, 600}, subPlot=2, y={"triggeredSampler1.u", "triggeredSampler1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mos new file mode 100644 index 0000000000..8f1c00da49 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.SampleTriggerPositiveStartTime", startTime=1.0, stopTime=6.0, method="Cvode", tolerance=1e-06, resultFile="SampleTriggerPositiveStartTime"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"samTri.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"triggeredSampler.u", "triggeredSampler.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); + +createPlot(id=2, position={35, 30, 1000, 600}, subPlot=1, y={"samTri1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); +createPlot(id=2, position={35, 30, 1000, 600}, subPlot=2, y={"triggeredSampler1.u", "triggeredSampler1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mos new file mode 100644 index 0000000000..2fdf7b2069 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.TimeTable", startTime=0, tolerance=1e-6, stopTime=15, method="Cvode", resultFile="TimeTable2"); +createPlot(id=1, subPlot=1, position={15, 10, 1936, 1264}, y={"booTimTab.y[1]", "booTimTab.y[2]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}}); +createPlot(id=1, subPlot=2, position={15, 10, 1936, 1264}, y={"booTimTabTwi.y[1]", "booTimTabTwi.y[2]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}}); +createPlot(id=1, subPlot=3, position={15, 10, 1936, 1264}, y={"booTimTabOneRow.y[1]", "booTimTabOneRow.y[2]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mos new file mode 100644 index 0000000000..413aa81543 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.TimeTableNegativeStartTime", startTime=-5, tolerance=1e-6, stopTime=10, method="Cvode", resultFile="TimeTableNegativeStartTime2"); +createPlot(id=1, subPlot=1, position={15, 10, 1936, 1264}, y={"booTimTab.y[1]", "booTimTab.y[2]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}}); +createPlot(id=1, subPlot=2, position={15, 10, 1936, 1264}, y={"booTimTabTwi.y[1]", "booTimTabTwi.y[2]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}}); +createPlot(id=1, subPlot=3, position={15, 10, 1936, 1264}, y={"booTimTabOneRow.y[1]", "booTimTabOneRow.y[2]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/And.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/And.mos new file mode 100644 index 0000000000..402b6037b1 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/And.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.And", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="And1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"and1.u1","and1.u2","and1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Change.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Change.mos new file mode 100644 index 0000000000..0178051186 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Change.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Change", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Change11"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"change.u", "change.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"triggeredSampler.u", "triggeredSampler.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Edge.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Edge.mos new file mode 100644 index 0000000000..3e25c70da6 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Edge.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Edge", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Edge1"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"edge1.u", "edge1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"triggeredSampler.u", "triggeredSampler.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/FallingEdge.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/FallingEdge.mos new file mode 100644 index 0000000000..0a4aa1cab4 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/FallingEdge.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.FallingEdge", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="FallingEdge1"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"falEdg.u", "falEdg.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"triggeredSampler.u", "triggeredSampler.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Latch.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Latch.mos new file mode 100644 index 0000000000..0db00899f0 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Latch.mos @@ -0,0 +1,8 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Latch", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Latch1"); +createPlot(id=1, position={10, 10, 550, 800}, y={"falCleTruIni.u","falCleTruIni.clr","falCleTruIni.y"}, subPlot=1, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=1, position={10, 10, 550, 800}, y={"falCleFalIni.u","falCleFalIni.clr","falCleFalIni.y"}, subPlot=2, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=2, position={570, 10, 550, 800}, y={"truCleTruIni.u","truCleTruIni.clr","truCleTruIni.y"}, subPlot=1, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=2, position={570, 10, 550, 800}, y={"truCleFalIni.u","truCleFalIni.clr","truCleFalIni.y"}, subPlot=2, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=3, position={1130, 10, 550, 800}, y={"swiCleInp.u","swiCleInp.clr","swiCleInp.y"}, subPlot=1, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=3, position={1130, 10, 550, 800}, y={"swiCleInp1.u","swiCleInp1.clr","swiCleInp1.y"}, subPlot=2, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiAnd.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiAnd.mos new file mode 100644 index 0000000000..930410396f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiAnd.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.MultiAnd", method="Cvode", tolerance=1e-06, stopTime=10.0, resultFile="MultiAnd1"); +createPlot(id=1, position={15, 10, 600, 350}, y={"mulAnd0.y", "mulAnd1.u[1]", "mulAnd1.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72},{238,46,47},{28,108,200}}); +createPlot(id=2, position={15, 400, 600, 350}, y={"mulAnd2.u[1]","mulAnd2.u[2]", "mulAnd2.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72},{238,46,47},{28,108,200}}); +createPlot(id=3, position={630, 10, 600, 750}, y={"mulAnd5.u[1]", "mulAnd5.u[2]", "mulAnd5.u[3]", "mulAnd5.u[4]", "mulAnd5.u[5]","mulAnd5.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72}, {238,46,47}, {217,67,180}, {238,46,47}, {217,67,180},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiOr.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiOr.mos new file mode 100644 index 0000000000..0807471b9f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiOr.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.MultiOr", method="Cvode", tolerance=1e-06, stopTime=10.0, resultFile="MultiOr1"); +createPlot(id=1, position={15, 10, 600, 350}, y={"mulOr0.y", "mulOr1.u[1]", "mulOr1.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72},{238,46,47},{28,108,200}}); +createPlot(id=2, position={15, 400, 600, 350}, y={"mulOr2.u[1]","mulOr2.u[2]", "mulOr2.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72},{238,46,47},{28,108,200}}); +createPlot(id=3, position={630, 10, 600, 750}, y={"mulOr5.u[1]", "mulOr5.u[2]", "mulOr5.u[3]", "mulOr5.u[4]", "mulOr5.u[5]","mulOr5.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72}, {238,46,47}, {217,67,180}, {238,46,47}, {217,67,180},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nand.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nand.mos new file mode 100644 index 0000000000..87a5b10483 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nand.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Nand", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Nand1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"nand1.u1","nand1.u2","nand1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nor.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nor.mos new file mode 100644 index 0000000000..3edbb81a71 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nor.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Nor", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Nor1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"nor1.u1","nor1.u2","nor1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Not.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Not.mos new file mode 100644 index 0000000000..0391a451c7 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Not.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Not", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Not1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"not1.u","not1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Or.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Or.mos new file mode 100644 index 0000000000..0ceefb21a5 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Or.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Or", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Or1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"or1.u1","or1.u2","or1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Proof.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Proof.mos new file mode 100644 index 0000000000..bcb912d2f9 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Proof.mos @@ -0,0 +1,14 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Proof", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Proof"); +createPlot(id=1, position={5, 20, 450, 1300}, y={"pro.u_m", "pro.u_s"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=1, position={5, 20, 450, 1300}, y={"pro.yLocFal", "pro.yLocTru"}, range={0.0, 10.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=2, position={465, 20, 450, 1300}, y={"pro1.u_m", "pro1.u_s"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=2, position={465, 20, 450, 1300}, y={"pro1.yLocFal", "pro1.yLocTru"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=3, position={925, 20, 450, 1300}, y={"pro2.u_m", "pro2.u_s"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=3, position={925, 20, 450, 1300}, y={"pro2.yLocFal", "pro2.yLocTru"}, range={0.0, 10.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=4, position={1385, 20, 450, 1300}, y={"pro3.u_m", "pro3.u_s"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=4, position={1385, 20, 450, 1300}, y={"pro3.yLocFal", "pro3.yLocTru"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1845, 20, 450, 1300}, y={"pro4.u_m", "pro4.u_s"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1845, 20, 450, 1300}, y={"pro4.yLocFal", "pro4.yLocTru"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=6, position={2295, 20, 450, 1300}, y={"pro5.u_m", "pro5.u_s"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=6, position={2295, 20, 450, 1300}, y={"pro5.yLocFal", "pro5.yLocTru"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Switch.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Switch.mos new file mode 100644 index 0000000000..32ed0ee90c --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Switch.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Switch", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="LogicalSwitch1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"logicalSwitch.u1", "logicalSwitch.u2", "logicalSwitch.u3", "logicalSwitch.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200},{28,108,200},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Timer.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Timer.mos new file mode 100644 index 0000000000..9233345ff1 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Timer.mos @@ -0,0 +1,10 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Timer", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Timer1"); +createPlot(id=1, position={15, 15, 750, 1200}, y={"noThr.u"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 750, 1200}, y={"noThr.y", "noThr.t"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=1, position={15, 15, 750, 1200}, y={"noThr.passed"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=2, position={775, 15, 750, 1200}, y={"thrTim.u"}, range={0.0, 5.0, -0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=2, position={775, 15, 750, 1200}, y={"thrTim.y", "thrTim.t"}, range={0.0, 5.0, -0.5, 2.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=2, position={775, 15, 750, 1200}, y={"thrTim.passed"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=3, position={1535, 15, 750, 1200}, y={"thrTim1.u"}, range={0.0, 5.0, -0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=3, position={1535, 15, 750, 1200}, y={"thrTim1.y", "thrTim1.t"}, range={0.0, 5.0, -0.5, 2.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=3, position={1535, 15, 750, 1200}, y={"thrTim1.passed"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mos new file mode 100644 index 0000000000..c092192fb8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mos @@ -0,0 +1,11 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.TimerAccumulating", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="AccTim"); +createPlot(id=1, position={15, 15, 800, 1200}, y={"noThr.u"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 800, 1200}, y={"noThr.y"}, range={0.0, 5.0, -2.0, 4.0}, grid=true, subPlot=2, colors={{28,108,200}}, displayUnits={"s"}); +createPlot(id=1, position={15, 15, 800, 1200}, y={"thrTim.u", "thrTim.passed"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 800, 1200}, y={"thrTim.y", "thrTim.t"}, range={0.0, 5.0, -2.0, 4.0}, grid=true, subPlot=4, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"noThrWitRes.u", "noThrWitRes.reset"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"noThrWitRes.y"}, range={0.0, 5.0, -1.0, 3.0}, grid=true, subPlot=2, colors={{28,108,200}}, displayUnits={"s"}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"thrTimWitRes.u", "thrTimWitRes.reset", "thrTimWitRes.passed"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"thrTimWitRes.y", "thrTimWitRes.t"}, range={0.0, 5.0, -1.0, 3.0}, grid=true, subPlot=4, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); + + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mos new file mode 100644 index 0000000000..c80a16108b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mos @@ -0,0 +1,13 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.TimerAccumulatingNegativeStartTime", startTime=-10, stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="AccTimNegSta"); +createPlot(id=1, position={15, 15, 800, 1200}, y={"noThr.u"}, range={-10.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 800, 1200}, y={"noThr.y", "noThr.t"}, range={-10.0, 5.0, -2.0, 6.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=1, position={15, 15, 800, 1200}, y={"thrTim.u", "thrTim.passed"}, range={-10.0, 5.0, -1.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 800, 1200}, y={"thrTim.y", "thrTim.t"}, range={-10.0, 5.0, -5.0, 10.0}, grid=true, subPlot=4, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"noThrWitRes.u", "noThrWitRes.reset"}, range={-10.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {28,108,200}}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"noThrWitRes.y", "noThrWitRes.t"}, range={-10.0, 5.0, -1.0, 3.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"thrTimWitRes.u", "thrTimWitRes.reset", "thrTimWitRes.passed"}, range={-10.0, 5.0, -1.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}, {28,108,200}}); +createPlot(id=2, position={825, 15, 800, 1200}, y={"thrTimWitRes.y", "thrTimWitRes.t"}, range={-10.0, 5.0, -2.0, 4.0}, grid=true, subPlot=4, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); + + + + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mos new file mode 100644 index 0000000000..1715c61fc8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mos @@ -0,0 +1,8 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.TimerNegativeStartTime", startTime=-10, stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="NegStaTim"); + +createPlot(id=1, position={15, 15, 1000, 1200}, y={"noThr.u"}, range={-10.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1000, 1200}, y={"noThr.y", "noThr.t"}, range={-10.0, 5.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=1, position={15, 15, 1000, 1200}, y={"noThr.passed"}, range={-10.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=2, position={1025, 15, 1000, 1200}, y={"thrTim.u"}, range={-10.0, 5.0, -0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=2, position={1025, 15, 1000, 1200}, y={"thrTim.y", "thrTim.t"}, range={-10.0, 5.0, -0.5, 2.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=2, position={1025, 15, 1000, 1200}, y={"thrTim.passed"}, range={-10.0, 5.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Toggle.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Toggle.mos new file mode 100644 index 0000000000..fe3d90fbf8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Toggle.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Toggle", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Toggle1"); +createPlot(id=1, position={10, 10, 550, 800}, y={"falCleTruIni.u","falCleTruIni.clr","falCleTruIni.y"}, subPlot=1, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=1, position={10, 10, 550, 800}, y={"falCleFalIni.u","falCleFalIni.clr","falCleFalIni.y"}, subPlot=2, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=2, position={570, 10, 550, 800}, y={"truCleTruIni.u","truCleTruIni.clr","truCleTruIni.y"}, subPlot=1, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=2, position={570, 10, 550, 800}, y={"truCleFalIni.u","truCleFalIni.clr","truCleFalIni.y"}, subPlot=2, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=3, position={1130, 10, 550, 800}, y={"swiCleInp.u","swiCleInp.clr","swiCleInp.y"}, subPlot=1, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); +createPlot(id=3, position={1130, 10, 550, 800}, y={"swiCleInp1.u","swiCleInp1.clr","swiCleInp1.y"}, subPlot=2, range={0.0, 10.0, -3.5, 3.5}, grid=true, autoscale=false, colors={{238,46,47},{238,46,47},{238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueDelay.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueDelay.mos new file mode 100644 index 0000000000..7858312534 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueDelay.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.TrueDelay", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="TrueDelay1"); +createPlot(id=1, subPlot = 1, position={15, 10, 1087, 700}, y={"onDelay0.u", "onDelay0.y", "onDelay1.y", "onDelay2.y", "onDelay3.y", "onDelay4.y", "onDelay5.y","onDelay6.y","onDelay7.y"}, range={0.0, 5.0, -0.1, 1.1}, grid=true, colors={{238,46,47}, {28,108,200}, {28,108,200}, {28,108,200}, {0,140,72}, {217,67,180}, {0,0,0}, {217,67,180}, {0,0,0}}); +createPlot(id=1, subPlot = 2, position={15, 10, 1087, 700}, y={"onDelay00.u", "onDelay00.y", "onDelay11.y", "onDelay22.y", "onDelay33.y", "onDelay44.y", "onDelay55.y","onDelay66.y","onDelay77.y"}, range={0.0, 5.0, -0.1, 1.1}, grid=true, colors={{238,46,47}, {28,108,200}, {28,108,200}, {28,108,200}, {0,140,72}, {217,67,180}, {0,0,0}, {217,67,180}, {0,0,0}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mos new file mode 100644 index 0000000000..7d2ea6765b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mos @@ -0,0 +1,10 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.TrueFalseHold", stopTime=7200.0, method="Cvode", tolerance=1e-06, resultFile="TrueFalseHold1"); +createPlot(id=1, position={15, 10, 817, 263}, y={"truFalHol.u", "truFalHol.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{238,46,47}, {28,108,200}}); +createPlot(id=2, position={18, 310, 810, 253}, y={"truFalHol1.u", "truFalHol1.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=3, position={20, 599, 815, 247}, y={"truFalHol2.u", "truFalHol2.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=4, position={25, 903, 810, 299}, y={"truFalHol3.u", "truFalHol3.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=5, position={872, 14, 707, 256}, y={"truFalHol4.u", "truFalHol4.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=6, position={869, 309, 714, 245}, y={"truFalHol5.u", "truFalHol5.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=7, position={879, 604, 720, 245}, y={"truFalHol6.u", "truFalHol6.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=8, position={874, 898, 750, 308}, y={"truFalHol7.u", "truFalHol7.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=9, position={25, 1245, 817, 266}, y={"truFalHol8.u", "truFalHol8.y"}, range={0.0, 7500.0, -0.2, 1.2}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulse.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulse.mos new file mode 100644 index 0000000000..34ce698da0 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulse.mos @@ -0,0 +1,16 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.VariablePulse", stopTime=3600.0, method="Cvode", tolerance=1e-06, resultFile="VariablePulse"); +createPlot(id=1, position={10, 10, 900, 1400}, y={"fal.u"}, range={0.0, 3600.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=1, position={10, 10, 900, 1400}, y={"fal.y"}, range={0.0, 3600.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={10, 10, 900, 1400}, y={"tru.u"}, range={0.0, 3600.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=1, position={10, 10, 900, 1400}, y={"tru.y"}, range={0.0, 3600.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={10, 10, 900, 1400}, y={"conTru.u"}, range={0.0, 3600.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=5, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=1, position={10, 10, 900, 1400}, y={"conTru.y"}, range={0.0, 3600.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=6, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={920, 10, 900, 1400}, y={"truFal.u"}, range={0.0, 3600.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=2, position={920, 10, 900, 1400}, y={"truFal.y"}, range={0.0, 3600.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={920, 10, 900, 1400}, y={"falTru.u"}, range={0.0, 3600.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=2, position={920, 10, 900, 1400}, y={"falTru.y"}, range={0.0, 3600.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={920, 10, 900, 1400}, y={"falTru1.u"}, range={0.0, 3600.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=5, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=2, position={920, 10, 900, 1400}, y={"falTru1.y"}, range={0.0, 3600.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=6, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1833, 11, 884, 622}, y={"conChaWid.u"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=3, position={1833, 11, 884, 622}, y={"conChaWid.y"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mos new file mode 100644 index 0000000000..3e3c088f29 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.VariablePulseMinHold", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="VariablePulse"); +createPlot(id=1, position={21, 13, 1198, 950}, y={"conChaWid.u"}, range={0.0, 5.0, 0.48, 0.62}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=1, position={21, 13, 1198, 950}, y={"conChaWid.y"}, range={0.0, 5.0, -0.2, 1.2}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Xor.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Xor.mos new file mode 100644 index 0000000000..9d937c108a --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Xor.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Logical.Validation.Xor", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Xor1"); +createPlot(id=1, position={15, 10, 900, 420}, y={"xor1.u1","xor1.u2","xor1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mos new file mode 100644 index 0000000000..33b9a538ef --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Psychrometrics.Validation.DewPoint_TDryBulPhi", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="DewPoint_TDryBulPhi1"); +createPlot(id=1, position={13, 9, 900, 1100}, y={"dewBulPhi.TDryBul"}, range={0.0, 1.0, 260.0, 340.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); +createPlot(id=1, position={13, 9, 900, 1100}, y={"dewBulPhi.phi"}, range={0.0, 1.0, -0.2, 1.2}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=1, position={13, 9, 900, 1100}, y={"dewBulPhi.TDewPoi"}, range={0.0, 1.0, 200.0, 320.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); +createPlot(id=2, position={927, 7, 860, 1100}, y={"dewBulPhi1.TDryBul"}, range={0.0, 1.0, 270.0, 320.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); +createPlot(id=2, position={927, 7, 860, 1100}, y={"dewBulPhi1.phi"}, range={0.0, 1.0, 0.4, 0.46}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=2, position={927, 7, 860, 1100}, y={"dewBulPhi1.TDewPoi"}, range={0.0, 1.0, 260.0, 300.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mos new file mode 100644 index 0000000000..96fde87f8d --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Psychrometrics.Validation.SpecificEnthalpy_TDryBulPhi", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="SpecificEnthalpy_TDryBulPhi1"); +createPlot(id=1, position={15, 10, 1000, 700}, subPlot=1, y={"hBulPhi.h"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={15, 10, 1000, 700}, subPlot=2, y={"phi.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mos new file mode 100644 index 0000000000..0963594408 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Psychrometrics.Validation.WetBulb_TDryBulPhi", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="WetBulb_TDryBulPhi1"); +createPlot(id=1, position={9, 15, 820, 1106}, y={"wetBulPhi.TDryBul"}, range={0.0, 1.0, 260.0, 340.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); +createPlot(id=1, position={9, 15, 820, 1106}, y={"wetBulPhi.phi"}, range={0.0, 1.0, 0.0, 1.2}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={9, 15, 820, 1106}, y={"wetBulPhi.TWetBul"}, range={0.0, 1.0, 280.0, 305.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); +createPlot(id=2, position={839, 15, 758, 1104}, y={"wetBulPhi1.TDryBul"}, range={0.0, 1.0, 270.0, 320.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); +createPlot(id=2, position={839, 15, 758, 1104}, y={"wetBulPhi1.phi"}, range={0.0, 1.0, 0.5, 0.7}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={839, 15, 758, 1104}, y={"wetBulPhi1.TWetBul"}, range={0.0, 1.0, 260.0, 310.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s", displayUnits={"K"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mos new file mode 100644 index 0000000000..1469097f65 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonths", startTime=172800, tolerance=1e-6, stopTime=345600, method="Cvode", resultFile="CalendarTimeMonths1"); +createPlot(id=1, position={35, 30, 1021, 971}, y={"calTim.year"}, range={170000.0, 350000.0, 1800.0, 2400.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.month"}, range={170000.0, 350000.0, 0.8, 1.2}, grid=true, subPlot=2, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 159}, y={"calTim.day"}, range={170000.0, 350000.0, 2.0, 6.0}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.weekDay"}, range={170000.0, 350000.0, 0.0, 10.0}, grid=true, subPlot=4, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 159}, y={"calTim.hour"}, range={170000.0, 350000.0, -10.0, 30.0}, grid=true, subPlot=5, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.minute"}, range={170000.0, 350000.0, -50.0, 100.0}, grid=true, subPlot=6, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mos new file mode 100644 index 0000000000..99ef8f6efd --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonthsMinus", startTime=172799, tolerance=1e-6, stopTime=345599, method="Cvode", resultFile="CalendarTimeMonthsMinus1"); +createPlot(id=1, position={35, 30, 1021, 971}, y={"calTim.year"}, range={170000.0, 350000.0, 1800.0, 2400.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.month"}, range={170000.0, 350000.0, 0.8, 1.2}, grid=true, subPlot=2, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 159}, y={"calTim.day"}, range={170000.0, 350000.0, 2.0, 6.0}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.weekDay"}, range={170000.0, 350000.0, 0.0, 10.0}, grid=true, subPlot=4, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 159}, y={"calTim.hour"}, range={170000.0, 350000.0, -10.0, 30.0}, grid=true, subPlot=5, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.minute"}, range={170000.0, 350000.0, -50.0, 100.0}, grid=true, subPlot=6, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mos new file mode 100644 index 0000000000..c08fcea2c0 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonthsPlus", startTime=172801, tolerance=1e-6, stopTime=345601, method="Cvode", resultFile="CalendarTimeMonthsPlus1"); +createPlot(id=1, position={35, 30, 1021, 971}, y={"calTim.year"}, range={170000.0, 350000.0, 1800.0, 2400.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.month"}, range={170000.0, 350000.0, 0.8, 1.2}, grid=true, subPlot=2, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 159}, y={"calTim.day"}, range={170000.0, 350000.0, 2.0, 6.0}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.weekDay"}, range={170000.0, 350000.0, 0.0, 10.0}, grid=true, subPlot=4, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 159}, y={"calTim.hour"}, range={170000.0, 350000.0, -10.0, 30.0}, grid=true, subPlot=5, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 1021, 158}, y={"calTim.minute"}, range={170000.0, 350000.0, -50.0, 100.0}, grid=true, subPlot=6, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mos new file mode 100644 index 0000000000..e72d69b9bc --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CivilTime", startTime=-1, tolerance=1e-6, stopTime=1, method="Cvode", resultFile="StandardTime1"); +createPlot(id=1, position={15, 10, 482, 336}, y={"civTim.y"}, range={-1.0, 1.0, -1.5, 1.5}, grid=true, leftTitleType=1, bottomTitleType=1, colors={{0,0,255}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mos new file mode 100644 index 0000000000..f45a7589ad --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.Constant", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Constant1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"con.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mos new file mode 100644 index 0000000000..f7eb901068 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.Pulse", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Pulse1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"pulse.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mos new file mode 100644 index 0000000000..5b168a75ab --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.Ramp", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="Ramp1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"ram.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mos new file mode 100644 index 0000000000..eb71b31e1b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.Sin", stopTime=130.0, method="Cvode", tolerance=1e-06, resultFile="Sin"); +createPlot(id=1, position={15, 10, 590, 420}, y={"sin.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mos new file mode 100644 index 0000000000..b3df73b658 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.TimeTable", startTime=0, tolerance=1e-6, stopTime=172800, method="Cvode", resultFile="TimeTable1"); +createPlot(id=1, position={15, 10, 1936, 1264}, y={"timTabLin.y[1]", "timTabLinCon.y[1]", "timTabCon.y[1]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}, {238,46,47}}, patterns={LinePattern.Solid, LinePattern.DashDot, LinePattern.Solid}, timeUnit="d"); +createPlot(id=1, position={15, 10, 1936, 418}, y={"timTabLinHol.y[1]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{0,0,255}}, timeUnit="d"); +createPlot(id=1, position={15, 10, 1936, 418}, y={"timTabLinDer.y[1]"}, range={-1.6, 2.0, -4.0, 2.0}, grid=true, subPlot=3, colors={{0,0,255}}, timeUnit="d"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mos new file mode 100644 index 0000000000..f6d1f899a3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.TimeTableNegativeStartTime", startTime=-129600, tolerance=1e-6, stopTime=172800, method="Cvode", resultFile="NegativeStartTime1"); +createPlot(id=1, position={15, 10, 1936, 1264}, y={"timTabLin.y[1]", "timTabLinCon.y[1]", "timTabCon.y[1]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, colors={{0,0,255}, {0,140,72}, {238,46,47}}, patterns={LinePattern.Solid, LinePattern.DashDot, LinePattern.Solid}, timeUnit="d"); +createPlot(id=1, position={15, 10, 1936, 418}, y={"timTabLinHol.y[1]"}, range={-1.6, 2.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{0,0,255}}, timeUnit="d"); +createPlot(id=1, position={15, 10, 1936, 418}, y={"timTabLinDer.y[1]"}, range={-1.6, 2.0, -4.0, 2.0}, grid=true, subPlot=3, colors={{0,0,255}}, timeUnit="d"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Abs.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Abs.mos new file mode 100644 index 0000000000..e3cd73b97f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Abs.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Abs", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Abs1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"abs1.u", "abs1.y"}, range={0.0, 1.0, -1.2, 1.4}, grid=true, colors={{28,108,200}, {238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Acos.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Acos.mos new file mode 100644 index 0000000000..d0360ff6e8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Acos.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Acos", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Acos"); +createPlot(id=1, position={15, 10, 590, 420}, y={"arcCos.u", "arcCos.y"}, range={0.0, 1.0, -2, 2}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Add.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Add.mos new file mode 100644 index 0000000000..ada97a4b64 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Add.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Add", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Add1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"add1.u1", "add1.u2", "add1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/AddParameter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/AddParameter.mos new file mode 100644 index 0000000000..648a147861 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/AddParameter.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.AddParameter", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="AddParameter2"); +createPlot(id=1, position={15, 10, 590, 420}, y={"addPar.u", "addPar.y"}, range={0.0, 1.0, -4, 5}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Asin.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Asin.mos new file mode 100644 index 0000000000..d5ed4627b7 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Asin.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Asin", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Asin"); +createPlot(id=1, position={15, 10, 590, 420}, y={"arcSin.u", "arcSin.y"}, range={0.0, 1.0, -2, 2}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan.mos new file mode 100644 index 0000000000..82cb3e86cb --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Atan", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Atan1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"atan1.u", "atan1.y"}, range={0.0, 1.0, -1.2, 1.4}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan2.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan2.mos new file mode 100644 index 0000000000..ecef677da8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan2.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Atan2", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Atan2_1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"atan2_1.u1", "atan2_1.u2", "atan2_1.y"}, range={0.0, 1.0, -2.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Average.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Average.mos new file mode 100644 index 0000000000..a3003efa7f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Average.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Average", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Average1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"avg1.u1", "avg1.u2", "avg1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Cos.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Cos.mos new file mode 100644 index 0000000000..98d92807e3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Cos.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Cos", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Cos1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"cos1.u", "cos1.y"}, range={0.0, 1.0, -1.2, 1.4}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Derivative.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Derivative.mos new file mode 100644 index 0000000000..7a13e21734 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Derivative.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Derivative", stopTime=10, method="Cvode", tolerance=1e-07, resultFile="Derivative"); +createPlot(id=1, position={15, 15, 761, 628}, y={"der1.y", "intWitRes.u", "der2.y"}, range={0.0, 20.0, -3.0, 3.0}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}, {0,140,72}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 761, 628}, y={"der1.T"}, range={0.0, 20.0, 0.0, 0.12}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Divide.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Divide.mos new file mode 100644 index 0000000000..14d8b733d4 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Divide.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Divide", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Divide1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"div1.u1", "div1.u2", "div1.y"}, range={0.0, 1.0, -2.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Exp.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Exp.mos new file mode 100644 index 0000000000..f795e6d050 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Exp.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Exp", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Exp1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"Exp1.u", "Exp1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Greater.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Greater.mos new file mode 100644 index 0000000000..9b8e2fda53 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Greater.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Greater", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Greater1"); +createPlot(id=1, position={15, 15, 742, 472}, y={"gre.u1", "gre.u2"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 742, 472}, y={"gre.y", "greHys.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mos new file mode 100644 index 0000000000..52d1e9de5b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.GreaterThreshold", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="GreaterThreshold1"); +createPlot(id=1, position={15, 15, 742, 472}, y={"gre.u", "gre.t"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 742, 472}, y={"gre.y", "greHys.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Hysteresis.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Hysteresis.mos new file mode 100644 index 0000000000..ffdd083d12 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Hysteresis.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Hysteresis", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="Hysteresis1"); +createPlot(id=1, position={15, 10, 900, 420}, subPlot=1, y={"hysteresis.u", "hysteresis.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); +createPlot(id=1, position={15, 10, 900, 420}, subPlot=2, y={"hysteresis1.u", "hysteresis1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); +createPlot(id=1, position={15, 10, 900, 420}, subPlot=3, y={"hysteresis2.u", "hysteresis2.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mos new file mode 100644 index 0000000000..af4c7bc128 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.IntegratorWithReset", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="IntegratorWithReset1"); +createPlot(id=1, position={35, 30, 586, 850}, y={"cons.y"}, range={0.0, 1.0, 8.8, 11.2}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={35, 30, 586, 850}, y={"booleanPulse.y"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=2, colors={{28,108,200}}); +createPlot(id=2, position={645, 30, 725, 850}, y={"intDef.y_start", "intDef.y", "intDef.y_reset_in"}, range={0.0, 1.0, -5.0, 15.0}, grid=true, colors={{28,108,200}, {0,140,72},{238,46,47}}); +createPlot(id=2, position={645, 30, 725, 850}, y={"intWitRes1.y_start", "intWitRes1.y", "intWitRes1.y_reset_in"}, range={0.0, 1.0, 1.0, 6.0}, grid=true, subPlot=2, colors={{28,108,200}, {0,140,72}, {238,46,47}}); +createPlot(id=2, position={645, 30, 725, 850}, y={"intWitRes2.y_start", "intWitRes2.y", "intWitRes2.y_reset_in"}, range={0.0, 1.0, -6.0, -1.0}, grid=true, subPlot=3, colors={{28,108,200}, {0,140,72}, {238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Less.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Less.mos new file mode 100644 index 0000000000..94e8832bb3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Less.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Less", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="Less1"); +createPlot(id=1, position={15, 15, 742, 472}, y={"les.u1", "les.u2"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 742, 472}, y={"les.y", "lesHys.y"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LessThreshold.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LessThreshold.mos new file mode 100644 index 0000000000..b8063d99bc --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LessThreshold.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.LessThreshold", stopTime=10.0, method="Cvode", tolerance=1e-06, resultFile="LessThreshold1"); +createPlot(id=1, position={15, 15, 742, 472}, y={"les.u", "les.t"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 742, 472}, y={"les.y", "lesHys.y"}, range={0.0, 5.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mos new file mode 100644 index 0000000000..892c3c9410 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.LimitSlewRate", method="Cvode", stopTime=480, tolerance=1e-06, resultFile="LimitSlewRate"); +createPlot(id=1, position={15, 10, 730, 420}, y={"sleRatLim.u", "sleRatLim.y"}, range={0.0, 5.0, -2.0, 2.0}, grid=true, colors={{238,46,47},{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Limiter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Limiter.mos new file mode 100644 index 0000000000..571fa90d72 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Limiter.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Limiter", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Limiter1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"limiter1.u", "limiter1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Line.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Line.mos new file mode 100644 index 0000000000..649395e910 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Line.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Line", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Line1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"line1.u", "line1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); +createPlot(id=1, position={15, 10, 590, 420}, y={"line1.u", "line1.y", "line2.y", "line3.y"}, range={0.0, 1.0, -1.0, 4.0}, grid=true, colors={{238,46,47}, {28,108,200}, {0,140,72}, {217,67,180}}); + + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log.mos new file mode 100644 index 0000000000..ba9a0d72a0 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Log", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Log1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"log1.u", "log1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log10.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log10.mos new file mode 100644 index 0000000000..4995515cf9 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log10.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Log10", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Log10_1"); + +createPlot(id=1, position={15, 10, 590, 420}, y={"log10_1.u", "log10_1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixGain.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixGain.mos new file mode 100644 index 0000000000..25ee2b5ec3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixGain.mos @@ -0,0 +1,7 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MatrixGain", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="MatrixGain"); + +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=1, y={"matGai.y[1]", "matGai.y[2]", "matGai.y[3]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}, {0,0,127}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=2, y={"matGai.u[1]", "matGai.u[2]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{0,140,72}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=3, y={"matGai1.y[1]", "matGai1.y[2]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=4, y={"matGai1.u[1]", "matGai1.u[2]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{0,140,72}}); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMax.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMax.mos new file mode 100644 index 0000000000..a7a53a10dc --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMax.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MatrixMax", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="MatrixMax"); + +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=1, y={"matMax.y[1]", "matMax.y[2]", "matMax.y[3]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}, {0,0,127}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=2, y={"matMax1.y[1]", "matMax1.y[2]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=3, y={"matMax2.y[1]", "matMax2.y[2]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMin.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMin.mos new file mode 100644 index 0000000000..4cb7287592 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMin.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MatrixMin", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="MatrixMin"); + +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=1, y={"matMin.y[1]", "matMin.y[2]", "matMin.y[3]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}, {0,0,127}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=2, y={"matMin1.y[1]", "matMin1.y[2]", "matMin1.y[3]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}, {0,0,127}}); +createPlot(id=1, position={10, 15, 1000, 750}, subPlot=3, y={"matMin2.y[1]", "matMin2.y[2]"}, range={0.0, 0.05, -0.2, 0.6}, grid=true, colors={{28,108,200},{238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Max.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Max.mos new file mode 100644 index 0000000000..9ec941c843 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Max.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Max", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Max1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"max1.u1", "max1.u2", "max1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Min.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Min.mos new file mode 100644 index 0000000000..c4ac352c17 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Min.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Min", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Min1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"min1.u1", "min1.u2", "min1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Modulo.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Modulo.mos new file mode 100644 index 0000000000..168e60dcb2 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Modulo.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Modulo", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Modulo1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"mod1.u1", "mod1.u2", "mod1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage.mos new file mode 100644 index 0000000000..f9024191fa --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MovingAverage", stopTime=900.0, method="Cvode", tolerance=1e-06, resultFile="MovingAverage1"); +createPlot(id=1, position={15, 10, 1300, 400}, subPlot=1, y={"sinInpNoDel.y","movAve1.y","movAve2.y","movAve3.y","movAve4.y"}, range={0.0, 5.0, 0, 1}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200},{0,140,72},{28,108,200}}); +createPlot(id=2, position={15, 430, 600, 400}, subPlot=1, y={"sinInp50sDel.y","movAve6.y","movAve7.y"}, range={0.0, 5.0, 0, 1}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); +createPlot(id=3, position={640, 430, 600, 400}, subPlot=1, y={"sinInp100sDel.y","movAve8.y","movAve9.y"}, range={0.0, 5.0, 0, 1}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mos new file mode 100644 index 0000000000..b3682de0fb --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MovingAverage_nonZeroStart", startTime=100.0, stopTime=900.0, method="Cvode", tolerance=1e-06, resultFile="MovingAverage_nonZeroStart1"); +createPlot(id=1, position={15, 10, 1300, 400}, subPlot=1, y={"sinInpNoDel.y","movAve1.y","movAve2.y","movAve3.y","movAve4.y"}, range={0.0, 5.0, 0, 1}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200},{0,140,72},{28,108,200}}); +createPlot(id=2, position={15, 430, 600, 400}, subPlot=1, y={"sinInp50sDel.y","movAve6.y","movAve7.y"}, range={0.0, 5.0, 0, 1}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); +createPlot(id=3, position={640, 430, 600, 400}, subPlot=1, y={"sinInp100sDel.y","movAve8.y","movAve9.y"}, range={0.0, 5.0, 0, 1}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMax.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMax.mos new file mode 100644 index 0000000000..61a44a012b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMax.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MultiMax", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="MultiMax1"); +createPlot(id=1, position={15, 10, 600, 420}, y={"con[1].y","con[2].y","con[3].y","con[4].y","con[5].y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200},{0,140,72},{28,108,200}}); +createPlot(id=2, position={630, 10, 600, 420}, y={"maxVal.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMin.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMin.mos new file mode 100644 index 0000000000..d4ea7aa7a7 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMin.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MultiMin", stopTime=1.0, method="Cvode", tolerance=1e-06, resultFile="MultiMin1"); +createPlot(id=1, position={15, 10, 600, 420}, y={"con[1].y","con[2].y","con[3].y","con[4].y","con[5].y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200},{0,140,72},{28,108,200}}); +createPlot(id=2, position={630, 10, 600, 420}, y={"minVal.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiSum.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiSum.mos new file mode 100644 index 0000000000..eb7d759435 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiSum.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MultiSum", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="MultiSum_1"); +createPlot(id=1, position={15, 10, 600, 350}, y={"mulSum_1.u[1]", "mulSum_1.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72}, {28,108,200}}); +createPlot(id=2, position={15, 400, 600, 350}, y={"mulSum_2.u[1]","mulSum_2.u[2]", "mulSum_2.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72},{238,46,47},{28,108,200}}); +createPlot(id=3, position={630, 10, 600, 750}, y={"mulSum_5.u[1]", "mulSum_5.u[2]", "mulSum_5.u[3]", "mulSum_5.u[4]", "mulSum_5.u[5]","mulSum_5.y"}, range={0.0, 1.0, -5, 6}, grid=true, colors={{0,140,72}, {238,46,47}, {217,67,180}, {238,46,47}, {217,67,180},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Multiply.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Multiply.mos new file mode 100644 index 0000000000..d6cb278be8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Multiply.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Multiply", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Multiply1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"product1.u1", "product1.u2", "product1.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mos new file mode 100644 index 0000000000..a1dad689da --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.MultiplyByParameter", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Gain1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"gain1.u", "gain1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PID.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PID.mos new file mode 100644 index 0000000000..ed8dfef357 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PID.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.PID", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="PID1"); +createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.u_s", "limPID.u_m"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.u_s", "limPID.y", "noLimPID.y"}, range={0.0, 1.0, -20.0, 10.0}, grid=true, subPlot=102, colors={{238,46,47}, {0,140,72}, {217,67,180}}); +createPlot(id=1, position={15, 10, 900, 700}, y={"limP.y", "limPI.y", "limPD.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=103, colors={{238,46,47}, {0,140,72}, {217,67,180}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mos new file mode 100644 index 0000000000..3bb35f8a0c --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.PIDInitialDerivativeOutput", tolerance=1e-06, stopTime=0.2, resultFile="PIDInitialDerivativeOutput"); +createPlot(id=1, position={31, 124, 592, 372}, y={"limPID.y", "limPD.y", "limPID.D.y", "limPD.D.y"}, range={0.0, 1.0, -0.2, 0.6}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {0,0,0}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mos new file mode 100644 index 0000000000..81d0c5059b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.PIDInitialState", tolerance=1e-06, resultFile="PIDInitialState"); +createPlot(id=1, position={35, 35, 926, 623}, y={"limPID.I.y", "limPID.D.y", "limPI.I.y", "limPID.D.u"}, range={0.0, 1.0, -0.6, 0.5}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDScale.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDScale.mos new file mode 100644 index 0000000000..90094594bf --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDScale.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.PIDScale", method="CVode", stopTime=100, tolerance=1e-06, resultFile="PIDScale"); +createPlot(id=2, position={577, 61, 1112, 827}, y={"pidSca.y", "pidNoSca.y"}, range={0.0, 100.0, -1.5, 1.5}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=2, position={577, 61, 1112, 827}, y={"pla1.y", "pla2.y", "pidSca.u_s"}, range={0.0, 100.0, -500.0, 1500.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}, {0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mos new file mode 100644 index 0000000000..dfed06121a --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.PIDWithReset", stopTime=10, method="Cvode", tolerance=1e-06, resultFile="CDL_PIDWithReset"); +createPlot(id=1, position={35, 35, 800, 1027}, y={"limPIDPar.u_s", "limPIDPar.u_m", "limPIDPar.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 800, 1027}, y={"limPIDInp.u_s", "limPIDInp.u_m", "limPIDInp.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 800, 1027}, y={"limPIPar.u_s", "limPIPar.u_m", "limPIPar.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 800, 1027}, y={"limPIInp.u_s", "limPIInp.u_m", "limPIInp.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=4, colors={{28,108,200}, {238,46,47}, {0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mos new file mode 100644 index 0000000000..2da903f1f5 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.PIDWithResetScale", method="CVode", stopTime=100, tolerance=1e-06, resultFile="PIDWithResetScale"); +createPlot(id=2, position={577, 61, 1454, 979}, y={"pidSca.y", "pidNoSca.y"}, range={0.0, 100.0, -2.0, 2.0}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=2, position={577, 61, 1454, 979}, y={"pla1.y", "pla2.y", "pidSca.u_s"}, range={0.0, 100.0, -500.0, 1500.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=2, position={577, 61, 1454, 979}, y={"pidSca.trigger"}, range={0.0, 100.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Ramp.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Ramp.mos new file mode 100644 index 0000000000..60c8c6da60 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Ramp.mos @@ -0,0 +1,8 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Ramp", method="Cvode", tolerance=1e-06, stopTime=10.0, resultFile="rampUpDown"); +createPlot(id=1, position={15, 15, 1034, 1198}, y={"ramUp.u", "ramUp.y", "ramUp1.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}, {0,140,72}}, timeUnit="s", displayUnits={"1", "1", "1"}); +createPlot(id=1, position={15, 15, 1034, 1198}, y={"ramUp.active"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 1034, 1198}, y={"ramUpDow.u", "ramUpDow.y"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"1", "1"}); +createPlot(id=1, position={15, 15, 1034, 1198}, y={"ramUpDow.active"}, range={0.0, 10.0, -0.5, 1.5}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1059, 15, 1002, 1200}, y={"ramUpDow1.u", "ramUpDow1.y"}, range={0.0, 10.0, -0.1, 1.1}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"1", "1"}); +createPlot(id=2, position={1059, 15, 1002, 1200}, y={"ramUpDow1.active"}, range={0.0, 10.0, -0.1, 1.1}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Round.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Round.mos new file mode 100644 index 0000000000..5376e81072 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Round.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Round", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Round1"); +createPlot(id=1, position={15, 10, 1475, 1167}, y={"round1.u", "round1.y"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, colors={{238,46,47}, {28,108,200}}); +createPlot(id=1, position={15, 10, 1475, 385}, y={"round2.u", "round2.y"}, range={0.0, 1.0, -0.5, 0.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 10, 1475, 385}, y={"round3.u", "round3.y"}, range={0.0, 1.0, -50.0, 50.0}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sin.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sin.mos new file mode 100644 index 0000000000..fe76afad53 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sin.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Sin", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Sin1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"sin1.u", "sin1.y"}, range={0.0, 1.0, -2, 7.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sort.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sort.mos new file mode 100644 index 0000000000..42334ec0d9 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sort.mos @@ -0,0 +1,8 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Sort", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Sort1"); +createPlot(id=1, position={24, 14, 959, 865}, y={"sorAsc.u[1]", "sorAsc.u[2]", "sorAsc.u[3]", "sorAsc.u[4]", "sorAsc.u[5]"}, range={0.0, 1.0, -4.0, 6.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="s"); +createPlot(id=1, position={24, 14, 959, 865}, y={"sorAsc.y[1]", "sorAsc.y[2]", "sorAsc.y[3]", "sorAsc.y[4]", "sorAsc.y[5]"}, range={0.0, 1.0, -4.0, 6.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="s"); +createPlot(id=1, position={24, 14, 959, 865}, y={"sorDes.y[1]", "sorDes.y[2]", "sorDes.y[3]", "sorDes.y[4]", "sorDes.y[5]"}, range={0.0, 1.0, -6.0, 6.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="s"); +createPlot(id=2, position={1001, 330, 1147, 549}, y={"sorAsc.yIdx[1]", "sorAsc.yIdx[2]", "sorAsc.yIdx[3]", "sorAsc.yIdx[4]", "sorAsc.yIdx[5]"}, range={0.0, 1.0, 0.0, 6.0}, grid=true, subPlot=101, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1001, 330, 1147, 549}, y={"sorDes.yIdx[1]", "sorDes.yIdx[2]", "sorDes.yIdx[3]", "sorDes.yIdx[4]", "sorDes.yIdx[5]"}, range={0.0, 1.0, 0.0, 6.0}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); + + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sqrt.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sqrt.mos new file mode 100644 index 0000000000..21d064bb5d --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sqrt.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Sqrt", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Sqrt1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"sqrt1.u", "sqrt1.y"}, range={0.0, 1.0, -1.0, 8.0}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Subtract.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Subtract.mos new file mode 100644 index 0000000000..1327da28af --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Subtract.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Subtract", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="sub1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"sub.u1", "sub.u2", "sub.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Switch.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Switch.mos new file mode 100644 index 0000000000..138dbf3c80 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Switch.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Switch", stopTime=5.0, method="Cvode", tolerance=1e-06, resultFile="ConSwitch"); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=1, y={"switch1.u1","switch1.u2","switch1.u3"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); +createPlot(id=1, position={15, 10, 1000, 600}, subPlot=2, y={"switch1.y"}, range={0.0, 5.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Tan.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Tan.mos new file mode 100644 index 0000000000..d3ddb4e1cb --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Tan.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Reals.Validation.Tan", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Tan1"); +createPlot(id=1, position={15, 10, 590, 420}, y={"tan1.u", "tan1.y"}, range={0.0, 1.0, -15, 15}, grid=true, colors={{238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mos new file mode 100644 index 0000000000..1b486e16f8 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.BooleanExtractSignal", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="BooleanExtractSignal"); +createPlot(id=1, position={15, 15, 704, 972}, y={"extBooSig.u[1]", "extBooSig.u[2]", "extBooSig.u[3]", "extBooSig.u[4]"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=2, position={729, 17, 658, 980}, y={"extBooSig.y[1]", "extBooSig.y[2]", "extBooSig.y[3]"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1407, 17, 744, 982}, y={"extBooSig1.y[1]", "extBooSig1.y[2]", "extBooSig1.y[3]", "extBooSig1.y[4]", "extBooSig1.y[5]"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mos new file mode 100644 index 0000000000..ad9839d4e3 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mos @@ -0,0 +1,17 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.BooleanExtractor", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="BooleanExtractor"); + +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndBoo.u[1]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndBoo.u[2]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndBoo.u[3]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndBoo.u[4]"}, range={0.0, 1.0, 3.0, 5.0}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={757, 15, 678, 400}, y={"extIndBoo.index"}, range={0.0, 1.0, 1.5, 2.5}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={757, 15, 678, 400}, y={"extIndBoo.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={757, 449, 686, 406}, y={"extIndBoo1.index"}, range={0.0, 1.0, 5.0, 7.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={757, 449, 686, 406}, y={"extIndBoo1.y"}, range={0.0, 1.0, 3.5, 4.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={755, 897, 694, 394}, y={"extIndBoo2.index"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={755, 897, 694, 394}, y={"extIndBoo2.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1455, 19, 832, 660}, y={"extIndBoo3.index"}, range={0.0, 1.0, -2.0, 3.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1455, 19, 832, 660}, y={"extIndBoo3.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=6, position={1459, 709, 830, 578}, y={"extIndBoo4.index"}, range={0.0, 1.0, -1.0, 4.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=6, position={1459, 709, 830, 578}, y={"extIndBoo4.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mos new file mode 100644 index 0000000000..98082d08dd --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.BooleanScalarReplicator", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="BooleanScalarReplicator"); +createPlot(id=1, position={15, 10, 500, 420}, y={"booRep.u"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=1, y={"booRep.y[1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=2, y={"booRep.y[2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=3, y={"booRep.y[3]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mos new file mode 100644 index 0000000000..acc52ac599 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.BooleanVectorFilter", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="BooleanVectorFilter"); +createPlot(id=1, position={533, 39, 592, 372}, y={"booFil.u[1]", "booFil.u[2]", "booFil.u[3]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=1, position={533, 39, 592, 372}, y={"booFil.y[1]", "booFil.y[2]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mos new file mode 100644 index 0000000000..fe3e803d24 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.BooleanVectorReplicator", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="BooleanVectorReplicator"); +createPlot(id=1, position={15, 10, 500, 420}, y={"booRep.u[1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=1, y={"booRep.y[1, 1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=2, y={"booRep.y[2, 2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=3, y={"booRep.y[3, 2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mos new file mode 100644 index 0000000000..2ec496a269 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mos @@ -0,0 +1,14 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.IntegerExtractSignal", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="IntegerExtractSignal"); +createPlot(id=1, position={15, 15, 802, 1132}, y={"extIntSig.u[1]"}, range={0.0, 1.0, 0.8, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 802, 1132}, y={"extIntSig.u[2]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 802, 1132}, y={"extIntSig.u[3]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 802, 1132}, y={"extIntSig.u[4]"}, range={0.0, 1.0, 3.5, 4.5}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={827, 17, 744, 1134}, y={"extIntSig.y[1]"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={827, 17, 744, 1134}, y={"extIntSig.y[2]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={827, 17, 744, 1134}, y={"extIntSig.y[3]"}, range={0.0, 1.0, 3.4, 4.6}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1583, 17, 710, 1132}, y={"extIntSig1.y[1]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1583, 17, 710, 1132}, y={"extIntSig1.y[2]"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1583, 17, 710, 1132}, y={"extIntSig1.y[3]"}, range={0.0, 1.0, 3.5, 4.5}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1583, 17, 710, 1132}, y={"extIntSig1.y[4]"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1583, 17, 710, 1132}, y={"extIntSig1.y[5]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=5, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mos new file mode 100644 index 0000000000..1dc36c3099 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mos @@ -0,0 +1,16 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.IntegerExtractor", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="IntegerExtractor"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndInt.u[1]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndInt.u[2]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndInt.u[3]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndInt.u[4]"}, range={0.0, 1.0, 3.0, 5.0}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={757, 15, 678, 400}, y={"extIndInt.index"}, range={0.0, 1.0, 1.5, 2.5}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={757, 15, 678, 400}, y={"extIndInt.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={757, 449, 686, 406}, y={"extIndInt1.index"}, range={0.0, 1.0, 5.0, 7.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={757, 449, 686, 406}, y={"extIndInt1.y"}, range={0.0, 1.0, 3.5, 4.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={755, 897, 694, 394}, y={"extIndInt2.index"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={755, 897, 694, 394}, y={"extIndInt2.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1455, 19, 832, 660}, y={"extIndInt3.index"}, range={0.0, 1.0, -2.0, 3.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1455, 19, 832, 660}, y={"extIndInt3.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=6, position={1459, 709, 830, 578}, y={"extIndInt4.index"}, range={0.0, 1.0, -1.0, 4.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=6, position={1459, 709, 830, 578}, y={"extIndInt4.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mos new file mode 100644 index 0000000000..9de9fefbad --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.IntegerScalarReplicator", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="IntegerScalarReplicator"); +createPlot(id=1, position={15, 10, 500, 750}, subPlot=1, y={"ram.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={15, 10, 500, 750}, subPlot=2, y={"reaToInt.y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=1, y={"intRep.y[1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=2, y={"intRep.y[2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=3, y={"intRep.y[3]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mos new file mode 100644 index 0000000000..9070f44105 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.IntegerVectorFilter", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="IntegerVectorFilter"); +createPlot(id=1, position={144, 30, 592, 372}, y={"intFil.u[1]", "intFil.u[2]", "intFil.u[3]"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, colors={{28,108,200}, {28,108,200}, {28,108,200}}, timeUnit="s"); +createPlot(id=1, position={144, 30, 592, 372}, y={"intFil.y[1]", "intFil.y[2]"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}, timeUnit="s"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mos new file mode 100644 index 0000000000..ce3d08d903 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.IntegerVectorReplicator", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="IntegerVectorReplicator"); +createPlot(id=1, position={15, 10, 500, 750}, subPlot=1, y={"ram[1].y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={15, 10, 500, 750}, subPlot=2, y={"reaToInt[1].y"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=1, y={"intRep.y[1, 1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=2, y={"intRep.y[2, 2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=3, y={"intRep.y[3, 2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mos new file mode 100644 index 0000000000..f5c9022353 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mos @@ -0,0 +1,16 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.RealExtractSignal", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="ExtractSignal1"); +createPlot(id=1, position={15, 10, 592, 1106}, y={"extSig.u[1]"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 10, 592, 1106}, y={"extSig.u[2]"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 10, 592, 1106}, y={"extSig.u[3]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 10, 592, 1106}, y={"extSig.u[4]"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 10, 592, 1106}, y={"extSig.u[5]"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, subPlot=5, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={622, 12, 574, 1106}, y={"extSig.y[1]"}, range={0.0, 1.0, -4.0, 4.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={622, 12, 574, 1106}, y={"extSig.y[2]"}, range={0.0, 1.0, -0.2, 0.6}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={622, 12, 574, 1106}, y={"extSig.y[3]"}, range={0.0, 1.0, -3.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1207, 13, 660, 1104}, y={"extSig1.y[1]"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1207, 13, 660, 1104}, y={"extSig1.y[2]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1207, 13, 660, 1104}, y={"extSig1.y[3]"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1207, 13, 660, 1104}, y={"extSig1.y[4]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1207, 13, 660, 1104}, y={"extSig1.y[5]"}, range={0.0, 1.0, -5.0, 5.0}, grid=true, subPlot=5, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={1207, 13, 660, 1104}, y={"extSig1.y[6]"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=6, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractor.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractor.mos new file mode 100644 index 0000000000..a76f4cbe0c --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractor.mos @@ -0,0 +1,16 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.RealExtractor", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="ExtractIndSignal"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndSig.u[1]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndSig.u[2]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndSig.u[3]"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 730, 1276}, y={"extIndSig.u[4]"}, range={0.0, 1.0, 3.0, 5.0}, grid=true, subPlot=4, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={757, 15, 678, 400}, y={"extIndSig.index"}, range={0.0, 1.0, 1.5, 2.5}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={757, 15, 678, 400}, y={"extIndSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={757, 449, 686, 406}, y={"extIndSig1.index"}, range={0.0, 1.0, 5.0, 7.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=3, position={757, 449, 686, 406}, y={"extIndSig1.y"}, range={0.0, 1.0, 3.5, 4.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={755, 897, 694, 394}, y={"extIndSig2.index"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={755, 897, 694, 394}, y={"extIndSig2.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1455, 19, 832, 660}, y={"extIndSig3.index"}, range={0.0, 1.0, -2.0, 3.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=5, position={1455, 19, 832, 660}, y={"extIndSig3.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=6, position={1459, 709, 830, 578}, y={"extIndSig4.index"}, range={0.0, 1.0, -1.0, 4.0}, grid=true, subPlot=1, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=6, position={1459, 709, 830, 578}, y={"extIndSig4.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="s"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mos new file mode 100644 index 0000000000..3f4f56eb09 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.RealScalarReplicator", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="RealScalarReplicator"); +createPlot(id=1, position={15, 10, 500, 420}, y={"reaRep.u"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=1, y={"reaRep.y[1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=2, y={"reaRep.y[2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=3, y={"reaRep.y[3]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mos new file mode 100644 index 0000000000..cc4c72e85e --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.RealVectorFilter", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="RealVectorFilter"); +createPlot(id=1, position={35, 35, 592, 372}, y={"reaFil.u[1]", "reaFil.u[2]", "reaFil.u[3]"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}}, timeUnit="s"); +createPlot(id=1, position={35, 35, 592, 372}, y={"reaFil.y[1]", "reaFil.y[2]"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mos new file mode 100644 index 0000000000..83416d24b1 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Routing.Validation.RealVectorReplicator", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="RealVectorReplicator"); +createPlot(id=1, position={15, 10, 500, 420}, y={"reaRep.u[1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=1, y={"reaRep.y[1, 1]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=2, y={"reaRep.y[2, 2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={530, 10, 500, 750}, subPlot=3, y={"reaRep.y[3, 2]"}, range={0.0, 1.0, -3.5, 3.5}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/Assert.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/Assert.mos new file mode 100644 index 0000000000..3b1bbdd00c --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/Assert.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Utilities.Validation.Assert", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Assert"); +createPlot(id=1, position={15, 10, 590, 420}, y={"assert.u"}, range={0.0, 1.0, -2.5, 3.5}, grid=true, colors={{0,140,72}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mos new file mode 100644 index 0000000000..73ddb8e31b --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mos @@ -0,0 +1,14 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Utilities.Validation.SunRiseSet", + method="CVode", tolerance=1e-06, stopTime=3.1536e+007, numberOfIntervals=5000, resultFile="SunRiseSet"); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=1, y={"sunRiseSetArctic.nextSunRise", "sunRiseSetArctic.nextSunSet","sunRiseSetArctic.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=2, y={"sunRiseSetSf.nextSunRise", "sunRiseSetSf.nextSunSet","sunRiseSetSf.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=3, y={"sunRiseSetAntarctic.nextSunRise", "sunRiseSetAntarctic.nextSunSet","sunRiseSetAntarctic.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=4, y={"sunRiseSetSyd.nextSunRise", "sunRiseSetSyd.nextSunSet","sunRiseSetSyd.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mos new file mode 100644 index 0000000000..353ad15e11 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mos @@ -0,0 +1,14 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Utilities.Validation.SunRiseSetNegativeStartTime", + method="dassl", tolerance=1e-06, startTime = -43200, stopTime=259200, numberOfIntervals=500, resultFile="SunRiseSetNegativeStartTime"); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=1, y={"sunRiseSetArctic.nextSunRise", "sunRiseSetArctic.nextSunSet","sunRiseSetArctic.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=2, y={"sunRiseSetSf.nextSunRise", "sunRiseSetSf.nextSunSet","sunRiseSetSf.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=3, y={"sunRiseSetAntarctic.nextSunRise", "sunRiseSetAntarctic.nextSunSet","sunRiseSetAntarctic.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=4, y={"sunRiseSetSyd.nextSunRise", "sunRiseSetSyd.nextSunSet","sunRiseSetSyd.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mos new file mode 100644 index 0000000000..673ead9163 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mos @@ -0,0 +1,14 @@ +simulateModel("IBPSA.Controls.OBC.CDL.Utilities.Validation.SunRiseSetPositiveStartTime", + method="dassl", tolerance=1e-06, startTime = 43200, stopTime=345600, numberOfIntervals=500, resultFile="SunRiseSetPositiveStartTime"); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=1, y={"sunRiseSetArctic.nextSunRise", "sunRiseSetArctic.nextSunSet","sunRiseSetArctic.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=2, y={"sunRiseSetSf.nextSunRise", "sunRiseSetSf.nextSunSet","sunRiseSetSf.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=3, y={"sunRiseSetAntarctic.nextSunRise", "sunRiseSetAntarctic.nextSunSet","sunRiseSetAntarctic.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); +createPlot(id=1, + position={15, 10, 590, 600}, subPlot=4, y={"sunRiseSetSyd.nextSunRise", "sunRiseSetSyd.nextSunSet","sunRiseSetSyd.sunUp"}, + range={0.0, 370, -2, 24}, grid=true, colors={{0,140,72}, {238,46,47}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mos new file mode 100644 index 0000000000..85f9b01aac --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.SetPoints.Validation.SupplyReturnTemperatureReset", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="SupplyReturnTemperatureReset1"); +createPlot(id = 1, position = {35, 20, 789, 637}, x = "heaCur.TOut", y = {"heaCur.TSup", "heaCur.TRet", "heaCur.TOut"}, range = {262.0, 304.0, 70.0, (-20.0)}, autoscale = true, autoerase = true, autoreplot = true, grid = true, color = true, leftTitleType = 1, bottomTitleType = 1); +createPlot(id = 1, position = {35, 20, 789, 316}, x = "heaCur.TOut", y = {"heaCur1.TSetZon", "heaCur1.TSup", "heaCur1.TRet"}, range = {262.0, 304.0, 70.0, 10.0}, autoscale = true, autoerase = true, autoreplot = true, grid = true, color = true, subPlot = 2, leftTitleType = 1, bottomTitleType = 1); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mos new file mode 100644 index 0000000000..33af396a5d --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.SetPoints.Validation.SupplyReturnTemperatureResetExponent", method="Cvode", tolerance=1e-6, stopTime=1.0, resultFile="SupplyReturnTemperatureResetExponent"); +createPlot(id=1, position={119, 70, 789, 637}, x="heaCur.TOut", y={"heaCur.TSup", "heaCur.TRet", "heaCurM.TSup", "heaCurM.TRet"}, range={-10.0, 20.0, 18.0, 42.0}, grid=true, colors={{28,108,200}, {238,46,47}, {217,67,180}, {0,0,0}}, timeUnit="degC", displayUnits={"degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mos new file mode 100644 index 0000000000..32183621bc --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.Validation.OptimalStartCoolingNegativeStartTime", method="Cvode", startTime=-660000,stopTime=0, tolerance=1e-07, resultFile="OptimalStartCoolingNegativeStartTime"); +createPlot(id=1, position={10, 9, 1161, 1054}, subPlot=1, y={"optStaCoo.tOpt"}, range={-691200.0, 0.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={10, 9, 1161, 346}, subPlot=2, y={"TSetCoo.y", "optStaCoo.TZon"}, range={-691200.0, 0.0, 16, 24}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={10, 9, 1161, 346}, subPlot=3, y={"optStaCoo.optOn"}, range={-691200.0, 0.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mos new file mode 100644 index 0000000000..793946087e --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.Validation.OptimalStartCoolingPositiveStartTime", method="Cvode", startTime=34000,stopTime=864000, tolerance=1e-07, resultFile="OptimalStartCoolingPositiveStartTime"); +createPlot(id=1, position={10, 9, 1161, 1054}, subPlot=1, y={"optStaCoo.tOpt"}, range={34000.0, 604800.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={10, 9, 1161, 346}, subPlot=2, y={"TSetCoo.y", "optStaCoo.TZon"}, range={34000.0, 604800.0, 16, 24}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={10, 9, 1161, 346}, subPlot=3, y={"optStaCoo.optOn"}, range={34000.0, 604800.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeating.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeating.mos new file mode 100644 index 0000000000..6438409465 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeating.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.Validation.OptimalStartHeating", method="Cvode", startTime=-172800, stopTime=604800, tolerance=1e-07, resultFile="OptimalStartHeating"); +createPlot(id=1, position={10, 9, 1161, 1054}, subPlot=1, y={"optStaHea.tOpt"}, range={-172800.0, 604800.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={10, 9, 1161, 346}, subPlot=2, y={"TSetHea.y", "optStaHea.TZon"}, range={-172800.0, 604800.0, 16, 24}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={10, 9, 1161, 346}, subPlot=3, y={"optStaHea.optOn"}, range={-172800.0, 604800.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mos new file mode 100644 index 0000000000..b724c606bd --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.Validation.OptimalStartHeatingCooling", method="Cvode", stopTime=2419200, tolerance=1e-06, resultFile="OptimalStartHeatingCooling"); +createPlot(id=1, position={2, 1, 859, 713}, subPlot=1, y={"optSta.tOpt"}, range={0.0, 604800.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={2, 1, 859, 352}, subPlot=2, y={"optSta.optCoo.tOpt","optSta.optHea.tOpt"}, range={0.0, 604800.0, 16, 24}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=2, position={876, 5, 857, 710}, subPlot=1, y={"optSta.optOn"}, range={0.0, 604800.0, 0, 20000.0}, grid=true, colors={{28,108,200}}); +createPlot(id=2, position={876, 5, 857, 351}, subPlot=2, y={"optSta.optCoo.optOn","optSta.optHea.optOn"}, range={0.0, 604800.0, 0, 20000.0}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=3, position={1748, 7, 959, 708}, subPlot=1, y={"TSetHea.y","TSetCoo.y","optSta.TZon"}, range={0.0, 604800.0, 16, 24}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mos new file mode 100644 index 0000000000..3538b2ba9f --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.Validation.OptimalStartNoHeatingNoCooling", stopTime=2419200, method="Cvode", tolerance=1e-06, resultFile="OptimalStartNoHeatingNoCooling"); +createPlot(id=1, position={10, 9, 1161, 1054},subPlot=1, y={"optSta.tOpt"}, range={0.0, 28.0, -1.5, 1.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={10, 9, 1161, 346},subPlot=2, y={"optSta.optOn"}, range={0.0, 2500000.0, -1.5, 1.5}, grid=true, colors={{28,108,200}}); +createPlot(id=1, position={10, 9, 1161, 346},subPlot=3, y={"TSetHea.y","TSetCoo.y","optSta.TZon"}, range={0.0, 2500000.0, 10.0, 35.0}, grid=true, colors={{238,46,47},{0,140,72},{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos new file mode 100644 index 0000000000..301891fb65 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos @@ -0,0 +1,6 @@ +simulateModel("IBPSA.Controls.OBC.Utilities.Validation.PIDWithInputGains", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="PIDWithInputGains"); +createPlot(id=1, position={15, 15, 800, 600}, y={"PID.k", "PIDWitInpGai.k"}, range={0.0, 1.0, 0.9, 1.3}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 800, 600}, y={"PID.Ti", "PIDWitInpGai.Ti"}, range={0.0, 1.0, 0.4, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 800, 600}, y={"PID.Td", "PIDWitInpGai.Td"}, range={0.0, 1.0, 0.05, 0.25}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 800, 600}, y={"PID.y", "PIDWitInpGai.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); + From f8c58323f61893381d4aa2d08404bac80c2abec5 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 23:12:37 +0000 Subject: [PATCH 04/15] Added OBC package --- IBPSA/Controls/OBC/CDL/Constants.mo | 68 ++ .../OBC/CDL/Conversions/BooleanToInteger.mo | 101 +++ .../OBC/CDL/Conversions/BooleanToReal.mo | 101 +++ .../OBC/CDL/Conversions/IntegerToReal.mo | 66 ++ .../OBC/CDL/Conversions/RealToInteger.mo | 73 +++ .../Validation/BooleanToInteger.mo | 50 ++ .../Conversions/Validation/BooleanToReal.mo | 50 ++ .../Conversions/Validation/IntegerToReal.mo | 63 ++ .../Conversions/Validation/RealToInteger.mo | 52 ++ .../OBC/CDL/Conversions/Validation/package.mo | 37 ++ .../CDL/Conversions/Validation/package.order | 4 + IBPSA/Controls/OBC/CDL/Conversions/package.mo | 30 + .../OBC/CDL/Conversions/package.order | 5 + .../OBC/CDL/Discrete/FirstOrderHold.mo | 137 ++++ IBPSA/Controls/OBC/CDL/Discrete/Sampler.mo | 137 ++++ .../Controls/OBC/CDL/Discrete/TriggeredMax.mo | 110 ++++ .../OBC/CDL/Discrete/TriggeredMovingMean.mo | 200 ++++++ .../OBC/CDL/Discrete/TriggeredSampler.mo | 101 +++ IBPSA/Controls/OBC/CDL/Discrete/UnitDelay.mo | 135 ++++ .../CDL/Discrete/Validation/FirstOrderHold.mo | 62 ++ .../OBC/CDL/Discrete/Validation/Sampler.mo | 58 ++ .../CDL/Discrete/Validation/TriggeredMax.mo | 64 ++ .../Validation/TriggeredMovingMean.mo | 83 +++ .../Discrete/Validation/TriggeredSampler.mo | 72 ++ .../OBC/CDL/Discrete/Validation/UnitDelay.mo | 58 ++ .../CDL/Discrete/Validation/ZeroOrderHold.mo | 62 ++ .../OBC/CDL/Discrete/Validation/package.mo | 41 ++ .../OBC/CDL/Discrete/Validation/package.order | 7 + .../OBC/CDL/Discrete/ZeroOrderHold.mo | 123 ++++ IBPSA/Controls/OBC/CDL/Discrete/package.mo | 61 ++ IBPSA/Controls/OBC/CDL/Discrete/package.order | 8 + IBPSA/Controls/OBC/CDL/Integers/Abs.mo | 109 ++++ IBPSA/Controls/OBC/CDL/Integers/Add.mo | 70 ++ .../Controls/OBC/CDL/Integers/AddParameter.mo | 67 ++ IBPSA/Controls/OBC/CDL/Integers/Change.mo | 93 +++ IBPSA/Controls/OBC/CDL/Integers/Equal.mo | 74 +++ IBPSA/Controls/OBC/CDL/Integers/Greater.mo | 74 +++ .../Controls/OBC/CDL/Integers/GreaterEqual.mo | 78 +++ .../OBC/CDL/Integers/GreaterEqualThreshold.mo | 80 +++ .../OBC/CDL/Integers/GreaterThreshold.mo | 76 +++ IBPSA/Controls/OBC/CDL/Integers/Less.mo | 74 +++ IBPSA/Controls/OBC/CDL/Integers/LessEqual.mo | 78 +++ .../OBC/CDL/Integers/LessEqualThreshold.mo | 80 +++ .../OBC/CDL/Integers/LessThreshold.mo | 71 ++ IBPSA/Controls/OBC/CDL/Integers/Max.mo | 58 ++ IBPSA/Controls/OBC/CDL/Integers/Min.mo | 58 ++ IBPSA/Controls/OBC/CDL/Integers/MultiSum.mo | 84 +++ IBPSA/Controls/OBC/CDL/Integers/Multiply.mo | 71 ++ IBPSA/Controls/OBC/CDL/Integers/OnCounter.mo | 79 +++ .../OBC/CDL/Integers/Sources/Constant.mo | 62 ++ .../OBC/CDL/Integers/Sources/Pulse.mo | 162 +++++ .../OBC/CDL/Integers/Sources/TimeTable.mo | 221 +++++++ .../Integers/Sources/Validation/Constant.mo | 44 ++ .../CDL/Integers/Sources/Validation/Pulse.mo | 67 ++ .../Integers/Sources/Validation/TimeTable.mo | 68 ++ .../Validation/TimeTableNegativeStartTime.mo | 72 ++ .../Integers/Sources/Validation/package.mo | 37 ++ .../Integers/Sources/Validation/package.order | 4 + .../OBC/CDL/Integers/Sources/package.mo | 33 + .../OBC/CDL/Integers/Sources/package.order | 4 + IBPSA/Controls/OBC/CDL/Integers/Stage.mo | 143 ++++ IBPSA/Controls/OBC/CDL/Integers/Subtract.mo | 68 ++ IBPSA/Controls/OBC/CDL/Integers/Switch.mo | 118 ++++ .../OBC/CDL/Integers/Validation/Abs.mo | 63 ++ .../OBC/CDL/Integers/Validation/Add.mo | 82 +++ .../CDL/Integers/Validation/AddParameter.mo | 63 ++ .../OBC/CDL/Integers/Validation/Change.mo | 93 +++ .../OBC/CDL/Integers/Validation/Equal.mo | 84 +++ .../OBC/CDL/Integers/Validation/Greater.mo | 82 +++ .../CDL/Integers/Validation/GreaterEqual.mo | 84 +++ .../Validation/GreaterEqualThreshold.mo | 64 ++ .../Integers/Validation/GreaterThreshold.mo | 64 ++ .../OBC/CDL/Integers/Validation/Less.mo | 84 +++ .../OBC/CDL/Integers/Validation/LessEqual.mo | 82 +++ .../Integers/Validation/LessEqualThreshold.mo | 64 ++ .../CDL/Integers/Validation/LessThreshold.mo | 64 ++ .../OBC/CDL/Integers/Validation/Max.mo | 82 +++ .../OBC/CDL/Integers/Validation/Min.mo | 82 +++ .../OBC/CDL/Integers/Validation/MultiSum.mo | 102 +++ .../OBC/CDL/Integers/Validation/Multiply.mo | 88 +++ .../OBC/CDL/Integers/Validation/OnCounter.mo | 58 ++ .../OBC/CDL/Integers/Validation/Stage.mo | 85 +++ .../OBC/CDL/Integers/Validation/Subtract.mo | 81 +++ .../OBC/CDL/Integers/Validation/Switch.mo | 102 +++ .../OBC/CDL/Integers/Validation/package.mo | 37 ++ .../OBC/CDL/Integers/Validation/package.order | 21 + IBPSA/Controls/OBC/CDL/Integers/package.mo | 37 ++ IBPSA/Controls/OBC/CDL/Integers/package.order | 23 + .../OBC/CDL/Interfaces/BooleanInput.mo | 39 ++ .../OBC/CDL/Interfaces/BooleanOutput.mo | 46 ++ .../OBC/CDL/Interfaces/IntegerInput.mo | 40 ++ .../OBC/CDL/Interfaces/IntegerOutput.mo | 46 ++ .../Controls/OBC/CDL/Interfaces/RealInput.mo | 40 ++ .../Controls/OBC/CDL/Interfaces/RealOutput.mo | 46 ++ IBPSA/Controls/OBC/CDL/Interfaces/package.mo | 41 ++ .../Controls/OBC/CDL/Interfaces/package.order | 6 + IBPSA/Controls/OBC/CDL/Logical/And.mo | 92 +++ IBPSA/Controls/OBC/CDL/Logical/Change.mo | 71 ++ IBPSA/Controls/OBC/CDL/Logical/Edge.mo | 73 +++ IBPSA/Controls/OBC/CDL/Logical/FallingEdge.mo | 74 +++ IBPSA/Controls/OBC/CDL/Logical/Latch.mo | 151 +++++ IBPSA/Controls/OBC/CDL/Logical/MultiAnd.mo | 92 +++ IBPSA/Controls/OBC/CDL/Logical/MultiOr.mo | 91 +++ IBPSA/Controls/OBC/CDL/Logical/Nand.mo | 93 +++ IBPSA/Controls/OBC/CDL/Logical/Nor.mo | 92 +++ IBPSA/Controls/OBC/CDL/Logical/Not.mo | 63 ++ IBPSA/Controls/OBC/CDL/Logical/Or.mo | 93 +++ IBPSA/Controls/OBC/CDL/Logical/Pre.mo | 88 +++ IBPSA/Controls/OBC/CDL/Logical/Proof.mo | 520 +++++++++++++++ .../OBC/CDL/Logical/Sources/Constant.mo | 76 +++ .../Controls/OBC/CDL/Logical/Sources/Pulse.mo | 210 ++++++ .../OBC/CDL/Logical/Sources/SampleTrigger.mo | 131 ++++ .../OBC/CDL/Logical/Sources/TimeTable.mo | 143 ++++ .../Logical/Sources/Validation/Constant.mo | 44 ++ .../CDL/Logical/Sources/Validation/Pulse.mo | 146 +++++ .../Validation/PulseNegativeStartTime.mo | 136 ++++ .../Validation/PulsePositiveStartTime.mo | 136 ++++ .../Sources/Validation/SampleTrigger.mo | 77 +++ .../SampleTriggerNegativeStartTime.mo | 74 +++ .../SampleTriggerPositiveStartTime.mo | 75 +++ .../Logical/Sources/Validation/TimeTable.mo | 64 ++ .../Validation/TimeTableNegativeStartTime.mo | 68 ++ .../CDL/Logical/Sources/Validation/package.mo | 37 ++ .../Logical/Sources/Validation/package.order | 9 + .../OBC/CDL/Logical/Sources/package.mo | 33 + .../OBC/CDL/Logical/Sources/package.order | 5 + IBPSA/Controls/OBC/CDL/Logical/Switch.mo | 158 +++++ IBPSA/Controls/OBC/CDL/Logical/Timer.mo | 190 ++++++ .../OBC/CDL/Logical/TimerAccumulating.mo | 212 ++++++ IBPSA/Controls/OBC/CDL/Logical/Toggle.mo | 178 +++++ IBPSA/Controls/OBC/CDL/Logical/TrueDelay.mo | 140 ++++ .../Controls/OBC/CDL/Logical/TrueFalseHold.mo | 187 ++++++ .../OBC/CDL/Logical/Validation/And.mo | 58 ++ .../OBC/CDL/Logical/Validation/Change.mo | 64 ++ .../OBC/CDL/Logical/Validation/Edge.mo | 64 ++ .../OBC/CDL/Logical/Validation/FallingEdge.mo | 64 ++ .../OBC/CDL/Logical/Validation/Latch.mo | 221 +++++++ .../OBC/CDL/Logical/Validation/MultiAnd.mo | 112 ++++ .../OBC/CDL/Logical/Validation/MultiOr.mo | 112 ++++ .../OBC/CDL/Logical/Validation/Nand.mo | 58 ++ .../OBC/CDL/Logical/Validation/Nor.mo | 58 ++ .../OBC/CDL/Logical/Validation/Not.mo | 51 ++ .../Controls/OBC/CDL/Logical/Validation/Or.mo | 58 ++ .../OBC/CDL/Logical/Validation/Proof.mo | 156 +++++ .../OBC/CDL/Logical/Validation/Switch.mo | 70 ++ .../OBC/CDL/Logical/Validation/Timer.mo | 77 +++ .../Logical/Validation/TimerAccumulating.mo | 93 +++ .../TimerAccumulatingNegativeStartTime.mo | 96 +++ .../Validation/TimerNegativeStartTime.mo | 67 ++ .../OBC/CDL/Logical/Validation/Toggle.mo | 221 +++++++ .../OBC/CDL/Logical/Validation/TrueDelay.mo | 174 +++++ .../CDL/Logical/Validation/TrueFalseHold.mo | 179 +++++ .../CDL/Logical/Validation/VariablePulse.mo | 156 +++++ .../Validation/VariablePulseMinHold.mo | 60 ++ .../OBC/CDL/Logical/Validation/Xor.mo | 58 ++ .../OBC/CDL/Logical/Validation/package.mo | 37 ++ .../OBC/CDL/Logical/Validation/package.order | 23 + .../Controls/OBC/CDL/Logical/VariablePulse.mo | 314 +++++++++ IBPSA/Controls/OBC/CDL/Logical/Xor.mo | 92 +++ IBPSA/Controls/OBC/CDL/Logical/package.mo | 34 + IBPSA/Controls/OBC/CDL/Logical/package.order | 23 + .../CDL/Psychrometrics/DewPoint_TDryBulPhi.mo | 155 +++++ .../SpecificEnthalpy_TDryBulPhi.mo | 139 ++++ .../Validation/DewPoint_TDryBulPhi.mo | 87 +++ .../Validation/SpecificEnthalpy_TDryBulPhi.mo | 63 ++ .../Validation/WetBulb_TDryBulPhi.mo | 99 +++ .../CDL/Psychrometrics/Validation/package.mo | 37 ++ .../Psychrometrics/Validation/package.order | 3 + .../CDL/Psychrometrics/WetBulb_TDryBulPhi.mo | 194 ++++++ .../OBC/CDL/Psychrometrics/package.mo | 60 ++ .../OBC/CDL/Psychrometrics/package.order | 4 + IBPSA/Controls/OBC/CDL/Reals/Abs.mo | 78 +++ IBPSA/Controls/OBC/CDL/Reals/Acos.mo | 81 +++ IBPSA/Controls/OBC/CDL/Reals/Add.mo | 83 +++ IBPSA/Controls/OBC/CDL/Reals/AddParameter.mo | 79 +++ IBPSA/Controls/OBC/CDL/Reals/Asin.mo | 81 +++ IBPSA/Controls/OBC/CDL/Reals/Atan.mo | 93 +++ IBPSA/Controls/OBC/CDL/Reals/Atan2.mo | 117 ++++ IBPSA/Controls/OBC/CDL/Reals/Average.mo | 69 ++ IBPSA/Controls/OBC/CDL/Reals/Cos.mo | 97 +++ IBPSA/Controls/OBC/CDL/Reals/Derivative.mo | 121 ++++ IBPSA/Controls/OBC/CDL/Reals/Divide.mo | 91 +++ IBPSA/Controls/OBC/CDL/Reals/Exp.mo | 74 +++ IBPSA/Controls/OBC/CDL/Reals/Greater.mo | 261 ++++++++ .../OBC/CDL/Reals/GreaterThreshold.mo | 242 +++++++ IBPSA/Controls/OBC/CDL/Reals/Hysteresis.mo | 146 +++++ .../OBC/CDL/Reals/IntegratorWithReset.mo | 136 ++++ IBPSA/Controls/OBC/CDL/Reals/Less.mo | 258 ++++++++ IBPSA/Controls/OBC/CDL/Reals/LessThreshold.mo | 234 +++++++ IBPSA/Controls/OBC/CDL/Reals/LimitSlewRate.mo | 152 +++++ IBPSA/Controls/OBC/CDL/Reals/Limiter.mo | 117 ++++ IBPSA/Controls/OBC/CDL/Reals/Line.mo | 234 +++++++ IBPSA/Controls/OBC/CDL/Reals/Log.mo | 85 +++ IBPSA/Controls/OBC/CDL/Reals/Log10.mo | 85 +++ IBPSA/Controls/OBC/CDL/Reals/MatrixGain.mo | 97 +++ IBPSA/Controls/OBC/CDL/Reals/MatrixMax.mo | 64 ++ IBPSA/Controls/OBC/CDL/Reals/MatrixMin.mo | 64 ++ IBPSA/Controls/OBC/CDL/Reals/Max.mo | 63 ++ IBPSA/Controls/OBC/CDL/Reals/Min.mo | 63 ++ IBPSA/Controls/OBC/CDL/Reals/Modulo.mo | 92 +++ IBPSA/Controls/OBC/CDL/Reals/MovingAverage.mo | 185 ++++++ IBPSA/Controls/OBC/CDL/Reals/MultiMax.mo | 61 ++ IBPSA/Controls/OBC/CDL/Reals/MultiMin.mo | 61 ++ IBPSA/Controls/OBC/CDL/Reals/MultiSum.mo | 94 +++ IBPSA/Controls/OBC/CDL/Reals/Multiply.mo | 83 +++ .../OBC/CDL/Reals/MultiplyByParameter.mo | 68 ++ IBPSA/Controls/OBC/CDL/Reals/PID.mo | 604 +++++++++++++++++ IBPSA/Controls/OBC/CDL/Reals/PIDWithReset.mo | 616 ++++++++++++++++++ IBPSA/Controls/OBC/CDL/Reals/Ramp.mo | 144 ++++ IBPSA/Controls/OBC/CDL/Reals/Round.mo | 92 +++ IBPSA/Controls/OBC/CDL/Reals/Sin.mo | 97 +++ IBPSA/Controls/OBC/CDL/Reals/Sort.mo | 102 +++ .../OBC/CDL/Reals/Sources/CalendarTime.mo | 183 ++++++ .../OBC/CDL/Reals/Sources/CivilTime.mo | 137 ++++ .../OBC/CDL/Reals/Sources/Constant.mo | 80 +++ IBPSA/Controls/OBC/CDL/Reals/Sources/Pulse.mo | 164 +++++ IBPSA/Controls/OBC/CDL/Reals/Sources/Ramp.mo | 106 +++ IBPSA/Controls/OBC/CDL/Reals/Sources/Sin.mo | 120 ++++ .../OBC/CDL/Reals/Sources/TimeTable.mo | 328 ++++++++++ .../Sources/Validation/CalendarTimeMonths.mo | 48 ++ .../Validation/CalendarTimeMonthsMinus.mo | 32 + .../Validation/CalendarTimeMonthsPlus.mo | 32 + .../CDL/Reals/Sources/Validation/CivilTime.mo | 41 ++ .../CDL/Reals/Sources/Validation/Constant.mo | 44 ++ .../OBC/CDL/Reals/Sources/Validation/Pulse.mo | 47 ++ .../OBC/CDL/Reals/Sources/Validation/Ramp.mo | 46 ++ .../OBC/CDL/Reals/Sources/Validation/Sin.mo | 47 ++ .../CDL/Reals/Sources/Validation/TimeTable.mo | 123 ++++ .../Validation/TimeTableNegativeStartTime.mo | 91 +++ .../CDL/Reals/Sources/Validation/package.mo | 37 ++ .../Reals/Sources/Validation/package.order | 10 + .../Controls/OBC/CDL/Reals/Sources/package.mo | 33 + .../OBC/CDL/Reals/Sources/package.order | 8 + IBPSA/Controls/OBC/CDL/Reals/Sqrt.mo | 83 +++ IBPSA/Controls/OBC/CDL/Reals/Subtract.mo | 73 +++ IBPSA/Controls/OBC/CDL/Reals/Switch.mo | 124 ++++ IBPSA/Controls/OBC/CDL/Reals/Tan.mo | 97 +++ .../Controls/OBC/CDL/Reals/Validation/Abs.mo | 60 ++ .../Controls/OBC/CDL/Reals/Validation/Acos.mo | 52 ++ .../Controls/OBC/CDL/Reals/Validation/Add.mo | 63 ++ .../OBC/CDL/Reals/Validation/AddParameter.mo | 56 ++ .../Controls/OBC/CDL/Reals/Validation/Asin.mo | 52 ++ .../Controls/OBC/CDL/Reals/Validation/Atan.mo | 55 ++ .../OBC/CDL/Reals/Validation/Atan2.mo | 64 ++ .../OBC/CDL/Reals/Validation/Average.mo | 63 ++ .../Controls/OBC/CDL/Reals/Validation/Cos.mo | 55 ++ .../OBC/CDL/Reals/Validation/Derivative.mo | 130 ++++ .../OBC/CDL/Reals/Validation/Divide.mo | 67 ++ .../Controls/OBC/CDL/Reals/Validation/Exp.mo | 55 ++ .../OBC/CDL/Reals/Validation/Greater.mo | 79 +++ .../CDL/Reals/Validation/GreaterThreshold.mo | 70 ++ .../OBC/CDL/Reals/Validation/Hysteresis.mo | 99 +++ .../Reals/Validation/IntegratorWithReset.mo | 101 +++ .../Controls/OBC/CDL/Reals/Validation/Less.mo | 81 +++ .../OBC/CDL/Reals/Validation/LessThreshold.mo | 70 ++ .../OBC/CDL/Reals/Validation/LimitSlewRate.mo | 166 +++++ .../OBC/CDL/Reals/Validation/Limiter.mo | 57 ++ .../Controls/OBC/CDL/Reals/Validation/Line.mo | 128 ++++ .../Controls/OBC/CDL/Reals/Validation/Log.mo | 55 ++ .../OBC/CDL/Reals/Validation/Log10.mo | 55 ++ .../OBC/CDL/Reals/Validation/MatrixGain.mo | 84 +++ .../OBC/CDL/Reals/Validation/MatrixMax.mo | 75 +++ .../OBC/CDL/Reals/Validation/MatrixMin.mo | 77 +++ .../Controls/OBC/CDL/Reals/Validation/Max.mo | 63 ++ .../Controls/OBC/CDL/Reals/Validation/Min.mo | 63 ++ .../OBC/CDL/Reals/Validation/Modulo.mo | 63 ++ .../OBC/CDL/Reals/Validation/MovingAverage.mo | 113 ++++ .../Validation/MovingAverage_nonZeroStart.mo | 106 +++ .../OBC/CDL/Reals/Validation/MultiMax.mo | 56 ++ .../OBC/CDL/Reals/Validation/MultiMin.mo | 58 ++ .../OBC/CDL/Reals/Validation/MultiSum.mo | 137 ++++ .../OBC/CDL/Reals/Validation/Multiply.mo | 67 ++ .../Reals/Validation/MultiplyByParameter.mo | 59 ++ .../Controls/OBC/CDL/Reals/Validation/PID.mo | 122 ++++ .../Validation/PIDInitialDerivativeOutput.mo | 81 +++ .../CDL/Reals/Validation/PIDInitialState.mo | 88 +++ .../OBC/CDL/Reals/Validation/PIDScale.mo | 120 ++++ .../OBC/CDL/Reals/Validation/PIDWithReset.mo | 167 +++++ .../CDL/Reals/Validation/PIDWithResetScale.mo | 130 ++++ .../Controls/OBC/CDL/Reals/Validation/Ramp.mo | 127 ++++ .../OBC/CDL/Reals/Validation/Round.mo | 76 +++ .../Controls/OBC/CDL/Reals/Validation/Sin.mo | 55 ++ .../Controls/OBC/CDL/Reals/Validation/Sort.mo | 109 ++++ .../Controls/OBC/CDL/Reals/Validation/Sqrt.mo | 55 ++ .../OBC/CDL/Reals/Validation/Subtract.mo | 62 ++ .../OBC/CDL/Reals/Validation/Switch.mo | 66 ++ .../Controls/OBC/CDL/Reals/Validation/Tan.mo | 55 ++ .../OBC/CDL/Reals/Validation/package.mo | 37 ++ .../OBC/CDL/Reals/Validation/package.order | 50 ++ IBPSA/Controls/OBC/CDL/Reals/package.mo | 37 ++ IBPSA/Controls/OBC/CDL/Reals/package.order | 47 ++ .../OBC/CDL/Routing/BooleanExtractSignal.mo | 178 +++++ .../OBC/CDL/Routing/BooleanExtractor.mo | 148 +++++ .../CDL/Routing/BooleanScalarReplicator.mo | 64 ++ .../OBC/CDL/Routing/BooleanVectorFilter.mo | 69 ++ .../CDL/Routing/BooleanVectorReplicator.mo | 67 ++ .../OBC/CDL/Routing/IntegerExtractSignal.mo | 178 +++++ .../OBC/CDL/Routing/IntegerExtractor.mo | 148 +++++ .../CDL/Routing/IntegerScalarReplicator.mo | 64 ++ .../OBC/CDL/Routing/IntegerVectorFilter.mo | 69 ++ .../CDL/Routing/IntegerVectorReplicator.mo | 64 ++ .../OBC/CDL/Routing/RealExtractSignal.mo | 187 ++++++ .../Controls/OBC/CDL/Routing/RealExtractor.mo | 159 +++++ .../OBC/CDL/Routing/RealScalarReplicator.mo | 65 ++ .../OBC/CDL/Routing/RealVectorFilter.mo | 70 ++ .../OBC/CDL/Routing/RealVectorReplicator.mo | 63 ++ .../Validation/BooleanExtractSignal.mo | 94 +++ .../Routing/Validation/BooleanExtractor.mo | 177 +++++ .../Validation/BooleanScalarReplicator.mo | 55 ++ .../Routing/Validation/BooleanVectorFilter.mo | 49 ++ .../Validation/BooleanVectorReplicator.mo | 49 ++ .../Validation/IntegerExtractSignal.mo | 99 +++ .../Routing/Validation/IntegerExtractor.mo | 177 +++++ .../Validation/IntegerScalarReplicator.mo | 62 ++ .../Routing/Validation/IntegerVectorFilter.mo | 49 ++ .../Validation/IntegerVectorReplicator.mo | 57 ++ .../Routing/Validation/RealExtractSignal.mo | 120 ++++ .../CDL/Routing/Validation/RealExtractor.mo | 206 ++++++ .../Validation/RealScalarReplicator.mo | 57 ++ .../Routing/Validation/RealVectorFilter.mo | 49 ++ .../Validation/RealVectorReplicator.mo | 52 ++ .../OBC/CDL/Routing/Validation/package.mo | 37 ++ .../OBC/CDL/Routing/Validation/package.order | 15 + IBPSA/Controls/OBC/CDL/Routing/package.mo | 34 + IBPSA/Controls/OBC/CDL/Routing/package.order | 16 + IBPSA/Controls/OBC/CDL/Types/Extrapolation.mo | 33 + .../OBC/CDL/Types/SimpleController.mo | 41 ++ IBPSA/Controls/OBC/CDL/Types/Smoothness.mo | 25 + IBPSA/Controls/OBC/CDL/Types/ZeroTime.mo | 86 +++ IBPSA/Controls/OBC/CDL/Types/package.mo | 37 ++ IBPSA/Controls/OBC/CDL/Types/package.order | 4 + IBPSA/Controls/OBC/CDL/Utilities/Assert.mo | 68 ++ .../Controls/OBC/CDL/Utilities/SunRiseSet.mo | 391 +++++++++++ .../OBC/CDL/Utilities/Validation/Assert.mo | 51 ++ .../CDL/Utilities/Validation/SunRiseSet.mo | 77 +++ .../Validation/SunRiseSetNegativeStartTime.mo | 68 ++ .../Validation/SunRiseSetPositiveStartTime.mo | 68 ++ .../OBC/CDL/Utilities/Validation/package.mo | 37 ++ .../CDL/Utilities/Validation/package.order | 4 + IBPSA/Controls/OBC/CDL/Utilities/package.mo | 39 ++ .../Controls/OBC/CDL/Utilities/package.order | 3 + IBPSA/Controls/OBC/CDL/package.mo | 64 ++ IBPSA/Controls/OBC/CDL/package.order | 11 + .../BaseClasses/OptimalStartCalculation.mo | 316 +++++++++ .../OBC/Utilities/BaseClasses/package.mo | 29 + .../OBC/Utilities/BaseClasses/package.order | 1 + IBPSA/Controls/OBC/Utilities/OptimalStart.mo | 383 +++++++++++ .../OBC/Utilities/PIDWithInputGains.mo | 565 ++++++++++++++++ .../SetPoints/SupplyReturnTemperatureReset.mo | 486 ++++++++++++++ .../SupplyReturnTemperatureReset.mo | 103 +++ .../SupplyReturnTemperatureResetExponent.mo | 75 +++ .../Utilities/SetPoints/Validation/package.mo | 37 ++ .../SetPoints/Validation/package.order | 2 + .../OBC/Utilities/SetPoints/package.mo | 46 ++ .../OBC/Utilities/SetPoints/package.order | 2 + .../OptimalStartCoolingNegativeStartTime.mo | 153 +++++ .../OptimalStartCoolingPositiveStartTime.mo | 152 +++++ .../Validation/OptimalStartHeating.mo | 150 +++++ .../Validation/OptimalStartHeatingCooling.mo | 211 ++++++ .../OptimalStartNoHeatingNoCooling.mo | 196 ++++++ .../Utilities/Validation/PIDWithInputGains.mo | 158 +++++ .../OBC/Utilities/Validation/package.mo | 31 + .../OBC/Utilities/Validation/package.order | 6 + IBPSA/Controls/OBC/Utilities/package.mo | 37 ++ IBPSA/Controls/OBC/Utilities/package.order | 5 + IBPSA/Controls/OBC/package.mo | 30 + IBPSA/Controls/OBC/package.order | 8 + 367 files changed, 33956 insertions(+) create mode 100644 IBPSA/Controls/OBC/CDL/Constants.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/BooleanToInteger.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/BooleanToReal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/IntegerToReal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/RealToInteger.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Conversions/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/FirstOrderHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Sampler.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/TriggeredMax.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/TriggeredMovingMean.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/TriggeredSampler.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/UnitDelay.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/Sampler.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/ZeroOrderHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Discrete/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Abs.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Add.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/AddParameter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Change.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Equal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Greater.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/GreaterEqual.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/GreaterEqualThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/GreaterThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Less.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/LessEqual.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/LessEqualThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/LessThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Max.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Min.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/MultiSum.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Multiply.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/OnCounter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Constant.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Pulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/TimeTable.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Sources/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Stage.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Subtract.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Switch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Abs.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Add.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/AddParameter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Change.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Equal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Greater.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Less.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqual.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/LessThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Max.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Min.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/MultiSum.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Multiply.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/OnCounter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Stage.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Subtract.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/Switch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Integers/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Integers/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/BooleanInput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/BooleanOutput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/IntegerInput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/IntegerOutput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/RealInput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/RealOutput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Interfaces/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Logical/And.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Change.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Edge.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/FallingEdge.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Latch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/MultiAnd.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/MultiOr.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Nand.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Nor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Not.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Or.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Pre.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Proof.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Constant.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Pulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/SampleTrigger.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/TimeTable.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Sources/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Switch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Timer.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/TimerAccumulating.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Toggle.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/TrueDelay.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/TrueFalseHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/And.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Change.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Edge.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/FallingEdge.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Latch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/MultiAnd.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/MultiOr.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Nand.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Nor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Not.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Or.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Proof.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Switch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Timer.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Toggle.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/TrueDelay.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/Xor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Logical/VariablePulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/Xor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Logical/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/DewPoint_TDryBulPhi.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/SpecificEnthalpy_TDryBulPhi.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/WetBulb_TDryBulPhi.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Psychrometrics/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Abs.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Acos.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Add.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/AddParameter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Asin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Atan.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Atan2.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Average.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Cos.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Derivative.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Divide.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Exp.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Greater.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/GreaterThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Hysteresis.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/IntegratorWithReset.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Less.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/LessThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/LimitSlewRate.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Limiter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Line.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Log.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Log10.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MatrixGain.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MatrixMax.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MatrixMin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Max.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Min.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Modulo.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MovingAverage.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MultiMax.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MultiMin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MultiSum.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Multiply.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/MultiplyByParameter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/PID.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/PIDWithReset.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Ramp.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Round.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sort.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/CalendarTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/CivilTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Constant.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Pulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Ramp.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Sin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/TimeTable.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sources/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Sqrt.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Subtract.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Switch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Tan.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Abs.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Acos.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Add.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/AddParameter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Asin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Atan.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Atan2.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Average.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Cos.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Derivative.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Divide.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Exp.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Greater.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Hysteresis.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Less.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/LessThreshold.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Limiter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Line.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Log.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Log10.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixGain.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMax.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Max.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Min.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Modulo.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMax.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MultiSum.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Multiply.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/PID.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/PIDScale.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Ramp.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Round.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Sin.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Sort.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Sqrt.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Subtract.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Switch.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/Tan.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Reals/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Reals/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Routing/BooleanExtractSignal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/BooleanExtractor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/BooleanScalarReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/BooleanVectorFilter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/BooleanVectorReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/IntegerExtractSignal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/IntegerExtractor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/IntegerScalarReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/IntegerVectorFilter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/IntegerVectorReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/RealExtractSignal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/RealExtractor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/RealScalarReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/RealVectorFilter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/RealVectorReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractor.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Routing/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Routing/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Types/Extrapolation.mo create mode 100644 IBPSA/Controls/OBC/CDL/Types/SimpleController.mo create mode 100644 IBPSA/Controls/OBC/CDL/Types/Smoothness.mo create mode 100644 IBPSA/Controls/OBC/CDL/Types/ZeroTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Types/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Types/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Assert.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/SunRiseSet.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Validation/Assert.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/Validation/package.order create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/Utilities/package.order create mode 100644 IBPSA/Controls/OBC/CDL/package.mo create mode 100644 IBPSA/Controls/OBC/CDL/package.order create mode 100644 IBPSA/Controls/OBC/Utilities/BaseClasses/OptimalStartCalculation.mo create mode 100644 IBPSA/Controls/OBC/Utilities/BaseClasses/package.mo create mode 100644 IBPSA/Controls/OBC/Utilities/BaseClasses/package.order create mode 100644 IBPSA/Controls/OBC/Utilities/OptimalStart.mo create mode 100644 IBPSA/Controls/OBC/Utilities/PIDWithInputGains.mo create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.mo create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mo create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mo create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.order create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/package.mo create mode 100644 IBPSA/Controls/OBC/Utilities/SetPoints/package.order create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeating.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/PIDWithInputGains.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/package.mo create mode 100644 IBPSA/Controls/OBC/Utilities/Validation/package.order create mode 100644 IBPSA/Controls/OBC/Utilities/package.mo create mode 100644 IBPSA/Controls/OBC/Utilities/package.order create mode 100644 IBPSA/Controls/OBC/package.mo create mode 100644 IBPSA/Controls/OBC/package.order diff --git a/IBPSA/Controls/OBC/CDL/Constants.mo b/IBPSA/Controls/OBC/CDL/Constants.mo new file mode 100644 index 0000000000..b964aecc93 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Constants.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL; +package Constants + "Package with constants" + // Machine dependent constants + final constant Real eps=1E-15 + "Biggest number such that 1.0 + eps = 1.0"; + final constant Real small=1E-37 + "Smallest number such that small and -small are representable on the machine"; + final constant Real pi=2*Modelica.Math.asin(1.0) + "Constant number pi, 3.14159265358979"; + annotation ( + Documentation( + info=" +

+This package provides often needed constants. +

+", + revisions=" + +"), + Icon( + coordinateSystem( + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={-9.2597,25.6673}, + fillColor={102,102,102}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{48.017,11.336},{48.017,11.336},{10.766,11.336},{-25.684,10.95},{-34.944,-15.111},{-34.944,-15.111},{-32.298,-15.244},{-32.298,-15.244},{-22.112,0.168},{11.292,0.234},{48.267,-0.097},{48.267,-0.097}}, + smooth=Smooth.Bezier), + Polygon( + origin={-19.9923,-8.3993}, + fillColor={102,102,102}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{3.239,37.343},{3.305,37.343},{-0.399,2.683},{-16.936,-20.071},{-7.808,-28.604},{6.811,-22.519},{9.986,37.145},{9.986,37.145}}, + smooth=Smooth.Bezier), + Polygon( + origin={23.753,-11.5422}, + fillColor={102,102,102}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-10.873,41.478},{-10.873,41.478},{-14.048,-4.162},{-9.352,-24.8},{7.912,-24.469},{16.247,0.27},{16.247,0.27},{13.336,0.071},{13.336,0.071},{7.515,-9.983},{-3.134,-7.271},{-2.671,41.214},{-2.671,41.214}}, + smooth=Smooth.Bezier), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0)})); +end Constants; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/BooleanToInteger.mo b/IBPSA/Controls/OBC/CDL/Conversions/BooleanToInteger.mo new file mode 100644 index 0000000000..bfa2cac483 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/BooleanToInteger.mo @@ -0,0 +1,101 @@ +within IBPSA.Controls.OBC.CDL.Conversions; +block BooleanToInteger + "Convert Boolean to Integer signal" + parameter Integer integerTrue=1 + "Output signal for true Boolean input"; + parameter Integer integerFalse=0 + "Output signal for false Boolean input"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Boolean signal to be converted to an Integer signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Converted input signal as an Integer" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=if u then + integerTrue + else + integerFalse; + annotation ( + defaultComponentName="booToInt", + Documentation( + info=" +

+Block that outputs the Integer +equivalent of the Boolean input. +

+
+  y = if u then integerTrue else integerFalse;
+
+

+where u is of Boolean and y +of Integer type, +and integerTrue and integerFalse are parameters. +

+", + revisions=" +
    +
  • +May 17, 2022, by Hongxiang Fu:
    +Corrected documentation texts where the variables were described with wrong types.
    +This is for +Buildings, issue 3016. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-86,78},{-34,26}}, + textColor={255,0,255}, + textString="B"), + Polygon( + points={{28,48},{8,68},{8,58},{-24,58},{-24,38},{8,38},{8,28},{28,48}}, + lineColor={255,170,85}, + fillColor={255,170,85}, + fillPattern=FillPattern.Solid), + Text( + extent={{34,82},{86,24}}, + textColor={255,170,85}, + textString="I"), + Ellipse( + extent={{-71,7},{-85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-74,-28},{64,20}}, + textColor={0,0,0}, + textString="%integerTrue"), + Text( + extent={{-74,-90},{64,-42}}, + textColor={0,0,0}, + textString="%integerFalse")})); +end BooleanToInteger; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/BooleanToReal.mo b/IBPSA/Controls/OBC/CDL/Conversions/BooleanToReal.mo new file mode 100644 index 0000000000..175b93d1e5 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/BooleanToReal.mo @@ -0,0 +1,101 @@ +within IBPSA.Controls.OBC.CDL.Conversions; +block BooleanToReal + "Convert Boolean to Real signal" + parameter Real realTrue=1.0 + "Output signal for true Boolean input"; + parameter Real realFalse=0.0 + "Output signal for false Boolean input"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Boolean signal to be converted to a Real signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Converted input signal as a Real" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=if u then + realTrue + else + realFalse; + annotation ( + defaultComponentName="booToRea", + Documentation( + info=" +

+Block that outputs the Real +equivalent of the Boolean input. +

+
+  y = if u then realTrue else realFalse;
+
+

+where u is of Boolean and y +of Real type, +and realTrue and realFalse are parameters. +

+", + revisions=" +
    +
  • +May 17, 2022, by Hongxiang Fu:
    +Corrected documentation texts where the variables were described with wrong types.
    +This is for +Buildings, issue 3016. +
  • +
  • +April 10, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{-71,7},{-85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-68,-86},{70,-38}}, + textColor={0,0,0}, + textString="%realFalse"), + Text( + extent={{-68,-26},{70,22}}, + textColor={0,0,0}, + textString="%realTrue"), + Text( + extent={{-86,78},{-34,26}}, + textColor={255,0,255}, + textString="B"), + Polygon( + points={{26,48},{6,68},{6,58},{-26,58},{-26,38},{6,38},{6,28},{26,48}}, + lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Text( + extent={{34,82},{86,24}}, + textColor={0,0,127}, + textString="R")})); +end BooleanToReal; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/IntegerToReal.mo b/IBPSA/Controls/OBC/CDL/Conversions/IntegerToReal.mo new file mode 100644 index 0000000000..23a9bfb7ba --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/IntegerToReal.mo @@ -0,0 +1,66 @@ +within IBPSA.Controls.OBC.CDL.Conversions; +block IntegerToReal + "Convert Integer to Real signals" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Integer signal to be converted to a Real signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Converted input signal as a Real" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u; + annotation ( + defaultComponentName="intToRea", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={255,127,0}, + extent={{-120.0,-40.0},{-20.0,40.0}}, + textString="I"), + Text( + textColor={0,0,127}, + fillPattern=FillPattern.Solid, + extent={{0.0,-40.0},{100.0,40.0}}, + textString="R"), + Polygon( + lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + points={{10.0,0.0},{-10.0,20.0},{-10.0,10.0},{-40.0,10.0},{-40.0,-10.0},{-10.0,-10.0},{-10.0,-20.0},{10.0,0.0}})}), + Documentation( + info=" +

+Block that outputs the Real +equivalent of the Integer input. +

+
+  y = u;
+
+

+where u is of Integer and +y of Real type. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end IntegerToReal; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/RealToInteger.mo b/IBPSA/Controls/OBC/CDL/Conversions/RealToInteger.mo new file mode 100644 index 0000000000..a3ee5c3f94 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/RealToInteger.mo @@ -0,0 +1,73 @@ +within IBPSA.Controls.OBC.CDL.Conversions; +block RealToInteger + "Convert Real to Integer signal" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Real signal to be converted to an Integer signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Converted input signal as an Integer" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=if + (u > 0) then + integer( + floor( + u+0.5)) + else + integer( + ceil( + u-0.5)); + annotation ( + defaultComponentName="reaToInt", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,127}, + extent={{-100.0,-40.0},{0.0,40.0}}, + textString="R"), + Text( + textColor={255,127,0}, + extent={{20.0,-40.0},{120.0,40.0}}, + textString="I"), + Polygon( + lineColor={255,127,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + points={{50.0,0.0},{30.0,20.0},{30.0,10.0},{0.0,10.0},{0.0,-10.0},{30.0,-10.0},{30.0,-20.0},{50.0,0.0}}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs y +as the nearest integer value of the input u. +

+

+The block outputs +

+
+    y = integer( floor( u + 0.5 ) )  if u > 0,
+    y = integer( ceil ( u - 0.5 ) )  otherwise.
+
+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end RealToInteger; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mo b/IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mo new file mode 100644 index 0000000000..9af28be520 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mo @@ -0,0 +1,50 @@ +within IBPSA.Controls.OBC.CDL.Conversions.Validation; +model BooleanToInteger + "Validation model for the BooleanToInteger block" + IBPSA.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt + "Block that converts Boolean to Integer signal" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + period=1) + "Generate cyclic on-and-off output" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + +equation + connect(booPul.y,booToInt.u) + annotation (Line(points={{2,0},{28,0},{28,0}},color={255,0,255})); + annotation ( + experiment( + StopTime=4.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToInteger.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Conversions.BooleanToInteger. +

+", + revisions=" +
    +
  • +March 31, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end BooleanToInteger; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mo b/IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mo new file mode 100644 index 0000000000..fda9178d76 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mo @@ -0,0 +1,50 @@ +within IBPSA.Controls.OBC.CDL.Conversions.Validation; +model BooleanToReal + "Validation model for the BooleanToReal block" + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea + "Block that converts Boolean to Real signal" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + period=1) + "Generate cyclic on-and-off output" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + +equation + connect(booPul.y,booToRea.u) + annotation (Line(points={{2,0},{28,0},{28,0}},color={255,0,255})); + annotation ( + experiment( + StopTime=4.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/BooleanToReal.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal. +

+", + revisions=" +
    +
  • +April 10, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end BooleanToReal; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mo b/IBPSA/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mo new file mode 100644 index 0000000000..42ab49f046 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Conversions.Validation; +model IntegerToReal + "Validation model for the IntegerToReal block" + IBPSA.Controls.OBC.CDL.Conversions.IntegerToReal intToRea + "Block that converts Integer to Real signal" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round2.u) + annotation (Line(points={{-58,0},{-42,0}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-18,0},{-2,0}},color={0,0,127})); + connect(reaToInt1.y,intToRea.u) + annotation (Line(points={{22,0},{28,0},{28,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/IntegerToReal.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Conversions.IntegerToReal. +

+", + revisions=" +
    +
  • +March 31, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end IntegerToReal; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mo b/IBPSA/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mo new file mode 100644 index 0000000000..6af50942b9 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mo @@ -0,0 +1,52 @@ +within IBPSA.Controls.OBC.CDL.Conversions.Validation; +model RealToInteger + "Validation model for the RealToInteger block" + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Block that converts Real to Integer signal" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,reaToInt.u) + annotation (Line(points={{-39,0},{28,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Conversions/Validation/RealToInteger.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Conversions.RealToInteger. +

+", + revisions=" +
    +
  • +March 31, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end RealToInteger; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Conversions/Validation/package.mo new file mode 100644 index 0000000000..26ec4de8c5 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Conversions; +package Validation "Collection of models that validate the conversion blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Conversions. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Polygon( + origin={8,14}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/Validation/package.order b/IBPSA/Controls/OBC/CDL/Conversions/Validation/package.order new file mode 100644 index 0000000000..50d7ddd0d7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/Validation/package.order @@ -0,0 +1,4 @@ +BooleanToInteger +BooleanToReal +IntegerToReal +RealToInteger diff --git a/IBPSA/Controls/OBC/CDL/Conversions/package.mo b/IBPSA/Controls/OBC/CDL/Conversions/package.mo new file mode 100644 index 0000000000..52d55e5d3a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/package.mo @@ -0,0 +1,30 @@ +within IBPSA.Controls.OBC.CDL; +package Conversions "Package with blocks for type conversion" + annotation ( + Documentation( + info=" +

+Package with blocks for type conversions. +

+", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0)})); +end Conversions; diff --git a/IBPSA/Controls/OBC/CDL/Conversions/package.order b/IBPSA/Controls/OBC/CDL/Conversions/package.order new file mode 100644 index 0000000000..92db79bf1c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Conversions/package.order @@ -0,0 +1,5 @@ +BooleanToInteger +BooleanToReal +IntegerToReal +RealToInteger +Validation diff --git a/IBPSA/Controls/OBC/CDL/Discrete/FirstOrderHold.mo b/IBPSA/Controls/OBC/CDL/Discrete/FirstOrderHold.mo new file mode 100644 index 0000000000..0a3a4ee7ba --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/FirstOrderHold.mo @@ -0,0 +1,137 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block FirstOrderHold + "First order hold of a sampled-data system" + parameter Real samplePeriod( + final quantity="Time", + final unit="s", + min=1E-3) + "Sample period of component"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "First order hold of input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + output Boolean sampleTrigger + "True, if sample time instant"; + output Boolean firstTrigger( + start=false, + fixed=true) + "Rising edge signals first sample instant"; + Real tSample( + final quantity="Time", + final unit="s") + "Time of sample"; + Real uSample + "Value of sample"; + Real pre_uSample + "Value of previous sample"; + Real c + "Slope"; + +initial equation + t0=IBPSA.Utilities.Math.Functions.round( + x=integer(time/samplePeriod)*samplePeriod, + n=6); + pre(tSample)=t0; + pre(uSample)=u; + pre(pre_uSample)=u; + pre(c)=0.0; + +equation + // Declarations that are used for all discrete blocks + sampleTrigger=sample( + t0, + samplePeriod); + when sampleTrigger then + firstTrigger=time <= t0+samplePeriod/2; + tSample=time; + uSample=u; + pre_uSample=pre(uSample); + c=if firstTrigger then + 0 + else + (uSample-pre_uSample)/samplePeriod; + end when; + /* Use pre_uSample and pre(c) to break potential algebraic loops by an + infinitesimal delay if both the continuous and the discrete part + have direct feedthrough. + */ + y=pre_uSample+pre(c)*(time-tSample); + annotation ( + defaultComponentName="firOrdHol", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-79.0,-41.0},{-59.0,-33.0},{-40.0,1.0},{-20.0,9.0},{0.0,63.0},{21.0,20.0},{41.0,10.0},{60.0,20.0}}, + color={0,0,127}), + Line( + points={{60.0,20.0},{81.0,10.0}}, + color={0,0,127}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs the extrapolation through the +values of the last two sampled input signals. +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation.
    +This is for +Buildings, issue 2170. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Michael Wetter:
    +Removed parameter startTime to allow model to work +also for negative start time without having to change the value of this +parameters.
    +This is for Buildings, issue 938. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end FirstOrderHold; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Sampler.mo b/IBPSA/Controls/OBC/CDL/Discrete/Sampler.mo new file mode 100644 index 0000000000..5188669c63 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Sampler.mo @@ -0,0 +1,137 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block Sampler + "Ideal sampler of a continuous signal" + parameter Real samplePeriod( + final quantity="Time", + final unit="s", + min=1E-3) + "Sample period of component"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Sampled input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + output Boolean sampleTrigger + "True, if sample time instant"; + output Boolean firstTrigger( + start=false, + fixed=true) + "Rising edge signals first sample instant"; + +initial equation + t0=IBPSA.Utilities.Math.Functions.round( + x=integer(time/samplePeriod)*samplePeriod, + n=6); + +equation + // Declarations that are used for all discrete blocks + sampleTrigger=sample( + t0, + samplePeriod); + when sampleTrigger then + firstTrigger=time <= t0+samplePeriod/2; + end when; + // Declarations specific to this type of discrete block + when {sampleTrigger,initial()} then + y=u; + end when; + annotation ( + defaultComponentName="sam", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Ellipse( + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{25.0,-10.0},{45.0,10.0}}), + Line( + points={{-100.0,0.0},{-45.0,0.0}}, + color={0,0,127}), + Line( + points={{45.0,0.0},{100.0,0.0}}, + color={0,0,127}), + Line( + points={{-35.0,0.0},{30.0,35.0}}, + color={0,0,127}), + Ellipse( + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-45.0,-10.0},{-25.0,10.0}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs the input signal, sampled at a sampling rate defined +via parameter samplePeriod. +

+", + revisions=" +
    +
  • +March 30, 2022, by Michael Wetter:
    +Removed graphic from diagram view. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation.
    +This is for +Buildings, issue 2170. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Michael Wetter:
    +Removed parameter startTime to allow model to work +also for negative start time without having to change the value of this +parameters.
    +This is for Buildings, issue 938. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Sampler; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/TriggeredMax.mo b/IBPSA/Controls/OBC/CDL/Discrete/TriggeredMax.mo new file mode 100644 index 0000000000..94da32d7a0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/TriggeredMax.mo @@ -0,0 +1,110 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block TriggeredMax + "Output the maximum, absolute value of a continuous signal at trigger instants" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Input for trigger that causes u to be sampled" + annotation (Placement(transformation(origin={0,-120},extent={{-20,-20},{20,20}},rotation=90))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Maximum of input signal over all trigger instants" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + y=u; + +equation + when trigger then + y=max( + pre(y), + abs(u)); + end when; + annotation ( + defaultComponentName="triMax", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Ellipse( + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{25.0,-10.0},{45.0,10.0}}), + Line( + points={{-100.0,0.0},{-45.0,0.0}}, + color={0,0,127}), + Line( + points={{45.0,0.0},{100.0,0.0}}, + color={0,0,127}), + Line( + points={{0.0,-100.0},{0.0,-26.0}}, + color={255,0,255}), + Line( + points={{-35.0,0.0},{28.0,-48.0}}, + color={0,0,127}), + Text( + extent={{-86.0,24.0},{82.0,82.0}}, + textString="max"), + Ellipse( + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-45.0,-10.0},{-25.0,10.0}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs the input signal whenever the trigger input +signal is rising (i.e., trigger changes to +true). The maximum, absolute value of the input signal +at the sampling point is provided as the output signal. +

+", + revisions=" +
    +
  • +March 30, 2022, by Michael Wetter:
    +Removed graphic from diagram view. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Michael Wetter:
    +Removed parameter startTime and sampleTime +as these are not needed for this block, and introduced parameter +y_start=0.
    +This is for Buildings, issue 938. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end TriggeredMax; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/TriggeredMovingMean.mo b/IBPSA/Controls/OBC/CDL/Discrete/TriggeredMovingMean.mo new file mode 100644 index 0000000000..a9ad80c179 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/TriggeredMovingMean.mo @@ -0,0 +1,200 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block TriggeredMovingMean + "Triggered discrete moving mean of an input signal" + parameter Integer n( + min=1) + "Number of samples over which the input is averaged"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Input for trigger that causes u to be sampled" + annotation (Placement(transformation(origin={0,-120},extent={{-20,-20},{20,20}},rotation=90),iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Moving mean of input signal over all trigger instants" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Integer iSample( + start=0, + fixed=true) + "Sample numbering in the calculation"; + Integer counter( + start=0, + fixed=true) + "Number of samples used for averaging calculation"; + Integer index( + start=0, + fixed=true) + "Index of the vector ySample"; + discrete Real ySample[n]( + start=zeros(n), + each fixed=true) + "Vector of samples to be averaged"; + +equation + when {initial(),trigger} then + index=mod( + pre(iSample), + n)+1; + ySample={ + if + (i == index) then + u + else + pre(ySample[i]) for i in 1:n}; + counter= + if pre(counter) == n then + n + else + pre(counter)+1; + y=sum(ySample)/counter; + iSample=pre(iSample)+1; + end when; + annotation ( + defaultComponentName="triMovMea", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-88,0},{70,0}}, + color={192,192,192}), + Polygon( + points={{92,0},{70,8},{70,-8},{92,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-80}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,0},{-52,0}}, + color={217,67,180}), + Line( + points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, + smooth=Smooth.Bezier, + color={28,108,200}), + Line( + points={{-52,36},{-24,36}}, + color={217,67,180}), + Line( + points={{-52,0},{-52,36}}, + color={217,67,180}, + smooth=Smooth.Bezier), + Line( + points={{-24,36},{-24,46}}, + color={217,67,180}, + smooth=Smooth.Bezier), + Line( + points={{-24,46},{4,46}}, + color={217,67,180}), + Line( + points={{4,4},{32,4}}, + color={217,67,180}), + Line( + points={{4,46},{4,4}}, + color={217,67,180}, + smooth=Smooth.Bezier), + Line( + points={{32,-32},{60,-32}}, + color={217,67,180}), + Line( + points={{32,4},{32,-32}}, + color={217,67,180}, + smooth=Smooth.Bezier), + Line( + points={{60,-58},{82,-58}}, + color={217,67,180}), + Line( + points={{60,-32},{60,-58}}, + color={217,67,180}, + smooth=Smooth.Bezier), + Ellipse( + extent={{-25,-10},{-45,10}}, + lineColor={176,181,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{45,-10},{25,10}}, + lineColor={176,181,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-45,0}}, + color={176,181,255}), + Line( + points={{45,0},{100,0}}, + color={176,181,255}), + Line( + points={{-35,0},{28,-48}}, + color={176,181,255}), + Line( + points={{0,-100},{0,-26}}, + color={255,0,255}), + Text( + extent={{56,92},{92,60}}, + textColor={28,108,200}, + textString="%n"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs the triggered moving mean value of an input signal. +

+

+At the start of the simulation, and whenever the trigger signal is rising +(i.e., the trigger changes to true), the block samples +the input, computes the moving mean value over the past n samples, +and produces this value at its output y. +

+", + revisions=" +
    +
  • +March 30, 2022, by Michael Wetter:
    +Added discrete keyword to sampled variable.
    +This is for +Buildings, issue 2942. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Removed non-needed protected parameter t0. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +November 7, 2019, by Michael Wetter:
    +Reformulated model to use an equation rather than an algorithm section. +
  • +
  • +October 16, 2019, by Kun Zhang:
    +First implementation. This is for Buildings, issue 1588. +
  • +
+")); +end TriggeredMovingMean; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/TriggeredSampler.mo b/IBPSA/Controls/OBC/CDL/Discrete/TriggeredSampler.mo new file mode 100644 index 0000000000..a21ae28181 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/TriggeredSampler.mo @@ -0,0 +1,101 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block TriggeredSampler + "Triggered sampling of continuous signals" + parameter Real y_start=0 + "Initial value of output signal"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Input for trigger that causes u to be sampled" + annotation (Placement(transformation(origin={0,-120},extent={{-20,-20},{20,20}},rotation=90))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Input signal at the last trigger instant" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + y=y_start; + +equation + when trigger then + y=u; + end when; + annotation ( + defaultComponentName="triSam", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{25.0,-10.0},{45.0,10.0}}), + Line( + points={{-100.0,0.0},{-45.0,0.0}}, + color={0,0,127}), + Line( + points={{45.0,0.0},{100.0,0.0}}, + color={0,0,127}), + Line( + points={{0.0,-100.0},{0.0,-26.0}}, + color={255,0,255}), + Line( + points={{-35.0,0.0},{28.0,-48.0}}, + color={0,0,127}), + Ellipse( + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-45.0,-10.0},{-25.0,10.0}}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Samples the continuous input signal whenever the trigger input +signal is rising (i.e., trigger changes from false to +true) and provides the sampled input signal as output. +Before the first sampling, the output signal is equal to +the initial value defined via parameter y_start. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +May 18, 2017, by Michael Wetter:
    +Corrected documentation. +
  • +
  • +May 17, 2017, by Milica Grahovac:
    +First revision, based on the implementation of the +Modelica Standard Library. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end TriggeredSampler; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/UnitDelay.mo b/IBPSA/Controls/OBC/CDL/Discrete/UnitDelay.mo new file mode 100644 index 0000000000..1430a216ac --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/UnitDelay.mo @@ -0,0 +1,135 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block UnitDelay + "Output the input signal with a unit delay" + parameter Real samplePeriod( + final quantity="Time", + final unit="s", + min=1E-3) + "Sample period of component"; + parameter Real y_start=0 + "Initial value of output signal"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Input signal at the previous sample instant" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + output Boolean sampleTrigger + "True, if sample time instant"; + discrete Real u_internal + "Input value at each sampling moment"; + +initial equation + t0=IBPSA.Utilities.Math.Functions.round( + x=integer(time/samplePeriod)*samplePeriod, + n=6); + y=y_start; + u_internal=y_start; + +equation + // Declarations that are used for all discrete blocks + sampleTrigger=sample( + t0, + samplePeriod); + when sampleTrigger then + u_internal=u; + y=pre(u_internal); + end when; + annotation ( + defaultComponentName="uniDel", + Documentation( + info=" +

+Block that outputs the input signal with a unit delay: +

+
+          1
+     y = --- * u
+          z
+
+

+that is, the output signal y is the +input signal u of the +previous sample instant. Before the second sample instant, +the output y is identical to parameter y_start. +

+", + revisions=" +
    +
  • +August 8, 2024, by Jianjun Hu:
    +Delayed the input.
    +This is for +Buildings, issue 3953. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation.
    +This is for +Buildings, issue 2170. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Michael Wetter:
    +Removed parameter startTime to allow model to work +also for negative start time without having to change the value of this +parameters.
    +This is for Buildings, issue 938. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-30.0,0.0},{30.0,0.0}}, + color={0,0,127}), + Text( + textColor={0,0,127}, + extent={{-90.0,10.0},{90.0,90.0}}, + textString="1"), + Text( + textColor={0,0,127}, + extent={{-90.0,-90.0},{90.0,-10.0}}, + textString="z"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end UnitDelay; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mo new file mode 100644 index 0000000000..19bf4a00ba --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mo @@ -0,0 +1,62 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model FirstOrderHold + "Example model for the FirstOrderHold block" + IBPSA.Controls.OBC.CDL.Discrete.FirstOrderHold firOrdHol( + samplePeriod=0.2) + "Block that first order hold of a sampled-data system" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Cos cos1 + "Block that outputs the cosine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(ramp1.y,cos1.u) + annotation (Line(points={{-38,0},{-12,0},{-12,0}},color={0,0,127})); + connect(cos1.y,firOrdHol.u) + annotation (Line(points={{12,0},{12,0},{28,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/FirstOrderHold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.FirstOrderHold. +

+", + revisions=" +
    +
  • +September 14, 2017, by Michael Wetter:
    +Changed example to have non-zero initial conditions. +
  • +
  • +March 31, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end FirstOrderHold; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/Sampler.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/Sampler.mo new file mode 100644 index 0000000000..e39791f57f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/Sampler.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model Sampler + "Example model for the Sampler block" + IBPSA.Controls.OBC.CDL.Discrete.Sampler sampler1( + samplePeriod=0.2) + "Ideal sampler of a continuous signal" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sin sin1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(ramp1.y,sin1.u) + annotation (Line(points={{-39,0},{-12,0},{-12,0}},color={0,0,127})); + connect(sin1.y,sampler1.u) + annotation (Line(points={{11,0},{20,0},{28,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/Sampler.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.Sampler. +

+", + revisions=" +
    +
  • +March 31, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Sampler; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mo new file mode 100644 index 0000000000..a0a0c374ea --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model TriggeredMax + "Example model for the TriggeredMax block" + IBPSA.Controls.OBC.CDL.Discrete.TriggeredMax triggeredMax + "Output the maximum, absolute value of a continuous signal at trigger instants" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sin sin1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=0.2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-10,-50},{10,-30}}))); + +equation + connect(ramp1.y,sin1.u) + annotation (Line(points={{-39,0},{-12,0},{-12,0}},color={0,0,127})); + connect(sin1.y,triggeredMax.u) + annotation (Line(points={{11,0},{19.5,0},{28,0}},color={0,0,127})); + connect(booPul.y,triggeredMax.trigger) + annotation (Line(points={{11,-40},{26,-40},{40,-40},{40,-11.8}},color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMax.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.TriggeredMax. +

+", + revisions=" +
    +
  • +March 31, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TriggeredMax; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mo new file mode 100644 index 0000000000..a7d30aca3d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mo @@ -0,0 +1,83 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model TriggeredMovingMean + "Validation model for the TriggeredMovingMean block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + freqHz=1/8, + phase=0.5235987755983, + startTime=-0.5) + "Example input signal" + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=1, + shift=-0.5) + "Block that outputs trigger signals" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredMovingMean triMovMea( + n=3) + "Triggered moving mean with 3 samples to average" + annotation (Placement(transformation(extent={{0,0},{20,20}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredMovingMean triMovMea1( + n=1) + "Triggered moving mean with 1 sample to average" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredMovingMean triMovMea2( + n=3) + "Triggered moving mean with 3 samples to average with a different trigger period" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1) + "Block that outputs trigger signals" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + +equation + connect(sin.y,triMovMea.u) + annotation (Line(points={{-38,50},{-20,50},{-20,10},{-2,10}},color={0,0,127})); + connect(booPul.y,triMovMea.trigger) + annotation (Line(points={{-38,-10},{10,-10},{10,-2}},color={255,0,255})); + connect(booPul.y,triMovMea1.trigger) + annotation (Line(points={{-38,-10},{-10,-10},{-10,30},{10,30},{10,58}},color={255,0,255})); + connect(sin.y,triMovMea1.u) + annotation (Line(points={{-38,50},{-20,50},{-20,70},{-2,70}},color={0,0,127})); + connect(booPul1.y,triMovMea2.trigger) + annotation (Line(points={{-38,-70},{10,-70},{10,-62}},color={255,0,255})); + connect(sin.y,triMovMea2.u) + annotation (Line(points={{-38,50},{-20,50},{-20,-50},{-2,-50}},color={0,0,127})); + annotation ( + experiment( + StartTime=-0.5, + StopTime=15.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredMovingMean.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.TriggeredMovingMean. +

+", + revisions=" +
    +
  • +October 16, 2019 by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TriggeredMovingMean; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mo new file mode 100644 index 0000000000..17798c10d4 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mo @@ -0,0 +1,72 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model TriggeredSampler + "Example model for the TriggeredSampler block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sin sin1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=0.2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-10,-50},{10,-30}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triSam + "Triggered sampler wity y_start = 0" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triSam1( + y_start=1) + "Triggered sampler with y_start = 1" + annotation (Placement(transformation(extent={{60,40},{80,60}}))); + +equation + connect(ramp1.y,sin1.u) + annotation (Line(points={{-39,0},{-22,0}},color={0,0,127})); + connect(sin1.y,triSam.u) + annotation (Line(points={{1,0},{38,0}},color={0,0,127})); + connect(booPul.y,triSam.trigger) + annotation (Line(points={{11,-40},{50,-40},{50,-12},{50,-11.8}},color={255,0,255})); + connect(sin1.y,triSam1.u) + annotation (Line(points={{1,0},{30,0},{30,50},{58,50}},color={0,0,127})); + connect(booPul.y,triSam1.trigger) + annotation (Line(points={{11,-40},{70,-40},{70,38.2}},color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/TriggeredSampler.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler. +

+", + revisions=" +
    +
  • +March 31, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TriggeredSampler; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mo new file mode 100644 index 0000000000..cbed5b698c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model UnitDelay + "Example model for the UnitDelay block" + IBPSA.Controls.OBC.CDL.Discrete.UnitDelay unitDelay1( + samplePeriod=0.2) + "Sample period of component" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sin sin1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(ramp1.y,sin1.u) + annotation (Line(points={{-39,0},{-12,0},{-12,0}},color={0,0,127})); + connect(sin1.y,unitDelay1.u) + annotation (Line(points={{11,0},{20,0},{28,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/UnitDelay.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.UnitDelay. +

+", + revisions=" +
    +
  • +March 31, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end UnitDelay; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mo new file mode 100644 index 0000000000..dac2bb8dd9 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mo @@ -0,0 +1,62 @@ +within IBPSA.Controls.OBC.CDL.Discrete.Validation; +model ZeroOrderHold + "Example model for the ZeroOrderHold block" + IBPSA.Controls.OBC.CDL.Discrete.ZeroOrderHold zerOrdHol( + samplePeriod=0.2) + "Output the input signal with a zero order hold" + annotation (Placement(transformation(extent={{30,-10},{50,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Cos cos1 + "Block that outputs the cosine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(ramp1.y,cos1.u) + annotation (Line(points={{-39,0},{-12,0},{-12,0}},color={0,0,127})); + connect(cos1.y,zerOrdHol.u) + annotation (Line(points={{11,0},{20,0},{28,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Validation/ZeroOrderHold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Discrete.ZeroOrderHold. +

+", + revisions=" +
    +
  • +September 14, 2017, by Michael Wetter:
    +Changed example to have non-zero initial conditions. +
  • +
  • +March 31, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end ZeroOrderHold; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Discrete/Validation/package.mo new file mode 100644 index 0000000000..2729317450 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/package.mo @@ -0,0 +1,41 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +package Validation "Collection of models that validate the discrete blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Discrete. +

+", +revisions=" +
    +
  • +September 13, 2023, by Jianjun Hu:
    +Changed the package name from Examples to Validation. +This is for Buildings, issue 3517. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/Validation/package.order b/IBPSA/Controls/OBC/CDL/Discrete/Validation/package.order new file mode 100644 index 0000000000..202f8ba5ec --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/Validation/package.order @@ -0,0 +1,7 @@ +FirstOrderHold +Sampler +TriggeredMax +TriggeredMovingMean +TriggeredSampler +UnitDelay +ZeroOrderHold diff --git a/IBPSA/Controls/OBC/CDL/Discrete/ZeroOrderHold.mo b/IBPSA/Controls/OBC/CDL/Discrete/ZeroOrderHold.mo new file mode 100644 index 0000000000..a4192aaa3c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/ZeroOrderHold.mo @@ -0,0 +1,123 @@ +within IBPSA.Controls.OBC.CDL.Discrete; +block ZeroOrderHold + "Output the input signal with a zero order hold" + parameter Real samplePeriod( + final quantity="Time", + final unit="s", + min=1E-3) + "Sample period of component"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be sampled" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Zero order hold of the input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + output Real ySample( + fixed=true, + start=0) + "Sampled value of input"; + output Boolean sampleTrigger + "True, if sample time instant"; + output Boolean firstTrigger( + start=false, + fixed=true) + "Rising edge signals first sample instant"; + +initial equation + t0=IBPSA.Utilities.Math.Functions.round( + x=integer(time/samplePeriod)*samplePeriod, + n=6); + +equation + // Declarations that are used for all discrete blocks + sampleTrigger=sample( + t0, + samplePeriod); + when sampleTrigger then + firstTrigger=time <= t0+samplePeriod/2; + end when; + // Declarations specific to this type of discrete block + when {sampleTrigger,initial()} then + ySample=u; + end when; + /* Define y=ySample with an infinitesimal delay to break potential + algebraic loops if both the continuous and the discrete part have + direct feedthrough + */ + y=pre(ySample); + annotation ( + defaultComponentName="zerOrdHol", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-78.0,-42.0},{-52.0,-42.0},{-52.0,0.0},{-26.0,0.0},{-26.0,24.0},{-6.0,24.0},{-6.0,64.0},{18.0,64.0},{18.0,20.0},{38.0,20.0},{38.0,0.0},{44.0,0.0},{44.0,0.0},{62.0,0.0}}, + color={0,0,127}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs the sampled input signal at sample +time instants. The output signal is held at the value of the last +sample instant during the sample points. +At initial time, the block feeds the input directly to the output. +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation.
    +This is for +Buildings, issue 2170. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Michael Wetter:
    +Removed parameter startTime to allow model to work +also for negative start time without having to change the value of this +parameters.
    +This is for Buildings, issue 938. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end ZeroOrderHold; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/package.mo b/IBPSA/Controls/OBC/CDL/Discrete/package.mo new file mode 100644 index 0000000000..a35342737c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/package.mo @@ -0,0 +1,61 @@ +within IBPSA.Controls.OBC.CDL; +package Discrete "Package with discrete blocks" + annotation ( + Documentation( + info=" +

+This package contains discrete control blocks +with fixed sample period. +Every component of this package is structured in the following way: +

+
    +
  1. A component has continuous Real input and output signals.
  2. +
  3. The input signals are sampled by the given sample period + defined via parameter samplePeriod. + The first sample instant is defined by the parameter startTime. +
  4. +
  5. The output signals are computed from the sampled input signals. +
  6. +
+ +", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Line( + points={{-88,0},{-45,0}}, + color={95,95,95}), + Ellipse( + lineColor={95,95,95}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-45,-10},{-25,10}}), + Line( + points={{-35,0},{24,52}}, + color={95,95,95}), + Ellipse( + lineColor={95,95,95}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{25,-10},{45,10}}), + Line( + points={{45,0},{82,0}}, + color={95,95,95})})); +end Discrete; diff --git a/IBPSA/Controls/OBC/CDL/Discrete/package.order b/IBPSA/Controls/OBC/CDL/Discrete/package.order new file mode 100644 index 0000000000..9303418f38 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Discrete/package.order @@ -0,0 +1,8 @@ +FirstOrderHold +Sampler +TriggeredMax +TriggeredMovingMean +TriggeredSampler +UnitDelay +ZeroOrderHold +Validation diff --git a/IBPSA/Controls/OBC/CDL/Integers/Abs.mo b/IBPSA/Controls/OBC/CDL/Integers/Abs.mo new file mode 100644 index 0000000000..11be997b63 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Abs.mo @@ -0,0 +1,109 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Abs + "Output the absolute value of the input" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input for absolute function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Absolute value of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=if u >= 0 then u else -u; + annotation ( + defaultComponentName="absInt", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Polygon( + points={{92,0},{70,8},{70,-8},{92,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{0,-14},{0,68}}, + color={192,192,192}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-34,-28},{38,-76}}, + textColor={192,192,192}, + textString="abs"), + Line( + points={{-88,0},{76,0}}, + color={192,192,192}), + Ellipse( + extent={{-68,68},{-60,60}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-38,38},{-30,30}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-4,4},{4,-4}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{28,38},{36,30}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{58,68},{66,60}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line( + points={{-64,-6},{-64,6}}, + color={192,192,192}), + Line( + points={{-34,-6},{-34,6}}, + color={192,192,192}), + Line( + points={{32,-6},{32,6}}, + color={192,192,192}), + Line( + points={{62,-6},{62,6}}, + color={192,192,192}), + Line( + points={{-8,64},{8,64}}, + color={192,192,192}), + Line( + points={{-8,34},{8,34}}, + color={192,192,192})}), + Documentation( + info=" +

+Block that outputs y = abs(u), +where +u is an Integer input. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Abs; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Add.mo b/IBPSA/Controls/OBC/CDL/Integers/Add.mo new file mode 100644 index 0000000000..9b610b866a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Add.mo @@ -0,0 +1,70 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Add + "Output the sum of the two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input to be added" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Input to be added" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Sum of the two inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1+u2; + +annotation (defaultComponentName="addInt", + Documentation(info=" +

+Block that outputs y as the sum of the +two Integer input signals u1 and u2, +

+
+    y = u1 + u2.
+
+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Removed gain factors.
    +This is for Buildings, issue 2865. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,60},{-74,24},{-44,24}}, + color={255,127,0}), + Line( + points={{-100,-60},{-74,-28},{-42,-28}}, + color={255,127,0}), + Ellipse( + lineColor={255,127,0}, + extent={{-50,-50},{50,50}}), + Line( + points={{50,0},{100,0}}, + color={255,127,0}), + Text( + extent={{-36,-24},{40,44}}, + textString="+")})); +end Add; diff --git a/IBPSA/Controls/OBC/CDL/Integers/AddParameter.mo b/IBPSA/Controls/OBC/CDL/Integers/AddParameter.mo new file mode 100644 index 0000000000..64d2973341 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/AddParameter.mo @@ -0,0 +1,67 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block AddParameter "Output the sum of an input plus a parameter" + parameter Integer p + "Parameter to be added to the input"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input to be added to the parameter" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Sum of the parameter and the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u+p; + annotation ( + defaultComponentName="addPar", + Documentation( + info=" +

+Block that outputs y = u + p, +where p is parameter and u is an input. +

+", +revisions=" + +"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Line(points={{-54,66},{-28,30},{2,30}}, color={255,127,0}), + Line(points={{-100,0},{100,0}}, color={255,127,0}), + Text( + extent={{-122,58},{-17,98}}, + textColor={255,127,0}, + textString="%p"), + Ellipse( + lineColor={255,127,0}, + extent={{-12,-52},{88,48}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{0,-26},{76,42}}, + textString="+", + textColor={255,127,0}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end AddParameter; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Change.mo b/IBPSA/Controls/OBC/CDL/Integers/Change.mo new file mode 100644 index 0000000000..5b6fbb429a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Change.mo @@ -0,0 +1,93 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Change + "Output whether the Integer input changes values, increases or decreases" + parameter Integer pre_u_start=0 + "Start value of pre(u) at initial time"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Integer to be monitored for a change in value" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output that is true when the input changes its value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput up + "Output that is true when the input increased its value" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput down + "Output that is true when the input decreased its value" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); + +initial equation + pre(u)=pre_u_start; + +equation + y=change(u); + up=u > pre(u); + down=u < pre(u); + annotation ( + defaultComponentName="cha", + Icon( + coordinateSystem( + preserveAspectRatio=true), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-50,62},{50,-56}}, + textColor={255,127,0}, + textString="change"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that evaluates the integer input u to check if its value +changes. +

+
    +
  • +When the input u changes, the output y will be +true, otherwise it will be false. +
  • +
  • +When the input u increases, the output up will be +true, otherwise it will be false. +
  • +
  • +When the input u decreases, the output down will be +true, otherwise it will be false. +
  • +
+", + revisions=" +
    +
  • +May 3, 2022, by Michael Wetter:
    +Renamed parameter y_start to pre_u_start.
    +This is for +Buildings, issue 2990. +
  • +
  • +January 26, 2021, by Michael Wetter:
    +Changed initialization of pre(u) to use the initial value of the input rather than 0.
    +This is for +Buildings, issue 2294. +
  • +
  • +July 18, 2018, by Michael Wetter:
    +Revised model and icon. +
  • +
  • +July 13, 2018, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Change; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Equal.mo b/IBPSA/Controls/OBC/CDL/Integers/Equal.mo new file mode 100644 index 0000000000..6ff03796b1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Equal.mo @@ -0,0 +1,74 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Equal + "Output y is true, if input u1 is equal to input u2" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input to be checked for equality with other input" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Input to be checked for equality with other input" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs that is true if the two inputs are equal, and false otherwise" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 == u2; + annotation ( + defaultComponentName="intEqu", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,10},{52,-10}}, + lineColor={255,127,0}), + Line( + points={{-100,-80},{42,-80},{42,0}}, + color={255,127,0}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-76,-36},{20,54}}, + textColor={255,127,0}, + textString="=")}), + Documentation( + info=" +

+Block that outputs true if the Integer input u1 +is equal to the Integer input u2. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Equal; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Greater.mo b/IBPSA/Controls/OBC/CDL/Integers/Greater.mo new file mode 100644 index 0000000000..fe81658840 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Greater.mo @@ -0,0 +1,74 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Greater + "Output y is true, if input u1 is greater than input u2" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "First input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Second input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u1 is greater than u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 > u2; + annotation ( + defaultComponentName="intGre", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,10},{52,-10}}, + lineColor={255,127,0}), + Line( + points={{-100,-80},{42,-80},{42,0}}, + color={255,127,0}), + Line( + points={{-54,22},{-8,2},{-54,-18}}, + thickness=0.5, + color={255,127,0}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs true if the Integer input u1 +is greater than the Integer input u2. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Greater; diff --git a/IBPSA/Controls/OBC/CDL/Integers/GreaterEqual.mo b/IBPSA/Controls/OBC/CDL/Integers/GreaterEqual.mo new file mode 100644 index 0000000000..62d7966e87 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/GreaterEqual.mo @@ -0,0 +1,78 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block GreaterEqual + "Output y is true, if input u1 is greater or equal than input u2" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "First input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Second input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u1 is greater or equal than u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 >= u2; + annotation ( + defaultComponentName="intGreEqu", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,10},{52,-10}}, + lineColor={255,127,0}), + Line( + points={{-100,-80},{42,-80},{42,0}}, + color={255,127,0}), + Line( + points={{-54,22},{-8,2},{-54,-18}}, + thickness=0.5, + color={255,127,0}), + Line( + points={{-52,-36},{-6,-14}}, + thickness=0.5, + color={255,127,0}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs true if Integer the input u1 +is greater than or equal to the Integer input u2. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end GreaterEqual; diff --git a/IBPSA/Controls/OBC/CDL/Integers/GreaterEqualThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/GreaterEqualThreshold.mo new file mode 100644 index 0000000000..62b344c199 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/GreaterEqualThreshold.mo @@ -0,0 +1,80 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block GreaterEqualThreshold + "Output y is true, if input u is greater or equal than a threshold" + parameter Integer t=0 + "Threshold against which the input is compared to"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input to be compared against the threshold" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u is greater or equal than the threshold" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u >= t; + annotation ( + defaultComponentName="intGreEquThr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%t"), + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-54,22},{-8,2},{-54,-18}}, + thickness=0.5, + color={255,127,0}), + Line( + points={{-52,-36},{-6,-14}}, + thickness=0.5, + color={255,127,0})}), + Documentation( + info=" +

+Block that outputs true if the Integer input is greater than or equal to +the parameter t. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 6, 2020, by Michael Wetter:
    +Renamed threshold to t.
    +This is for Buildings, issue 2076. +
  • +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end GreaterEqualThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/GreaterThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/GreaterThreshold.mo new file mode 100644 index 0000000000..7f20cf1d8b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/GreaterThreshold.mo @@ -0,0 +1,76 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block GreaterThreshold + "Output y is true, if input u is greater than a threshold" + parameter Integer t=0 + "Threshold against which the input is compared to"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input to be compared against the threshold" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u is greater than the threshold" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u > t; + annotation ( + defaultComponentName="intGreThr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%t"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Line( + points={{-54,22},{-8,2},{-54,-18}}, + thickness=0.5, + color={255,127,0})}), + Documentation( + info=" +

+Block that outputs true if the Integer input is greater than +the parameter t. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 6, 2020, by Michael Wetter:
    +Renamed threshold to t.
    +This is for Buildings, issue 2076. +
  • +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end GreaterThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Less.mo b/IBPSA/Controls/OBC/CDL/Integers/Less.mo new file mode 100644 index 0000000000..2c793fd9e4 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Less.mo @@ -0,0 +1,74 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Less + "Output y is true, if input u1 is less than input u2" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "First input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Second input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u1 is less than u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 < u2; + annotation ( + defaultComponentName="intLes", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,10},{52,-10}}, + lineColor={255,127,0}), + Line( + points={{-100,-80},{42,-80},{42,0}}, + color={255,127,0}), + Line( + points={{-6,18},{-50,-2},{-6,-20}}, + thickness=0.5, + color={255,127,0}), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if the Integer input u1 +is less than the Integer input u2. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Less; diff --git a/IBPSA/Controls/OBC/CDL/Integers/LessEqual.mo b/IBPSA/Controls/OBC/CDL/Integers/LessEqual.mo new file mode 100644 index 0000000000..56f1e14e97 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/LessEqual.mo @@ -0,0 +1,78 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block LessEqual + "Output y is true, if input u1 is less or equal than input u2" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "First input" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Second input" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u1 is less or equal than u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 <= u2; + annotation ( + defaultComponentName="intLesEqu", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,10},{52,-10}}, + lineColor={255,127,0}), + Line( + points={{-100,-80},{42,-80},{42,0}}, + color={255,127,0}), + Line( + points={{-10,20},{-54,0},{-10,-18}}, + thickness=0.5, + color={255,127,0}), + Line( + points={{-54,-18},{-14,-34}}, + thickness=0.5, + color={255,127,0}), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if the Integer input u1 +is less than or equal to the Integer input u2. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end LessEqual; diff --git a/IBPSA/Controls/OBC/CDL/Integers/LessEqualThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/LessEqualThreshold.mo new file mode 100644 index 0000000000..e7684209e6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/LessEqualThreshold.mo @@ -0,0 +1,80 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block LessEqualThreshold + "Output y is true, if input u is less or equal than a threshold" + parameter Integer t=0 + "Threshold for comparison"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input to be compared" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u is less or equal than the threshold" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u <= t; + annotation ( + defaultComponentName="intLesEquThr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%t"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Line( + points={{-54,-18},{-14,-34}}, + thickness=0.5, + color={255,127,0}), + Line( + points={{-10,20},{-54,0},{-10,-18}}, + thickness=0.5, + color={255,127,0})}), + Documentation( + info=" +

+Block that outputs true if the Integer input is less than or equal to +the parameter t. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 6, 2020, by Michael Wetter:
    +Renamed threshold to t.
    +This is for Buildings, issue 2076. +
  • +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end LessEqualThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/LessThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/LessThreshold.mo new file mode 100644 index 0000000000..c7eb2a775b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/LessThreshold.mo @@ -0,0 +1,71 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block LessThreshold + "Output y is true, if input u is less than a threshold" + parameter Integer t=0 + "Threshold for comparison"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input to be compared against the threshold" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u is less than the threshold" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u < t; + annotation ( + defaultComponentName="intLesThr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%t"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Line( + points={{-10,20},{-54,0},{-10,-18}}, + thickness=0.5, + color={255,127,0})}), + Documentation( + info=" +

+Block that outputs true if the Integer input is less than +the parameter t. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end LessThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Max.mo b/IBPSA/Controls/OBC/CDL/Integers/Max.mo new file mode 100644 index 0000000000..1f1bc80502 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Max.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Max + "Pass through the largest signal" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input to the max function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Input to the max function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Maximum of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=max(u1, u2); + annotation ( + defaultComponentName="maxInt", + Documentation( + info=" +

+Block that outputs y = max(u1, u2), +where +u1 and u2 are inputs. +

+", + revisions=" +
    +
  • +January 9, 2017, by Milica Grahovac:
    +First integer implementation, based on the implementation of the +Modelica Standard Library. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-90,36},{90,-36}}, + textColor={160,160,164}, + textString="max()")})); +end Max; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Min.mo b/IBPSA/Controls/OBC/CDL/Integers/Min.mo new file mode 100644 index 0000000000..16873247e2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Min.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Min + "Pass through the smallest signal" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input to the min function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Input to the max function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Minimum of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=min(u1, u2); + annotation ( + defaultComponentName="minInt", + Documentation( + info=" +

+Block that outputs y = min(u1, u2), +where +u1 and u2 are inputs. +

+", + revisions=" +
    +
  • +January 9, 2017, by Milica Grahovac:
    +First integer implementation, based on the implementation of the +Modelica Standard Library. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-90,36},{90,-36}}, + textColor={160,160,164}, + textString="min()")})); +end Min; diff --git a/IBPSA/Controls/OBC/CDL/Integers/MultiSum.mo b/IBPSA/Controls/OBC/CDL/Integers/MultiSum.mo new file mode 100644 index 0000000000..05d90b9356 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/MultiSum.mo @@ -0,0 +1,84 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block MultiSum + "Sum of Integers, y = k[1]*u[1] + k[2]*u[2] + ... + k[n]*u[n]" + parameter Integer nin(min=0)=0 + "Number of input connections" + annotation (Dialog(connectorSizing=true),HideResult=true); + parameter Integer k[nin]=fill(1, nin) + "Input gains"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u[nin] + "Inputs to be multipled with gain and added" + annotation (Placement(transformation(extent={{-140,70},{-100,-70}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Sum of inputs multiplied by the gain" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + if size(u, 1) > 0 then + y=k*u; + else + y=0; + end if; + annotation ( + defaultComponentName="mulSumInt", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-200,-110},{200,-140}}, + textColor={0,0,0}, + fillColor={255,213,170}, + fillPattern=FillPattern.Solid, + textString="%k"), + Text( + extent={{-82,84},{82,-52}}, + textColor={255,127,0}, + fillColor={255,213,170}, + fillPattern=FillPattern.Solid, + textString="+"), + Text( + extent={{-144,150},{156,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs +

+

+y = ∑i=1n ki   ui, +

+

+where k is a parameter with n elements and u is +an input of the same length. +The dimension of u can be enlarged by +drawing an additional connection line. The connection is automatically connected +to this new free index. +

+ +

+If no connection to the input connector u is present, +the output is y=0. +

+

+See + +IBPSA.Controls.OBC.CDL.Integers.Validation.MultiSum +for an example. +

+", + revisions=" +
    +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the Modelica Standard +Library. This is for +Buildings, issue 933. +
  • +
+")); +end MultiSum; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Multiply.mo b/IBPSA/Controls/OBC/CDL/Integers/Multiply.mo new file mode 100644 index 0000000000..fe78df1088 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Multiply.mo @@ -0,0 +1,71 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Multiply "Output product of the two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input for multiplication" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Input for multiplication" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Product of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1*u2; + annotation ( + defaultComponentName="mulInt", + Documentation( + info=" +

+Block that outputs y = u1 * u2, +where +u1 and u2 are Integer inputs. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Product to Multiply.
    +This is for Buildings, issue 2865. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,60},{-40,60},{-30,40}}, + color={255,127,0}), + Line( + points={{-100,-60},{-40,-60},{-30,-40}}, + color={255,127,0}), + Line( + points={{50,0},{100,0}}, + color={255,127,0}), + Line( + points={{-30,0},{30,0}}), + Line( + points={{-15,25.99},{15,-25.99}}), + Line( + points={{-15,-25.99},{15,25.99}}), + Ellipse( + lineColor={255,127,0}, + extent={{-50,-50},{50,50}}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})})); +end Multiply; diff --git a/IBPSA/Controls/OBC/CDL/Integers/OnCounter.mo b/IBPSA/Controls/OBC/CDL/Integers/OnCounter.mo new file mode 100644 index 0000000000..f163c92e22 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/OnCounter.mo @@ -0,0 +1,79 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block OnCounter + "Increment the output if the input switches to true" + parameter Integer y_start=0 + "Initial and reset value of y if input reset switches to true"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Trigger, when set to true, the counter increases" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput reset + "Reset, when true, the counter is set to y_start" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Counter value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + pre(y)=y_start; + +equation + when {trigger,reset} then + y=if reset then + y_start + else + pre(y)+1; + end when; + annotation ( + defaultComponentName="onCouInt", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}, + initialScale=0.06), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={255,213,170}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-64,-62},{58,-86}}, + textColor={0,0,0}, + textString="reset"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs how often the trigger input changed to true +since the last invocation of reset. +

+

+This block may be used as a counter. Its output y starts +at the parameter value y_start. +Whenever the input signal trigger changes to true, +the output is incremented by 1. +When the input reset changes to true, +then the output is reset to y = y_start. +If both inputs trigger and reset change +simultaneously, then the ouput is y = y_start. +

+", + revisions=" +
    +
  • +October 21, 2021, by Michael Wetter:
    +Removed errorneous visible attribute in icon. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end OnCounter; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Constant.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Constant.mo new file mode 100644 index 0000000000..3d1bece672 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Constant.mo @@ -0,0 +1,62 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources; +block Constant + "Output constant signal of type Integer" + parameter Integer k + "Constant output value"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Output with constant value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=k; + annotation ( + defaultComponentName="conInt", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-80}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-70},{82,-70}}, + color={192,192,192}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,0},{80,0}}), + Text( + extent={{-150,-150},{150,-110}}, + textColor={0,0,0}, + textString="k=%k")}), + Documentation( + info=" +

+Block that outputs a constant signal y = k, +where k is an Integer-valued parameter. +

+ +

+\"IntegerConstant.png\" +

+")); +end Constant; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Pulse.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Pulse.mo new file mode 100644 index 0000000000..5131cecfa5 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Pulse.mo @@ -0,0 +1,162 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources; +block Pulse + "Generate pulse signal of type Integer" + parameter Integer amplitude=1 + "Amplitude of pulse"; + parameter Real width( + final min=Constants.small, + final max=1, + final unit="1")=0.5 + "Width of pulse in fraction of period"; + parameter Real period( + final quantity="Time", + final unit="s", + final min=Constants.small) + "Time for one period"; + parameter Real shift( + final quantity="Time", + final unit="s")=0 + "Shift time for output"; + parameter Integer offset=0 + "Offset of output signals"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Output connector with pulse value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Logical.Sources.Pulse booPul( + final width=width, + final period=period, + final shift=shift) + "Boolean pulse" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Conversions.BooleanToInteger booToInt( + final integerTrue=offset+amplitude, + final integerFalse=offset) + "Boolean to integer conversion" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + +equation + connect(booPul.y,booToInt.u) + annotation (Line(points={{-18,0},{18,0}},color={255,0,255})); + connect(booToInt.y,y) + annotation (Line(points={{42,0},{100,0}},color={255,127,0})); + annotation ( + defaultComponentName="intPul", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-80}}, + color={244,125,35}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={244,125,35}, + fillColor={244,125,35}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-70},{82,-70}}, + color={255,170,85}), + Text( + extent={{-147,-152},{153,-112}}, + textColor={0,0,0}, + textString="period=%period"), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3))), + Line( + points={{-132,-18}}, + color={28,108,200}), + Polygon( + points={{-80,52},{-68,56},{-68,48},{-80,52}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{-80,52},{-4,52}}, + color={135,135,135}), + Text( + extent={{-66,80},{-8,56}}, + textColor={135,135,135}, + textString="%period"), + Polygon( + points={{-2,52},{-14,56},{-14,48},{-2,52}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{40,34},{72,34}}, + color={135,135,135}), + Polygon( + points={{74,34},{62,38},{62,30},{74,34}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Text( + extent={{38,64},{96,40}}, + textColor={135,135,135}, + textString="%shift"), + Line( + points={{79,-70},{40,-70},{40,44},{-1,44},{-1,-70},{-41,-70},{-41,44},{-80,44}}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={244,125,35}, + fillColor={244,125,35}, + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+Block that outputs a pulse signal as shown below. +

+

+\"Pulse.png\" +

+

+The pulse signal is generated an infinite number of times, and aligned with time=shift. +

+", + revisions=" +
    +
  • +December 03, 2020, by Milica Grahovac:
    +Renamed delay parameter to shift.
    +This is for +Buildings, issue 2282. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation, avoided state events.
    +This is for +Buildings, issue 2170. +
  • +
  • +September 8, 2020, by Milica Grahovac:
    +First implementation, based on the implementation of Real pulse. +
  • +
+")); +end Pulse; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/TimeTable.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/TimeTable.mo new file mode 100644 index 0000000000..d59e32ec7f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/TimeTable.mo @@ -0,0 +1,221 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources; +block TimeTable + "Table look-up with respect to time with constant segments" + parameter Real table[:,:] + "Table matrix with time as a first table column (in seconds, unless timeScale is not 1) and Integers in all other columns"; + parameter Real timeScale( + final unit="1")=1 + "Time scale of first table column. Set to 3600 if time in table is in hours"; + parameter Real period( + final quantity="Time", + final unit="s", + min=1E-6) + "Periodicity of table"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y[nout] + "Output with tabulated values" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Integer nout=size( + table, + 2)-1 + "Dimension of output vector"; + final parameter Integer nT=size( + table, + 1) + "Number of time stamps"; + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + final parameter Real timeStamps[:]( + each final quantity="Time", + each final unit="s")=timeScale*table[1:end,1] + "Time stamps"; + final parameter Integer val[:,:]=integer( + table[1:end,2:end]+ones( + nT, + nout)*Constants.small) + "Table values as Integer"; + Integer idx( + fixed=false) + "Index for table lookup"; + function getIndex + "Function to get the index for the table look-up" + input Real t( + final quantity="Time", + final unit="s") + "Current time"; + input Real period( + final quantity="Time", + final unit="s") + "Time period"; + input Real x[:]( + each final quantity="Time", + each final unit="s") + "Time stamps"; + output Integer k + "Index in table"; + + protected + Real tS( + final quantity="Time", + final unit="s") + "Time shifted so it is within the period"; + + algorithm + tS := mod( + t, + period); + k :=-1; + for i in size( + x, + 1):-1:1 loop + if tS >= x[i]-1E-6 then + k := i; + break; + end if; + end for; + end getIndex; + +initial equation + t0=IBPSA.Utilities.Math.Functions.round( + x=integer(time/period)*period, + n=6); + assert( + nT > 0, + "No table values defined."); + // Check that all values in the second column are Integer values + for i in 1:nT loop + for j in 2:size( + table, + 2) loop + assert( + abs( + table[i,j]-integer( + table[i,j])) < Constants.small, + "In "+getInstanceName()+": Table value table["+String(i)+", "+String(j)+"] = "+String( + table[i,j])+" is not an Integer."); + end for; + end for; + assert( + abs( + table[1,1]) < Constants.small, + "In "+getInstanceName()+": First time stamp must be zero as otherwise no data is defined for the start of the table."); + assert( + period-table[1,end] > Constants.small, + "In "+getInstanceName()+": Last time stamp in table must be smaller than period."); + idx=getIndex( + time, + period, + timeStamps); + y[:]=val[idx,:]; + +equation + when {sample(t0+timeStamps[i],period) for i in 1:nT} then + idx=getIndex( + time, + period, + timeStamps); + y[:]=val[idx,:]; + end when; + annotation ( + defaultComponentName="intTimTab", + Documentation( + info=" +

+Block that outputs Integer time table values. +

+

+The block takes as a parameter a time table of a format: +

+
+table = [ 0*3600, 2;
+          6*3600, 1;
+         18*3600, 8];
+period = 24*3600;
+
+

+where the first column of table is time and the remaining column(s) are the table values. +The time column contains Real values that are in units of seconds if timeScale = 1. +The parameter timeScale can be used to scale the time values, for example, use +timeScale = 3600 if the values in the first column are interpreted as hours. +

+

+The values in column two and higher must be of type Integer, otherwise the model stops with an error. +

+

+Until a new tabulated value is set, the previous tabulated value is returned. +

+

+The table scope is repeated periodically with periodicity period. +

+", + revisions=" +
    +
  • +October 21, 2021, by Michael Wetter:
    +Removed writing output value in icon (as it is an array of values). +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Revised to call round() as a function.
    +For Buildings, issue 2170. +
  • +
  • +October 7, 2020, by Michael Wetter:
    +Revised implementation to add timeSpan and to guard against rounding errors. +Refactored to avoid non-needed event-triggering functions. +Removed parameter offset as I don't see a use case that justifies this complexity. +
  • +
  • +September 14, 2020, by Milica Grahovac:
    +Initial CDL implementation based on continuous time table implementation in CDL. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={244,125,35}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{-80.0,90.0},{-88.0,68.0},{-72.0,68.0},{-80.0,90.0}}), + Line( + points={{-80.0,68.0},{-80.0,-80.0}}, + color={192,192,192}), + Line( + points={{-90.0,-70.0},{82.0,-70.0}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{90.0,-70.0},{68.0,-62.0},{68.0,-78.0},{90.0,-70.0}}), + Rectangle( + lineColor={255,255,255}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-48.0,-50.0},{2.0,70.0}}), + Line( + points={{-48.0,-50.0},{-48.0,70.0},{52.0,70.0},{52.0,-50.0},{-48.0,-50.0},{-48.0,-20.0},{52.0,-20.0},{52.0,10.0},{-48.0,10.0},{-48.0,40.0},{52.0,40.0},{52.0,70.0},{2.0,70.0},{2.0,-51.0}})})); +end TimeTable; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mo new file mode 100644 index 0000000000..83b1efc9dd --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mo @@ -0,0 +1,44 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources.Validation; +model Constant + "Validate the Constant block" + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant con( + k=5) + "Block output integer constant value" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Constant.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Sources.Constant. +

+ +", + revisions=" +
    +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Constant; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mo new file mode 100644 index 0000000000..d444a49170 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mo @@ -0,0 +1,67 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources.Validation; +model Pulse + "Validation model for the Integer Pulse block" + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse pul3( + amplitude=1, + width=0.5, + period=1, + offset=3) + "Block that generates pulse signal of type Integer at simulation start time" + annotation (Placement(transformation(extent={{-10,-80},{10,-60}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse pul1( + amplitude=2, + width=0.5, + period=1, + offset=1, + shift=1.75) + "Block that generates pulse signal of type Integer starting from after the simulation start time" + annotation (Placement(transformation(extent={{-10,0},{10,20}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse pul2( + amplitude=3, + width=0.5, + period=1, + offset=-2, + shift=-1.25) + "Block that generates pulse signal of type Integer starting from before the simulation start time" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse pul( + width=0.5, + period=1) + "Block that generates pulse signal of type Integer at simulation start time and has infinite number of periods" + annotation (Placement(transformation(extent={{-10,40},{10,60}}))); + annotation ( + experiment( + StopTime=5, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/Pulse.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse. +

+", + revisions=" +
    +
  • +September 8, 2020, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Pulse; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mo new file mode 100644 index 0000000000..59164ca38d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources.Validation; +model TimeTable + "Validation model for TimeTable block" + IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable intTimTab( + table=[ + 0,1,4; + 1.3,2,2; + 2.9,0,-1; + 4,3,7], + period=5) + "Integer time table" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable intTimTab1( + table=[ + 0,-1,-2; + 6,1,4; + 7.3,2,2; + 8.9,0,-1; + 10,3,7], + period=11) + "Integer time table" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable tabOneRow( + table=[ + 0,-1], + period=2) + "Time table with only one row of data" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + annotation ( + experiment( + Tolerance=1e-6, + StopTime=15.0), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTable.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable. +

+", + revisions=" +
    +
  • +October 8, 2020, by Michael Wetter:
    +Added test for time table with only one row. +
  • +
  • +September 14, 2020, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimeTable; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mo new file mode 100644 index 0000000000..022bb3e046 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mo @@ -0,0 +1,72 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources.Validation; +model TimeTableNegativeStartTime + "Validation model for TimeTable block with negative start time" + IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable intTimTab( + table=[ + 0,1,4; + 1.3,2,2; + 2.9,0,-1; + 4,3,7], + period=5) + "Integer time table" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable intTimTab1( + table=[ + 0,-1,-2; + 6,1,4; + 7.3,2,2; + 8.9,0,-1; + 10,3,7], + period=11) + "Integer time table" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable tabOneRow( + table=[ + 0,-1], + period=2) + "Time table with only one row of data" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + annotation ( + experiment( + Tolerance=1e-6, + StartTime=-5.0, + StopTime=10.0), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Sources/Validation/TimeTableNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the block + +IBPSA.Controls.OBC.CDL.Integers.Sources.TimeTable. +The model is identical to + +IBPSA.Controls.OBC.CDL.Integers.Sources.Validation.TimeTable +except that the start time is negative. +", + revisions=" +

    +
  • +October 8, 2020, by Michael Wetter:
    +Added test for time table with only one row. +
  • +
  • +September 14, 2020, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimeTableNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.mo new file mode 100644 index 0000000000..ef71fd3acb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Integers.Sources; +package Validation "Collection of models that validate the logical sources blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Integers.Sources. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Polygon( + origin={8,14}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.order b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.order new file mode 100644 index 0000000000..dd6122382b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/Validation/package.order @@ -0,0 +1,4 @@ +Constant +Pulse +TimeTable +TimeTableNegativeStartTime diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/package.mo b/IBPSA/Controls/OBC/CDL/Integers/Sources/package.mo new file mode 100644 index 0000000000..b6e3294db1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/package.mo @@ -0,0 +1,33 @@ +within IBPSA.Controls.OBC.CDL.Integers; +package Sources "Package with blocks that generate source signals" + annotation ( + Documentation( + info=" +

+Package with blocks that generate signals. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Polygon( + origin={23.3333,0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-23.333,30.0},{46.667,0.0},{-23.333,-30.0}}), + Rectangle( + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-70,-4.5},{0,4.5}})})); +end Sources; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Sources/package.order b/IBPSA/Controls/OBC/CDL/Integers/Sources/package.order new file mode 100644 index 0000000000..04261d0db1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Sources/package.order @@ -0,0 +1,4 @@ +Constant +Pulse +TimeTable +Validation diff --git a/IBPSA/Controls/OBC/CDL/Integers/Stage.mo b/IBPSA/Controls/OBC/CDL/Integers/Stage.mo new file mode 100644 index 0000000000..61a90bda16 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Stage.mo @@ -0,0 +1,143 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Stage "Output total stages that should be enabled" + + parameter Integer n(final min=1) + "Number of stages that could be enabled"; + + parameter Real holdDuration( + final quantity="Time", + final unit="s", + min=0) + "Minimum time that the output needs to be held constant. Set to 0 to disable hold time"; + + parameter Real h( + min=0.001/n, + max=0.5/n) = 0.02/n "Hysteresis for comparing input with threshold"; + + parameter Integer pre_y_start = 0 + "Value of pre(y) at initial time"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u( + final min=0, + final max=1) + "Input between 0 and 1 for specifying stages" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y( + final min=1, + final max=n) + "Total number of stages that should be enabled" + annotation (Placement(transformation(extent={{100,-20},{140,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Real staThr[n]={(i - 1)/n for i in 1:n} + "Stage thresholds"; + discrete Real tNext( + final unit="s") + "Next instant at which the block checks if it has passed the minimum hold time"; + discrete Real upperThreshold + "Current upper bound of the stage range which the input is in"; + discrete Real lowerThreshold + "Current lower bound of the stage range which the input is in"; + Boolean checkUpper + "Check if the input value is greater than the upper bound"; + Boolean checkLower + "Check if the input value is greater than the lower bound"; + +initial equation + upperThreshold = 0; + lowerThreshold = 0; + pre(checkUpper) = false; + pre(checkLower) = true; + tNext =time + holdDuration; + pre(y)=pre_y_start; + +equation + checkUpper = not pre(checkUpper) and (u > (pre(upperThreshold) + h)) or pre(checkUpper) and (u >= (pre(upperThreshold) - h)); + checkLower = not pre(checkLower) and (u > (pre(lowerThreshold) + h)) or pre(checkLower) and (u >= (pre(lowerThreshold) - h)); + + when (time >= pre(tNext) and (checkUpper or not checkLower)) then + tNext =time + holdDuration; + y =if (u >= staThr[n]) + then + n + else + sum({(if ((u < staThr[i]) and (u >= staThr[i - 1])) then i - 1 else 0) for i in 2:n}); + upperThreshold = if (y == n) then staThr[n] else staThr[y + 1]; + lowerThreshold = if (y == 0) then pre(lowerThreshold) else staThr[y]; + end when; + +annotation (defaultComponentName="sta", + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={255,213,170}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-100,140},{100,100}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-98,14},{-54,-12}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u, + leftJustified=false, + significantDigits=3))), + Text( + extent={{56,16},{100,-10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3))), + Text( + extent={{-62,70},{64,100}}, + textColor={0,0,0}, + textString="h=%h"), + Line( + points={{-60,-60},{-40,-60},{-40,-20},{0,-20},{0,20},{40,20},{40,60},{ + 60,60}}, + color={0,0,0}, + thickness=0.5), + Line( + points={{-80,-60},{40,60}}, + color={0,0,0}, + thickness=0.5, + pattern=LinePattern.Dash)}), + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}})), + Documentation(info=" +

+Block that outputs the total number of stages to be enabled. +

+

+The block compares the input u with the threshold of each stage. If the input is greater +than a stage threshold, the output is set to that stage. +The block outputs the total number of stages to be enabled. +

+

+The parameter n specifies the maximum number of stages. +The stage thresholds are evenly distributed, i.e. the thresholds +for stages [1, 2, 3, ... , n] are +[0, 1/n, 2/n, ... , (n-1)/n], plus a hysteresis which is by default +h=0.02/n. +Once the output changes, it cannot change for at least holdDuration seconds. +

+", +revisions=" +
    +
  • +March 3, 2023, by Michael Wetter:
    +Revised implementation. +
  • +
  • +September 8, 2022, by Jianjun Hu:
    +First implementation.
    +This is for Buildings, issue 3103. +
  • +
+")); +end Stage; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Subtract.mo b/IBPSA/Controls/OBC/CDL/Integers/Subtract.mo new file mode 100644 index 0000000000..2cbe7f3eb8 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Subtract.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Subtract "Output the difference of the two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input u1 for the minuend" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u2 + "Input u2 for the subtrahend" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Output with the difference u1-u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + +equation + y=u1-u2; + annotation ( + defaultComponentName="intSub", + Documentation( + info=" +

+Block that outputs y as the difference of the +two input signals u1 and u2, +

+
+    y = u1 - u2
+
+", +revisions=" +
    +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={255,127,0}, + extent={{-50,-50},{50,50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line(points={{-100,60},{-74,24},{-44,24}}, color={255,127,0}), + Line(points={{-100,-60},{-74,-28},{-42,-28}}, color={255,127,0}), + Line(points={{50,0},{100,0}}, color={255,127,0}), + Text( + extent={{-38,-28},{38,40}}, + textColor={255,127,0}, + textString="-"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Subtract; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Switch.mo b/IBPSA/Controls/OBC/CDL/Integers/Switch.mo new file mode 100644 index 0000000000..fa6cddcaaa --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Switch.mo @@ -0,0 +1,118 @@ +within IBPSA.Controls.OBC.CDL.Integers; +block Switch + "Switch between two integer signals" + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Boolean switch input signal, if true, y=u1, else y=u3" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u3 + "Input u3" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Output with u1 if u2 is true, else u3" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=if u2 then u1 else u3; + annotation ( + defaultComponentName="intSwi", + Documentation( + info=" +

+Block that outputs one of two integer input signals based on a boolean input signal. +

+

+If the input signal u2 is true, +the block outputs y = u1. +Otherwise, it outputs y = u3. +

+", + revisions=" +
    +
  • +July 17, 2020, by Jianjun Hu:
    +Changed icon to display dynamically which input signal is being outputted.
    +This is for +Buildings, issue 2033. +
  • +
  • +July 10, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Line( + points={{12,0},{100,0}}, + color={244,125,35}), + Line( + points={{-100,0},{-40,0}}, + color={255,0,255}), + Line( + points={{-100,-80},{-40,-80},{-40,-80}}, + color={244,125,35}), + Line( + points={{-40,12},{-40,-10}}, + color={255,0,255}), + Line( + points={{-100,80},{-40,80}}, + color={244,125,35}), + Line( + points=DynamicSelect({{8,2},{-40,80}},{{8,2}, + if u2 then + {-40,80} + else + {-40,-80}}), + color={244,125,35}, + thickness=1), + Ellipse( + lineColor={0,0,127}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{2.0,-6.0},{18.0,8.0}}), + Ellipse( + extent={{-71,7},{-85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-90,80},{-46,54}}, + textColor=DynamicSelect({0,0,0}, + if u2 then + {0,0,0} + else + {235,235,235}), + textString="true"), + Text( + extent={{-90,-46},{-38,-76}}, + textColor=DynamicSelect({0,0,0}, + if u2 then + {235,235,235} + else + {0,0,0}), + textString="false"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")})); +end Switch; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Abs.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Abs.mo new file mode 100644 index 0000000000..3d3d3759ab --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Abs.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Abs + "Validation model for the absolute block" + IBPSA.Controls.OBC.CDL.Integers.Abs abs1 + "Block that outputs the absolute value of the input" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,0},{-42,0}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(reaToInt.y,abs1.u) + annotation (Line(points={{21,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Abs.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Abs. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Abs; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Add.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Add.mo new file mode 100644 index 0000000000..2d8bb02fab --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Add.mo @@ -0,0 +1,82 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Add + "Validation model for the Add block" + IBPSA.Controls.OBC.CDL.Integers.Add add1 + "Block that outputs the sum of the two inputs" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-0.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-58,20},{-42,20}},color={0,0,127})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-58,-20},{-42,-20}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-18,-20},{-2,-20}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-18,20},{-2,20}},color={0,0,127})); + connect(reaToInt.y,add1.u1) + annotation (Line(points={{22,20},{40,20},{40,6},{58,6}},color={255,127,0})); + connect(reaToInt1.y,add1.u2) + annotation (Line(points={{22,-20},{40,-20},{40,-6},{58,-6}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Add.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Add. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Add; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/AddParameter.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/AddParameter.mo new file mode 100644 index 0000000000..19cc9ab1fe --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/AddParameter.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model AddParameter "Validation model for the AddParameter block" + IBPSA.Controls.OBC.CDL.Integers.AddParameter addPar(p=5) + "Block that outputs the sum of an input plus a parameter" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1(n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-58,0},{-42,0}}, color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-18,0},{-2,0}}, color={0,0,127})); + connect(reaToInt.y, addPar.u) + annotation (Line(points={{22,0},{38,0}}, color={255,127,0})); + +annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/AddParameter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.AddParameter. +

+", +revisions=" +
    +
  • +February 3, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end AddParameter; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Change.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Change.mo new file mode 100644 index 0000000000..0ee795c834 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Change.mo @@ -0,0 +1,93 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Change + "Validation model for the Change block" + IBPSA.Controls.OBC.CDL.Integers.Change cha + "Check if the integer input changes value" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + offset=0, + height=20, + duration=1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler changeSampler + "Triggered sampler" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,-1; + 0.3,0.5; + 0.5,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler increaseSampler + "Increase sampler" + annotation (Placement(transformation(extent={{60,60},{80,80}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler decreaseSampler + "Decrease sampler" + annotation (Placement(transformation(extent={{60,-20},{80,0}}))); + +equation + connect(ramp2.y,changeSampler.u) + annotation (Line(points={{-18,30},{58,30}},color={0,0,127})); + connect(timTabLin.y[1],reaToInt.u) + annotation (Line(points={{-58,-40},{-42,-40}},color={0,0,127})); + connect(reaToInt.y,cha.u) + annotation (Line(points={{-18,-40},{-2,-40}},color={255,127,0})); + connect(ramp2.y,increaseSampler.u) + annotation (Line(points={{-18,30},{40,30},{40,70},{58,70}},color={0,0,127})); + connect(ramp2.y,decreaseSampler.u) + annotation (Line(points={{-18,30},{40,30},{40,-10},{58,-10}},color={0,0,127})); + connect(cha.up,increaseSampler.trigger) + annotation (Line(points={{22,-34},{30,-34},{30,52},{70,52},{70,58.2}},color={255,0,255})); + connect(cha.y,changeSampler.trigger) + annotation (Line(points={{22,-40},{46,-40},{46,12},{70,12},{70,18.2}},color={255,0,255})); + connect(cha.down,decreaseSampler.trigger) + annotation (Line(points={{22,-46},{70,-46},{70,-21.8}},color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Change.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Change. +

+", + revisions=" +
    +
  • +July 13, 2018, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false))); +end Change; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Equal.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Equal.mo new file mode 100644 index 0000000000..c12bfc65d2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Equal.mo @@ -0,0 +1,84 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Equal + "Validation model for the Equal block" + IBPSA.Controls.OBC.CDL.Integers.Equal intEqu + "Block output true if input 1 is equal to input 2" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 0.3,1; + 0.5,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin1( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 0.35,1; + 0.55,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + +equation + connect(reaToInt.y,intEqu.u1) + annotation (Line(points={{1,20},{40,20},{40,0},{58,0}},color={255,127,0})); + connect(reaToInt1.y,intEqu.u2) + annotation (Line(points={{1,-20},{40,-20},{40,-8},{58,-8}},color={255,127,0})); + connect(timTabLin.y[1],reaToInt.u) + annotation (Line(points={{-59,20},{-22,20}},color={0,0,127})); + connect(timTabLin1.y[1],reaToInt1.u) + annotation (Line(points={{-59,-20},{-22,-20}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Equal.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Equal. +

+", + revisions=" +
    +
  • +September 26, 2017, by Thierry S. Nouidui:
    +Revised implementation for JModelica verification. +This is for +Buildings, issue 939. +
  • +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Equal; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Greater.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Greater.mo new file mode 100644 index 0000000000..fc163aa4d0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Greater.mo @@ -0,0 +1,82 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Greater + "Validation model for the Greater block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1.5, + height=5.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Integers.Greater intGre + "Block output true if input 1 is greater than input 2" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,20},{-42,20}},color={0,0,127})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-59,-20},{-42,-20}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,20},{-2,20}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-19,-20},{-2,-20}},color={0,0,127})); + connect(reaToInt.y,intGre.u1) + annotation (Line(points={{21,20},{40,20},{40,0},{58,0}},color={255,127,0})); + connect(reaToInt1.y,intGre.u2) + annotation (Line(points={{21,-20},{40,-20},{40,-8},{58,-8}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Greater.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Greater. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Greater; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mo new file mode 100644 index 0000000000..458d123262 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mo @@ -0,0 +1,84 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model GreaterEqual + "Validation model for the GreaterEqual block" + IBPSA.Controls.OBC.CDL.Integers.GreaterEqual intGreEqu + "Block output true if input 1 is greater or equal to input 2" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,-1; + 0.3,0.5; + 0.5,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin1( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 0.35,1; + 0.55,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + +equation + connect(reaToInt.y,intGreEqu.u1) + annotation (Line(points={{1,20},{40,20},{40,0},{58,0}},color={255,127,0})); + connect(reaToInt1.y,intGreEqu.u2) + annotation (Line(points={{1,-20},{40,-20},{40,-8},{58,-8}},color={255,127,0})); + connect(timTabLin.y[1],reaToInt.u) + annotation (Line(points={{-59,20},{-22,20}},color={0,0,127})); + connect(timTabLin1.y[1],reaToInt1.u) + annotation (Line(points={{-59,-20},{-22,-20}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqual.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.GreaterEqual. +

+", + revisions=" +
    +
  • +September 26, 2017, by Thierry S. Nouidui:
    +Revised implementation for JModelica verification. +This is for +Buildings, issue 939. +
  • +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end GreaterEqual; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mo new file mode 100644 index 0000000000..1489d62f43 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model GreaterEqualThreshold + "Validation model for the GreaterEqualThreshold block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Integers.GreaterEqualThreshold intGreEquThr( + t=2) + "Block output true if input is greater or equal to threshold value" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,0},{-42,0}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(reaToInt.y,intGreEquThr.u) + annotation (Line(points={{21,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterEqualThreshold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.GreaterEqualThreshold. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end GreaterEqualThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mo new file mode 100644 index 0000000000..774f26cefb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model GreaterThreshold + "Validation model for the GreaterThreshold block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Integers.GreaterThreshold intGreThr( + t=2) + "Block output true if input is greater than threshold value" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,0},{-50,0},{-50,0},{-42,0}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,0},{-12,0},{-12,0},{-2,0}},color={0,0,127})); + connect(reaToInt.y,intGreThr.u) + annotation (Line(points={{21,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/GreaterThreshold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.GreaterThreshold. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end GreaterThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Less.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Less.mo new file mode 100644 index 0000000000..0ee0bedf50 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Less.mo @@ -0,0 +1,84 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Less + "Validation model for the Less block" + IBPSA.Controls.OBC.CDL.Integers.Less intLes + "Block output true if input 1 is less than input 2" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,-1; + 0.3,0.5; + 0.5,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin1( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 0.35,1; + 0.55,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + +equation + connect(reaToInt1.y,intLes.u2) + annotation (Line(points={{1,-20},{40,-20},{40,-8},{58,-8}},color={255,127,0})); + connect(reaToInt.y,intLes.u1) + annotation (Line(points={{1,20},{40,20},{40,0},{58,0}},color={255,127,0})); + connect(timTabLin.y[1],reaToInt.u) + annotation (Line(points={{-59,20},{-22,20}},color={0,0,127})); + connect(timTabLin1.y[1],reaToInt1.u) + annotation (Line(points={{-59,-20},{-22,-20}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Less.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Less. +

+", + revisions=" +
    +
  • +September 26, 2017, by Thierry S. Nouidui:
    +Revised implementation for JModelica verification. +This is for +Buildings, issue 939. +
  • +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Less; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqual.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqual.mo new file mode 100644 index 0000000000..ffb57e5e46 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqual.mo @@ -0,0 +1,82 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model LessEqual + "Validation model for the LessEqual block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1.5, + height=5.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Integers.LessEqual intLesEqu + "Block output true if input 1 is less or equal to input 2" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,20},{-42,20}},color={0,0,127})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-59,-20},{-42,-20}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,20},{-2,20}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-19,-20},{-2,-20}},color={0,0,127})); + connect(reaToInt1.y,intLesEqu.u2) + annotation (Line(points={{21,-20},{40,-20},{40,-8},{58,-8}},color={255,127,0})); + connect(reaToInt.y,intLesEqu.u1) + annotation (Line(points={{21,20},{40,20},{40,0},{58,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqual.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.LessEqual. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end LessEqual; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mo new file mode 100644 index 0000000000..df07a3997c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model LessEqualThreshold + "Validation model for the LessEqualThreshold block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Integers.LessEqualThreshold intLesEquThr( + t=2) + "Block output true if input is less or equal to threshold value" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,0},{-42,0}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(reaToInt.y,intLesEquThr.u) + annotation (Line(points={{21,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessEqualThreshold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.LessEqualThreshold. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end LessEqualThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/LessThreshold.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/LessThreshold.mo new file mode 100644 index 0000000000..91ec41c363 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/LessThreshold.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model LessThreshold + "Validation model for the LessThreshold block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Integers.LessThreshold intLesThr( + t=2) + "Block output true if input is less than threshold value" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,0},{-42,0}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(reaToInt.y,intLesThr.u) + annotation (Line(points={{21,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/LessThreshold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.LessThreshold. +

+", + revisions=" +
    +
  • +August 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end LessThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Max.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Max.mo new file mode 100644 index 0000000000..15c3fec996 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Max.mo @@ -0,0 +1,82 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Max + "Validation model for the Max block" + IBPSA.Controls.OBC.CDL.Integers.Max max1 + "Block that outputs the largest inputs" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1.5, + height=5.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,20},{-42,20}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,20},{-2,20}},color={0,0,127})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-59,-20},{-42,-20}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-19,-20},{-2,-20}},color={0,0,127})); + connect(reaToInt1.y,max1.u2) + annotation (Line(points={{21,-20},{40,-20},{40,-6},{58,-6}},color={255,127,0})); + connect(reaToInt.y,max1.u1) + annotation (Line(points={{21,20},{40,20},{40,6},{58,6}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Max.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Max. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Max; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Min.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Min.mo new file mode 100644 index 0000000000..7389df1e7b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Min.mo @@ -0,0 +1,82 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Min + "Validation model for the Min block" + IBPSA.Controls.OBC.CDL.Integers.Min min1 + "Block that outputs the smallest inputs" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=10.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1.5, + height=5.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,20},{-42,20}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,20},{-2,20}},color={0,0,127})); + connect(reaToInt.y,min1.u1) + annotation (Line(points={{21,20},{40,20},{40,6},{58,6}},color={255,127,0})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-59,-20},{-42,-20}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-19,-20},{-2,-20}},color={0,0,127})); + connect(reaToInt1.y,min1.u2) + annotation (Line(points={{21,-20},{40,-20},{40,-6},{58,-6}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Min.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Min. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Min; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/MultiSum.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/MultiSum.mo new file mode 100644 index 0000000000..92b8440e4d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/MultiSum.mo @@ -0,0 +1,102 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model MultiSum + "Validation model for the block to find sum of multiple inputs" + IBPSA.Controls.OBC.CDL.Integers.MultiSum add1( + nin=3) + "Block that outputs the sum of the inputs" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-0.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp3( + duration=1, + height=7.0, + offset=-1.5) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,30},{20,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round3( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-59,40},{-42,40}},color={0,0,127})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-59,0},{-42,0}},color={0,0,127})); + connect(ramp3.y,round3.u) + annotation (Line(points={{-59,-40},{-42,-40}},color={0,0,127})); + connect(round3.y,reaToInt2.u) + annotation (Line(points={{-19,-40},{-2,-40}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-19,40},{-2,40}},color={0,0,127})); + connect(reaToInt.y,add1.u[1]) + annotation (Line(points={{21,40},{40,40},{40,4.66667},{58,4.66667}},color={255,127,0})); + connect(reaToInt1.y,add1.u[2]) + annotation (Line(points={{21,0},{38,0},{38,0},{58,0}},color={255,127,0})); + connect(reaToInt2.y,add1.u[3]) + annotation (Line(points={{21,-40},{40,-40},{40,-4.66667},{58,-4.66667}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/MultiSum.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.MultiSum. +

+", + revisions=" +
    +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiSum; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Multiply.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Multiply.mo new file mode 100644 index 0000000000..874f1302d4 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Multiply.mo @@ -0,0 +1,88 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Multiply "Validation model for the Multiply block" + IBPSA.Controls.OBC.CDL.Integers.Multiply product + "Block that outputs the product of the two inputs" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 + "Convert real to integer" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,-1; + 0.3,0.5; + 0.5,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin1( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 0.35,1; + 0.55,0; + 0.7,1; + 1,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + +equation + connect(reaToInt1.y,product.u1) + annotation (Line(points={{2,20},{40,20},{40,6},{58,6}},color={255,127,0})); + connect(reaToInt2.y,product.u2) + annotation (Line(points={{2,-20},{40,-20},{40,-6},{58,-6}},color={255,127,0})); + connect(timTabLin.y[1],reaToInt1.u) + annotation (Line(points={{-58,20},{-22,20}},color={0,0,127})); + connect(timTabLin1.y[1],reaToInt2.u) + annotation (Line(points={{-58,-20},{-22,-20}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Multiply.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Multiply. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Product to Multiply.
    +This is for Buildings, issue 2865. +
  • +
  • +September 26, 2017, by Thierry S. Nouidui:
    +Revised implementation for JModelica verification. +This is for +Buildings, issue 939. +
  • +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Multiply; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/OnCounter.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/OnCounter.mo new file mode 100644 index 0000000000..ed33ed1f0b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/OnCounter.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model OnCounter + "Validation model for the OnCounter block" + IBPSA.Controls.OBC.CDL.Integers.OnCounter onCounter + "Block that outputs increment if the input switches to true" + annotation (Placement(transformation(extent={{16,-10},{36,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=0.1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-10},{-6,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse reset( + width=0.5, + period=1.0) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-50},{-6,-30}}))); + +equation + connect(reset.y,onCounter.reset) + annotation (Line(points={{-5,-40},{26,-40},{26,-14},{26,-14},{26,-12},{26,-12}},color={255,0,255})); + connect(booPul.y,onCounter.trigger) + annotation (Line(points={{-5,0},{12,0},{12,0}},color={255,0,255})); + annotation ( + experiment( + StopTime=2.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/OnCounter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.OnCounter. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end OnCounter; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Stage.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Stage.mo new file mode 100644 index 0000000000..45988e13b0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Stage.mo @@ -0,0 +1,85 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Stage + "Validation model for the block to find the total number of enabled stages" + + IBPSA.Controls.OBC.CDL.Integers.Stage sta( + final n=4, + final holdDuration=5) + "Total number of enabled stages, with a hold duration of 5 seconds" + annotation (Placement(transformation(extent={{20,50},{40,70}}))); + IBPSA.Controls.OBC.CDL.Integers.Stage zerHolTim( + final n=4, + final holdDuration=0) + "Total number of enabled stages, without any hold duration" + annotation (Placement(transformation(extent={{20,10},{40,30}}))); + IBPSA.Controls.OBC.CDL.Integers.Stage sta1( + final n=4, + final holdDuration=2) + "Total number of enabled stages, with a hold duration of 2 seconds" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Integers.Stage lesHolTim( + final n=4, + final holdDuration=1) + "Total number of enabled stages, with a hold duration of 1 second" + annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + final duration=10, + final height=1, + final startTime=1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + final amplitude=0.5, + final freqHz=1/5, + final offset=0.5) + "Block that generates sine signal" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + +equation + connect(ramp1.y, sta.u) + annotation (Line(points={{-18,60},{18,60}}, color={0,0,127})); + connect(ramp1.y,zerHolTim. u) annotation (Line(points={{-18,60},{0,60},{0,20}, + {18,20}}, color={0,0,127})); + connect(sin.y, sta1.u) + annotation (Line(points={{-18,-20},{18,-20}}, color={0,0,127})); + connect(sin.y, lesHolTim.u) annotation (Line(points={{-18,-20},{0,-20},{0,-60}, + {18,-60}}, color={0,0,127})); + annotation ( + experiment(StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Stage.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Stage. +

+

+The instances use different values for the duration time during which the output is held constant. +

+", +revisions=" +
    +
  • +September 12, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Stage; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Subtract.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Subtract.mo new file mode 100644 index 0000000000..97ad81008c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Subtract.mo @@ -0,0 +1,81 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Subtract "Validation model for the Subtract block" + IBPSA.Controls.OBC.CDL.Integers.Subtract sub + "Block that outputs the difference of the two inputs" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-0.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round1(n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert real to integer" + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2(n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 + "Convert real to integer" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-58,20},{-42,20}},color={0,0,127})); + connect(ramp2.y,round2.u) + annotation (Line(points={{-58,-20},{-42,-20}},color={0,0,127})); + connect(round2.y,reaToInt1.u) + annotation (Line(points={{-18,-20},{-2,-20}},color={0,0,127})); + connect(round1.y,reaToInt.u) + annotation (Line(points={{-18,20},{-2,20}},color={0,0,127})); + connect(reaToInt.y, sub.u1) + annotation (Line(points={{22,20},{40,20},{40,6},{58,6}}, color={255,127,0})); + connect(reaToInt1.y, sub.u2) + annotation (Line(points={{22,-20},{40,-20},{40,-6},{58,-6}}, color={255,127,0})); + +annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Subtract.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Subtract. +

+", +revisions=" +
    +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Subtract; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/Switch.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/Switch.mo new file mode 100644 index 0000000000..efcd93acb7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/Switch.mo @@ -0,0 +1,102 @@ +within IBPSA.Controls.OBC.CDL.Integers.Validation; +model Switch "Validation model for the Switch block" + IBPSA.Controls.OBC.CDL.Integers.Switch integerSwitch + "Integer switch" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.7, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=3) + "Block that outputs cyclic on and off: switch between u1 and u3" + annotation (Placement(transformation(extent={{-26,-10},{-6,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul3( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt( + k=5) + "Integer constant" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt1( + k=2) + "Integer constant" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + +protected + IBPSA.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt + "Type converter" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + IBPSA.Controls.OBC.CDL.Integers.Multiply proInt "Product" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt1 + "Type converter" + annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); + IBPSA.Controls.OBC.CDL.Integers.Multiply proInt1 "Product" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + +equation + connect(booPul2.y,integerSwitch.u2) + annotation (Line(points={{-4,0},{58,0}},color={255,0,255})); + connect(booPul1.y,booToInt.u) + annotation (Line(points={{-58,30},{-42,30}},color={255,0,255})); + connect(booPul3.y,booToInt1.u) + annotation (Line(points={{-58,-70},{-42,-70}},color={255,0,255})); + connect(conInt.y,proInt.u1) + annotation (Line(points={{-58,70},{-20,70},{-20,56},{-2,56}},color={255,127,0})); + connect(booToInt.y,proInt.u2) + annotation (Line(points={{-18,30},{-10,30},{-10,44},{-2,44}},color={255,127,0})); + connect(conInt1.y,proInt1.u1) + annotation (Line(points={{-58,-30},{-10,-30},{-10,-44},{-2,-44}},color={255,127,0})); + connect(booToInt1.y,proInt1.u2) + annotation (Line(points={{-18,-70},{-10,-70},{-10,-56},{-2,-56}},color={255,127,0})); + connect(proInt.y,integerSwitch.u1) + annotation (Line(points={{22,50},{40,50},{40,8},{58,8}},color={255,127,0})); + connect(proInt1.y,integerSwitch.u3) + annotation (Line(points={{22,-50},{40,-50},{40,-8},{58,-8}},color={255,127,0})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Integers/Validation/Switch.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Integers.Switch. +

+

+The input u2 is the switch input: If u2 = true, +then output y = u1; +else output y = u3. +

+ +", + revisions=" +
    +
  • +July 10, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Switch; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Integers/Validation/package.mo new file mode 100644 index 0000000000..e1c71c475f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Integers; +package Validation "Collection of models that validate the integer blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Integers. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Polygon( + origin={8,14}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Integers/Validation/package.order b/IBPSA/Controls/OBC/CDL/Integers/Validation/package.order new file mode 100644 index 0000000000..027e6b7b2a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/Validation/package.order @@ -0,0 +1,21 @@ +Abs +Add +AddParameter +Change +Equal +Greater +GreaterEqual +GreaterEqualThreshold +GreaterThreshold +Less +LessEqual +LessEqualThreshold +LessThreshold +Max +Min +MultiSum +Multiply +OnCounter +Stage +Subtract +Switch diff --git a/IBPSA/Controls/OBC/CDL/Integers/package.mo b/IBPSA/Controls/OBC/CDL/Integers/package.mo new file mode 100644 index 0000000000..e101829651 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL; +package Integers "Package with blocks for integer variables" + annotation ( + Documentation( + info=" +

+Package with blocks for elementary mathematical functions +for integer variables. +

+", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Text( + extent={{-56,90},{48,-88}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="Z")})); +end Integers; diff --git a/IBPSA/Controls/OBC/CDL/Integers/package.order b/IBPSA/Controls/OBC/CDL/Integers/package.order new file mode 100644 index 0000000000..f8b45b509a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Integers/package.order @@ -0,0 +1,23 @@ +Abs +Add +AddParameter +Change +Equal +Greater +GreaterEqual +GreaterEqualThreshold +GreaterThreshold +Less +LessEqual +LessEqualThreshold +LessThreshold +Max +Min +MultiSum +Multiply +OnCounter +Stage +Subtract +Switch +Sources +Validation diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/BooleanInput.mo b/IBPSA/Controls/OBC/CDL/Interfaces/BooleanInput.mo new file mode 100644 index 0000000000..28046082a4 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/BooleanInput.mo @@ -0,0 +1,39 @@ +within IBPSA.Controls.OBC.CDL.Interfaces; +connector BooleanInput=input Boolean + "Boolean input connector" +annotation (defaultComponentName="u", + Icon(graphics={Polygon(lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern = FillPattern.Solid, + points={{0,50},{100,0},{0,-50}})}, + coordinateSystem(extent={{-100,-100},{100,100}}, + preserveAspectRatio=true, + initialScale=0.2)), + Diagram(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100,-100},{100,100}}), + graphics={Polygon(points={{0,50},{100,0},{0,-50},{0,50}}, + lineColor={255,0,255}, + fillColor={255,0,255},fillPattern = FillPattern.Solid), + Text(extent={{-10,85},{-10,60}}, + textColor={255,0,255}, + textString="%name")}), +Documentation(info=" +

+Connector with one input signal of type Boolean. +

+",revisions=" +
    +
  • +March 1, 2019, by Michael Wetter:
    +On the icon layer, changed connector size and added the connector name.
    +This is for +Buildings, issue 1375. +
  • +
  • +January 6, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/BooleanOutput.mo b/IBPSA/Controls/OBC/CDL/Interfaces/BooleanOutput.mo new file mode 100644 index 0000000000..c3c9129d6c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/BooleanOutput.mo @@ -0,0 +1,46 @@ +within IBPSA.Controls.OBC.CDL.Interfaces; +connector BooleanOutput=output Boolean + "Boolean output connector" +annotation (defaultComponentName="y", + Icon(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100,-100},{100,100}}), + graphics={Polygon(lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern= FillPattern.Solid, + points={{-100,50},{0,0},{-100,-50}})}), + Diagram(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100,-100},{100,100}}), + graphics={Polygon(points={{-100,50},{0,0},{-100,-50},{-100,50}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern= FillPattern.Solid), + Text(extent={{30,110},{30,60}}, + textColor={255,0,255}, + textString="%name")}), +Documentation(info=" +

+Connector with one output signal of type Boolean. +

+",revisions=" +
    +
  • +July 19, 2019, by Jianjun Hu:
    +On both icon and diagram layer, added the initialScale.
    +This is for +Buildings, issue 1375. +
  • +
  • +March 1, 2019, by Michael Wetter:
    +On the icon layer, changed connector size and added the connector name.
    +This is for +Buildings, issue 1375. +
  • +
  • +January 6, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/IntegerInput.mo b/IBPSA/Controls/OBC/CDL/Interfaces/IntegerInput.mo new file mode 100644 index 0000000000..e0d54bcd8d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/IntegerInput.mo @@ -0,0 +1,40 @@ +within IBPSA.Controls.OBC.CDL.Interfaces; +connector IntegerInput=input Integer + "Integer input connector" +annotation (defaultComponentName="u", + Icon(graphics={Polygon(lineColor={255,127,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + points={{0,50},{100,0},{0,-50}})}, + coordinateSystem(extent={{-100,-100},{100,100}}, + preserveAspectRatio=true, + initialScale=0.2)), + Diagram(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100,-100},{100,100}}), + graphics={Polygon(points={{0,50},{100,0},{0,-50},{0,50}}, + lineColor={255,127,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid), + Text(extent={{-10,85},{-10,60}}, + textColor={255,127,0}, + textString="%name")}), +Documentation(info=" +

+Connector with one input signal of type Integer. +

+",revisions=" +
    +
  • +March 1, 2019, by Michael Wetter:
    +On the icon layer, changed connector size and added the connector name.
    +This is for +Buildings, issue 1375. +
  • +
  • +January 6, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/IntegerOutput.mo b/IBPSA/Controls/OBC/CDL/Interfaces/IntegerOutput.mo new file mode 100644 index 0000000000..03d184a9f7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/IntegerOutput.mo @@ -0,0 +1,46 @@ +within IBPSA.Controls.OBC.CDL.Interfaces; +connector IntegerOutput=output Integer + "Integer output connector" +annotation (defaultComponentName="y", + Icon(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100,-100},{100,100}}), + graphics={Polygon(lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + points={{-100,50},{0,0},{-100,-50}})}), + Diagram(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100,-100},{100,100}}), + graphics={Polygon(points={{-100,50},{0,0},{-100,-50},{-100,50}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text(extent={{30,110},{30,60}}, + textColor={255,127,0}, + textString="%name")}), +Documentation(info=" +

+Connector with one output signal of type Integer. +

+",revisions=" +
    +
  • +July 19, 2019, by Jianjun Hu:
    +On both icon and diagram layer, added the initialScale.
    +This is for +Buildings, issue 1375. +
  • +
  • +March 1, 2019, by Michael Wetter:
    +On the icon layer, changed connector size and added the connector name.
    +This is for +Buildings, issue 1375. +
  • +
  • +January 6, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/RealInput.mo b/IBPSA/Controls/OBC/CDL/Interfaces/RealInput.mo new file mode 100644 index 0000000000..6769da7271 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/RealInput.mo @@ -0,0 +1,40 @@ +within IBPSA.Controls.OBC.CDL.Interfaces; +connector RealInput=input Real + "Real input connector" +annotation (defaultComponentName="u", + Icon(graphics={Polygon(lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + points={{0,50},{100,0},{0,-50}})}, + coordinateSystem(extent={{-100.0,-100.0},{100.0,100.0}}, + preserveAspectRatio=true, + initialScale=0.2)), + Diagram(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={Polygon(lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + points={{0.0,50.0},{100.0,0.0},{0.0,-50.0},{0.0,50.0}}), + Text(textColor={0,0,127}, + extent={{-10.0,60.0},{-10.0,85.0}}, + textString="%name")}), +Documentation(info=" +

+Connector with one input signal of type Real. +

+",revisions=" +
    +
  • +March 1, 2019, by Michael Wetter:
    +On the icon layer, changed connector size and added the connector name.
    +This is for +Buildings, issue 1375. +
  • +
  • +January 6, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/RealOutput.mo b/IBPSA/Controls/OBC/CDL/Interfaces/RealOutput.mo new file mode 100644 index 0000000000..63d45cbaf6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/RealOutput.mo @@ -0,0 +1,46 @@ +within IBPSA.Controls.OBC.CDL.Interfaces; +connector RealOutput=output Real + "Real output connector" +annotation (defaultComponentName="y", + Icon(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={Polygon(lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + points={{-100,50},{0,0},{-100,-50}})}), + Diagram(coordinateSystem(preserveAspectRatio=true, + initialScale=0.2, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={Polygon(lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + points={{-100.0,50.0},{0.0,0.0},{-100.0,-50.0}}), + Text(textColor={0,0,127}, + extent={{30.0,60.0},{30.0,110.0}}, + textString="%name")}), +Documentation(info=" +

+Connector with one output signal of type Real. +

+",revisions=" +
    +
  • +July 19, 2019, by Jianjun Hu:
    +On both icon and diagram layer, added the initialScale.
    +This is for +Buildings, issue 1375. +
  • +
  • +March 1, 2019, by Michael Wetter:
    +On the icon layer, changed connector size and added the connector name.
    +This is for +Buildings, issue 1375. +
  • +
  • +January 6, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/package.mo b/IBPSA/Controls/OBC/CDL/Interfaces/package.mo new file mode 100644 index 0000000000..00ac15ad2f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/package.mo @@ -0,0 +1,41 @@ +within IBPSA.Controls.OBC.CDL; +package Interfaces "Package with connectors for input and output signals" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains implementations of connectors for input +and output signals of blocks. +

+

+The connectors are compatible with, and equivalent to, +the connectors from the Modelica Standard Library. +They are here implemented to make the CDL +package a self-contained package. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={20.0,0.0}, + lineColor={64,64,64}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + points={{-10.0,70.0},{10.0,70.0},{40.0,20.0},{80.0,20.0},{80.0,-20.0},{40.0,-20.0},{10.0,-70.0},{-10.0,-70.0}}), + Polygon( + fillColor={102,102,102}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-100.0,20.0},{-60.0,20.0},{-30.0,70.0},{-10.0,70.0},{-10.0,-70.0},{-30.0,-70.0},{-60.0,-20.0},{-100.0,-20.0}})})); +end Interfaces; diff --git a/IBPSA/Controls/OBC/CDL/Interfaces/package.order b/IBPSA/Controls/OBC/CDL/Interfaces/package.order new file mode 100644 index 0000000000..25397a7f23 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Interfaces/package.order @@ -0,0 +1,6 @@ +BooleanInput +BooleanOutput +IntegerInput +IntegerOutput +RealInput +RealOutput diff --git a/IBPSA/Controls/OBC/CDL/Logical/And.mo b/IBPSA/Controls/OBC/CDL/Logical/And.mo new file mode 100644 index 0000000000..fdb56a7531 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/And.mo @@ -0,0 +1,92 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block And + "Logical 'and': y = u1 and u2" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u1 + "Input signal for logical 'and'" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Input signal for logical 'and'" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u1 and u2 are both true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 and u2; + annotation ( + defaultComponentName="and2", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-90,40},{90,-40}}, + textColor={0,0,0}, + textString="and"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-6},{-89,8}}, + lineColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-73},{-89,-87}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs true if all inputs are true. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end And; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Change.mo b/IBPSA/Controls/OBC/CDL/Logical/Change.mo new file mode 100644 index 0000000000..257ca1fba2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Change.mo @@ -0,0 +1,71 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Change + "Output y is true, if the input u has a rising or falling edge (y = change(u))" + parameter Boolean pre_u_start=false + "Start value of pre(u) at initial time"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input to be monitored for a change" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with true when the input changes" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + pre(u)=pre_u_start; + +equation + y=change(u); + annotation ( + defaultComponentName="cha", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-50,62},{50,-56}}, + textColor={0,0,0}, + textString="change"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs true if the Boolean input has either a rising edge +from false to true or a falling edge from +true to false. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Change; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Edge.mo b/IBPSA/Controls/OBC/CDL/Logical/Edge.mo new file mode 100644 index 0000000000..e472037418 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Edge.mo @@ -0,0 +1,73 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Edge + "Output y is true, if the input u has a rising edge (y = edge(u))" + parameter Boolean pre_u_start=false + "Start value of pre(u) at initial time"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input to be monitored" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true when the input switches to true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + pre(u)=pre_u_start; + +equation + y=edge(u); + annotation ( + defaultComponentName="edg", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-50,52},{50,-46}}, + textColor={0,0,0}, + textString="edge"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Polygon( + points={{-120,140},{-120,140}}, + lineColor={28,108,200}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs true if the Boolean input has a rising edge +from false to true. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Edge; diff --git a/IBPSA/Controls/OBC/CDL/Logical/FallingEdge.mo b/IBPSA/Controls/OBC/CDL/Logical/FallingEdge.mo new file mode 100644 index 0000000000..fd69807c62 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/FallingEdge.mo @@ -0,0 +1,74 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block FallingEdge + "Output y is true, if the input u has a falling edge (y = edge(not u))" + parameter Boolean pre_u_start=false + "Start value of pre(u) at initial time"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input to be monitored" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true when the input switches to false" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Boolean not_u=not u + "Boolean not of the input"; + +initial equation + pre(not_u)=not pre_u_start; + +equation + y=edge(not_u); + annotation ( + defaultComponentName="falEdg", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-62,64},{56,-54}}, + textColor={0,0,0}, + textString="falling"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Documentation( + info=" +

+Block that outputs true if the Boolean input has a falling edge +from true to false. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end FallingEdge; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Latch.mo b/IBPSA/Controls/OBC/CDL/Logical/Latch.mo new file mode 100644 index 0000000000..fc97b6a022 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Latch.mo @@ -0,0 +1,151 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Latch + "Maintains a true signal until cleared" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Latch input" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput clr + "Clear input" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with latched signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +equation + when initial() then + y=not clr and u; + elsewhen {clr, u} then + y=not clr and u; + end when; + annotation ( + defaultComponentName="lat", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{-73,9},{-87,-5}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{81,7},{95,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-73,-53},{-87,-67}}, + lineColor=DynamicSelect({235,235,235}, + if clr then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if clr then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{-68,-62},{4,-62},{4,-22},{74,-22}}, + color={255,0,255}), + Line( + points={{-68,24},{-48,24},{-48,56},{-16,56},{-16,24},{24,24},{24,56},{54,56},{54,24},{74,24}}, + color={255,0,255}), + Text( + extent={{-14,-8},{14,-18}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="Clear"), + Text( + extent={{-16,72},{24,58}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="Latch input"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that generates a true output when the latch input u +rises from false to true, provided that the clear input +clr is false or also became at the same time false. +The output remains true until the clear input clr rises +from false to true. +

+

+If the clear input clr is true, the output y +switches to false (if it was true) and it remains false, +regardless of the value of the latch input u. +

+

+At initial time, if clr = false, then the output will be +y = u. Otherwise it will be y=false +(because the clear input clr is true). +

+ +

+\"Latch.png\" +

+ +", + revisions=" +
    +
  • +April 15, 2024, by Antoine Gautier:
    +Simplified the implementation.
    +This is for Buildings, issue 3796. +
  • +
  • +October 13, 2020, by Jianjun Hu:
    +Removed the parameter pre_y_start, and made the initial output to be +equal to latch input when the clear input is false.
    +This is for Buildings, issue 2177. +
  • +
  • +March 9, 2020, by Michael Wetter:
    +Simplified implementation, and made model work with OpenModelica. +
  • +
  • +April 4, 2019, by Jianjun Hu:
    +Corrected implementation that causes wrong output at initial stage. +This is for Buildings, issue 1402. +
  • +
  • +December 1, 2017, by Michael Wetter:
    +Revised documentation. +
  • +
  • +March 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end Latch; diff --git a/IBPSA/Controls/OBC/CDL/Logical/MultiAnd.mo b/IBPSA/Controls/OBC/CDL/Logical/MultiAnd.mo new file mode 100644 index 0000000000..a1ab070a48 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/MultiAnd.mo @@ -0,0 +1,92 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block MultiAnd + "Logical MultiAnd, y = u[1] and u[2] and u[3] and ..." + parameter Integer nin(min=0)=0 + "Number of input connections" + annotation (Dialog(connectorSizing=true),HideResult=true); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u[nin] + "Input signals" + annotation (Placement(transformation(extent={{-140,70},{-100,-70}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with true if all input signals are true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Boolean uTemp[nin] + "Temporary variable"; + +equation + if size(u, 1) > 1 then + uTemp[1]=u[1]; + for i in 2:size(u, 1) loop + uTemp[i]=u[i] and uTemp[i-1]; + end for; + y=uTemp[nin]; + elseif (size(u, 1) == 1) then + uTemp[1]=u[1]; + y=uTemp[1]; + else + y=false; + end if; + annotation ( + defaultComponentName="mulAnd", + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-144,150},{156,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-80,52},{56,-52}}, + textColor={0,0,0}, + textString="AND"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+Block that outputs y = true if and only if +all elements of the input vector u are true. +If no connection to the input connector u is present, +the output is y=false. +

+

+See + +IBPSA.Controls.OBC.CDL.Logical.Validation.MultiAnd +for an example. +

+", +revisions=" + +")); +end MultiAnd; diff --git a/IBPSA/Controls/OBC/CDL/Logical/MultiOr.mo b/IBPSA/Controls/OBC/CDL/Logical/MultiOr.mo new file mode 100644 index 0000000000..71e9376f5c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/MultiOr.mo @@ -0,0 +1,91 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block MultiOr + "Logical MultiOr, y = u[1] or u[2] or u[3] or ..." + parameter Integer nin(min=0)=0 + "Number of input connections" + annotation (Dialog(connectorSizing=true),HideResult=true); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u[nin] + "Input signals" + annotation (Placement(transformation(extent={{-140,70},{-100,-70}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with true if at least one input is true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Boolean uTemp[nin] + "Temporary variable"; + +equation + if size(u, 1) > 1 then + uTemp[1]=u[1]; + for i in 2:size(u, 1) loop + uTemp[i]=u[i] or uTemp[i-1]; + end for; + y=uTemp[nin]; + elseif (size(u, 1) == 1) then + uTemp[1]=u[1]; + y=uTemp[1]; + else + y=false; + end if; + annotation ( + defaultComponentName="mulOr", + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-144,150},{156,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-80,52},{56,-52}}, + textColor={0,0,0}, + textString="OR"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+Block that outputs y = true if any element in the input +vector u is true. +If no connection to the input connector u is present, +the output is y=false. +

+

+See + +IBPSA.Controls.OBC.CDL.Logical.Validation.MultiOr +for an example. +

+", +revisions=" +
    +
  • +July 26, 2021, by Jianjun Hu:
    +Renamed parameter nu to nin. This is for +Buildings, issue 2580. +
  • +
  • +June 6, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+")); +end MultiOr; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Nand.mo b/IBPSA/Controls/OBC/CDL/Logical/Nand.mo new file mode 100644 index 0000000000..f7fd08c4fe --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Nand.mo @@ -0,0 +1,93 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Nand + "Logical 'nand': y = not (u1 and u2)" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u1 + "Input signal for 'nand'" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Input signal for 'nand'" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with false if both inputs are true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=not (u1 and u2); + annotation ( + defaultComponentName="nand", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-50,52},{50,-48}}, + textColor={0,0,0}, + textString="nand"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-6},{-89,8}}, + lineColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-73},{-89,-87}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if at least +one input is false. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Nand; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Nor.mo b/IBPSA/Controls/OBC/CDL/Logical/Nor.mo new file mode 100644 index 0000000000..19dc9c648b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Nor.mo @@ -0,0 +1,92 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Nor + "Logical 'nor': y = not (u1 or u2)" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u1 + "Input signal for 'nor'" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Input signal for 'nor'" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with false if at least one of the inputs is true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=not (u1 or u2); + annotation ( + defaultComponentName="nor", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-90,40},{90,-40}}, + textColor={0,0,0}, + textString="nor"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-6},{-89,8}}, + lineColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-73},{-89,-87}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if none of the inputs is true. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Nor; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Not.mo b/IBPSA/Controls/OBC/CDL/Logical/Not.mo new file mode 100644 index 0000000000..6da92b289a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Not.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Not "Logical not" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input to be negated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with negated input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=not u; + annotation ( + defaultComponentName="not1", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-56,28},{72,-24}}, + textColor={0,0,0}, + textString="not"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if the input is false, +and false if the input is true. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Not; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Or.mo b/IBPSA/Controls/OBC/CDL/Logical/Or.mo new file mode 100644 index 0000000000..73d83ec44a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Or.mo @@ -0,0 +1,93 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Or + "Logical 'or': y = u1 or u2" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u1 + "Input for logical 'or'" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Input for logical 'or'" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with true if at least one of the inputs is true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1 or u2; + annotation ( + defaultComponentName="or2", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-90,40},{90,-40}}, + textColor={0,0,0}, + textString="or"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-6},{-89,8}}, + lineColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-73},{-89,-87}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if at least one input +is true. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Or; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Pre.mo b/IBPSA/Controls/OBC/CDL/Logical/Pre.mo new file mode 100644 index 0000000000..c6dc1a3a0d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Pre.mo @@ -0,0 +1,88 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Pre + "Breaks algebraic loops by adding a delay of the output without advancing time (y = pre(u): event iteration continues until u = pre(u))" + parameter Boolean pre_u_start=false + "Start value of pre(u) at initial time"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input to be delayed by one event iteration" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Input delayed by one event iteration" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + pre(u)=pre_u_start; + +equation + y=pre(u); + annotation ( + defaultComponentName="pre", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-90,40},{90,-40}}, + textColor={0,0,0}, + textString="pre"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-6},{-89,8}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+This block delays the Boolean input by an infinitesimal small time delay and +therefore breaks algebraic loops. In a network of logical blocks, in every +closed connection loop, at least one logical block must have a delay, +since algebraic systems of Boolean equations are not solvable. +

+ +

+This block returns the value of the input signal u from the +last event iteration. The event iteration stops once both +values are identical, i.e., if u = pre(u). +

+", + revisions=" +
    +
  • +May 24, 2017, by Milica Grahovac:
    +First CDL implementation. +
  • +
+")); +end Pre; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Proof.mo b/IBPSA/Controls/OBC/CDL/Logical/Proof.mo new file mode 100644 index 0000000000..7115e02412 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Proof.mo @@ -0,0 +1,520 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Proof "Verify two boolean inputs" + parameter Real debounce( + final quantity="Time", + final unit="s") + "Time during which input must remain unchanged for signal to considered valid and used in checks"; + parameter Real feedbackDelay( + final quantity="Time", + final unit="s") + "Delay after which the two inputs are checked for equality once they become valid"; + + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u_s + "Commanded status setpoint" + annotation (Placement(transformation(extent={{-300,-20},{-260,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u_m + "Measured status" + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=90, origin={0,-260}), + iconTransformation(extent={{-20,-20},{20,20}}, rotation=90, origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput yLocFal + "Output with true if the measured input is locked to false even after the setpoint has changed to true" + annotation (Placement(transformation(extent={{240,100},{280,140}}), + iconTransformation(extent={{100,30},{140,70}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput yLocTru + "Output with true if the measured input is locked to true even after the setpoint has changed to false" + annotation (Placement(transformation(extent={{240,-140},{280,-100}}), + iconTransformation(extent={{100,-70},{140,-30}}))); + +protected + IBPSA.Controls.OBC.CDL.Logical.Or valInp + "Output true if the input becomes stable after the delay time" + annotation (Placement(transformation(extent={{-140,170},{-120,190}}))); + IBPSA.Controls.OBC.CDL.Logical.And invInp + "Output true if debounce time has passed and there is still no stable input" + annotation (Placement(transformation(extent={{0,170},{20,190}}))); + IBPSA.Controls.OBC.CDL.Logical.Or pasDel + "Output true if the feedback checking time has passed" + annotation (Placement(transformation(extent={{-142,-10},{-122,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Or cheDif + "Output true if the measured input is stable, or the feedback checking time has passed" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.And botTru + "Output true if both valid measured input and the setpoint input are true" + annotation (Placement(transformation(extent={{-100,-90},{-80,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.And truFal + "Output true if the setpoint input is true but the valid measured input is false" + annotation (Placement(transformation(extent={{0,-110},{20,-90}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay valTru( + final delayTime=debounce) "Valid measured input change from false to true" + annotation (Placement(transformation(extent={{-240,170},{-220,190}}))); + IBPSA.Controls.OBC.CDL.Logical.Switch valFal + "Output false if measured input is stable and changed from true to false" + annotation (Placement(transformation(extent={{-140,100},{-120,120}}))); + IBPSA.Controls.OBC.CDL.Logical.Switch cheDif1 + "Output the difference check result if the difference check condition is satisfied" + annotation (Placement(transformation(extent={{120,140},{140,160}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay truDel1( + final delayTime=debounce) + "Delay a rising edge, to check if the false input is valid" + annotation (Placement(transformation(extent={{-200,130},{-180,150}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Logical not" + annotation (Placement(transformation(extent={{-240,130},{-220,150}}))); + IBPSA.Controls.OBC.CDL.Logical.Not notBotFal "Not both false inputs" + annotation (Placement(transformation(extent={{40,-160},{60,-140}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not2 "Logical not" + annotation (Placement(transformation(extent={{-220,-50},{-200,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.And falTru + "Output true if the setpoint input is false but the valid measured input is true" + annotation (Placement(transformation(extent={{80,-200},{100,-180}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay delChe1( + final delayTime=feedbackDelay + debounce) + "Delay the difference check" + annotation (Placement(transformation(extent={{-180,-50},{-160,-30}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt + "Convert boolean input to integer output" + annotation (Placement(transformation(extent={{-100,-140},{-80,-120}}))); + IBPSA.Controls.OBC.CDL.Integers.Equal equSta + "Output true if both inputs are same" + annotation (Placement(transformation(extent={{-60,-140},{-40,-120}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToInteger booToInt1 + "Convert boolean input to integer output" + annotation (Placement(transformation(extent={{-100,-180},{-80,-160}}))); + IBPSA.Controls.OBC.CDL.Logical.And botFal + "Output true if both valid measured input and the setpoint input are false" + annotation (Placement(transformation(extent={{0,-160},{20,-140}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant conTru( + final k=true) + "True constant" + annotation (Placement(transformation(extent={{-200,200},{-180,220}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not3 + "Input is invalid" + annotation (Placement(transformation(extent={{-80,170},{-60,190}}))); + IBPSA.Controls.OBC.CDL.Logical.Switch cheStaMea + "Output true if there is no stable measured input" + annotation (Placement(transformation(extent={{160,110},{180,130}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay delChe2( + final delayTime=feedbackDelay + debounce) + "Delay the difference check" + annotation (Placement(transformation(extent={{-220,-10},{-200,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant conFal( + final k=false) + "False constant" + annotation (Placement(transformation(extent={{40,132},{60,152}}))); + IBPSA.Controls.OBC.CDL.Logical.Not notBotTru + "Not both true inputs" + annotation (Placement(transformation(extent={{-60,-90},{-40,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.Switch cheDif2 + "Output the difference check result if the difference check condition is satisfied" + annotation (Placement(transformation(extent={{120,-90},{140,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.Switch cheStaMea1 + "Output true if there is no stable measured input" + annotation (Placement(transformation(extent={{160,-130},{180,-110}}))); + IBPSA.Controls.OBC.CDL.Logical.Timer pasDeb( + final t=feedbackDelay + debounce) + "Check if the debounce time has passed" + annotation (Placement(transformation(extent={{-40,140},{-20,160}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch holTru + "Hold the true output when the input changes to true" + annotation (Placement(transformation(extent={{200,110},{220,130}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch holTru1 + "Hold the true output when the input changes to true" + annotation (Placement(transformation(extent={{200,-130},{220,-110}}))); + IBPSA.Controls.OBC.CDL.Logical.Or equInp + "Output true if the measured input equal to the set point" + annotation (Placement(transformation(extent={{20,10},{40,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Edge samInpEdg + "Output a rising edge when both inputs are same" + annotation (Placement(transformation(extent={{160,-30},{180,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.And valEqu + "Output true if the measured input is valid and equal to the set point" + annotation (Placement(transformation(extent={{120,-30},{140,-10}}))); + +initial equation + assert( + feedbackDelay >= debounce, + "In " + getInstanceName() + ": Require feedbackDelay >= debounce, setting feedbackDelay = debounce.", + level=AssertionLevel.warning); + +equation + connect(u_m, valTru.u) annotation (Line(points={{0,-260},{0,-220},{-250,-220}, + {-250,180},{-242,180}}, color={255,0,255})); + connect(u_m, not1.u) annotation (Line(points={{0,-260},{0,-220},{-250,-220},{-250, + 140},{-242,140}}, color={255,0,255})); + connect(not1.y, truDel1.u) + annotation (Line(points={{-218,140},{-202,140}}, color={255,0,255})); + connect(valTru.y, valInp.u1) + annotation (Line(points={{-218,180},{-142,180}},color={255,0,255})); + connect(truDel1.y, valInp.u2) annotation (Line(points={{-178,140},{-160,140},{ + -160,172},{-142,172}},color={255,0,255})); + connect(truDel1.y, valFal.u2) annotation (Line(points={{-178,140},{-160,140},{ + -160,110},{-142,110}}, color={255,0,255})); + connect(u_m, valFal.u1) annotation (Line(points={{0,-260},{0,-220},{-250,-220}, + {-250,118},{-142,118}}, color={255,0,255})); + connect(conTru.y, valFal.u3) annotation (Line(points={{-178,210},{-170,210},{-170, + 102},{-142,102}}, color={255,0,255})); + connect(valInp.y, not3.u) + annotation (Line(points={{-118,180},{-82,180}}, color={255,0,255})); + connect(not3.y, invInp.u1) + annotation (Line(points={{-58,180},{-2,180}},color={255,0,255})); + connect(conTru.y, cheStaMea.u1) annotation (Line(points={{-178,210},{110,210}, + {110,128},{158,128}}, color={255,0,255})); + connect(u_s, not2.u) annotation (Line(points={{-280,0},{-240,0},{-240,-40},{ + -222,-40}}, color={255,0,255})); + connect(not2.y, delChe1.u) + annotation (Line(points={{-198,-40},{-182,-40}}, color={255,0,255})); + connect(u_s, delChe2.u) + annotation (Line(points={{-280,0},{-222,0}}, color={255,0,255})); + connect(delChe2.y, pasDel.u1) + annotation (Line(points={{-198,0},{-144,0}},color={255,0,255})); + connect(delChe1.y, pasDel.u2) annotation (Line(points={{-158,-40},{-154,-40}, + {-154,-8},{-144,-8}}, color={255,0,255})); + connect(valInp.y, cheDif.u2) annotation (Line(points={{-118,180},{-100,180},{-100, + -8},{-62,-8}}, color={255,0,255})); + connect(pasDel.y, cheDif.u1) + annotation (Line(points={{-120,0},{-62,0}}, color={255,0,255})); + connect(cheDif.y, cheDif1.u2) annotation (Line(points={{-38,0},{90,0},{90,150}, + {118,150}}, color={255,0,255})); + connect(botTru.y, notBotTru.u) + annotation (Line(points={{-78,-80},{-62,-80}}, color={255,0,255})); + connect(notBotTru.y, truFal.u1) annotation (Line(points={{-38,-80},{-20,-80},{ + -20,-100},{-2,-100}}, color={255,0,255})); + connect(valTru.y, botTru.u1) annotation (Line(points={{-218,180},{-150,180},{-150, + -80},{-102,-80}},color={255,0,255})); + connect(u_s, truFal.u2) annotation (Line(points={{-280,0},{-240,0},{-240,-108}, + {-2,-108}}, color={255,0,255})); + connect(u_s, booToInt1.u) annotation (Line(points={{-280,0},{-240,0},{-240,-170}, + {-102,-170}},color={255,0,255})); + connect(valFal.y, booToInt.u) annotation (Line(points={{-118,110},{-110,110},{ + -110,-130},{-102,-130}}, color={255,0,255})); + connect(booToInt.y, equSta.u1) + annotation (Line(points={{-78,-130},{-62,-130}}, color={255,127,0})); + connect(booToInt1.y, equSta.u2) annotation (Line(points={{-78,-170},{-70,-170}, + {-70,-138},{-62,-138}}, color={255,127,0})); + connect(not2.y, botFal.u1) annotation (Line(points={{-198,-40},{-190,-40},{ + -190,-150},{-2,-150}}, color={255,0,255})); + connect(equSta.y, botFal.u2) annotation (Line(points={{-38,-130},{-10,-130},{-10, + -158},{-2,-158}}, color={255,0,255})); + connect(botFal.y, notBotFal.u) + annotation (Line(points={{22,-150},{38,-150}}, color={255,0,255})); + connect(notBotFal.y, falTru.u1) annotation (Line(points={{62,-150},{70,-150},{ + 70,-190},{78,-190}}, color={255,0,255})); + connect(not2.y, falTru.u2) annotation (Line(points={{-198,-40},{-190,-40},{ + -190,-198},{78,-198}}, color={255,0,255})); + connect(cheDif1.y, cheStaMea.u3) annotation (Line(points={{142,150},{150,150}, + {150,112},{158,112}}, color={255,0,255})); + connect(cheDif.y, cheDif2.u2) annotation (Line(points={{-38,0},{90,0},{90,-80}, + {118,-80}}, color={255,0,255})); + connect(cheDif2.y, cheStaMea1.u3) annotation (Line(points={{142,-80},{150,-80}, + {150,-128},{158,-128}}, color={255,0,255})); + connect(conTru.y, cheStaMea1.u1) annotation (Line(points={{-178,210},{110,210}, + {110,-112},{158,-112}}, color={255,0,255})); + connect(conFal.y, cheDif1.u3) annotation (Line(points={{62,142},{118,142}}, + color={255,0,255})); + connect(conFal.y, cheDif2.u3) annotation (Line(points={{62,142},{100,142},{ + 100,-88},{118,-88}}, color={255,0,255})); + connect(falTru.y, cheDif2.u1) annotation (Line(points={{102,-190},{114,-190}, + {114,-72},{118,-72}}, color={255,0,255})); + connect(truFal.y, cheDif1.u1) annotation (Line(points={{22,-100},{70,-100},{ + 70,158},{118,158}}, color={255,0,255})); + connect(u_s, botTru.u2) annotation (Line(points={{-280,0},{-240,0},{-240,-88}, + {-102,-88}}, color={255,0,255})); + connect(cheStaMea.y, holTru.u) + annotation (Line(points={{182,120},{198,120}}, color={255,0,255})); + connect(cheStaMea1.y, holTru1.u) + annotation (Line(points={{182,-120},{198,-120}}, color={255,0,255})); + connect(holTru.y, yLocFal) + annotation (Line(points={{222,120},{260,120}}, color={255,0,255})); + connect(holTru1.y, yLocTru) + annotation (Line(points={{222,-120},{260,-120}}, color={255,0,255})); + connect(botTru.y, equInp.u1) annotation (Line(points={{-78,-80},{-70,-80},{-70, + 20},{18,20}}, color={255,0,255})); + connect(equSta.y, equInp.u2) annotation (Line(points={{-38,-130},{-10,-130},{-10, + 12},{18,12}}, color={255,0,255})); + connect(samInpEdg.y, holTru.clr) annotation (Line(points={{182,-20},{190,-20}, + {190,114},{198,114}}, color={255,0,255})); + connect(samInpEdg.y, holTru1.clr) annotation (Line(points={{182,-20},{190,-20}, + {190,-126},{198,-126}}, color={255,0,255})); + connect(invInp.y, cheStaMea.u2) + annotation (Line(points={{22,180},{80,180},{80,120},{158,120}}, color={255,0,255})); + connect(invInp.y, cheStaMea1.u2) annotation (Line(points={{22,180},{80,180},{ + 80,-120},{158,-120}}, color={255,0,255})); + connect(not3.y, pasDeb.u) annotation (Line(points={{-58,180},{-50,180},{-50, + 150},{-42,150}}, color={255,0,255})); + connect(pasDeb.passed, invInp.u2) annotation (Line(points={{-18,142},{-10,142}, + {-10,172},{-2,172}}, color={255,0,255})); + connect(equInp.y, valEqu.u1) annotation (Line(points={{42,20},{60,20},{60,-20}, + {118,-20}}, color={255,0,255})); + connect(valEqu.y, samInpEdg.u) + annotation (Line(points={{142,-20},{158,-20}}, color={255,0,255})); + connect(valInp.y, valEqu.u2) annotation (Line(points={{-118,180},{-100,180},{-100, + -28},{118,-28}}, color={255,0,255})); +annotation ( + defaultComponentName="pro", + Diagram( + coordinateSystem(extent={{-260,-240},{240,240}}), graphics={ + Rectangle( + extent={{-258,236},{28,42}}, + lineColor={215,215,215}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-258,38},{-114,-58}}, + lineColor={215,215,215}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-116,-62},{66,-198}}, + lineColor={215,215,215}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Text( + extent={{-248,38},{-174,20}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Output true if u_s has passed +the feedback delay"), + Text( + extent={{-90,-182},{-4,-196}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Check if the inputs are different"), + Text( + extent={{-252,236},{-130,224}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Check if there is a stable measured input u_m")}), + Icon( + coordinateSystem(extent={{-100,-100},{100,100}}), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{7,-73},{-7,-87}}, + lineColor=DynamicSelect({235,235,235}, if u_m then {0,255,0} else {235, + 235,235}), + fillColor=DynamicSelect({235,235,235}, if u_m then {0,255,0} else {235, + 235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-73,7},{-87,-7}}, + lineColor=DynamicSelect({235,235,235}, if u_s then {0,255,0} else {235, + 235,235}), + fillColor=DynamicSelect({235,235,235}, if u_s then {0,255,0} else {235, + 235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{73,57},{87,43}}, + lineColor=DynamicSelect({235,235,235}, if yLocFal then {0,255,0} else {235, + 235,235}), + fillColor=DynamicSelect({235,235,235}, if yLocFal then {0,255,0} else {235, + 235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{75,-43},{89,-57}}, + lineColor=DynamicSelect({235,235,235}, if yLocTru then {0,255,0} else {235, + 235,235}), + fillColor=DynamicSelect({235,235,235}, if yLocTru then {0,255,0} else {235, + 235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-100,140},{100,100}}, + textColor={0,0,255}, + textString="%name"), + Line( + points={{-60,60},{-60,-88}}, + color={192,192,192}), + Polygon( + points={{-60,82},{-68,60},{-52,60},{-60,82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-70,-68},{80,-68}}, + color={192,192,192}), + Polygon( + points={{90,-68},{68,-60},{68,-76},{90,-68}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{-40,44}}, color={28,108,200}), + Line(points={{-60,-36},{-40,-36},{-40,-16},{20,-16},{20,-36},{60,-36}}, + color={0,0,0}), + Line(points={{-60,-68},{-14,-68},{-14,-48},{40,-48},{40,-68},{60,-68}}, + color={0,0,0}), + Line(points={{-60,44},{-40,44},{-40,64},{-14,64},{-14,44},{60,44}}, + color={28,108,200}), + Line(points={{-60,12},{20,12},{20,32},{40,32},{40,12},{60,12}}, color={28, + 108,200}), + Line( + points={{-40,40},{-40,-12}}, + color={28,108,200}, + pattern=LinePattern.Dash), + Line( + points={{-14,40},{-14,-44}}, + color={28,108,200}, + pattern=LinePattern.Dash), + Line( + points={{20,8},{20,-12}}, + color={28,108,200}, + pattern=LinePattern.Dash), + Line( + points={{40,8},{40,-44}}, + color={28,108,200}, + pattern=LinePattern.Dash), + Text( + extent={{-6,-4},{6,-14}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="u_s"), + Text( + extent={{-10,-36},{6,-46}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="u_m"), + Text( + extent={{22,44},{44,32}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="yLocTru"), + Text( + extent={{-40,76},{-18,64}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="yLocFal")}), +Documentation(info=" +

+Block that compares a boolean set point u_s with +a measured signal u_m and produces two outputs +that may be used to raise alarms about malfunctioning equipment. +

+

+The block sets the output yLocFal = true if +the set point is u_s = true but the measured signal is locked +at false, i.e., u_m = false. +Similarly, the block sets the output yLocTru = true +if the set point is u_s = false but the measured signal is locked +at true, i.e., u_m = true. +Hence, any output being true indicates an operational +problem. +

+

+To use this block, proceed as follows: +Set the parameter feedbackDelay ≥ 0 to specify how long the +feedback of the controlled device is allowed to take to report +its measured operational signal u_s +after a set point change u_m. +Set the parameter debounce ≥ 0 +to specify how long the measured +signal u_m need to remain constant for it to be considered +stable. +Connect the inputs for the set point u_s and +the measured signal u_m to the output signals that need to be checked. +If either output is true, raise an alarm, such as by +connecting instances of + +IBPSA.Controls.OBC.CDL.Utilities.Assert +to the outputs of this block. +

+

+Any output being true indicates a problem. +

+

+The block has two timers that each start whenever the corresponding input changes. +One timer, called feedbackDelay+debounce timer, starts +whenever the set point u_s change, and it runs for a time equal to +feedbackDelay+debounce. +The other timer, called debounce timer, starts whenever +the measured signal u_m changes, and it runs for a time equal to +debounce. +The block starts verifying the inputs whenever the feedbackDelay+debounce timer +lapsed, or the debounce timer lapsed, +(and hence the measurement is stable,) whichever is first. +

+

+Both outputs being true indicates that the measured signal u_m +is not stable within feedbackDelay+debounce time. +Exactly one output being true indicates +that the measured signal u_m is stable, but +u_s ≠ u_m. In this case, +the block sets yLocFal = true if u_s = true +(the measured signal is locked at false), +or it sets yLocTru = true if u_s = false +(the measured signal is locked at true). +

+

+Therefore, exactly one output being true can be interpreted as follows: +Suppose true means on and false means off.
+Then, yLocTru = true indicates that an equipment is locked +in operation mode but is commanded off; and similarly, +yLocFal = true indicates that it is locked in off mode +when it is commanded on. +

+

Detailed description

+

+The block works as follows. +Any change in set point u_s starts the feedbackDelay+debounce timer, and +any change in measured signal u_m starts the debounce timer. +

+

+As soon as the feedbackDelay+debounce timer +or the debounce timer lapsed, +whichever happens first, +the controller continuously performs these checks: +

+
    +
  1. +Check for stable measured signal.
    +If u_m is stable, then
    +    goto step 2.
    +Else:
    +    Set yLocFal = yLocTru = true.
    +    (Equipment is commanded on but we cannot conclude it is running;
    +    set both true to flag an unstable measurement signal.)
    +
  2. +
  3. +Check for commanded and measured input to be equal.
    +If u_s ≠ u_m, then
    +    goto step 3.
    +Else,
    +    set yLocFal = false and yLocTru = false.
    +    (Equipment is operating as commanded, verified using stable input.) +
  4. +
  5. +Inputs differ.
    +If u_s = true , then
    +    set yLocFal = true and yLocTru = false.
    +    (The equipment is commanded on, but it is off.)
    +Else,
    +    set yLocFal = false and yLocTru = true.
    +    (The equipment is commanded off, but it is on.)
    +
  6. +
+", +revisions=" +
    +
  • +March 28, 2023, by Michael Wetter:
    +Revised documentation. +
  • +
  • +March 27, 2023, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end Proof; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Constant.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Constant.mo new file mode 100644 index 0000000000..2295f61fe1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Constant.mo @@ -0,0 +1,76 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources; +block Constant + "Output constant signal of type Boolean" + parameter Boolean k + "Constant output value"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with constant value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=k; + annotation ( + defaultComponentName="con", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{-90,-70},{72,-70}}, + color={255,0,255}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-80,88},{-88,66},{-72,66},{-80,88}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,66},{-80,-82}}, + color={255,0,255}), + Line( + points={{-80,0},{64,0}}), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%k")}), + Documentation( + info=" +

+Block that outputs a constant signal y = k, +where k is a Boolean-valued parameter. +

+ +

+\"Constant.png\" +

+")); +end Constant; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Pulse.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Pulse.mo new file mode 100644 index 0000000000..27d18a6c61 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Pulse.mo @@ -0,0 +1,210 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources; +block Pulse + "Generate pulse signal of type Boolean" + parameter Real width( + final min=Constants.small, + final max=1, + final unit="1")=0.5 + "Width of pulse in fraction of period"; + parameter Real period( + final quantity="Time", + final unit="s", + final min=Constants.small) + "Time for one period"; + parameter Real shift( + final quantity="Time", + final unit="s")=0 + "Shift time for output"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with pulse value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + parameter Real t1( + final quantity="Time", + final unit="s", + fixed=false) + "First end of amplitude"; + +initial algorithm + t0 := IBPSA.Utilities.Math.Functions.round( + x=integer((time)/period)*period+mod(shift,period), + n=6); + t1 := t0+width*period; + // Make sure t0 and t1 are within time + period. + if time+period < t1 then + t0 := t0-period; + t1 := t1-period; + end if; + // Make sure time is between t0 and t1, or t1 and t0 + // Now, t0 < t1 + if time >= t1 then + t0 := t0+period; + elseif time < t0 then + t1 := t1-period; + end if; + // Assert that t0 <= t < t1 or t1 <= t < t0 + if + (t0 < t1) then + assert( + t0 <= time and time < t1, + getInstanceName()+": Implementation error in initial time calculation: t0 = "+String(t0)+", t1 = "+String(t1)+", period = "+String(period)+", time = "+String(time)); + y := time >= t0 and time < t1; + else + assert( + t1 <= time and time < t0, + getInstanceName()+": Implementation error in initial time calculation: t0 = "+String(t0)+", t1 = "+String(t1)+", period = "+String(period)+", time = "+String(time)); + y := not + (time >= t1 and time < t0); + end if; + +equation + when sample( + t0, + period) then + y=true; + elsewhen sample( + t1, + period) then + y=false; + end when; + annotation ( + defaultComponentName="booPul", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%period"), + Line( + points={{79,-70},{40,-70},{40,44},{-1,44},{-1,-70},{-41,-70},{-41,44},{-80,44}}), + Polygon( + points={{-80,88},{-88,66},{-72,66},{-80,88}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,66},{-80,-82}}, + color={255,0,255}), + Line( + points={{-90,-70},{72,-70}}, + color={255,0,255}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-66,80},{-8,56}}, + textColor={135,135,135}, + textString="%period"), + Polygon( + points={{-2,52},{-14,56},{-14,48},{-2,52}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{-80,52},{-4,52}}, + color={135,135,135}), + Polygon( + points={{-80,52},{-68,56},{-68,48},{-80,52}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{40,34},{72,34}}, + color={135,135,135}), + Polygon( + points={{74,34},{62,38},{62,30},{74,34}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Text( + extent={{38,64},{96,40}}, + textColor={135,135,135}, + textString="%shift")}), + Documentation( + info=" +

+Block that outputs a pulse signal as shown below. +

+

+\"BooleanPulse.png\" +

+

+The pulse signal is generated an infinite number of times, and aligned with time=shift. +

+", + revisions=" +
    +
  • +December 03, 2020, by Milica Grahovac:
    +Renamed delay parameter to shift.
    +This is for +Buildings, issue 2282. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation, avoided state events.
    +This is for +Buildings, issue 2170. +
  • +
  • +September 8, 2020, by Milica Grahovac:
    +Enabled specification of number of periods as a parameter. +
  • +
  • +September 1, 2020, by Milica Grahovac:
    +Revised initial equation section to ensure expected simulation results when startTime is before simulation start time. +This is for +Buildings, issue 2110. +
  • +
  • +March 23, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Pulse; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/SampleTrigger.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/SampleTrigger.mo new file mode 100644 index 0000000000..1f1a7ee477 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/SampleTrigger.mo @@ -0,0 +1,131 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources; +block SampleTrigger + "Generate sample trigger signal" + parameter Real period( + final quantity="Time", + final unit="s", + final min=Constants.small) + "Sample period"; + parameter Real shift( + final quantity="Time", + final unit="s")=0 + "Shift time for output"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with trigger value" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + +initial equation + t0=IBPSA.Utilities.Math.Functions.round( + x=integer((time)/period)*period+mod(shift,period), + n=6); + +equation + y=sample(t0, period); + annotation ( + defaultComponentName="samTri", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Line( + points={{-60,-70},{-60,70}}), + Line( + points={{-20,-70},{-20,70}}), + Line( + points={{20,-70},{20,70}}), + Line( + points={{60,-70},{60,70}}), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%period"), + Polygon( + points={{-80,88},{-88,66},{-72,66},{-80,88}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,66},{-80,-82}}, + color={255,0,255}), + Line( + points={{-90,-70},{72,-70}}, + color={255,0,255}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name")}), + Documentation( + info=" +

+The Boolean output y is a trigger signal that is only true +at sample times (defined by parameter period) and is otherwise +false. +

+

+\"SampleTrigger.png\" +

+

+The trigger signal is generated an infinite number of times, and aligned with time=delay. +

+", + revisions=" +
    +
  • +December 03, 2020, by Milica Grahovac:
    +Renamed delay parameter to shift.
    +This is for +Buildings, issue 2282. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation.
    +This is for +Buildings, issue 2170. +
  • +
  • +March 23, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end SampleTrigger; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/TimeTable.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/TimeTable.mo new file mode 100644 index 0000000000..fa7bd4fa64 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/TimeTable.mo @@ -0,0 +1,143 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources; +block TimeTable + "Table look-up with respect to time with constant segments" + parameter Real table[:,:] + "Table matrix with time as a first column (in seconds, unless timeScale is not 1) and 0 for False or 1 for True in all other columns"; + parameter Real timeScale( + final unit="1")=1 + "Time scale of first table column. Set to 3600 if time in table is in hours"; + parameter Real period( + final quantity="Time", + final unit="s") + "Periodicity of table"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y[nout] + "Output with tabulated values" + annotation (Placement(transformation(extent={{120,-20},{160,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Integer nout=size(table, 2)-1 + "Dimension of output vector"; + final parameter Integer nT=size(table, 1) + "Number of table points"; + Integers.Sources.TimeTable intTimTab( + final table=table, + final timeScale=timeScale, + final period=period) + "Time table" + annotation (Placement(transformation(extent={{-12,-10},{8,10}}))); + Integers.GreaterThreshold intGreThr[nout](each t=0) + "Converts to boolean" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + +initial equation + // Check that all values in the second column are Integer values + for i in 1:nT loop + for j in 2:size(table, 2) loop + assert((abs(table[i,j]) < Constants.small) or + (abs(table[i,j]-1.0) < Constants.small), + "Table value table[" + String(i) + ", " + String(j) + "] = " + + String(table[i,j]) + " does not equal either 0 or 1."); + end for; + end for; + +equation + connect(intTimTab.y,intGreThr.u) + annotation (Line(points={{10,0},{38,0}},color={255,127,0})); + connect(intGreThr.y,y) + annotation (Line(points={{62,0},{96,0},{96,0},{140,0}},color={255,0,255})); + annotation ( + defaultComponentName="booTimTab", + Documentation( + info=" +

+Block that outputs true/false time table values. +

+

+The block takes as a parameter a time table of a format: +

+
+table = [ 0*3600, 0;
+          6*3600, 1;
+          6*3600, 0;
+         18*3600, 1;
+         18*3600, 1];
+period = 24*3600;
+
+

+where the first column of table is time and the remaining column(s) are the table values. +The time column contains Real values that are in units of seconds if timeScale = 1. +The parameter timeScale can be used to scale the time values, for example, use +timeScale = 3600 if the values in the first column are interpreted as hours. +

+

+The values in column two and higher must be 0 or 1, otherwise the model stops with an error. +

+

+Until a new tabulated value is set, the previous tabulated value is returned. +

+

+The table scope is repeated periodically with periodicity period. +

+", + revisions=" +
    +
  • +October 21, 2021, by Michael Wetter:
    +Removed writing output value in icon (as it is an array of values). +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 8, 2020, by Michael Wetter:
    +Revised implementation to use integer time table for its implementation. +
  • +
  • +September 14, 2020, by Milica Grahovac:
    +Initial CDL implementation based on continuous time table implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised, + lineColor={0,0,0}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Polygon( + lineColor={217,67,180}, + fillColor={217,67,180}, + fillPattern=FillPattern.Solid, + points={{-80.0,90.0},{-88.0,68.0},{-72.0,68.0},{-80.0,90.0}}), + Line( + points={{-80.0,68.0},{-80.0,-80.0}}, + color={255,0,255}), + Line( + points={{-90.0,-70.0},{82.0,-70.0}}, + color={255,0,255}), + Polygon( + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + points={{90.0,-70.0},{68.0,-62.0},{68.0,-78.0},{90.0,-70.0}}), + Rectangle( + lineColor={255,255,255}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-48.0,-50.0},{2.0,70.0}}), + Line( + points={{-48.0,-50.0},{-48.0,70.0},{52.0,70.0},{52.0,-50.0},{-48.0,-50.0},{-48.0,-20.0},{52.0,-20.0},{52.0,10.0},{-48.0,10.0},{-48.0,40.0},{52.0,40.0},{52.0,70.0},{2.0,70.0},{2.0,-51.0}})}), + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}}))); +end TimeTable; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mo new file mode 100644 index 0000000000..7de10168b3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mo @@ -0,0 +1,44 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model Constant + "Validate the Constant block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + k=true) + "Block output boolean constant value" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Constant.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.Constant. +

+ +", + revisions=" +
    +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Constant; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mo new file mode 100644 index 0000000000..4904c9f652 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mo @@ -0,0 +1,146 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model Pulse + "Validation model for the Boolean Pulse block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a1( + width=0.2, + period=2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,40},{-70,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b1( + width=0.2, + period=2, + shift=0.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,0},{-70,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c1( + width=0.2, + period=2, + shift=0.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,-40},{-70,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a2( + width=0.2, + period=2, + shift=2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b2( + width=0.2, + period=2, + shift=2.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,0},{-30,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c2( + width=0.2, + period=2, + shift=2.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,-40},{-30,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a3( + width=0.2, + period=2, + shift=4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,40},{10,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b3( + width=0.2, + period=2, + shift=4.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,0},{10,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c3( + width=0.2, + period=2, + shift=4.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a4( + width=0.2, + period=2, + shift=-2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,40},{50,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b4( + width=0.2, + period=2, + shift=-1.9) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,0},{50,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c4( + width=0.2, + period=2, + shift=-1.4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a5( + width=0.2, + period=2, + shift=-4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,40},{90,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b5( + width=0.2, + period=2, + shift=-3.9) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,0},{90,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c5( + width=0.2, + period=2, + shift=-3.4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); + annotation ( + experiment( + StartTime=0, + StopTime=10, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/Pulse.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse. +

+

+This validates the blocks with a start time of 0. +All blocks with the same letter after the underscore are configured to produce +the same output. +

+", + revisions=" +
    +
  • +October 19, 2020, by Michael Wetter:
    +Refactored test for systematic testing.
    +This is for +Buildings, issue 2170. +
  • +
  • +September 1, 2020, by Milica Grahovac:
    +Added test cases for simulation time starting before and after the pulse startTime. +This is for +Buildings, issue 2110. +
  • +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Pulse; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mo new file mode 100644 index 0000000000..7dd7468014 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mo @@ -0,0 +1,136 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model PulseNegativeStartTime + "Validation model for the Boolean Pulse block with negative start time" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a1( + width=0.2, + period=2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,40},{-70,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b1( + width=0.2, + period=2, + shift=0.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,0},{-70,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c1( + width=0.2, + period=2, + shift=0.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,-40},{-70,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a2( + width=0.2, + period=2, + shift=2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b2( + width=0.2, + period=2, + shift=2.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,0},{-30,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c2( + width=0.2, + period=2, + shift=2.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,-40},{-30,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a3( + width=0.2, + period=2, + shift=4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,40},{10,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b3( + width=0.2, + period=2, + shift=4.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,0},{10,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c3( + width=0.2, + period=2, + shift=4.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a4( + width=0.2, + period=2, + shift=-2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,40},{50,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b4( + width=0.2, + period=2, + shift=-1.9) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,0},{50,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c4( + width=0.2, + period=2, + shift=-1.4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a5( + width=0.2, + period=2, + shift=-4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,40},{90,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b5( + width=0.2, + period=2, + shift=-3.9) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,0},{90,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c5( + width=0.2, + period=2, + shift=-3.4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); + annotation ( + experiment( + StartTime=-10, + StopTime=1, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulseNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse. +

+

+This validates the blocks with a start time of -10 seconds. +All blocks with the same letter after the underscore are configured to produce +the same output. +

+", + revisions=" + +"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end PulseNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mo new file mode 100644 index 0000000000..0834536813 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mo @@ -0,0 +1,136 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model PulsePositiveStartTime + "Validation model for the Boolean Pulse block with positive, non-zero start time" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a1( + width=0.2, + period=2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,40},{-70,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b1( + width=0.2, + period=2, + shift=0.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,0},{-70,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c1( + width=0.2, + period=2, + shift=0.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-90,-40},{-70,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a2( + width=0.2, + period=2, + shift=2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b2( + width=0.2, + period=2, + shift=2.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,0},{-30,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c2( + width=0.2, + period=2, + shift=2.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-50,-40},{-30,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a3( + width=0.2, + period=2, + shift=4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,40},{10,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b3( + width=0.2, + period=2, + shift=4.1) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,0},{10,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c3( + width=0.2, + period=2, + shift=4.6) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a4( + width=0.2, + period=2, + shift=-2) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,40},{50,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b4( + width=0.2, + period=2, + shift=-1.9) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,0},{50,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c4( + width=0.2, + period=2, + shift=-1.4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_a5( + width=0.2, + period=2, + shift=-4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,40},{90,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_b5( + width=0.2, + period=2, + shift=-3.9) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,0},{90,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul_c5( + width=0.2, + period=2, + shift=-3.4) + "Boolean pulse signal" + annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); + annotation ( + experiment( + StartTime=9, + StopTime=20, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/PulsePositiveStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse. +

+

+This validates the blocks with a start time of 9 seconds. +All blocks with the same letter after the underscore are configured to produce +the same output. +

+", + revisions=" + +"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end PulsePositiveStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mo new file mode 100644 index 0000000000..c8b1805a70 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mo @@ -0,0 +1,77 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model SampleTrigger + "Validation model for the SampleTrigger block" + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri( + period=0.5) + "Block that generates sample trigger signal" + annotation (Placement(transformation(extent={{-30,20},{-10,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp( + duration=5, + offset=0, + height=20) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler + "Triggered sampler" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri1( + period=0.5, + shift=1.3) + "Block that generates sample trigger signal" + annotation (Placement(transformation(extent={{-30,-80},{-10,-60}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler1 + "Triggered sampler" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + +equation + connect(ramp.y,triggeredSampler.u) + annotation (Line(points={{-58,70},{18,70}},color={0,0,127})); + connect(samTri.y,triggeredSampler.trigger) + annotation (Line(points={{-8,30},{30,30},{30,58.2}},color={255,0,255})); + connect(samTri1.y,triggeredSampler1.trigger) + annotation (Line(points={{-8,-70},{30,-70},{30,-41.8}},color={255,0,255})); + connect(triggeredSampler1.u,ramp.y) + annotation (Line(points={{18,-30},{-40,-30},{-40,70},{-58,70}},color={0,0,127})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTrigger.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger. +The instances samTri and samTri1 use a different value for the parameter shift. +

+", + revisions=" +
    +
  • +December 03, 2020, by Milica Grahovac:
    +Added a test case with a shift parameter set to a value larger than zero. +This is for +Buildings, issue 2282. +
  • +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SampleTrigger; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mo new file mode 100644 index 0000000000..ab98d3143a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mo @@ -0,0 +1,74 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model SampleTriggerNegativeStartTime + "Validation model for the SampleTrigger block with a negative start time" + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri( + period=0.5) + "Block that generates sample trigger signal" + annotation (Placement(transformation(extent={{-30,20},{-10,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp( + duration=5, + offset=0, + height=20, + startTime=-2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler + "Triggered sampler" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri1( + period=0.5, + shift=3.2) + "Block that generates sample trigger signal" + annotation (Placement(transformation(extent={{-30,-80},{-10,-60}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler1 + "Triggered sampler" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + +equation + connect(ramp.y,triggeredSampler.u) + annotation (Line(points={{-58,70},{18,70}},color={0,0,127})); + connect(samTri.y,triggeredSampler.trigger) + annotation (Line(points={{-8,30},{30,30},{30,58.2}},color={255,0,255})); + connect(samTri1.y,triggeredSampler1.trigger) + annotation (Line(points={{-8,-70},{30,-70},{30,-41.8}},color={255,0,255})); + connect(triggeredSampler1.u,ramp.y) + annotation (Line(points={{18,-30},{-50,-30},{-50,70},{-58,70}},color={0,0,127})); + annotation ( + experiment( + StartTime=-2.0, + StopTime=3.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger +with negative start time. +The instances samTri and samTri1 use a different value for the parameter shift. +

+", + revisions=" +
    +
  • +December 02, 2020, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SampleTriggerNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mo new file mode 100644 index 0000000000..eced5d8241 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mo @@ -0,0 +1,75 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model SampleTriggerPositiveStartTime + "Validation model for the SampleTrigger block with a positive start time" + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri( + period=0.5) + "Block that generates sample trigger signal" + annotation (Placement(transformation(extent={{-30,20},{-10,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp( + duration=5, + offset=0, + height=20, + startTime=1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler + "Triggered sampler" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri1( + period=0.5, + shift=0.3) + "Block that generates sample trigger signal" + annotation (Placement(transformation(extent={{-30,-80},{-10,-60}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler1( + y_start=-2) + "Triggered sampler" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + +equation + connect(ramp.y,triggeredSampler.u) + annotation (Line(points={{-58,70},{18,70}},color={0,0,127})); + connect(samTri.y,triggeredSampler.trigger) + annotation (Line(points={{-8,30},{30,30},{30,58}}, color={255,0,255})); + connect(samTri1.y,triggeredSampler1.trigger) + annotation (Line(points={{-8,-70},{30,-70},{30,-42}}, color={255,0,255})); + connect(triggeredSampler1.u,ramp.y) + annotation (Line(points={{18,-30},{-50,-30},{-50,70},{-58,70}},color={0,0,127})); + annotation ( + experiment( + StartTime=1.0, + StopTime=6.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/SampleTriggerPositiveStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger +with positive start time. +The instances samTri and samTri1 use a different value for the parameter shift. +

+", + revisions=" +
    +
  • +December 02, 2020, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SampleTriggerPositiveStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mo new file mode 100644 index 0000000000..44ef8a0acb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model TimeTable + "Validation model for TimeTable block" + IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable booTimTab( + table=[ + 0,1,0; + 1.3,1,1; + 2.9,0,0; + 4,1,0], + period=5) + "Time table with boolean output" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable booTimTabOneRow( + table=[ + 0,1,0], + period=1) + "Time table with boolean output for a single table row" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable booTimTabTwi( + table=[ + 0,1,0; + 1.3,1,1; + 2.9,0,0; + 4,1,0], + period=10, + timeScale=2) + "Time table with boolean output, periodic repetition, and doubled time" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + annotation ( + experiment( + Tolerance=1e-6, + StopTime=15.0), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTable.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable. +

+", + revisions=" +
    +
  • +September 14, 2020, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimeTable; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mo new file mode 100644 index 0000000000..5e362e6db1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources.Validation; +model TimeTableNegativeStartTime + "Validation model for TimeTable block with negative start time" + IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable booTimTab( + table=[ + 0,1,0; + 1.3,1,1; + 2.9,0,0; + 4,1,0], + period=5) + "Time table with boolean output" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable booTimTabOneRow( + table=[ + 0,1,0], + period=1) + "Time table with boolean output for a single table row" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable booTimTabTwi( + table=[ + 0,1,0; + 1.3,1,1; + 2.9,0,0; + 4,1,0], + period=10, + timeScale=2) + "Time table with boolean output, periodic repetition, and doubled time" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + annotation ( + experiment( + Tolerance=1e-6, + StartTime=-5.0, + StopTime=10.0), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Sources/Validation/TimeTableNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the block + +IBPSA.Controls.OBC.CDL.Logical.Sources.TimeTable. +The model is identical to + +IBPSA.Controls.OBC.CDL.Logical.Sources.Validation.TimeTable +except that the start time is negative. +", + revisions=" +

    +
  • +September 14, 2020, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimeTableNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.mo new file mode 100644 index 0000000000..721ab696af --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Logical.Sources; +package Validation "Collection of models that validate the logical sources blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Logical.Sources. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.order b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.order new file mode 100644 index 0000000000..4b0b7724d3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/Validation/package.order @@ -0,0 +1,9 @@ +Constant +Pulse +PulseNegativeStartTime +PulsePositiveStartTime +SampleTrigger +SampleTriggerNegativeStartTime +SampleTriggerPositiveStartTime +TimeTable +TimeTableNegativeStartTime diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/package.mo b/IBPSA/Controls/OBC/CDL/Logical/Sources/package.mo new file mode 100644 index 0000000000..d70bb57c3b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/package.mo @@ -0,0 +1,33 @@ +within IBPSA.Controls.OBC.CDL.Logical; +package Sources "Package with blocks that generate source signals" + annotation ( + Documentation( + info=" +

+Package with blocks that generate signals. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={23.3333,0.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-23.333,30.0},{46.667,0.0},{-23.333,-30.0}}), + Rectangle( + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-70,-4.5},{0,4.5}})})); +end Sources; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Sources/package.order b/IBPSA/Controls/OBC/CDL/Logical/Sources/package.order new file mode 100644 index 0000000000..67d8b8c91e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Sources/package.order @@ -0,0 +1,5 @@ +Constant +Pulse +SampleTrigger +TimeTable +Validation diff --git a/IBPSA/Controls/OBC/CDL/Logical/Switch.mo b/IBPSA/Controls/OBC/CDL/Logical/Switch.mo new file mode 100644 index 0000000000..8da32a67eb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Switch.mo @@ -0,0 +1,158 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Switch + "Switch between two boolean signals" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Boolean switch input signal, if true, y=u1, else y=u3" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u3 + "Input u3" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with u1 if u2 is true, else u3" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=if u2 then u1 else u3; + annotation ( + defaultComponentName="logSwi", + Documentation( + info=" +

+Block that outputs one of two boolean input signals based on a boolean input signal. +

+

+If the input signal u2 is true, +the block outputs y = u1. +Otherwise, it outputs y = u3. +

+", + revisions=" +
    +
  • +July 17, 2020, by Jianjun Hu:
    +Changed icon to display dynamically which input signal is being outputted.
    +This is for +Buildings, issue 2033. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Line( + points={{12,0},{100,0}}, + color={255,0,255}), + Line( + points={{-100,0},{-40,0}}, + color={255,0,255}), + Line( + points={{-100,-80},{-40,-80},{-40,-80}}, + color={255,0,255}), + Line( + points={{-40,12},{-40,-10}}, + color={255,0,255}), + Line( + points={{-100,80},{-40,80}}, + color={255,0,255}), + Line( + points=DynamicSelect({{8,2},{-40,80}},{{8,2}, + if u2 then + {-40,80} + else + {-40,-80}}), + color={255,0,255}, + thickness=1), + Ellipse( + lineColor={0,0,127}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{2.0,-6.0},{18.0,8.0}}), + Ellipse( + extent={{-71,7},{-85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-71,74},{-85,88}}, + lineColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-71,-74},{-85,-88}}, + lineColor=DynamicSelect({235,235,235}, + if u3 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u3 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-90,76},{-46,50}}, + textColor=DynamicSelect({0,0,0}, + if u2 then + {0,0,0} + else + {235,235,235}), + textString="true"), + Text( + extent={{-90,-42},{-38,-72}}, + textColor=DynamicSelect({0,0,0}, + if u2 then + {235,235,235} + else + {0,0,0}), + textString="false"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")})); +end Switch; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Timer.mo b/IBPSA/Controls/OBC/CDL/Logical/Timer.mo new file mode 100644 index 0000000000..a0b2f23226 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Timer.mo @@ -0,0 +1,190 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Timer + "Timer measuring the time from the time instant where the Boolean input became true" + parameter Real t( + final quantity="Time", + final unit="s")=0 + "Threshold time for comparison"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input that switches timer on if true, and off if false" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y( + final quantity="Time", + final unit="s") + "Elapsed time" + annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput passed + "Output with true if the elapsed time is greater than threshold" + annotation (Placement(transformation(extent={{100,-100},{140,-60}}),iconTransformation(extent={{100,-100},{140,-60}}))); + +protected + discrete Real entryTime( + final quantity="Time", + final unit="s") + "Time instant when u became true"; + +initial equation + pre(entryTime)=time; + pre(passed)=t <= 0; + +equation + when u then + entryTime=time; + // When u becomes true, and t=0, we want passed to be true + // at the first step (in superdense time). + passed=t <= 0; + elsewhen + (u and time >= t+pre(entryTime)) then + passed=true; + entryTime=pre(entryTime); + elsewhen not u then + // Set passed to false. + // This is the behavior a timer would have if the threshold test is done with a greater block connected to the output of the timer + passed=false; + entryTime=pre(entryTime); + end when; + y=if u then + time-entryTime + else + 0.0; + annotation ( + defaultComponentName="tim", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Line( + points={{-66,-60},{82,-60}}, + color={192,192,192}), + Line( + points={{-58,68},{-58,-80}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{90,-60},{68,-52},{68,-68},{90,-60}}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{-58,90},{-66,68},{-50,68},{-58,90}}), + Line( + points={{-56,-60},{-38,-60},{-38,-16},{40,-16},{40,-60},{68,-60}}, + color={255,0,255}), + Line( + points={{-58,0},{-40,0},{40,58},{40,0},{68,0}}, + color={0,0,127}), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="t=%t"), + Ellipse( + extent={{-83,7},{-69,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,-73},{85,-87}}, + lineColor=DynamicSelect({235,235,235}, + if passed then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if passed then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+If the Boolean input u is true, +the output y is the time that has elapsed since u became true. +Otherwise, y is 0. +If the output y becomes greater than the threshold time t, +the output passed is true. +Otherwise it is false. +

+

+In the limiting case where the timer value reaches the threshold t +and the input u becomes false simultaneously, +the output passed remains false. +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +August 28, 2020, by Michael Wetter:
    +Revised implementation to correctly deal with non-zero simulation start time, +and to avoid state events.
    +This is for +Buildings, issue 2101. +
  • +
  • +August 26, 2020, by Jianjun Hu:
    +Removed reset boolean input and added output passed +to show if the time becomes greater than threshold time.
    +This is for +Buildings, issue 2101. +
  • +
  • +July 31, 2020, by Jianjun Hu:
    +Fixed the reset input. This is for +Buildings, issue 2056. +
  • +
  • +November 8, 2019, by Michael Wetter:
    +Revised implementation. This is for +Buildings, issue 1221. +
  • +
  • +July 23, 2018, by Jianjun Hu:
    +Added conditional boolean input for cumulative time measuring. This is for +Buildings, issue 1221. +
  • +
  • +July 18, 2018, by Jianjun Hu:
    +Updated implementation to output accumulated true input time. This is for +Buildings, issue 1212. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Timer; diff --git a/IBPSA/Controls/OBC/CDL/Logical/TimerAccumulating.mo b/IBPSA/Controls/OBC/CDL/Logical/TimerAccumulating.mo new file mode 100644 index 0000000000..426e6d9227 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/TimerAccumulating.mo @@ -0,0 +1,212 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block TimerAccumulating + "Accumulating timer that can be reset" + parameter Real t( + final quantity="Time", + final unit="s")=0 + "Threshold time for comparison"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input that switches timer on if true, and off if false" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput reset + "Connector for signal that sets timer to zero if it switches to true" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}),iconTransformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y( + final quantity="Time", + final unit="s") + "Elapsed time" + annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput passed + "Output with true if the elapsed time is greater than threshold" + annotation (Placement(transformation(extent={{100,-100},{140,-60}}),iconTransformation(extent={{100,-100},{140,-60}}))); + +protected + discrete Real entryTime( + final quantity="Time", + final unit="s") + "Time instant when u became true"; + discrete Real yAcc( + final quantity="Time", + final unit="s") + "Accumulated time up to last change to true"; + +initial equation + pre(u)=false; + pre(reset)=false; + pre(entryTime)=time; + pre(passed)=t <= 0; + yAcc=0; + +equation + // The when constructs below are identical to the ones in IBPSA.Controls.OBC.CDL.Logical.Timer + when reset then + entryTime=time; + passed=t <= 0; + yAcc=0; + elsewhen u then + entryTime=time; + // When u becomes true, and t=0, we want passed to be true + // at the first step (in superdense time). + passed=t <= yAcc; + yAcc=pre(yAcc); + elsewhen u and time >= t+pre(entryTime)-pre(yAcc) then + passed=true; + entryTime=pre(entryTime); + yAcc=pre(yAcc); + elsewhen not u then + passed=pre(passed); + //time >= t_internal + pre(entryTime); + entryTime=pre(entryTime); + yAcc=pre(y); + end when; + y=if u then + yAcc+time-entryTime + else + yAcc; + annotation ( + defaultComponentName="accTim", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Line( + points={{-66,-60},{82,-60}}, + color={192,192,192}), + Line( + points={{-58,68},{-58,-80}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{90,-60},{68,-52},{68,-68},{90,-60}}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{-58,90},{-66,68},{-50,68},{-58,90}}), + Line( + points={{-56,-60},{-38,-60},{-38,-16},{-4,-16},{-4,-60},{26,-60},{26,-16},{64,-16}}, + color={255,0,255}), + Line( + points={{-58,0},{-40,0},{-6,28},{24,28},{60,58}}, + color={0,0,127}), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="t=%t"), + Ellipse( + extent={{-83,7},{-69,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,-73},{85,-87}}, + lineColor=DynamicSelect({235,235,235}, + if passed then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if passed then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Timer that accumulates time until it is reset by an input signal. +

+

+If the Boolean input u is true, +the output y is the time that has elapsed while u has been true +since the last time reset became true. +If u is false, the output y holds its value. +If the output y becomes greater than the threshold time t, +the output passed is true. +Otherwise it is false. +

+

+When reset becomes true, the timer is reset to 0. +

+

+In the limiting case where the timer value reaches the threshold t +and the input u becomes false simultaneously, +the output passed remains false. +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +August 28, 2020, by Michael Wetter:
    +Revised implementation to correctly deal with non-zero simulation start time, +and to avoid state events.
    +This is for +Buildings, issue 2101. +
  • +
  • +August 26, 2020, by Jianjun Hu:
    +Removed parameter accumulate and added output passed.
    +This is for +Buildings, issue 2101. +
  • +
  • +July 31, 2020, by Jianjun Hu:
    +Fixed the reset input. This is for +Buildings, issue 2056. +
  • +
  • +November 8, 2019, by Michael Wetter:
    +Revised implementation. This is for +Buildings, issue 1221. +
  • +
  • +July 23, 2018, by Jianjun Hu:
    +Added conditional boolean input for cumulative time measuring. This is for +Buildings, issue 1221. +
  • +
  • +July 18, 2018, by Jianjun Hu:
    +Updated implementation to output accumulated true input time. This is for +Buildings, issue 1212. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end TimerAccumulating; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Toggle.mo b/IBPSA/Controls/OBC/CDL/Logical/Toggle.mo new file mode 100644 index 0000000000..a9e196c8f1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Toggle.mo @@ -0,0 +1,178 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Toggle + "Toggles output value whenever its input turns true" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Toggle input" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput clr + "Clear input" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with toggled signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + pre(y)=false; + pre(u)=false; + pre(clr)=false; + +equation + when initial() then + //scenario = 1 + y=if clr then false else u; + elsewhen + (not clr) and change(u) and + (pre(u) == false) and + (pre(y) == false) + then + //scenario = 2 + y=true; + elsewhen + (not clr) and change(u) and + (pre(u) == false) and + (pre(y) == true) + then + //scenario = 3 + y=false; + elsewhen + (not clr) and change(u) and + (pre(u) == true) + then + //scenario = 4 + y=pre(y); + elsewhen clr then + //scenario = 5 + y=false; + end when; + annotation ( + defaultComponentName="tog", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{-73,9},{-87,-5}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-73,-53},{-87,-67}}, + lineColor=DynamicSelect({235,235,235}, + if clr then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if clr then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{-68,-62},{4,-62},{4,-22},{74,-22}}, + color={255,0,255}), + Line( + points={{-68,24},{-48,24},{-48,56},{-16,56},{-16,24},{24,24},{24,56},{54,56},{54,24},{74,24}}, + color={255,0,255}), + Text( + extent={{-22,72},{28,58}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="Toggle input"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-14,-10},{14,-20}}, + textColor={0,0,0}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + textString="Clear")}), + Documentation( + info=" +

+Block that generates a true output when toggle input u +rises from false to true, provided that the clear input +clr is false or also became at the same time +false. The output remains true until +

+
    +
  • +the toggle input u rises from false to true again, or +
  • +
  • +the clear input clr rises from false to true. +
  • +
+

+If the clear input clr is true, the output y +switches to false (if it was true) and it remains false, +regardless of the value of the toggle input u. +

+ +

+At initial time, if clr = false, then the output will be +y = u. Otherwise it will be y=false +(because the clear input clr is true). +

+ +

+\"Toggle.png\" +

+ +", + revisions=" +
    +
  • +October 13, 2020, by Jianjun Hu:
    +Removed the parameter pre_y_start, and made the initial output to be +equal to toggle input when the clear input is false.
    +This is for Buildings, issue 2177. +
  • +
  • +March 9, 2020, by Michael Wetter:
    +Simplified implementation, and made model work with OpenModelica. +
  • +
  • +April 4, 2019, by Jianjun Hu:
    +Corrected implementation that causes wrong output at initial stage. +This is for Buildings, issue 1402. +
  • +
  • +March 31, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end Toggle; diff --git a/IBPSA/Controls/OBC/CDL/Logical/TrueDelay.mo b/IBPSA/Controls/OBC/CDL/Logical/TrueDelay.mo new file mode 100644 index 0000000000..4352ef86dd --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/TrueDelay.mo @@ -0,0 +1,140 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block TrueDelay + "Delay a rising edge of the input, but do not delay a falling edge" + parameter Real delayTime( + final quantity="Time", + final unit="s") + "Delay time"; + parameter Boolean delayOnInit=false + "Set to true to delay initial true input"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input signal to be delayed when it switches to true" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with delayed input signal after it switched to true" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real t_past( + final quantity="Time", + final unit="s", + fixed=false) + "Time before simulation started"; + Real t_next( + final quantity="Time", + final unit="s") + "Next event time"; + +initial equation + t_past=time-1000; + pre(u)=false; + pre(t_next)=time-1000; + +equation + when initial() then + t_next=if not delayOnInit then t_past else time+delayTime; + y=if not (delayOnInit and delayTime > 0) then u else false; + elsewhen u then + t_next=time+delayTime; + y=if delayTime > 0 then false else true; + elsewhen not u then + t_next=t_past; + y=false; + elsewhen time >= pre(t_next) then + t_next=t_past; + y=u; + end when; + annotation ( + defaultComponentName="truDel", + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-250,-120},{250,-150}}, + textColor={0,0,0}, + textString="%delayTime"), + Line( + points={{-80,-66},{-60,-66},{-60,-22},{38,-22},{38,-66},{66,-66}}), + Line( + points={{-80,32},{-4,32},{-4,76},{38,76},{38,32},{66,32}}, + color={255,0,255}), + Ellipse( + extent={{-71,7},{-85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that delays a signal when it becomes true. +

+

+A rising edge of the Boolean input u gives a delayed output. +A falling edge of the input is immediately given to the output. If +delayOnInit = true, then a true input signal +at the start time is also delayed, otherwise the input signal is +produced immediately at the output. +

+

+Simulation results of a typical example with a delay time of 0.1 second +is shown below. +

+

+\"OnDelay1.png\" +
+\"OnDelay2.png\" +

+ +", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +February 11, 2019, by Milica Grahovac:
    +Added boolean input to enable delay of an initial true input. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end TrueDelay; diff --git a/IBPSA/Controls/OBC/CDL/Logical/TrueFalseHold.mo b/IBPSA/Controls/OBC/CDL/Logical/TrueFalseHold.mo new file mode 100644 index 0000000000..5365adb62d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/TrueFalseHold.mo @@ -0,0 +1,187 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block TrueFalseHold + "Block that holds an output signal for at least a specified duration" + parameter Real trueHoldDuration( + final quantity="Time", + final unit="s") + "Duration of true hold" + annotation (Evaluate=true); + parameter Real falseHoldDuration( + final quantity="Time", + final unit="s")=trueHoldDuration + "Duration of false hold" + annotation (Evaluate=true); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input signal that is to be delayed" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with delayed input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); +protected + /* The following parameter is required solely as a warkaround for a bug in OCT [Modelon - 1263]. + Both Dymola and OMC can handle the initial equation pre(u)=u, which complies with MLS. */ + parameter Boolean pre_u_start=false + "Value of pre(u) at initial time" + annotation (Evaluate=true); + Boolean not_u = not u + "Opposite of u"; + Boolean not_y = not y + "Opposite of y"; + discrete Real entryTimeTrue( + final quantity="Time", + final unit="s") + "Time instant when true hold started"; + discrete Real entryTimeFalse( + final quantity="Time", + final unit="s") + "Time instant when false hold started"; +initial equation + pre(entryTimeTrue) = -Modelica.Constants.inf; + pre(entryTimeFalse) = -Modelica.Constants.inf; + pre(u) = pre_u_start; + pre(not_u) = not pre_u_start; + pre(y) = u; + pre(not_y) = not u; +equation + when initial() then + y = u; + entryTimeTrue = if y then time else pre(entryTimeTrue); + entryTimeFalse = if not y then time else pre(entryTimeFalse); + /* + The two elsewhen clauses below are kept separate to address an issue + with event handling in the CVODE solver. + */ + elsewhen {edge(u), edge(not_u)} then + y = if time >= pre(entryTimeFalse) + falseHoldDuration and + time >= pre(entryTimeTrue) + trueHoldDuration then u + else pre(y); + entryTimeTrue = if edge(y) then time else pre(entryTimeTrue); + entryTimeFalse = if edge(not_y) then time else pre(entryTimeFalse); + elsewhen time >= pre(entryTimeFalse) + falseHoldDuration and + time >= pre(entryTimeTrue) + trueHoldDuration then + y = u; + entryTimeTrue = if edge(y) then time else pre(entryTimeTrue); + entryTimeFalse = if edge(not_y) then time else pre(entryTimeFalse); + end when; + annotation ( + defaultComponentName="truFalHol", + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised, + lineColor={0,0,0}), + Line( + points={{-84,10},{-50,10},{-50,54},{-18,54},{-18,10},{-18,10}}, + color={255,0,255}), + Line( + points={{-78,-46},{-48,-46},{-48,-2},{-24,-2},{-24,-46},{-24,-46}}), + Line( + points={{-24,-46},{6,-46},{6,-2},{44,-2},{44,-46},{74,-46}}), + Line( + points={{-18,10},{14,10},{14,54},{46,54},{46,10},{66,10}}, + color={255,0,255}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-88,-62},{92,-90}}, + textColor={0,0,255}, + textString="%falseHoldDuration"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235},if y then + {0,255,0} else + {235,235,235}), + fillColor=DynamicSelect({235,235,235},if y then + {0,255,0} else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-83,7},{-69,-7}}, + lineColor=DynamicSelect({235,235,235},if u then + {0,255,0} else + {235,235,235}), + fillColor=DynamicSelect({235,235,235},if u then + {0,255,0} else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-90,96},{96,68}}, + textColor={0,0,255}, + textString="%trueHoldDuration")}), + Diagram( + coordinateSystem( + preserveAspectRatio=false)), + Documentation( + info=" +

+Block that holds a true or false signal for at least a defined time period. +

+

+Whenever the input u switches to true (resp. false), +the output y switches and remains true for at least +the duration specified by the parameter trueHoldDuration +(resp. falseHoldDuration). +After this duration has elapsed, the output will be y = u. +

+

+This block could for example be used to disable an economizer, +and not re-enable it for 10 min, and vice versa. +

+

+Simulation results of a typical example with trueHoldDuration = falseHoldDuration = 1000 s. +

+

+ +

+", + revisions=" +
    +
  • +August 26, 2024, by Antoine Gautier:
    +Resolved an issue with unit impulse signals.
    +This is for +Buildings, issue 3966. +
  • +
  • +June 13, 2024, by Antoine Gautier:
    +Refactored with synchronous language elements.
    +This is for +Buildings, issue 3787. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +September 18, 2017, by Michael Wetter:
    +Improved event handling. +
  • +
  • +July 14, 2017, by Michael Wetter:
    +Corrected model to set output equal to input during initialization. +
  • +
  • +June 13, 2017, by Michael Wetter:
    +Reimplemented model using a state graph to avoid having to test for equality within tolerance, +and to correct a bug. +This implementation is also easier to understand.
    +This is for +Buildings, issue 789. +
  • +
  • +May 24, 2017, by Milica Grahovac:
    +First implementation. +
  • +
+")); +end TrueFalseHold; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/And.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/And.mo new file mode 100644 index 0000000000..9372ecd075 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/And.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model And + "Validation model for the And block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,8},{-6,28}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-26},{-6,-6}}))); + IBPSA.Controls.OBC.CDL.Logical.And and1 + "Logical and" + annotation (Placement(transformation(extent={{26,-8},{46,12}}))); + +equation + connect(booPul2.y,and1.u2) + annotation (Line(points={{-4,-16},{8,-16},{8,-6},{24,-6}},color={255,0,255})); + connect(booPul1.y,and1.u1) + annotation (Line(points={{-4,18},{10,18},{10,2},{24,2}},color={255,0,255})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/And.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.And. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end And; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Change.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Change.mo new file mode 100644 index 0000000000..20b2857cd0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Change.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Change + "Validation model for the Change block." + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=1.0) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Change change + "Outputs true if the input changes" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=5, + offset=0, + height=20) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler + "Triggered sampler" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + +equation + connect(booPul.y,change.u) + annotation (Line(points={{-19,0},{-6,0},{-2,0}},color={255,0,255})); + connect(ramp2.y,triggeredSampler.u) + annotation (Line(points={{21,50},{29.5,50},{38,50}},color={0,0,127})); + connect(change.y,triggeredSampler.trigger) + annotation (Line(points={{21,0},{50,0},{50,38.2}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Change.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Change. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Change; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Edge.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Edge.mo new file mode 100644 index 0000000000..e4e044987b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Edge.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Edge + "Validation model for the Edge block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=1.0) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Edge edge1 + "Outputs true if the input has a rising edge" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=5, + offset=0, + height=20) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler + "Triggered sampler" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + +equation + connect(booPul.y,edge1.u) + annotation (Line(points={{-19,0},{-8,0},{-2,0}},color={255,0,255})); + connect(edge1.y,triggeredSampler.trigger) + annotation (Line(points={{21,0},{50,0},{50,38},{50,38.2}},color={255,0,255})); + connect(ramp2.y,triggeredSampler.u) + annotation (Line(points={{21,50},{29.5,50},{38,50}},color={0,0,127})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Edge.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Edge. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Edge; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/FallingEdge.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/FallingEdge.mo new file mode 100644 index 0000000000..6bcb9179e8 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/FallingEdge.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model FallingEdge + "Validation model for the falling edge block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=1.0) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Logical.FallingEdge falEdg + "Output true when input changes from true to false" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=5, + offset=0, + height=20) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triggeredSampler + "Trigger sampling of continuous signal" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + +equation + connect(booPul.y,falEdg.u) + annotation (Line(points={{-18,0},{-18,0},{-2,0}},color={255,0,255})); + connect(ramp2.y,triggeredSampler.u) + annotation (Line(points={{22,50},{22,50},{38,50}},color={0,0,127})); + connect(falEdg.y,triggeredSampler.trigger) + annotation (Line(points={{22,0},{22,0},{50,0},{50,38.2}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/FallingEdge.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.FallingEdge. +

+", + revisions=" +
    +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end FallingEdge; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Latch.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Latch.mo new file mode 100644 index 0000000000..ee64512332 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Latch.mo @@ -0,0 +1,221 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Latch + "Validation model for the Latch block" + IBPSA.Controls.OBC.CDL.Logical.Latch falCleTruIni + "Latch block with clear input being contantly false and true initial latch input" + annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch truCleTruIni + "Latch block with clear input being contantly true and true initial latch input" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch falCleFalIni + "Latch block with clear input being contantly false and false initial latch input" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch truCleFalIni + "Latch block with clear input being contantly true and false initial latch input" + annotation (Placement(transformation(extent={{-60,-110},{-40,-90}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch swiCleInp + "Initial false output, with clear input switch between false and true" + annotation (Placement(transformation(extent={{100,90},{120,110}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch swiCleInp1 + "Initial false output, with clear input switch between false and true" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse cleInp( + final width=0.5, + final period=6) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{0,30},{20,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Logcal not" + annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant fal( + final k=false) + "False clear input" + annotation (Placement(transformation(extent={{-120,70},{-100,90}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse latInp( + final width=0.5, + final period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-160,150},{-140,170}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant tru( + final k=true) + "True clear input" + annotation (Placement(transformation(extent={{-120,-70},{-100,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not2 + "Logical not" + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + +equation + connect(cleInp.y,swiCleInp.clr) + annotation (Line(points={{22,40},{70,40},{70,94},{98,94}},color={255,0,255})); + connect(not1.u,cleInp.y) + annotation (Line(points={{38,-60},{30,-60},{30,40},{22,40}},color={255,0,255})); + connect(not1.y,swiCleInp1.clr) + annotation (Line(points={{62,-60},{72,-60},{72,-66},{98,-66}},color={255,0,255})); + connect(fal.y,falCleTruIni.clr) + annotation (Line(points={{-98,80},{-70,80},{-70,94},{-62,94}},color={255,0,255})); + connect(latInp.y,falCleTruIni.u) + annotation (Line(points={{-138,160},{-80,160},{-80,100},{-62,100}},color={255,0,255})); + connect(tru.y,truCleTruIni.clr) + annotation (Line(points={{-98,-60},{-70,-60},{-70,-46},{-62,-46}},color={255,0,255})); + connect(latInp.y,truCleTruIni.u) + annotation (Line(points={{-138,160},{-80,160},{-80,-40},{-62,-40}},color={255,0,255})); + connect(latInp.y,swiCleInp.u) + annotation (Line(points={{-138,160},{80,160},{80,100},{98,100}},color={255,0,255})); + connect(latInp.y,swiCleInp1.u) + annotation (Line(points={{-138,160},{80,160},{80,-60},{98,-60}},color={255,0,255})); + connect(latInp.y,not2.u) + annotation (Line(points={{-138,160},{-130,160},{-130,0},{-122,0}},color={255,0,255})); + connect(not2.y,falCleFalIni.u) + annotation (Line(points={{-98,0},{-90,0},{-90,40},{-62,40}},color={255,0,255})); + connect(fal.y,falCleFalIni.clr) + annotation (Line(points={{-98,80},{-70,80},{-70,34},{-62,34}},color={255,0,255})); + connect(tru.y,truCleFalIni.clr) + annotation (Line(points={{-98,-60},{-70,-60},{-70,-106},{-62,-106}},color={255,0,255})); + connect(not2.y,truCleFalIni.u) + annotation (Line(points={{-98,0},{-90,0},{-90,-100},{-62,-100}},color={255,0,255})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Latch.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Latch. Following tests are implemented: +

+
    +
  • +When the clear input is false, the initial output should equal to the initial latch input. +
  • +
  • +When the clear input is true, the initial output should be false, +regardless of the value of the latch input. +
  • +
  • +At the same moment, when both the clear input and the latch input rise from false +to true, the output should become false if it was true, +or remain false if it was false. +
  • +
  • +At the same moment, when the clear input falls from true to false +and the latch input rises from false to true, the output +should rise from false to true. +
  • +
+", + revisions=" +
    +
  • +April 4, 2019, by Jianjun Hu:
    +Added test to validate initial output. +This is for Buildings, issue 1402. +
  • +
  • +March 30, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-180,-180},{180,180}}), + graphics={ + Text( + extent={{-68,140},{-2,130}}, + textColor={28,108,200}, + textString="Clear input keeps false"), + Text( + extent={{76,148},{136,140}}, + textColor={28,108,200}, + textString="At 3rd second:"), + Text( + extent={{92,128},{172,118}}, + textColor={28,108,200}, + textString="Clear input falls: true to false"), + Text( + extent={{92,138},{170,128}}, + textColor={28,108,200}, + textString="Latch input falls: true to false"), + Text( + extent={{92,64},{170,56}}, + textColor={28,108,200}, + textString="Clear input rises: false to true"), + Text( + extent={{92,76},{172,66}}, + textColor={28,108,200}, + textString="Latch input rise: false to true"), + Text( + extent={{76,86},{136,78}}, + textColor={28,108,200}, + textString="At 6th second:"), + Text( + extent={{92,-96},{172,-104}}, + textColor={28,108,200}, + textString="Clear input falls: true to false"), + Text( + extent={{92,-84},{172,-94}}, + textColor={28,108,200}, + textString="Latch input rise: false to true"), + Text( + extent={{76,-74},{136,-82}}, + textColor={28,108,200}, + textString="At 6th second:"), + Text( + extent={{76,-12},{136,-20}}, + textColor={28,108,200}, + textString="At 3rd second:"), + Text( + extent={{92,-32},{172,-42}}, + textColor={28,108,200}, + textString="Clear input rises: false to true"), + Text( + extent={{92,-22},{170,-32}}, + textColor={28,108,200}, + textString="Latch input falls: true to false"), + Text( + extent={{-68,130},{-24,122}}, + textColor={28,108,200}, + textString="True initial input"), + Text( + extent={{-68,66},{-24,58}}, + textColor={28,108,200}, + textString="False initial input"), + Text( + extent={{-68,76},{-2,66}}, + textColor={28,108,200}, + textString="Clear input keeps false"), + Text( + extent={{-68,-14},{-24,-22}}, + textColor={28,108,200}, + textString="True initial input"), + Text( + extent={{-68,-4},{-2,-14}}, + textColor={28,108,200}, + textString="Clear input keeps true"), + Text( + extent={{-66,-74},{-22,-82}}, + textColor={28,108,200}, + textString="False initial input"), + Text( + extent={{-66,-64},{0,-74}}, + textColor={28,108,200}, + textString="Clear input keeps false")})); +end Latch; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/MultiAnd.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/MultiAnd.mo new file mode 100644 index 0000000000..ba07bcbf9b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/MultiAnd.mo @@ -0,0 +1,112 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model MultiAnd + "Model to validate the application of MultiAnd block" + IBPSA.Controls.OBC.CDL.Logical.MultiAnd mulAnd0 + "Logical and with multiple inputs: 0 input" + annotation (Placement(transformation(extent={{40,60},{60,80}}))); + IBPSA.Controls.OBC.CDL.Logical.MultiAnd mulAnd1( + nin=1) + "Logical 'MultiAnd': 1 input connection y=u" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); + IBPSA.Controls.OBC.CDL.Logical.MultiAnd mulAnd2( + nin=2) + "Logical 'MultiAnd': 2 input connections y=and(u1, u2)" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Logical.MultiAnd mulAnd5( + nin=5) + "Logical 'MultiAnd': 5 input connections y=and(u1, u2, ..., u5)" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul3( + width=0.5, + period=3) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul4( + width=0.5, + period=4) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul5( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + +equation + connect(booPul1.y,mulAnd5.u[1]) + annotation (Line(points={{-38,60},{-38,60},{20,60},{20,-24.4},{38,-24.4}},color={255,0,255})); + connect(booPul2.y,mulAnd5.u[2]) + annotation (Line(points={{-38,30},{14,30},{14,-27.2},{38,-27.2}},color={255,0,255})); + connect(booPul3.y,mulAnd5.u[3]) + annotation (Line(points={{-38,0},{0,0},{0,-30},{38,-30}},color={255,0,255})); + connect(booPul4.y,mulAnd5.u[4]) + annotation (Line(points={{-38,-30},{-38,-30},{-4,-30},{-4,-32},{-4,-32},{-4, + -32.8},{38,-32.8}}, color={255,0,255})); + connect(booPul5.y,mulAnd5.u[5]) + annotation (Line(points={{-38,-60},{-38,-60},{20,-60},{20,-35.6},{38,-35.6}},color={255,0,255})); + connect(booPul1.y,mulAnd2.u[1]) + annotation (Line(points={{-38,60},{-38,60},{20,60},{20,3.5},{38,3.5}},color={255,0,255})); + connect(booPul2.y,mulAnd2.u[2]) + annotation (Line(points={{-38,30},{-38,30},{14,30},{14,-3.5},{38,-3.5}},color={255,0,255})); + connect(booPul1.y,mulAnd1.u[1]) + annotation (Line(points={{-38,60},{20,60},{20,30},{38,30}},color={255,0,255})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiAnd.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.MultiAnd. +

+

+The input signals are configured as follows:

+
    +
  • input u1 has a period of 1 s and a width of +0.5 s.
  • +
  • input u2 has a period of 2 s and a width of +0.5 s.
  • +
  • input u3 has a period of 3 s and a width of +0.5 s.
  • +
  • input u4 has a period of 4 s and a width of +0.5 s.
  • +
  • input u5 has a period of 5 s and a width of +0.5 s.
  • +
+", + revisions=" +
    +
  • +June 28, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiAnd; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/MultiOr.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/MultiOr.mo new file mode 100644 index 0000000000..ff93ab70e3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/MultiOr.mo @@ -0,0 +1,112 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model MultiOr + "Model to validate the application of MultiOr block" + IBPSA.Controls.OBC.CDL.Logical.MultiOr mulOr0 + "Logical 'MultiOr': 1 input connection y=u" + annotation (Placement(transformation(extent={{40,60},{60,80}}))); + IBPSA.Controls.OBC.CDL.Logical.MultiOr mulOr1( + nin=1) + "Logical 'MultiOr': 1 input connection y=u" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); + IBPSA.Controls.OBC.CDL.Logical.MultiOr mulOr2( + nin=2) + "Logical 'MultiOr': 2 input connections y=and(u1, u2)" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Logical.MultiOr mulOr5( + nin=5) + "Logical 'MultiOr': 5 input connections y=and(u1, u2, ..., u5)" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul3( + width=0.5, + period=3) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul4( + width=0.5, + period=4) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul5( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + +equation + connect(booPul1.y,mulOr5.u[1]) + annotation (Line(points={{-38,60},{-38,60},{20,60},{20,-24.4},{38,-24.4}},color={255,0,255})); + connect(booPul2.y,mulOr5.u[2]) + annotation (Line(points={{-38,30},{14,30},{14,-27.2},{38,-27.2}},color={255,0,255})); + connect(booPul3.y,mulOr5.u[3]) + annotation (Line(points={{-38,0},{0,0},{0,-30},{38,-30}},color={255,0,255})); + connect(booPul4.y,mulOr5.u[4]) + annotation (Line(points={{-38,-30},{-38,-30},{-4,-30},{-4,-32},{-4,-32},{-4, + -32.8},{38,-32.8}}, color={255,0,255})); + connect(booPul5.y,mulOr5.u[5]) + annotation (Line(points={{-38,-60},{-38,-60},{20,-60},{20,-35.6},{38,-35.6}},color={255,0,255})); + connect(booPul1.y,mulOr2.u[1]) + annotation (Line(points={{-38,60},{-38,60},{20,60},{20,3.5},{38,3.5}},color={255,0,255})); + connect(booPul2.y,mulOr2.u[2]) + annotation (Line(points={{-38,30},{-38,30},{14,30},{14,-3.5},{38,-3.5}},color={255,0,255})); + connect(booPul1.y,mulOr1.u[1]) + annotation (Line(points={{-38,60},{20,60},{20,30},{38,30}},color={255,0,255})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/MultiOr.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.MultiOr. +

+

+The input signals are configured as follows:

+
    +
  • input u1 has a period of 1 s and a width of +0.5 s.
  • +
  • input u2 has a period of 2 s and a width of +0.5 s.
  • +
  • input u3 has a period of 3 s and a width of +0.5 s.
  • +
  • input u4 has a period of 4 s and a width of +0.5 s.
  • +
  • input u5 has a period of 5 s and a width of +0.5 s.
  • +
+", + revisions=" +
    +
  • +June 6, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiOr; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Nand.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Nand.mo new file mode 100644 index 0000000000..b6207791e1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Nand.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Nand + "Validation model for the Nand block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,8},{-6,28}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-26},{-6,-6}}))); + IBPSA.Controls.OBC.CDL.Logical.Nand nand1 + "Outputs true if at least one input is false" + annotation (Placement(transformation(extent={{26,-8},{46,12}}))); + +equation + connect(booPul2.y,nand1.u2) + annotation (Line(points={{-4,-16},{8,-16},{8,-6},{24,-6}},color={255,0,255})); + connect(booPul1.y,nand1.u1) + annotation (Line(points={{-4,18},{10,18},{10,2},{24,2}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nand.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Nand. +

+", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Nand; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Nor.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Nor.mo new file mode 100644 index 0000000000..da611d25ca --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Nor.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Nor + "Validation model for the Nor block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,8},{-6,28}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-26},{-6,-6}}))); + IBPSA.Controls.OBC.CDL.Logical.Nor nor1 + "Outputs true if none of the inputs is true, otherwise outputs false" + annotation (Placement(transformation(extent={{26,-8},{46,12}}))); + +equation + connect(booPul2.y,nor1.u2) + annotation (Line(points={{-4,-16},{8,-16},{8,-6},{24,-6}},color={255,0,255})); + connect(booPul1.y,nor1.u1) + annotation (Line(points={{-4,18},{10,18},{10,2},{24,2}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Nor.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Nor. +

+", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Nor; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Not.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Not.mo new file mode 100644 index 0000000000..15fa4ed695 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Not.mo @@ -0,0 +1,51 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Not + "Validation model for the Not block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-10},{-6,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Output true when input is false and output false when input is true" + annotation (Placement(transformation(extent={{26,-10},{46,10}}))); + +equation + connect(booPul.y,not1.u) + annotation (Line(points={{-4,0},{-4,0},{24,0}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Not.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Not. +

+", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Not; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Or.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Or.mo new file mode 100644 index 0000000000..44899c9dad --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Or.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Or + "Validation model for the Or block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,8},{-6,28}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=3) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-26},{-6,-6}}))); + IBPSA.Controls.OBC.CDL.Logical.Or or1 + "Output true if at least one input is true" + annotation (Placement(transformation(extent={{26,-8},{46,12}}))); + +equation + connect(booPul2.y,or1.u2) + annotation (Line(points={{-4,-16},{8,-16},{8,-6},{24,-6}},color={255,0,255})); + connect(booPul1.y,or1.u1) + annotation (Line(points={{-4,18},{10,18},{10,2},{24,2}},color={255,0,255})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Or.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Or. +

+", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Or; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Proof.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Proof.mo new file mode 100644 index 0000000000..b253d84408 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Proof.mo @@ -0,0 +1,156 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Proof "Validation model for the Proof block" + IBPSA.Controls.OBC.CDL.Logical.Proof pro( + debounce=0.5, + feedbackDelay=0.75) "Both inputs change at the same time" + annotation (Placement(transformation(extent={{-20,70},{0,90}}))); + IBPSA.Controls.OBC.CDL.Logical.Proof pro1( + debounce=0.5, + feedbackDelay=0.75) + "Commanded input changes from true to false earlier than measured input" + annotation (Placement(transformation(extent={{-20,30},{0,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Proof pro2( + debounce=0.5, + feedbackDelay=0.75) + "Measured input changes from true to false earlier than commanded input" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Proof pro3( + debounce=0.5, + feedbackDelay=0.5) + "Shorter delay to valid input" + annotation (Placement(transformation(extent={{-20,-50},{0,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.Proof pro4( + debounce=0.5, + feedbackDelay=0.5) + "Shorter delay to valid input" + annotation (Placement(transformation(extent={{-20,-90},{0,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.Proof pro5( + debounce=2, + feedbackDelay=2) + "Both inputs change at the same time" + annotation (Placement(transformation(extent={{60,70},{80,90}}))); + + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse latInp( + width=0.2, + period=10, + shift=1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,54},{-60,74}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse latInp1( + width=0.2, + period=10, + shift=1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse latInp2( + width=0.1, + period=10, + shift=1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse latInp3( + width=0.5, + period=2, + shift=1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{40,30},{60,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse latInp4( + width=0.9, + period=12, + shift=0.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{20,70},{40,90}}))); +equation + connect(latInp1.y, pro.u_s) annotation (Line(points={{-58,20},{-30,20},{-30,80}, + {-22,80}},color={255,0,255})); + connect(latInp2.y, pro1.u_s) annotation (Line(points={{-58,-50},{-40,-50},{-40, + 40},{-22,40}}, color={255,0,255})); + connect(latInp1.y, pro2.u_s) annotation (Line(points={{-58,20},{-30,20},{-30,0}, + {-22,0}}, color={255,0,255})); + connect(latInp2.y, pro4.u_s) annotation (Line(points={{-58,-50},{-40,-50},{-40, + -80},{-22,-80}}, color={255,0,255})); + connect(latInp1.y, pro3.u_s) annotation (Line(points={{-58,20},{-30,20},{-30,-40}, + {-22,-40}},color={255,0,255})); + connect(latInp.y, pro.u_m) annotation (Line(points={{-58,64},{-10,64},{-10,68}}, + color={255,0,255})); + connect(latInp1.y, pro4.u_m) annotation (Line(points={{-58,20},{-30,20},{-30,-96}, + {-10,-96},{-10,-92}}, color={255,0,255})); + connect(latInp2.y, pro3.u_m) annotation (Line(points={{-58,-50},{-40,-50},{-40, + -56},{-10,-56},{-10,-52}}, color={255,0,255})); + connect(latInp2.y, pro2.u_m) annotation (Line(points={{-58,-50},{-40,-50},{-40, + -16},{-10,-16},{-10,-12}}, color={255,0,255})); + connect(latInp1.y, pro1.u_m) annotation (Line(points={{-58,20},{-30,20},{-30,24}, + {-10,24},{-10,28}}, color={255,0,255})); + connect(latInp3.y, pro5.u_m) + annotation (Line(points={{62,40},{70,40},{70,68}}, color={255,0,255})); + connect(latInp4.y, pro5.u_s) + annotation (Line(points={{42,80},{58,80}}, color={255,0,255})); +annotation ( + experiment( + StopTime=10, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Proof.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Proof. The following tests are implemented: +

+
    +
  • +The instance pro tests the case in which +both boolean inputs change simultaneously, and hence both outputs will be +false. +
  • +
  • +The instances pro2 and pro3 use a different value +for feedbackDelay. They test the case in which +both the inputs change from true to false. However, +after the input u_m changes, the input u_s remains +true for a time that is longer than +feedbackDelay. The output yLocFal will be true. +
  • +
  • +The instances pro1 and pro4 use a different value +for feedbackDelay. They test the case in which +both the inputs change from true to false. However, +after the input u_s changes, the input u_m remains +true for a time that is longer than +feedbackDelay. The output yLocTru will be true. +
  • +
  • +The instance pro5 tests the case in which +the measured input u_m does not stabilize during the debounce time, +and hence both outputs will be true. +
  • +
+", +revisions=" +
    +
  • +March 27, 2023, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}}))); +end Proof; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Switch.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Switch.mo new file mode 100644 index 0000000000..2672ed2802 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Switch.mo @@ -0,0 +1,70 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Switch "Validation model for the Switch block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.7, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,24},{-6,44}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=3) + "Block that outputs cyclic on and off: switch between u1 and u3" + annotation (Placement(transformation(extent={{-26,-10},{-6,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul3( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-46},{-6,-26}}))); + IBPSA.Controls.OBC.CDL.Logical.Switch logicalSwitch + "Switch between two boolean inputs" + annotation (Placement(transformation(extent={{26,-10},{46,10}}))); + +equation + connect(booPul2.y,logicalSwitch.u2) + annotation (Line(points={{-4,0},{-4,0},{24,0}},color={255,0,255})); + connect(booPul1.y,logicalSwitch.u1) + annotation (Line(points={{-4,34},{10,34},{10,8},{24,8}},color={255,0,255})); + connect(booPul3.y,logicalSwitch.u3) + annotation (Line(points={{-4,-36},{10,-36},{10,-8},{24,-8}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Switch.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Switch. +

+

+The input u2 is the switch input: If u2 = true, +then output y = u1; +else output y = u3. +

+ +", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Switch; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Timer.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Timer.mo new file mode 100644 index 0000000000..abffac14f9 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Timer.mo @@ -0,0 +1,77 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Timer + "Validation model for the Timer block" + IBPSA.Controls.OBC.CDL.Logical.Timer noThr + "Timer that do not compare threshold" + annotation (Placement(transformation(extent={{20,10},{40,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Timer thrTim( + final t=0.3) + "Timer that compares threshold" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.Timer thrTim1( + final t=0.3) + "Timer that compares threshold" + annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final width=0.7, + final period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + final width=0.7, + final period=2, + final shift=-1) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + +equation + connect(booPul.y,noThr.u) + annotation (Line(points={{-18,20},{18,20}},color={255,0,255})); + connect(booPul.y,thrTim.u) + annotation (Line(points={{-18,20},{0,20},{0,-20},{18,-20}},color={255,0,255})); + connect(booPul1.y,thrTim1.u) + annotation (Line(points={{-18,-60},{18,-60}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Timer.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Timer. +

+", + revisions=" +
    +
  • +July 23, 2018, by Jianjun Hu:
    +Updated implementation to reset accumulate timer with boolean input. +
  • +
  • +July 18, 2018, by Jianjun Hu:
    +Updated implementation to include accumulate timer. +
  • +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Timer; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mo new file mode 100644 index 0000000000..c9c049ecad --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mo @@ -0,0 +1,93 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model TimerAccumulating + "Validation model for the timer that accumulates the time" + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating noThr + "Accumulating timer that do not compare threshold" + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating thrTim( + final t=1) + "Accumulating timer that compares threshold" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating noThrWitRes + "Accumulating timer that could reset the output" + annotation (Placement(transformation(extent={{40,10},{60,30}}))); + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating thrTimWitRes( + final t=1) + "Accumulating timer that could reset the output and the output compares with threshold" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final width=0.5, + final period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + final k=false) + "Constant false" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse resTim( + final width=0.5, + final period=3.5) + "Block that outputs cyclic on and off, for resetting timer" + annotation (Placement(transformation(extent={{-20,-70},{0,-50}}))); + +equation + connect(booPul.y,noThr.u) + annotation (Line(points={{-58,40},{-40,40},{-40,20},{-22,20}},color={255,0,255})); + connect(booPul.y,thrTim.u) + annotation (Line(points={{-58,40},{-40,40},{-40,-20},{-22,-20}},color={255,0,255})); + connect(con.y,noThr.reset) + annotation (Line(points={{-58,-60},{-48,-60},{-48,12},{-22,12}},color={255,0,255})); + connect(con.y,thrTim.reset) + annotation (Line(points={{-58,-60},{-48,-60},{-48,-28},{-22,-28}},color={255,0,255})); + connect(booPul.y,noThrWitRes.u) + annotation (Line(points={{-58,40},{20,40},{20,20},{38,20}},color={255,0,255})); + connect(booPul.y,thrTimWitRes.u) + annotation (Line(points={{-58,40},{20,40},{20,-20},{38,-20}},color={255,0,255})); + connect(resTim.y,noThrWitRes.reset) + annotation (Line(points={{2,-60},{12,-60},{12,12},{38,12}},color={255,0,255})); + connect(resTim.y,thrTimWitRes.reset) + annotation (Line(points={{2,-60},{12,-60},{12,-28},{38,-28}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulating.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating. +

+", + revisions=" +
    +
  • +July 23, 2018, by Jianjun Hu:
    +Updated implementation to reset accumulate timer with boolean input. +
  • +
  • +July 18, 2018, by Jianjun Hu:
    +Updated implementation to include accumulate timer. +
  • +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimerAccumulating; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mo new file mode 100644 index 0000000000..96c3757ea3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mo @@ -0,0 +1,96 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model TimerAccumulatingNegativeStartTime + "Validation model for the timer that accumulates the time, with a negative start time" + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating noThr + "Accumulating timer that do not compare threshold" + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating thrTim( + final t=1) + "Accumulating timer that compares threshold" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating noThrWitRes + "Accumulating timer that could reset the output" + annotation (Placement(transformation(extent={{40,10},{60,30}}))); + IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating thrTimWitRes( + final t=1) + "Accumulating timer that could reset the output and the output compares with threshold" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final width=0.5, + final period=4, + shift=-11) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + final k=false) + "Constant false" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse resTim( + final width=0.5, + final period=3.5, + shift=-5) + "Block that outputs cyclic on and off, for resetting timer" + annotation (Placement(transformation(extent={{-20,-70},{0,-50}}))); + +equation + connect(booPul.y,noThr.u) + annotation (Line(points={{-58,40},{-40,40},{-40,20},{-22,20}},color={255,0,255})); + connect(booPul.y,thrTim.u) + annotation (Line(points={{-58,40},{-40,40},{-40,-20},{-22,-20}},color={255,0,255})); + connect(con.y,noThr.reset) + annotation (Line(points={{-58,-60},{-48,-60},{-48,12},{-22,12}},color={255,0,255})); + connect(con.y,thrTim.reset) + annotation (Line(points={{-58,-60},{-48,-60},{-48,-28},{-22,-28}},color={255,0,255})); + connect(booPul.y,noThrWitRes.u) + annotation (Line(points={{-58,40},{20,40},{20,20},{38,20}},color={255,0,255})); + connect(booPul.y,thrTimWitRes.u) + annotation (Line(points={{-58,40},{20,40},{20,-20},{38,-20}},color={255,0,255})); + connect(resTim.y,noThrWitRes.reset) + annotation (Line(points={{2,-60},{12,-60},{12,12},{38,12}},color={255,0,255})); + connect(resTim.y,thrTimWitRes.reset) + annotation (Line(points={{2,-60},{12,-60},{12,-28},{38,-28}},color={255,0,255})); + annotation ( + experiment( + StartTime=-10, + StopTime=5, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerAccumulatingNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.TimerAccumulating. +

+", + revisions=" +
    +
  • +July 23, 2018, by Jianjun Hu:
    +Updated implementation to reset accumulate timer with boolean input. +
  • +
  • +July 18, 2018, by Jianjun Hu:
    +Updated implementation to include accumulate timer. +
  • +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimerAccumulatingNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mo new file mode 100644 index 0000000000..eb79c153d3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mo @@ -0,0 +1,67 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model TimerNegativeStartTime + "Validation model for the Timer block with a negative start time" + IBPSA.Controls.OBC.CDL.Logical.Timer noThr + "Timer that do not compare threshold" + annotation (Placement(transformation(extent={{20,10},{40,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Timer thrTim( + final t=0.3) + "Timer that compares threshold" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final width=0.7, + final period=2, + shift=-5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + +equation + connect(booPul.y,noThr.u) + annotation (Line(points={{-18,20},{18,20}},color={255,0,255})); + connect(booPul.y,thrTim.u) + annotation (Line(points={{-18,20},{0,20},{0,-20},{18,-20}},color={255,0,255})); + annotation ( + experiment( + StartTime=-10, + StopTime=5, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TimerNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Timer. +

+", + revisions=" +
    +
  • +July 23, 2018, by Jianjun Hu:
    +Updated implementation to reset accumulate timer with boolean input. +
  • +
  • +July 18, 2018, by Jianjun Hu:
    +Updated implementation to include accumulate timer. +
  • +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimerNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Toggle.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Toggle.mo new file mode 100644 index 0000000000..dad6475af6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Toggle.mo @@ -0,0 +1,221 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Toggle + "Validation model for the Toggle block" + IBPSA.Controls.OBC.CDL.Logical.Toggle falCleTruIni + "Toggle block with clear input being contantly false and true initial toggle input" + annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); + IBPSA.Controls.OBC.CDL.Logical.Toggle falCleFalIni + "Toggle block with clear input being contantly false and false initial toggle input" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + IBPSA.Controls.OBC.CDL.Logical.Toggle truCleTruIni + "Toggle block with clear input being contantly true and true initial toggle input" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.Toggle truCleFalIni + "Toggle block with clear input being contantly true and false initial toggle input" + annotation (Placement(transformation(extent={{-60,-110},{-40,-90}}))); + IBPSA.Controls.OBC.CDL.Logical.Toggle swiCleInp + "Initial false output, with clear input switch between false and true" + annotation (Placement(transformation(extent={{100,90},{120,110}}))); + IBPSA.Controls.OBC.CDL.Logical.Toggle swiCleInp1 + "Initial false output, with clear input switch between false and true" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse cleInp( + final width=0.5, + final period=6) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{0,70},{20,90}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Logical not" + annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse togInp( + final width=0.5, + final period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-160,150},{-140,170}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant tru( + final k=true) + "True clear input" + annotation (Placement(transformation(extent={{-120,-70},{-100,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not2 + "Logical not" + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant fal( + final k=false) + "False clear input" + annotation (Placement(transformation(extent={{-120,70},{-100,90}}))); + +equation + connect(cleInp.y,swiCleInp.clr) + annotation (Line(points={{22,80},{70,80},{70,94},{98,94}},color={255,0,255})); + connect(not1.u,cleInp.y) + annotation (Line(points={{38,-60},{30,-60},{30,80},{22,80}},color={255,0,255})); + connect(not1.y,swiCleInp1.clr) + annotation (Line(points={{62,-60},{72,-60},{72,-66},{98,-66}},color={255,0,255})); + connect(togInp.y,swiCleInp.u) + annotation (Line(points={{-138,160},{80,160},{80,100},{98,100}},color={255,0,255})); + connect(togInp.y,swiCleInp1.u) + annotation (Line(points={{-138,160},{80,160},{80,-60},{98,-60}},color={255,0,255})); + connect(togInp.y,falCleTruIni.u) + annotation (Line(points={{-138,160},{-80,160},{-80,100},{-62,100}},color={255,0,255})); + connect(fal.y,falCleTruIni.clr) + annotation (Line(points={{-98,80},{-70,80},{-70,94},{-62,94}},color={255,0,255})); + connect(togInp.y,truCleTruIni.u) + annotation (Line(points={{-138,160},{-80,160},{-80,-40},{-62,-40}},color={255,0,255})); + connect(fal.y,falCleFalIni.clr) + annotation (Line(points={{-98,80},{-70,80},{-70,34},{-62,34}},color={255,0,255})); + connect(togInp.y,not2.u) + annotation (Line(points={{-138,160},{-130,160},{-130,0},{-122,0}},color={255,0,255})); + connect(not2.y,falCleFalIni.u) + annotation (Line(points={{-98,0},{-90,0},{-90,40},{-62,40}},color={255,0,255})); + connect(tru.y,truCleTruIni.clr) + annotation (Line(points={{-98,-60},{-70,-60},{-70,-46},{-62,-46}},color={255,0,255})); + connect(tru.y,truCleFalIni.clr) + annotation (Line(points={{-98,-60},{-70,-60},{-70,-106},{-62,-106}},color={255,0,255})); + connect(not2.y,truCleFalIni.u) + annotation (Line(points={{-98,0},{-90,0},{-90,-100},{-62,-100}},color={255,0,255})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Toggle.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Toggle. Following tests are implemented: +

+
    +
  • +When the clear input is false, the initial output should equal to the initial toggle input. +
  • +
  • +When the clear input is true, the initial output should be false, +regardless of the value of the toggle input. +
  • +
  • +At the same moment, when both the clear input and the toggle input rise from false +to true, the output should become false if it was true, +or remain false if it was false. +
  • +
  • +At the same moment, when the clear input falls from true to false +and the toggle input rises from false to true, the output +should rise from false to true. +
  • +
+", + revisions=" +
    +
  • +April 4, 2019, by Jianjun Hu:
    +Added test to validate initial output. +This is for Buildings, issue 1402. +
  • +
  • +March 31, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-180,-180},{180,180}}), + graphics={ + Text( + extent={{76,148},{136,140}}, + textColor={28,108,200}, + textString="At 3rd second:"), + Text( + extent={{92,128},{172,118}}, + textColor={28,108,200}, + textString="Clear input falls: true to false"), + Text( + extent={{92,138},{170,128}}, + textColor={28,108,200}, + textString="Toggle input falls: true to false"), + Text( + extent={{92,64},{170,56}}, + textColor={28,108,200}, + textString="Clear input rises: false to true"), + Text( + extent={{92,76},{172,66}}, + textColor={28,108,200}, + textString="Toggle input rise: false to true"), + Text( + extent={{76,86},{136,78}}, + textColor={28,108,200}, + textString="At 6th second:"), + Text( + extent={{92,-96},{172,-104}}, + textColor={28,108,200}, + textString="Clear input falls: true to false"), + Text( + extent={{92,-84},{172,-94}}, + textColor={28,108,200}, + textString="Toggle input rise: false to true"), + Text( + extent={{76,-74},{136,-82}}, + textColor={28,108,200}, + textString="At 6th second:"), + Text( + extent={{76,-12},{136,-20}}, + textColor={28,108,200}, + textString="At 3rd second:"), + Text( + extent={{92,-32},{172,-42}}, + textColor={28,108,200}, + textString="Clear input rises: false to true"), + Text( + extent={{92,-22},{170,-32}}, + textColor={28,108,200}, + textString="Toggle input falls: true to false"), + Text( + extent={{-68,130},{-24,122}}, + textColor={28,108,200}, + textString="True initial input"), + Text( + extent={{-68,140},{-2,130}}, + textColor={28,108,200}, + textString="Clear input keeps false"), + Text( + extent={{-68,76},{-2,66}}, + textColor={28,108,200}, + textString="Clear input keeps false"), + Text( + extent={{-68,66},{-24,58}}, + textColor={28,108,200}, + textString="False initial input"), + Text( + extent={{-68,-4},{-2,-14}}, + textColor={28,108,200}, + textString="Clear input keeps true"), + Text( + extent={{-68,-14},{-24,-22}}, + textColor={28,108,200}, + textString="True initial input"), + Text( + extent={{-66,-64},{0,-74}}, + textColor={28,108,200}, + textString="Clear input keeps false"), + Text( + extent={{-66,-74},{-22,-82}}, + textColor={28,108,200}, + textString="False initial input")})); +end Toggle; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/TrueDelay.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/TrueDelay.mo new file mode 100644 index 0000000000..41bba54e71 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/TrueDelay.mo @@ -0,0 +1,174 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model TrueDelay + "Validation model for the TrueDelay block" + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay0( + final delayTime=0) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,130},{20,150}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay1( + final delayTime=0.5) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,130},{80,150}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay2( + final delayTime=0.8) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,100},{20,120}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay4( + final delayTime=0) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay5( + final delayTime=0.5) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,40},{80,60}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay6( + final delayTime=0.8) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,10},{20,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Negation of input signal" + annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay3( + final delayTime=1.8) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,100},{80,120}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay7( + final delayTime=1.8) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,10},{80,30}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay00( + final delayTime=0, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay11( + final delayTime=0.5, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay22( + final delayTime=0.8, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay44( + final delayTime=0, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,-140},{20,-120}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay55( + final delayTime=0.5, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,-140},{80,-120}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay66( + final delayTime=0.8, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{0,-170},{20,-150}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not2 + "Negation of input signal" + annotation (Placement(transformation(extent={{-60,-120},{-40,-100}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay33( + final delayTime=1.8, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,-80},{80,-60}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueDelay onDelay77( + final delayTime=1.8, + final delayOnInit=true) + "Delay a rising edge of the input, but do not delay a falling edge." + annotation (Placement(transformation(extent={{60,-170},{80,-150}}))); + +protected + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final width=0.5, + final period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + final width=0.5, + final period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-100,-100},{-80,-80}}))); + +equation + connect(booPul.y,not1.u) + annotation (Line(points={{-79,90},{-70,90},{-70,70},{-62,70}},color={255,0,255})); + connect(booPul.y,onDelay0.u) + annotation (Line(points={{-79,90},{-20,90},{-20,140},{-2,140}},color={255,0,255})); + connect(booPul.y,onDelay2.u) + annotation (Line(points={{-79,90},{-20,90},{-20,110},{-2,110}},color={255,0,255})); + connect(booPul.y,onDelay1.u) + annotation (Line(points={{-79,90},{40,90},{40,140},{58,140}},color={255,0,255})); + connect(booPul.y,onDelay3.u) + annotation (Line(points={{-79,90},{40,90},{40,110},{58,110}},color={255,0,255})); + connect(not1.y,onDelay4.u) + annotation (Line(points={{-39,70},{-20,70},{-20,50},{-2,50}},color={255,0,255})); + connect(not1.y,onDelay6.u) + annotation (Line(points={{-39,70},{-20,70},{-20,20},{-2,20}},color={255,0,255})); + connect(not1.y,onDelay5.u) + annotation (Line(points={{-39,70},{40,70},{40,50},{58,50}},color={255,0,255})); + connect(not1.y,onDelay7.u) + annotation (Line(points={{-39,70},{40,70},{40,20},{58,20}},color={255,0,255})); + connect(booPul1.y,not2.u) + annotation (Line(points={{-79,-90},{-70,-90},{-70,-110},{-62,-110}},color={255,0,255})); + connect(booPul1.y,onDelay00.u) + annotation (Line(points={{-79,-90},{-20,-90},{-20,-40},{-2,-40}},color={255,0,255})); + connect(booPul1.y,onDelay22.u) + annotation (Line(points={{-79,-90},{-20,-90},{-20,-70},{-2,-70}},color={255,0,255})); + connect(booPul1.y,onDelay11.u) + annotation (Line(points={{-79,-90},{40,-90},{40,-40},{58,-40}},color={255,0,255})); + connect(booPul1.y,onDelay33.u) + annotation (Line(points={{-79,-90},{40,-90},{40,-70},{58,-70}},color={255,0,255})); + connect(not2.y,onDelay44.u) + annotation (Line(points={{-39,-110},{-20,-110},{-20,-130},{-2,-130}},color={255,0,255})); + connect(not2.y,onDelay66.u) + annotation (Line(points={{-39,-110},{-20,-110},{-20,-160},{-2,-160}},color={255,0,255})); + connect(not2.y,onDelay55.u) + annotation (Line(points={{-39,-110},{40,-110},{40,-130},{58,-130}},color={255,0,255})); + connect(not2.y,onDelay77.u) + annotation (Line(points={{-39,-110},{40,-110},{40,-160},{58,-160}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueDelay.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.TrueDelay. +

+", + revisions=" +
    +
  • +February 11, 2019, by Milica Grahovac:
    +Added tests for initial true input delay. +
  • +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-100,-180},{100,180}}))); +end TrueDelay; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mo new file mode 100644 index 0000000000..9f58dfd7fb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mo @@ -0,0 +1,179 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model TrueFalseHold + "Validation model for the TrueFalseHold block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + shift=0, + period=1500) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{-140,60},{-120,80}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + shift=0, + period=1000, + width=0.25) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{-140,20},{-120,40}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol1( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + shift=0, + period=1500) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{-140,-20},{-120,0}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol2( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul3( + shift=0, + period=1000, + width=0.25) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{-140,-60},{-120,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol3( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Negation of input signal" + annotation (Placement(transformation(extent={{-90,-20},{-70,0}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not3 + "Negation of input signal" + annotation (Placement(transformation(extent={{-90,-60},{-70,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul4( + shift=100, + period=1500) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol4( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{120,60},{140,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul5( + shift=100, + period=1000, + width=0.25) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol5( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{120,20},{140,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul6( + shift=100, + period=1500) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{20,-20},{40,0}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol6( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{120,-20},{140,0}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul7( + shift=100, + period=1000, + width=0.25) + "Boolean pulse input signal" + annotation (Placement(transformation(extent={{20,-60},{40,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol7( + trueHoldDuration=1000) + "The block introduces a minimal offset between the input signal rising and falling edge" + annotation (Placement(transformation(extent={{120,-60},{140,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not2 "Negation of input signal" + annotation (Placement(transformation(extent={{70,-20},{90,0}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not4 + "Negation of input signal" + annotation (Placement(transformation(extent={{70,-60},{90,-40}}))); + + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol8(trueHoldDuration= + 0, falseHoldDuration=1000) + "Hold only false value of unit impulse signal" + annotation (Placement(transformation(extent={{120,-90},{140,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.Edge edg "Generate unit impulse signal" + annotation (Placement(transformation(extent={{70,-90},{90,-70}}))); +equation + connect(booPul.y,truFalHol.u) + annotation (Line(points={{-118,70},{-118,70},{-42,70}},color={255,0,255})); + connect(booPul1.y,truFalHol1.u) + annotation (Line(points={{-118,30},{-42,30}},color={255,0,255})); + connect(booPul2.y,not1.u) + annotation (Line(points={{-118,-10},{-92,-10}},color={255,0,255})); + connect(not1.y,truFalHol2.u) + annotation (Line(points={{-68,-10},{-42,-10}},color={255,0,255})); + connect(booPul3.y,not3.u) + annotation (Line(points={{-118,-50},{-92,-50}},color={255,0,255})); + connect(not3.y,truFalHol3.u) + annotation (Line(points={{-68,-50},{-42,-50}},color={255,0,255})); + connect(booPul4.y,truFalHol4.u) + annotation (Line(points={{42,70},{118,70}},color={255,0,255})); + connect(booPul5.y,truFalHol5.u) + annotation (Line(points={{42,30},{118,30}},color={255,0,255})); + connect(booPul6.y,not2.u) + annotation (Line(points={{42,-10},{68,-10}},color={255,0,255})); + connect(not2.y,truFalHol6.u) + annotation (Line(points={{92,-10},{118,-10}},color={255,0,255})); + connect(booPul7.y,not4.u) + annotation (Line(points={{42,-50},{68,-50}},color={255,0,255})); + connect(not4.y,truFalHol7.u) + annotation (Line(points={{92,-50},{118,-50}},color={255,0,255})); + connect(edg.y, truFalHol8.u) + annotation (Line(points={{92,-80},{118,-80}}, color={255,0,255})); + connect(booPul6.y, edg.u) annotation (Line(points={{42,-10},{60,-10},{60,-80}, + {68,-80}}, color={255,0,255})); + annotation ( + experiment( + StopTime=7200.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/TrueFalseHold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold. +

+

+The validation uses different instances to validate different hold trueHoldDurations, different lengths +of the input pulse, and different initial values for the input signal. +

+", + revisions=" +
    +
  • +August 26, 2024, by Antoine Gautier:
    +Added a case with a unit impulse signal.
    +This is for +Buildings, issue 3966. +
  • +
  • +June 14, 2017, by Michael Wetter:
    +Added more tests for different initial signals and different hold values. +
  • +
  • +May 24, 2017, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Diagram( + coordinateSystem( + extent={{-160,-100},{160,100}})), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TrueFalseHold; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulse.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulse.mo new file mode 100644 index 0000000000..2a515a11bb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulse.mo @@ -0,0 +1,156 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model VariablePulse + "Validation model for producing boolean pulse output" + + IBPSA.Controls.OBC.CDL.Logical.VariablePulse conTru( + period=900) "Variable pulse with constant pulse width" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.VariablePulse fal( + period=900) + "Variable pulse with the zero width input" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + IBPSA.Controls.OBC.CDL.Logical.VariablePulse truFal( + period=900) + "Variable pulse with width input changing from positive value to zero" + annotation (Placement(transformation(extent={{60,50},{80,70}}))); + IBPSA.Controls.OBC.CDL.Logical.VariablePulse falTru( + period=900) + "Variable pulse with width input changing from zero to positive value" + annotation (Placement(transformation(extent={{60,10},{80,30}}))); + IBPSA.Controls.OBC.CDL.Logical.VariablePulse tru( + period=900) + "Variable pulse with the constant width input" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Logical.VariablePulse falTru1( + period=900) + "Variable pulse with width input changing between different positive values" + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse conPul( + amplitude=0.65, + width=0.8, + period=4000) + "Continuous pulse signal" + annotation (Placement(transformation(extent={{20,50},{40,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con( + k=0.75) + "Constant" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con1( + k=0) + "Constant value" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse conPul1( + amplitude=0.65, + width=0.85, + period=3600, + shift=360) + "Continuous pulse signal" + annotation (Placement(transformation(extent={{20,10},{40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con2( + k=1) + "Constant value" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse conPul2( + amplitude=0.5, + width=0.5, + period=3600, + shift=360, + offset=0.3) + "Continuous pulse signal" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.VariablePulse conChaWid( + period=900) + "Variable pulse with constantly changing pulse width " + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram( + height=0.8, + duration=900, + startTime=300) + "Ramp input" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); +equation + connect(con.y, conTru.u) + annotation (Line(points={{-58,-20},{-42,-20}}, color={0,0,127})); + connect(con1.y, fal.u) + annotation (Line(points={{-58,60},{-42,60}}, color={0,0,127})); + connect(conPul.y, truFal.u) + annotation (Line(points={{42,60},{58,60}}, color={0,0,127})); + connect(conPul1.y, falTru.u) + annotation (Line(points={{42,20},{58,20}}, color={0,0,127})); + connect(con2.y, tru.u) + annotation (Line(points={{-58,20},{-42,20}}, color={0,0,127})); + connect(conPul2.y, falTru1.u) + annotation (Line(points={{42,-20},{58,-20}}, color={0,0,127})); + connect(ram.y, conChaWid.u) + annotation (Line(points={{-58,-60},{-42,-60}}, color={0,0,127})); +annotation (experiment( + StartTime=0, + StopTime=3600, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulse.mos" "Simulate and plot"), + Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.VariablePulse. +

+
    +
  • +The instance fal has the constant 0 input. It gives +constant false output. +
  • +
  • +The instance tru has the constant 1 input. It gives +constant true output. +
  • +
  • +The instance conTru has the constant 0.75 input. +It gives the pulse output, with the width (75%). +
  • +
  • +The instance truFal has the input changing from 0.65 +to 0. It outputs a pulse (with the width of 65%) and then changes +to constant false. +
  • +
  • +The instance falTru has the input changing from 0 +to 0.65 and then back to 0. It firstly outputs the constant +false, then a pulse (with the width of 65%) and finally back +to false. +
  • +
  • +The instance falTru1 has the input changing from 0.3 +to 0.8 and then back to 0.3. It firstly outputs a +pulse with the width of 30%, then a pulse with the width of 80%, and +finally a pulse with the width of 30% again. When the input changes, it gives +a new pulse immediately. +
  • +
  • +The instance conChaWid has a ramp input. It gives constant +true output when the input is ramping up. +
  • +
+", +revisions=" +
    +
  • +August 11, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end VariablePulse; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mo new file mode 100644 index 0000000000..5ff8854109 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mo @@ -0,0 +1,60 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model VariablePulseMinHold + "Validation model for producing boolean pulse output" + + IBPSA.Controls.OBC.CDL.Logical.VariablePulse conChaWid( + period=3, + minTruFalHol=1) + "Variable pulse with constantly changing pulse width " + annotation (Placement(transformation(extent={{10,-10},{30,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse conPul1( + amplitude=0.4, + width=0.4, + period=4, + shift=1.6, + offset=0.5) + "Continuous pulse signal" + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); +equation + connect(conPul1.y, conChaWid.u) + annotation (Line(points={{-8,0},{8,0}}, color={0,0,127})); +annotation (experiment( + StopTime=5, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/VariablePulseMinHold.mos" "Simulate and plot"), + Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.VariablePulse. +

+

+It tests the case that the input value changes at the moment when the output +is still in previous status in less than the minimum holding time. +In the case, the output holds the previous status for the minimum holding time +and then change to the new status. +

+", +revisions=" +
    +
  • +August 11, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end VariablePulseMinHold; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/Xor.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/Xor.mo new file mode 100644 index 0000000000..92c712daae --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/Xor.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Logical.Validation; +model Xor + "Validation model for the Xor block" + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + width=0.5, + period=1.5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,8},{-6,28}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + width=0.5, + period=5) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-26},{-6,-6}}))); + IBPSA.Controls.OBC.CDL.Logical.Xor xor1 + "Outputs true if exactly one input is true" + annotation (Placement(transformation(extent={{26,-8},{46,12}}))); + +equation + connect(booPul2.y,xor1.u2) + annotation (Line(points={{-4,-16},{8,-16},{8,-6},{24,-6}},color={255,0,255})); + connect(booPul1.y,xor1.u1) + annotation (Line(points={{-4,18},{10,18},{10,2},{24,2}},color={255,0,255})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Logical/Validation/Xor.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Logical.Xor. +

+", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Xor; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Logical/Validation/package.mo new file mode 100644 index 0000000000..b9fbad7243 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Logical; +package Validation "Collection of models that validate the logical blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Logical. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Validation/package.order b/IBPSA/Controls/OBC/CDL/Logical/Validation/package.order new file mode 100644 index 0000000000..5e5493538c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Validation/package.order @@ -0,0 +1,23 @@ +And +Change +Edge +FallingEdge +Latch +MultiAnd +MultiOr +Nand +Nor +Not +Or +Proof +Switch +Timer +TimerAccumulating +TimerAccumulatingNegativeStartTime +TimerNegativeStartTime +Toggle +TrueDelay +TrueFalseHold +VariablePulse +VariablePulseMinHold +Xor diff --git a/IBPSA/Controls/OBC/CDL/Logical/VariablePulse.mo b/IBPSA/Controls/OBC/CDL/Logical/VariablePulse.mo new file mode 100644 index 0000000000..b6e277d6ae --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/VariablePulse.mo @@ -0,0 +1,314 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block VariablePulse "Generate boolean pulse with the width specified by input" + + parameter Real period( + final quantity="Time", + final unit="s") + "Time for one pulse period"; + + parameter Real deltaU( + min = 0.001, + max = 0.5, + final unit="1") = 0.01 "Increment of u that triggers recomputation of output"; + + parameter Real minTruFalHol( + final quantity="Time", + final unit="s", + final min=Constants.small)=0.01*period + "Minimum time to hold true or false"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u( + final min=0, + final max=1, + final unit="1") + "Ratio of the period that the output should be true" + annotation (Placement(transformation(extent={{-160,-20},{-120,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Boolean pulse when the input is greater than zero" + annotation (Placement(transformation(extent={{120,-20},{160,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real adjustedPeriod( + final quantity="Time", + final unit="s") = max(period, minTruFalHol*2.02) + "Time for one pulse period"; + + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triSam + "Sample the input when there is value change" + annotation (Placement(transformation(extent={{-100,60},{-80,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub + "Output the difference before and after sampling" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Abs abs1 + "Output the absolute value change" + annotation (Placement(transformation(extent={{-20,20},{0,40}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold greThr( + final t=deltaU, + final h=0) + "Check if there is a sufficiently large change in input value" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Edge edg2 + "Rising edge when there is a width change" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Pre preBre + "Break loop" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Cycle cycOut( + final period=adjustedPeriod, + final minTruFalHol=minTruFalHol) + "Produce boolean pulse output" + annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truFalHol( + final trueHoldDuration=minTruFalHol, + final falseHoldDuration=minTruFalHol) + "Ensure the minimum holding time" + annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + + block Cycle + "Generate boolean pulse with the width specified by the input" + parameter Real period( + final quantity="Time", + final unit="s", + final min=Constants.small) + "Time for one pulse period"; + parameter Real minTruFalHol( + final quantity="Time", + final unit="s", + final min=Constants.small) + "Minimum time to hold true or false"; + + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput go + "True: cycle the output" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Ratio of the period that the output should be true" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Cycling boolean output" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + discrete Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "Time instant when output begins cycling"; + Real t_sta( + final quantity="Time", + final unit="s", + fixed=false) + "Begin time instant of one period"; + Real t_end( + final quantity="Time", + final unit="s", + fixed=false) + "End time instant of one period"; + + initial equation + pre(t0)=time; + + equation + when go then + t0 = time; + end when; + + t_sta = t0 + IBPSA.Utilities.Math.Functions.round( + x=integer((time-t0)/period)*period, + n=6); + t_end = t_sta + u*period; + + y = (time>=t_sta) and (time= minTruFalHol*2, + "In " + getInstanceName() + ": The pulse period must be greater than 2 times of the minimum true and false holding time. Increasing period to " + String(adjustedPeriod) + ".", + level = AssertionLevel.warning); + +equation + connect(u, triSam.u) annotation (Line(points={{-140,0},{-110,0},{-110,70},{-102, + 70}}, color={0,0,127})); + connect(triSam.y, sub.u1) annotation (Line(points={{-78,70},{-70,70},{-70,36}, + {-62,36}}, color={0,0,127})); + connect(u, sub.u2) annotation (Line(points={{-140,0},{-110,0},{-110,24},{-62,24}}, + color={0,0,127})); + connect(sub.y, abs1.u) + annotation (Line(points={{-38,30},{-22,30}}, color={0,0,127})); + connect(greThr.y, edg2.u) annotation (Line(points={{42,30},{50,30},{50,0},{58, + 0}}, color={255,0,255})); + connect(greThr.y, preBre.u) + annotation (Line(points={{42,30},{58,30}}, color={255,0,255})); + connect(preBre.y, triSam.trigger) annotation (Line(points={{82,30},{90,30},{90, + 50},{-90,50},{-90,58}}, color={255,0,255})); + connect(u, cycOut.u) annotation (Line(points={{-140,0},{-110,0},{-110,-60},{38, + -60}}, color={0,0,127})); + connect(cycOut.y, truFalHol.u) + annotation (Line(points={{62,-60},{78,-60}}, color={255,0,255})); + connect(truFalHol.y, y) + annotation (Line(points={{102,-60},{110,-60},{110,0},{140,0}}, + color={255,0,255})); + connect(abs1.y, greThr.u) annotation (Line(points={{2,30},{18,30}}, + color={0,0,127})); + connect(edg2.y, cycOut.go) annotation (Line(points={{82,0},{90,0},{90,-20},{30, + -20},{30,-68},{38,-68}}, color={255,0,255})); +annotation ( + defaultComponentName="varPul", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,-140},{150,-110}}, + textColor={0,0,0}, + textString="%period"), + Polygon( + points={{-80,0},{-88,-22},{-72,-22},{-80,0}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-6},{-80,-92}}, + color={255,0,255}), + Line( + points={{-90,-80},{72,-80}}, + color={255,0,255}), + Polygon( + points={{90,-80},{68,-72},{68,-88},{90,-80}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-46,-12},{-14,-30}}, + textColor={135,135,135}, + textString="%period"), + Polygon( + points={{0,-30},{-8,-28},{-8,-32},{0,-30}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{-60,-30},{0,-30}}, + color={135,135,135}), + Polygon( + points={{-60,-30},{-52,-28},{-52,-32},{-60,-30}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line(points={{-80,20},{-60,20},{-60,60},{60,60}}, color={0,0,127}), + Line(points={{-80,-80},{-60,-80}}, color={0,0,0}), + Line(points={{-60,-40},{-30,-40},{-30,-80}}, color={0,0,0}), + Line(points={{0,-40},{30,-40},{30,-80}}, color={0,0,0}), + Line(points={{0,-40},{0,-80}}, color={0,0,0}), + Text( + extent={{-54,76},{-30,62}}, + textColor={135,135,135}, + textString="%width"), + Line( + points={{-90,20},{72,20}}, + color={0,0,127}), + Polygon( + points={{90,20},{68,28},{68,12},{90,20}}, + lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,94},{-80,16}}, + color={0,0,127}), + Polygon( + points={{-80,94},{-88,72},{-72,72},{-80,94}}, + lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Text( + extent={{-100,140},{100,100}}, + textColor={0,0,255}, + textString="%name"), + Line(points={{-60,-40},{-60,-80}}, color={0,0,0}), + Line(points={{-30,-80},{0,-80}}, color={0,0,0}), + Line(points={{30,-80},{60,-80}}, color={0,0,0})}), + Documentation( + info=" +

+Block that outputs a boolean pulse. +

+

+The output of this block is a pulse with a constant period +and a width as obtained from the input 0 ≤ u ≤ 1, +which is the width relative to the period. +

+

+The block produces the following ouputs: +

+
    +
  • +If u = 0, the output y remains false. +
  • +
  • +If 0 < u < 1, the output y will be +a boolean pulse with the period specified by the parameter period and +the width set to u*period. +
  • +
  • +If u = 1, the output y remains true. +
  • +
+

+When the input u changes by more than deltaU and the output +has been holding constant for more than minimum holding time +minTruFalHol, the output will change to a new pulse with +width equal to u*period. +

+

+\"VariablePulse.png\" +

+", +revisions=" +
    +
  • +August 11, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Diagram(coordinateSystem(extent={{-120,-120},{120,120}}))); +end VariablePulse; diff --git a/IBPSA/Controls/OBC/CDL/Logical/Xor.mo b/IBPSA/Controls/OBC/CDL/Logical/Xor.mo new file mode 100644 index 0000000000..b8e7c2ed73 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/Xor.mo @@ -0,0 +1,92 @@ +within IBPSA.Controls.OBC.CDL.Logical; +block Xor + "Logical 'xor': y = u1 xor u2" + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u1 + "Input for logical 'xor'" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Input for logical 'xor'" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output with u1 xor u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=not ((u1 and u2) or (not u1 and not u2)); + annotation ( + defaultComponentName="xor", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-90,40},{90,-40}}, + textColor={0,0,0}, + textString="xor"), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-6},{-89,8}}, + lineColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u1 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-75,-73},{-89,-87}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that outputs true if exactly one input is true. +Otherwise the output is false. +

+", + revisions=" +
    +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Xor; diff --git a/IBPSA/Controls/OBC/CDL/Logical/package.mo b/IBPSA/Controls/OBC/CDL/Logical/package.mo new file mode 100644 index 0000000000..366dfc3c75 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/package.mo @@ -0,0 +1,34 @@ +within IBPSA.Controls.OBC.CDL; +package Logical "Package with logical blocks" + annotation ( + Documentation( + info=" +

+Package with blocks for elementary mathematical functions +for boolean variables. +

+", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Line( + points={{-86,-22},{-50,-22},{-50,22},{48,22},{48,-22},{88,-24}}, + color={255,0,255})})); +end Logical; diff --git a/IBPSA/Controls/OBC/CDL/Logical/package.order b/IBPSA/Controls/OBC/CDL/Logical/package.order new file mode 100644 index 0000000000..d41c7de574 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Logical/package.order @@ -0,0 +1,23 @@ +And +Change +Edge +FallingEdge +Latch +MultiAnd +MultiOr +Nand +Nor +Not +Or +Pre +Proof +Switch +Timer +TimerAccumulating +Toggle +TrueDelay +TrueFalseHold +VariablePulse +Xor +Sources +Validation diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/DewPoint_TDryBulPhi.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/DewPoint_TDryBulPhi.mo new file mode 100644 index 0000000000..10d553a6ab --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/DewPoint_TDryBulPhi.mo @@ -0,0 +1,155 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics; +block DewPoint_TDryBulPhi + "Block to compute the dew point temperature based on relative humidity" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TDryBul( + final quantity="ThermodynamicTemperature", + final unit="K", + final min=100) + "Dry bulb temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput phi( + final min=0, + final max=1, + unit="1") + "Relative air humidity" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput TDewPoi( + final quantity="ThermodynamicTemperature", + final unit="K", + final min=100) + "Dew point temperature" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Real p_w( + final quantity="Pressure", + final unit="Pa", + displayUnit="Pa") + "Water vapor pressure"; + constant Real C14=6.54 + "Constant used in the equation"; + constant Real C15=14.526 + "Constant used in the equation"; + constant Real C16=0.7389 + "Constant used in the equation"; + constant Real C17=0.09486 + "Constant used in the equation"; + constant Real C18=0.4569 + "Constant used in the equation"; + Real alpha + "Variable used in the equation"; + +equation + p_w=phi*IBPSA.Utilities.Psychrometrics.Functions.saturationPressure(TDryBul); + alpha=Modelica.Math.log( + p_w/1000.0); + TDewPoi=(C14+C15*alpha+C16*alpha^2+C17*alpha^3+C18*(p_w/1000.0)^0.1984)+273.15; + annotation ( + defaultComponentName="dewPoi", + Documentation( + info=" +

+Dew point temperature calculation for moist air above freezing temperature. +

+

+The correlation used in this model is valid for dew point temperatures between +0°C and 93°C. It is the correlation from 2009 +ASHRAE Handbook Fundamentals, p. 1.9, equation 39. +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +September 29, 2020, by Michael Wetter:
    +Removed unused input p and renamed block.
    +This is for +Buildings, issue 2139 +
  • +
  • +April 7, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-44,82},{-22,64}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="X"), + Polygon( + points={{-48,88},{-46,74},{-50,74},{-48,88}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{-90,-46},{-70,-72}}, + textColor={0,0,127}, + textString="phi"), + Text( + extent={{-92,82},{-62,38}}, + textColor={0,0,127}, + textString="TDryBul"), + Polygon( + points={{86,-74},{76,-72},{76,-76},{86,-74}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{76,-78},{86,-94}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="T"), + Line( + points={{-48,84},{-48,-74}}), + Text( + extent={{60,14},{98,-12}}, + textColor={0,0,127}, + textString="TDewPoi"), + Line( + points={{82,-72},{-66,-72}}), + Line( + points={{-48,-40},{-38,-36},{-24,-30},{8,-2},{20,22},{28,54},{32,74}}), + Line( + points={{68,-12},{-2,-12}}, + color={255,0,0}, + thickness=0.5), + Polygon( + points={{-2,-12},{12,-10},{12,-14},{-2,-12}}, + lineColor={255,0,0}, + fillColor={255,0,0}, + fillPattern=FillPattern.Solid), + Line( + points={{66,-44},{-48,-44}}, + color={175,175,175}), + Line( + points={{68,-18},{-10,-18}}, + color={175,175,175}), + Line( + points={{70,6},{12,6}}, + color={175,175,175}), + Line( + points={{68,32},{22,32}}, + color={175,175,175})})); +end DewPoint_TDryBulPhi; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/SpecificEnthalpy_TDryBulPhi.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/SpecificEnthalpy_TDryBulPhi.mo new file mode 100644 index 0000000000..4f30ad503a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/SpecificEnthalpy_TDryBulPhi.mo @@ -0,0 +1,139 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics; +block SpecificEnthalpy_TDryBulPhi + "Block to compute the specific enthalpy based on relative humidity" + parameter Real pAtm( + final quantity="Pressure", + final unit="Pa")=101325 + "Atmospheric pressure"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TDryBul( + final quantity="ThermodynamicTemperature", + final unit="K", + final min=100) + "Dry bulb temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}),iconTransformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput phi( + final min=0, + final max=1) + "Relative air humidity" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}),iconTransformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput h( + final quantity="SpecificEnergy", + final unit="J/kg") + "Specific enthalpy" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Real TDryBul_degC( + final unit="degC", + displayUnit="degC") + "Dry bulb temperature in degree Celsius"; + Real p_w( + final quantity="Pressure", + final unit="Pa", + displayUnit="Pa") + "Water vapor pressure"; + Real w( + final unit="1", + nominal=0.01) + "Water vapor mass fraction in kg per kg dry air"; + +equation + TDryBul_degC=TDryBul-273.15; + p_w=phi*IBPSA.Utilities.Psychrometrics.Functions.saturationPressure(TDryBul); + w=0.6219647130774989*p_w/(pAtm-p_w); + h=1006*TDryBul_degC+w*(2501014.5+1860*TDryBul_degC); + annotation ( + defaultComponentName="ent", + Documentation( + info=" +

+This block computes the specific enthalpy for a given dry bulb temperature, relative air humidity +and atmospheric pressure. +The specific enthalpy is zero if the temperature is 0°C and if there +is no moisture. +

+

+The correlation used in this model is from the 2009 ASHRAE Handbook Fundamentals, p. 1.9, equation 32. +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +September 29, 2020, by Michael Wetter:
    +Removed input p, used instead a parameter for the atmospheric pressure and renamed block.
    +This is for +Buildings, issue 2139 +
  • +
  • +April 7, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-44,-52},{-30,-48},{0,-36},{32,-8},{44,16},{52,48},{56,68}}, + color={215,215,215}, + smooth=Smooth.Bezier), + Line( + points={{66,-58},{10,-28}}, + color={255,0,0}, + thickness=0.5), + Text( + extent={{-44,82},{-22,64}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="X"), + Polygon( + points={{-48,88},{-46,74},{-50,74},{-48,88}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{-88,-44},{-68,-70}}, + textColor={0,0,127}, + textString="phi"), + Text( + extent={{-92,82},{-62,38}}, + textColor={0,0,127}, + textString="TDryBul"), + Line( + points={{78,-74},{-48,-74}}), + Polygon( + points={{86,-74},{76,-72},{76,-76},{86,-74}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{76,-78},{86,-94}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="T"), + Line( + points={{-48,84},{-48,-74}}), + Text( + extent={{74,14},{94,-12}}, + textColor={0,0,127}, + textString="h")})); +end SpecificEnthalpy_TDryBulPhi; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mo new file mode 100644 index 0000000000..fc0b79822e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mo @@ -0,0 +1,87 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics.Validation; +model DewPoint_TDryBulPhi + "Model to test the dew point temperature computation" + IBPSA.Controls.OBC.CDL.Psychrometrics.DewPoint_TDryBulPhi dewBulPhi + "Model for dew point temperature" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Psychrometrics.DewPoint_TDryBulPhi dewBulPhi1 + "Model for dew point temperature" + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp phi( + duration=1, + height=1, + offset=0.001) + "Relative humidity" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TDryBul( + k=273.15+29.4) + "Dry bulb temperature" + annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TDryBul2( + duration=1, + height=35, + offset=273.15+2.0) + "Dry bulb temperature" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant phi2( + k=0.4) + "Relative humidity" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + +equation + connect(TDryBul.y,dewBulPhi.TDryBul) + annotation (Line(points={{-38,70},{0,70},{0,46},{18,46}}, color={0,0,127})); + connect(phi.y,dewBulPhi.phi) + annotation (Line(points={{-38,20},{0,20},{0,34},{18,34}}, color={0,0,127})); + connect(TDryBul2.y,dewBulPhi1.TDryBul) + annotation (Line(points={{-38,-20},{0,-20},{0,-34},{18,-34}}, color={0,0,127})); + connect(phi2.y,dewBulPhi1.phi) + annotation (Line(points={{-38,-70},{0,-70},{0,-46},{18,-46}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/DewPoint_TDryBulPhi.mos" "Simulate and plot"), + Documentation( + info=" +

+This examples is a unit test for the dew point temperature computation +IBPSA.Controls.OBC.CDL.Psychrometrics.DewPoint_TDryBulPhi. +

+", + revisions=" +
    +
  • +March 17, 2023, by Jianjun Hu:
    +Removed instances that use blocks outside of +IBPSA.Controls.OBC.CDL package.
    +This is for +Buildings, issue 3302 +
  • +
  • +September 29, 2020, by Michael Wetter:
    +Renamed model and updated for new input of the psychrometric blocks.
    +This is for +Buildings, issue 2139 +
  • +
  • +April 7, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end DewPoint_TDryBulPhi; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mo new file mode 100644 index 0000000000..9d7a580289 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics.Validation; +model SpecificEnthalpy_TDryBulPhi + "Model to test the specific enthalpy computation" + IBPSA.Controls.OBC.CDL.Psychrometrics.SpecificEnthalpy_TDryBulPhi hBulPhi + "Model for specific enthalpy computation" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp phi( + duration=1, + height=1, + offset=0.001) + "Relative humidity" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TDryBul( + k=273.15+29.4) + "Dry bulb temperature" + annotation (Placement(transformation(extent={{-64,24},{-44,44}}))); + +equation + connect(TDryBul.y,hBulPhi.TDryBul) + annotation (Line(points={{-42,34},{-30,34},{-30,6},{-12,6}},color={0,0,127})); + connect(phi.y,hBulPhi.phi) + annotation (Line(points={{-38,-30},{-30,-30},{-30,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/SpecificEnthalpy_TDryBulPhi.mos" "Simulate and plot"), + Documentation( + info=" +

+This examples is a unit test for the specific enthalpy computation +IBPSA.Controls.OBC.CDL.Psychrometrics.SpecificEnthalpy_TDryBulPhi. +

+", + revisions=" +
    +
  • +September 29, 2020, by Michael Wetter:
    +Renamed model and updated for new input of the psychrometric blocks.
    +This is for +Buildings, issue 2139 +
  • +
  • +April 7, 2017 by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SpecificEnthalpy_TDryBulPhi; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mo new file mode 100644 index 0000000000..2248183fae --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mo @@ -0,0 +1,99 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics.Validation; +model WetBulb_TDryBulPhi + "Model to test the wet bulb temperature computation" + + IBPSA.Controls.OBC.CDL.Psychrometrics.WetBulb_TDryBulPhi wetBulPhi + "Model for wet bulb temperature" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Psychrometrics.WetBulb_TDryBulPhi wetBulPhi1 + "Model for wet bulb temperature" + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp phi( + duration=1, + height=0.95, + offset=0.05) "Relative humidity" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TDryBul( + k=273.15+29.4) "Dry bulb temperature" + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TDryBul1( + duration=1, + height=40, + offset=273.15) "Dry bulb temperature" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant phi2(k=0.6) + "Relative humidity" + annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); + +equation + connect(TDryBul.y,wetBulPhi.TDryBul) + annotation (Line(points={{-18,70},{0,70},{0,46},{18,46}}, color={0,0,127})); + connect(phi.y,wetBulPhi.phi) + annotation (Line(points={{-18,20},{0,20},{0,34},{18,34}}, color={0,0,127})); + connect(TDryBul1.y, wetBulPhi1.TDryBul) annotation (Line(points={{-18,-20},{0, + -20},{0,-34},{18,-34}}, color={0,0,127})); + connect(phi2.y, wetBulPhi1.phi) annotation (Line(points={{-18,-70},{0,-70},{0, + -46},{18,-46}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Psychrometrics/Validation/WetBulb_TDryBulPhi.mos" "Simulate and plot"), + Documentation( + info=" +

+This examples is a unit test for the dew point temperature computation + +IBPSA.Controls.OBC.CDL.Psychrometrics.WetBulb_TDryBulPhi. +

+", + revisions=" +
    +
  • +March 17, 2023, by Jianjun Hu:
    +Removed instances that use blocks outside of +IBPSA.Controls.OBC.CDL package.
    +This is for +Buildings, issue 3302 +
  • +
  • +September 29, 2020, by Michael Wetter:
    +Renamed model and updated for new input of the psychrometric blocks.
    +This is for +Buildings, issue 2139 +
  • +
  • +April 7, 2017, by Jianjun Hu:
    +First implementation in CDL package. +
  • +
  • +June 23, 2016, by Michael Wetter:
    +Changed graphical annotation. +
  • +
  • +May 24, 2016, by Filip Jorissen:
    +Updated example with validation data. +See Buildings, issue 474 +for a discussion. +
  • +
  • +October 1, 2012 by Michael Wetter:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end WetBulb_TDryBulPhi; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.mo new file mode 100644 index 0000000000..555f981b89 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics; +package Validation "Collection of models that validate the psychrometrics blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Psychrometrics. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.order b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.order new file mode 100644 index 0000000000..fc0e58cc8c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/Validation/package.order @@ -0,0 +1,3 @@ +DewPoint_TDryBulPhi +SpecificEnthalpy_TDryBulPhi +WetBulb_TDryBulPhi diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/WetBulb_TDryBulPhi.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/WetBulb_TDryBulPhi.mo new file mode 100644 index 0000000000..46b2abd21d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/WetBulb_TDryBulPhi.mo @@ -0,0 +1,194 @@ +within IBPSA.Controls.OBC.CDL.Psychrometrics; +block WetBulb_TDryBulPhi + "Block to compute the wet bulb temperature based on relative humidity" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TDryBul( + final quantity="ThermodynamicTemperature", + final unit="K", + final min=100) + "Dry bulb temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}),iconTransformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput phi( + final min=0, + final max=1) + "Relative air humidity" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}),iconTransformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput TWetBul( + final quantity="ThermodynamicTemperature", + final unit="K", + final min=100) + "Wet bulb temperature" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + constant Real uniCon(final unit="1/rad") = 1 + "Unit conversion to satisfy unit check"; + Real TDryBul_degC( + final unit="degC", + displayUnit="degC") + "Dry bulb temperature in degree Celsius"; + Real rh_per( + min=0) + "Relative humidity in percentage"; + +equation + TDryBul_degC=TDryBul-273.15; + rh_per=100*phi; + TWetBul=273.15 + + TDryBul_degC * uniCon * Modelica.Math.atan(0.151977*sqrt(rh_per+8.313659)) + + uniCon * ( + Modelica.Math.atan(TDryBul_degC+rh_per) + - Modelica.Math.atan(rh_per-1.676331) + + 0.00391838*rh_per^(1.5)*Modelica.Math.atan(0.023101*rh_per)) + -4.686035; + annotation ( + defaultComponentName="wetBul", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-92,82},{-62,38}}, + textColor={0,0,127}, + textString="TDryBul"), + Text( + extent={{-90,-44},{-70,-70}}, + textColor={0,0,127}, + textString="phi"), + Text( + extent={{62,22},{92,-22}}, + textColor={0,0,127}, + textString="TWetBul"), + Line( + points={{78,-74},{-48,-74}}), + Text( + extent={{76,-78},{86,-94}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="T"), + Line( + points={{76,-46},{26,-4}}, + color={255,0,0}, + thickness=0.5), + Line( + points={{-48,-48},{-2,-30},{28,-4},{48,32},{52,72}}, + color={0,0,0}, + smooth=Smooth.Bezier), + Line( + points={{-48,84},{-48,-74}}), + Text( + extent={{-44,82},{-22,64}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="X"), + Polygon( + points={{86,-74},{76,-72},{76,-76},{86,-74}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-48,88},{-46,74},{-50,74},{-48,88}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Polygon( + points={{26,-4},{36,-10},{34,-12},{26,-4}}, + lineColor={255,0,0}, + fillColor={255,0,0}, + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+This block computes the wet bulb temperature for a given dry bulb temperature, relative air humidity +and atmospheric pressure. +

+

+The block uses the approximation of Stull (2011) to compute +the wet bulb temperature without requiring a nonlinear equation. +The approximation by Stull is valid for a relative humidity of 5% to 99%, +a temperature range from -20°C to 50°C +and standard sea level pressure. +For this range of data, the approximation error is -1 Kelvin to +0.65 Kelvin, +with a mean error of less than 0.3 Kelvin. +

+

+The model is validated in + +IBPSA.Controls.OBC.CDL.Psychrometrics.Validation.WetBulb_TDryBulPhi. +

+

References

+

+Stull, Roland. + +Wet-Bulb Temperature from Relative Humidity and Air Temperature +Roland Stull. +Journal of Applied Meteorology and Climatology. +Volume 50, Issue 11, pp. 2267-2269. November 2011 +DOI: 10.1175/JAMC-D-11-0143.1 +

+", + revisions=" +
    +
  • +March 6, 2023, by Michael Wetter:
    +Added a constant in order for unit check to pass.
    +See Buildings, issue 1711 +for a discussion. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +September 29, 2020, by Michael Wetter:
    +Removed unused input p and renamed block.
    +This is for +Buildings, issue 2139 +
  • +
  • +April 11, 2017, by Jianjun Hu:
    +Changed the model to avoid using nonlinear equation. +
  • +
  • +November 3, 2016, by Michael Wetter:
    +Changed icon. +
  • +
  • +May 24, 2016, by Filip Jorissen:
    +Corrected exact implementation. +See Buildings, issue 474 +for a discussion. +
  • +
  • +October 3, 2014, by Michael Wetter:
    +Changed assignment of nominal value to avoid in OpenModelica the warning +alias set with different nominal values. +
  • +
  • +November 20, 2013 by Michael Wetter:
    +Updated model to use +IBPSA.Utilities.Psychrometrics.Functions.saturationPressure() +and +IBPSA.Utilities.Psychrometrics.Functions.saturationPressureLiquid() +as these functions have been moved from the medium to the psychrometrics package. +
  • +
  • +October 1, 2012 by Michael Wetter:
    +First implementation. +
  • +
+")); +end WetBulb_TDryBulPhi; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/package.mo b/IBPSA/Controls/OBC/CDL/Psychrometrics/package.mo new file mode 100644 index 0000000000..967a8a9e24 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/package.mo @@ -0,0 +1,60 @@ +within IBPSA.Controls.OBC.CDL; +package Psychrometrics "Package with psychrometric blocks" + annotation ( + Documentation( + info=" +

+This package contains blocks for psychrometric calculations. +

+", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Line( + points={{-78,86},{-78,-72}}), + Polygon( + points={{-78,88},{-76,74},{-80,74},{-78,88}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{-74,84},{-52,66}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="X"), + Line( + points={{-78,-46},{-64,-42},{-40,-32},{-16,-18},{10,6},{30,40},{38,72}}, + color={0,0,0}, + smooth=Smooth.Bezier), + Line( + points={{72,-72},{-76,-72}}), + Polygon( + points={{74,-72},{64,-70},{64,-74},{74,-72}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{72,-80},{82,-96}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="T")})); +end Psychrometrics; diff --git a/IBPSA/Controls/OBC/CDL/Psychrometrics/package.order b/IBPSA/Controls/OBC/CDL/Psychrometrics/package.order new file mode 100644 index 0000000000..b5717e1bfc --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Psychrometrics/package.order @@ -0,0 +1,4 @@ +DewPoint_TDryBulPhi +SpecificEnthalpy_TDryBulPhi +WetBulb_TDryBulPhi +Validation diff --git a/IBPSA/Controls/OBC/CDL/Reals/Abs.mo b/IBPSA/Controls/OBC/CDL/Reals/Abs.mo new file mode 100644 index 0000000000..2df97213e1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Abs.mo @@ -0,0 +1,78 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Abs + "Output the absolute value of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for absolute function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Absolute value of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=abs(u); + annotation ( + defaultComponentName="abs", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{92,0},{70,8},{70,-8},{92,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,80},{0,0},{80,80}}), + Line( + points={{0,-14},{0,68}}, + color={192,192,192}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-34,-28},{38,-76}}, + textColor={192,192,192}, + textString="abs"), + Line( + points={{-88,0},{76,0}}, + color={192,192,192}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = abs(u), +where +u is an input. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Abs; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Acos.mo b/IBPSA/Controls/OBC/CDL/Reals/Acos.mo new file mode 100644 index 0000000000..1bae7066fa --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Acos.mo @@ -0,0 +1,81 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Acos "Output the arc cosine of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for arc cosine function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y( + final unit="rad", + displayUnit="deg") + "Arc cosine of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +equation + y = Modelica.Math.acos(u); + +annotation (defaultComponentName="arcCos", + Icon(coordinateSystem(preserveAspectRatio=false), + graphics={Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,80},{-79.2,72.8},{-77.6,67.5},{-73.6,59.4},{-66.3,49.8},{ + -53.5,37.3},{-30.2,19.7},{37.4,-24.8},{57.5,-40.8},{68.7,-52.7},{75.2, + -62.2},{77.6,-67.5},{80,-80}}, + smooth=Smooth.Bezier), + Line(points={{0,-88},{0,68}}, color={192,192,192}), + Line(points={{-90,-80},{68,-80}}, color={192,192,192}), + Polygon( + points={{90,-80},{68,-72},{68,-88},{90,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-86,-14},{-14,-62}}, + textColor={192,192,192}, + textString="acos"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Diagram(coordinateSystem(preserveAspectRatio=false)), +Documentation(info=" +

+Block that outputs y = acos(u), where u is an input. +

+

+\"acos.png\" +

+", +revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the output.
    +This is for +Buildings, issue 3277. +
  • +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Acos; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Add.mo b/IBPSA/Controls/OBC/CDL/Reals/Add.mo new file mode 100644 index 0000000000..9028f670bc --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Add.mo @@ -0,0 +1,83 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Add + "Output the sum of the two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input to be added" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input to be added" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Sum of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1+u2; + annotation ( + defaultComponentName="add2", + Documentation( + info=" +

+Block that outputs y as the sum of the +two input signals u1 and u2, +

+
+    y = u1 + u2.
+
+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Removed gain factors.
    +This is for Buildings, issue 2865. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={0,0,127}, + extent={{-50,-50},{50,50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-100,60},{-74,24},{-44,24}}, + color={0,0,127}), + Line( + points={{-100,-60},{-74,-28},{-42,-28}}, + color={0,0,127}), + Line( + points={{50,0},{100,0}}, + color={0,0,127}), + Text( + extent={{-36,-26},{40,42}}, + textString="+"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Add; diff --git a/IBPSA/Controls/OBC/CDL/Reals/AddParameter.mo b/IBPSA/Controls/OBC/CDL/Reals/AddParameter.mo new file mode 100644 index 0000000000..bf9a1a7652 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/AddParameter.mo @@ -0,0 +1,79 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block AddParameter "Output the sum of an input plus a parameter" + parameter Real p + "Parameter to be added to the input"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be added to the parameter" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Sum of the parameter and the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u+p; + annotation ( + defaultComponentName="addPar", + Documentation( + info=" +

+Block that outputs y = u + p, +where p is parameter and u is an input. +

+", +revisions=" +
    +
  • +February 3, 2022, by Jianjun Hu:
    +Removed input gain factor.
    +This is for Buildings, issue 2876. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Line( + points={{-54,66},{-28,30},{2,30}}, + color={0,0,127}), + Line( + points={{-100,0},{100,0}}, + color={0,0,127}), + Text( + extent={{-122,58},{-17,98}}, + textString="%p", + textColor={0,0,0}), + Ellipse( + lineColor={0,0,127}, + extent={{-12,-52},{88,48}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{0,-26},{76,42}}, + textString="+"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end AddParameter; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Asin.mo b/IBPSA/Controls/OBC/CDL/Reals/Asin.mo new file mode 100644 index 0000000000..08d11987ff --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Asin.mo @@ -0,0 +1,81 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Asin "Output the arc sine of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for the arc sine function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y( + final unit="rad", + displayUnit="deg") + "Arc sin of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +equation + y = Modelica.Math.asin(u); + +annotation (defaultComponentName="arcSin", + Icon(coordinateSystem(preserveAspectRatio=false), + graphics={Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-100,140},{100,100}}, + textString="%name", + textColor={0,0,255}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{0,-80},{0,68}}, color={192,192,192}), + Line(points={{-80,-80},{-79.2,-72.8},{-77.6,-67.5},{-73.6,-59.4},{-66.3,-49.8}, + {-53.5,-37.3},{-30.2,-19.7},{37.4,24.8},{57.5,40.8},{68.7,52.7},{75.2, + 62.2},{77.6,67.5},{80,80}}, + smooth=Smooth.Bezier), + Line(points={{-90,0},{68,0}}, color={192,192,192}), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-88,78},{-16,30}}, + textColor={192,192,192}, + textString="asin"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Diagram(coordinateSystem(preserveAspectRatio=false)), +Documentation(info=" +

+Block that outputs y = asin(u), where u is an input. +

+

+\"asin.png\" +

+", +revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the output.
    +This is for +Buildings, issue 3277. +
  • +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Asin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Atan.mo b/IBPSA/Controls/OBC/CDL/Reals/Atan.mo new file mode 100644 index 0000000000..c8ba07d986 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Atan.mo @@ -0,0 +1,93 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Atan "Output the arc tangent of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for the arc tangent function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y( + final unit="rad", + displayUnit="deg") + "Arc tangent of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.atan(u); + annotation ( + defaultComponentName="atan", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-86,68},{-14,20}}, + textColor={192,192,192}, + textString="atan"), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{0,-80},{0,68}}, + color={192,192,192}), + Line( + points={{-80,-80},{-52.7,-75.2},{-37.4,-69.7},{-26.9,-63},{-19.7,-55.2},{-14.1,-45.8},{-10.1,-36.4},{-6.03,-23.9},{-1.21,-5.06},{5.23,21},{9.25,34.1},{13.3,44.2},{18.1,52.9},{24.5,60.8},{33.4,67.6},{47,73.6},{69.5,78.6},{80,80}}, + smooth=Smooth.Bezier), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = atan(u), where u is an input. +

+

+\"atan.png\" +

+", +revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the output.
    +This is for +Buildings, issue 3277. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Atan; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Atan2.mo b/IBPSA/Controls/OBC/CDL/Reals/Atan2.mo new file mode 100644 index 0000000000..cc4a4b0244 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Atan2.mo @@ -0,0 +1,117 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Atan2 + "Output atan(u1/u2) of the inputs u1 and u2" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input u1 for the atan2(u1/u2) function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input u2 for the atan2(u1/u2) function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y( + final unit="rad", + displayUnit="deg") + "Output with atan2(u1/u2)" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.atan2(u1, u2); + annotation ( + defaultComponentName="atan2", + Documentation( + info=" +

+Block that outputs the tangent-inverse y = atan2(u1, u2) +of the input u1 divided by the input u2. +

+

+u1 and u2 shall not be zero at the same time instant. +Atan2 uses the sign of u1 and u2 +in order to construct the solution in the range +-π ≤ y ≤ π, whereas + +IBPSA.Controls.OBC.CDL.Reals.Atan +gives a solution in the range +-π/2 ≤ y ≤ π/2. +

+ +

+\"atan2.png\" +

+ +", + revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the output.
    +This is for +Buildings, issue 3277. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{0,-80},{0,68}}, + color={192,192,192}), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-34.9},{-46.1,-31.4},{-29.4,-27.1},{-18.3,-21.5},{-10.3,-14.5},{-2.03,-3.17},{7.97,11.6},{15.5,19.4},{24.3,25},{39,30},{62.1,33.5},{80,34.9}}, + smooth=Smooth.Bezier), + Line( + points={{-80,45.1},{-45.9,48.7},{-29.1,52.9},{-18.1,58.6},{-10.2,65.8},{-1.82,77.2},{0,80}}, + smooth=Smooth.Bezier), + Line( + points={{0,-80},{8.93,-67.2},{17.1,-59.3},{27.3,-53.6},{42.1,-49.4},{69.9,-45.8},{80,-45.1}}, + smooth=Smooth.Bezier), + Text( + extent={{-90,-46},{-18,-94}}, + textColor={192,192,192}, + textString="atan2"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Atan2; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Average.mo b/IBPSA/Controls/OBC/CDL/Reals/Average.mo new file mode 100644 index 0000000000..b698bdf9f8 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Average.mo @@ -0,0 +1,69 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Average "Output the average of its two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input for average function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}),iconTransformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input for average function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}),iconTransformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with the average of the two inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=0.5*(u1+u2); + annotation ( + defaultComponentName="ave", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-50,34},{52,-26}}, + textColor={192,192,192}, + textString="avg()"), + Line( + points={{-8,16}}, + color={0,0,0}), + Line( + points={{-100,60}}, + color={0,0,0}, + thickness=1), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = (u1 + u2) / 2, +where +u1 and u2 are inputs. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 15, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Average; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Cos.mo b/IBPSA/Controls/OBC/CDL/Reals/Cos.mo new file mode 100644 index 0000000000..81431bc0c7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Cos.mo @@ -0,0 +1,97 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Cos "Output the cosine of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u( + final unit="rad", + displayUnit="deg") + "Input for the cosine function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Cosine of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.cos(u); + annotation ( + defaultComponentName="cos", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,80},{-74.4,78.1},{-68.7,72.3},{-63.1,63},{-56.7,48.7},{-48.6,26.6},{-29.3,-32.5},{-22.1,-51.7},{-15.7,-65.3},{-10.1,-73.8},{-4.42,-78.8},{1.21,-79.9},{6.83,-77.1},{12.5,-70.6},{18.1,-60.6},{24.5,-45.7},{32.6,-23},{50.3,31.3},{57.5,50.7},{63.9,64.6},{69.5,73.4},{75.2,78.6},{80,80}}, + smooth=Smooth.Bezier), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-80,68}}, + color={192,192,192}), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-36,80},{36,32}}, + textColor={192,192,192}, + textString="cos"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = cos(u), +where +u is an input. +

+ +

+\"cos.png\" +

+ +", + revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the input.
    +This is for +Buildings, issue 3277. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Cos; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Derivative.mo b/IBPSA/Controls/OBC/CDL/Reals/Derivative.mo new file mode 100644 index 0000000000..50794e3517 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Derivative.mo @@ -0,0 +1,121 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Derivative + "Block that approximates the derivative of the input" + parameter Real y_start=0 + "Initial value of output (= state)" + annotation (Dialog(group="Initialization")); + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput k + "Input for the gain" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*IBPSA.Controls.OBC.CDL.Constants.eps) + "Input for the time constant (T>0 required; T=0 is ideal derivative block)" + annotation (Placement(transformation(extent={{-140,20},{-100,60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be differentiated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Approximation of derivative du/dt" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +protected + Real T_nonZero(final unit="s") "Non-zero value for T"; + + output Real x + "State of block"; + +initial equation + x= if abs(k) < IBPSA.Controls.OBC.CDL.Constants.eps then u else u - T*y_start/k; + +equation + T_nonZero = max(T, 100*IBPSA.Controls.OBC.CDL.Constants.eps); + der(x) = (u-x)/T_nonZero; + y = (k/T_nonZero)*(u-x); + + annotation ( + defaultComponentName="der", + Documentation( + info=" +

+This blocks defines the transfer function between the +input u and the output y +as approximated derivative: +

+
+                s
+  y = k * ------------ * u
+            T * s + 1
+
+

+If k=0, the block reduces to y=0. +

+", + revisions=" + +"), + Icon( + coordinateSystem( + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-56,78},{-56,-90}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{-56,90},{-64,68},{-48,68},{-56,90}}), + Line( + points={{-64,-80},{82,-80}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{90.0,-80.0},{68.0,-72.0},{68.0,-88.0},{90.0,-80.0}}), + Line( + origin={-24.667,-27.333}, + points={{-31.333,89.333},{-19.333,-40.667},{86.667,-52.667}}, + color={0,0,127}, + smooth=Smooth.Bezier), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3))), + Text( + extent={{-106,14},{-62,-12}}, + textColor={0,0,0}, + textString="u"), + Text( + extent={{46,14},{90,-12}}, + textColor={0,0,0}, + textString="y=du/dt"), + Text( + extent={{-108,94},{-64,68}}, + textColor={0,0,0}, + textString="k"), + Text( + extent={{-108,54},{-64,28}}, + textColor={0,0,0}, + textString="T")})); +end Derivative; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Divide.mo b/IBPSA/Controls/OBC/CDL/Reals/Divide.mo new file mode 100644 index 0000000000..11ebd63d4e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Divide.mo @@ -0,0 +1,91 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Divide "Output first input divided by second input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input for dividend" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input for divisor" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with the quotient" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1/u2; + annotation ( + defaultComponentName="div", + Documentation( + info=" +

+Block that outputs y = u1 / u2, +where +u1 and u2 are inputs. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Division to Divide.
    +This is for Buildings, issue 2865. +
  • +
  • +March 9, 2020, by Michael Wetter:
    +Reformulated model to avoid stack overflow in OpenModelica.
    +This is for +Buildings, issue 1819. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={0,0,127}, + extent={{-50,-50},{50,50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{50,0},{100,0}}, + color={0,0,127}), + Line( + points={{-30,0},{30,0}}), + Ellipse( + fillPattern=FillPattern.Solid, + extent={{-5,20},{5,30}}), + Ellipse( + fillPattern=FillPattern.Solid, + extent={{-5,-30},{5,-20}}), + Line( + points={{-100,60},{-66,60},{-40,30}}, + color={0,0,127}), + Line( + points={{-100,-60},{0,-60},{0,-50}}, + color={0,0,127}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Divide; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Exp.mo b/IBPSA/Controls/OBC/CDL/Reals/Exp.mo new file mode 100644 index 0000000000..c2deedac3a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Exp.mo @@ -0,0 +1,74 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Exp "Output the exponential (base e) of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for the base e exponential function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Base e exponential value of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.exp(u); + annotation ( + defaultComponentName="exp", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Line( + points={{-90,-80.3976},{68,-80.3976}}, + color={192,192,192}), + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-31,-77.9},{-6.03,-74},{10.9,-68.4},{23.7,-61},{34.2,-51.6},{43,-40.3},{50.3,-27.8},{56.7,-13.5},{62.3,2.23},{67.1,18.6},{72,38.2},{76,57.6},{80,80}}), + Line( + points={{0,-80},{0,68}}, + color={192,192,192}), + Text( + extent={{-86,50},{-14,2}}, + textColor={192,192,192}, + textString="exp"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = exp(u), +where +u is an input and exp() is the +base-e exponential function. +

+ +

+\"exp.png\" +

+ +", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Exp; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Greater.mo b/IBPSA/Controls/OBC/CDL/Reals/Greater.mo new file mode 100644 index 0000000000..9ee1c2eae9 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Greater.mo @@ -0,0 +1,261 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Greater + "Output y is true, if input u1 is greater than input u2 with hysteresis" + parameter Real h( + final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "First input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Second input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output true if u1 is greater than u2 with hysteresis" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Boolean have_hysteresis=h >= 1E-10 + "True if the block has no hysteresis" + annotation (Evaluate=true); + GreaterWithHysteresis greHys( + final h=h, + final pre_y_start=pre_y_start) if have_hysteresis + "Block with hysteresis" + annotation (Placement(transformation(extent={{-10,20},{10,40}}))); + GreaterNoHysteresis greNoHys if not have_hysteresis + "Block without hysteresis" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + block GreaterNoHysteresis + "Greater block without hysteresis" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + equation + y=u1 > u2; + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})})); + end GreaterNoHysteresis; + + block GreaterWithHysteresis + "Greater block without hysteresis" + parameter Real h( + final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + initial equation + assert( + h >= 0, + "Hysteresis must not be negative"); + pre(y)=pre_y_start; + + equation + y=(not pre(y) and u1 > u2 or pre(y) and u1 > u2-h); + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h")})); + end GreaterWithHysteresis; + +equation + connect(u1,greHys.u1) + annotation (Line(points={{-120,0},{-66,0},{-66,30},{-12,30}},color={0,0,127})); + connect(u2,greHys.u2) + annotation (Line(points={{-120,-80},{-60,-80},{-60,22},{-12,22}},color={0,0,127})); + connect(greHys.y,y) + annotation (Line(points={{12,30},{60,30},{60,0},{120,0}},color={255,0,255})); + connect(u1,greNoHys.u1) + annotation (Line(points={{-120,0},{-66,0},{-66,-30},{-12,-30}},color={0,0,127})); + connect(u2,greNoHys.u2) + annotation (Line(points={{-120,-80},{-60,-80},{-60,-38},{-12,-38}},color={0,0,127})); + connect(greNoHys.y,y) + annotation (Line(points={{12,-30},{60,-30},{60,0},{120,0}},color={255,0,255})); + annotation ( + defaultComponentName="gre", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{-100,-80},{42,-80},{42,-62}}, + color={0,0,127}), + Line( + points={{-12,14},{18,2},{-12,-8}}, + thickness=0.5), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h"), + Text( + extent={{-88,-18},{-21,24}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u1, + leftJustified=false, + significantDigits=3))), + Text( + extent={{-86,-76},{-19,-34}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u2, + leftJustified=false, + significantDigits=3))), + Text( + extent={{22,20},{89,62}}, + textColor=DynamicSelect({235,235,235}, + if y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(u2, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10), + Text( + extent={{22,20},{89,62}}, + textColor=DynamicSelect({235,235,235}, + if y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(u2, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10), + Text( + extent={{20,-56},{87,-14}}, + textColor=DynamicSelect({235,235,235}, + if not y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(u2-h, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10)}), + Documentation( + info=" +

+Block that outputs true if the Real input u1 +is greater than the Real input u2, optionally within a hysteresis h. +

+

+The parameter h ≥ 0 is used to specify a hysteresis. +For any h ≥ 0, the output switches to true if u1 > u2, +and it switches to false if u1 ≤ u2 - h. +Note that in the special case of h = 0, this produces the output y=u1 > u2. +

+

+To disable hysteresis, set h=0. +

+

Usage

+

+Enabling hysteresis can avoid frequent switching.
+In simulation, adding hysteresis is recommended to guard against numerical noise. +Otherwise, numerical noise from a nonlinear solver or from an +implicit time integration algorithm may cause the simulation to stall. +Numerical noise can be present if an input depends +on a state variable or a quantity that requires an iterative solution, +such as a temperature or a mass flow rate of an HVAC system.
+In real controllers, adding hysteresis is recommended to guard against measurement noise. +Otherwise, measurement noise may cause the output to change frequently. +

+", +revisions=" +
    +
  • +April 29, 2022, by Jianjun Hu:
    +Corrected the condition of swiching true back to false.
    +This is for Buildings, issue 2981. +
  • +
  • +February 3, 2021, by Antoine Gautier:
    +Corrected documentation.
    +This is for Buildings, issue 2246. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Added hysteresis.
    +This is for Buildings, issue 2076. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Greater; diff --git a/IBPSA/Controls/OBC/CDL/Reals/GreaterThreshold.mo b/IBPSA/Controls/OBC/CDL/Reals/GreaterThreshold.mo new file mode 100644 index 0000000000..a5861c6e55 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/GreaterThreshold.mo @@ -0,0 +1,242 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block GreaterThreshold + "Output y is true, if input u is greater than threshold with hysteresis" + parameter Real t=0 + "Threshold for comparison"; + parameter Real h( + final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be compared against the threshold" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u is greater than the threshold with hysteresis" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Boolean have_hysteresis=h >= 1E-10 + "True if the block has no hysteresis" + annotation (Evaluate=true); + GreaterWithHysteresis greHys( + final h=h, + final t=t, + final pre_y_start=pre_y_start) if have_hysteresis + "Block with hysteresis" + annotation (Placement(transformation(extent={{-10,20},{10,40}}))); + GreaterNoHysteresis greNoHys( + final t=t) if not have_hysteresis + "Block without hysteresis" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + block GreaterNoHysteresis + "Greater block without hysteresis" + parameter Real t=0 + "Threshold for comparison"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input u" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + equation + y=u > t; + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})})); + end GreaterNoHysteresis; + + block GreaterWithHysteresis + "Greater block without hysteresis" + parameter Real t=0 + "Threshold for comparison"; + parameter Real h( + final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input u" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + initial equation + assert( + h >= 0, + "Hysteresis must not be negative"); + pre(y)=pre_y_start; + + equation + y=(not pre(y) and u > t or pre(y) and u > t-h); + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h")})); + end GreaterWithHysteresis; + +equation + connect(u,greHys.u) + annotation (Line(points={{-120,0},{-66,0},{-66,30},{-12,30}},color={0,0,127})); + connect(greHys.y,y) + annotation (Line(points={{12,30},{60,30},{60,0},{120,0}},color={255,0,255})); + connect(u,greNoHys.u) + annotation (Line(points={{-120,0},{-66,0},{-66,-30},{-12,-30}},color={0,0,127})); + connect(greNoHys.y,y) + annotation (Line(points={{12,-30},{60,-30},{60,0},{120,0}},color={255,0,255})); + annotation ( + defaultComponentName="greThr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{-16,10},{2,2},{-16,-8}}, + thickness=0.5), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h"), + Text( + extent={{-88,-18},{-21,24}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u, + leftJustified=false, + significantDigits=3))), + Text( + extent={{4,-18},{71,24}}, + textColor={0,0,0}, + textString="%t", + visible=h < 1E-10), + Text( + extent={{22,20},{89,62}}, + textColor=DynamicSelect({0,0,0}, + if y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(t, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10), + Text( + extent={{20,-56},{87,-14}}, + textColor=DynamicSelect({0,0,0}, + if not y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(t-h, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10)}), + Documentation( + info=" +

+Block that outputs true if the Real input u +is greater than a threshold t, optionally within a hysteresis h. +

+

+The parameter h ≥ 0 is used to specify a hysteresis. +For any h ≥ 0, the output switches to true if u > t, +where t is the threshold, +and it switches to false if u ≤ t - h. +Note that in the special case of h = 0, this produces the output y=u > t. +

+

+To disable hysteresis, set h=0. +

+

Usage

+

+Enabling hysteresis can avoid frequent switching.
+In simulation, adding hysteresis is recommended to guard against numerical noise. +Otherwise, numerical noise from a nonlinear solver or from an +implicit time integration algorithm may cause the simulation to stall. +Numerical noise can be present if an input depends +on a state variable or a quantity that requires an iterative solution, +such as a temperature or a mass flow rate of an HVAC system.
+In real controllers, adding hysteresis is recommended to guard against measurement noise. +Otherwise, measurement noise may cause the output to change frequently. +

+", +revisions=" +
    +
  • +April 29, 2022, by Jianjun Hu:
    +Corrected the condition of swiching true back to false.
    +This is for Buildings, issue 2981. +
  • +
  • +February 3, 2021, by Antoine Gautier:
    +Corrected documentation.
    +This is for Buildings, issue 2246. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Added hysteresis.
    +This is for Buildings, issue 2076. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end GreaterThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Hysteresis.mo b/IBPSA/Controls/OBC/CDL/Reals/Hysteresis.mo new file mode 100644 index 0000000000..0dc756bb12 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Hysteresis.mo @@ -0,0 +1,146 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Hysteresis + "Transform Real to Boolean signal with Hysteresis" + parameter Real uLow + "if y=true and uuHigh, switch to y=true"; + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be compared against hysteresis values" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output value of comparison" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + assert(uHigh > uLow, + "Hysteresis limits wrong. uHigh must be larger than uLow"); + pre(y)=pre_y_start; + +equation + y=not pre(y) and u > uHigh or pre(y) and u >= uLow; + annotation ( + defaultComponentName="hys", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{71,7},{85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-29}}, + color={192,192,192}), + Polygon( + points={{92,-29},{70,-21},{70,-37},{92,-29}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-79,-29},{84,-29}}, + color={192,192,192}), + Line( + points={{-79,-29},{41,-29}}), + Line( + points={{-15,-21},{1,-29},{-15,-36}}), + Line( + points={{41,51},{41,-29}}), + Line( + points={{33,3},{41,22},{50,3}}), + Line( + points={{-49,51},{81,51}}), + Line( + points={{-4,59},{-19,51},{-4,43}}), + Line( + points={{-59,29},{-49,11},{-39,29}}), + Line( + points={{-49,51},{-49,-29}}), + Text( + extent={{-92,-49},{-9,-92}}, + textColor={192,192,192}, + textString="%uLow"), + Text( + extent={{2,-49},{91,-92}}, + textColor={192,192,192}, + textString="%uHigh"), + Rectangle( + extent={{-91,-49},{-8,-92}}, + lineColor={192,192,192}), + Line( + points={{-49,-29},{-49,-49}}, + color={192,192,192}), + Rectangle( + extent={{2,-49},{91,-92}}, + lineColor={192,192,192}), + Line( + points={{41,-29},{41,-49}}, + color={192,192,192}), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")}), + Documentation( + info=" +

+Block that transforms a Real input signal into a Boolean +output signal: +

+
    +
  • When the output was false and the input becomes + greater than the parameter uHigh, the output + switches to true. +
  • +
  • When the output was true and the input becomes + less than the parameter uLow, the output + switches to false. +
  • +
+

+The start value of the output is defined via parameter +pre_y_start (= value of pre(y) at initial time). +The default value of this parameter is false. +

+

+\"Hysteresis.png\" +

+", + revisions=" +
    +
  • +October 3, 2017, by Michael Wetter:
    +Removed start value for parameters, and moved assertion to initial equation. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Hysteresis; diff --git a/IBPSA/Controls/OBC/CDL/Reals/IntegratorWithReset.mo b/IBPSA/Controls/OBC/CDL/Reals/IntegratorWithReset.mo new file mode 100644 index 0000000000..e2432a1282 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/IntegratorWithReset.mo @@ -0,0 +1,136 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block IntegratorWithReset + "Output the integral of the input signal" + parameter Real k=1 + "Integrator gain"; + parameter Real y_start=0 + "Initial or guess value of output (= state)" + annotation (Dialog(group="Initialization")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be integrated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput y_reset_in + "Input signal for state to which integrator is reset" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Input that resets the integrator output when it becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={0,-120}),iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Value of the integrator" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + y=y_start; + +equation + der(y)=k*u; + when trigger then + reinit(y, y_reset_in); + end when; + annotation ( + defaultComponentName="intWitRes", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-88,-94},{212,-54}}, + textColor={0,0,0}, + textString="y_reset_in", + horizontalAlignment=TextAlignment.Left), + Bitmap( + extent={{-54,-50},{60,50}}, + fileName="modelica://IBPSA/Resources/Images/Controls/OBC/CDL/Reals/int.png"), + Text( + extent={{-88,56},{206,92}}, + textColor={0,0,0}, + textString="k=%k", + horizontalAlignment=TextAlignment.Left), + Text( + extent={{-92,-12},{208,28}}, + textColor={0,0,0}, + horizontalAlignment=TextAlignment.Left, + textString="u"), + Text( + extent={{70,-14},{370,26}}, + textColor={0,0,0}, + horizontalAlignment=TextAlignment.Left, + textString="y"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs +

+

+y(t) = ystart + ∫t0t u(s) ds. +

+

+Whenever the input signal trigger changes from false +to true, +the integrator is reset by setting ystart +to the value of the input signal y_reset_in. +

+", + revisions=" +
    +
  • +June 8, 2023, by Michael Wetter:
    +Updated documentation. +
  • +
  • +February 2, 2022, by Michael Wetter:
    +Removed unit=\"1\" declaration for gain k. +This is to avoid the warning observed in +Buildings, issue 2872. +
  • +
  • +October 21, 2021, by Michael Wetter:
    +Removed errorneous visible attribute in icon. +
  • +
  • +August 3, 2020, by Jianjun:
    +Fixed the input y_reset_in. +
    +This is for +Buildings, issue 2056. +
  • +
  • +April 21, 2020, by Michael Wetter:
    +Removed parameter initType. +
    +This is for +Buildings, issue 1887. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +November 6, 2017, by Michael Wetter:
    +Explicitly declared types from CDL. +
  • +
  • +March 23, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of + +IBPSA.Utilities.Math.IntegratorWithReset. +
  • +
+")); +end IntegratorWithReset; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Less.mo b/IBPSA/Controls/OBC/CDL/Reals/Less.mo new file mode 100644 index 0000000000..eb1ec495e0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Less.mo @@ -0,0 +1,258 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Less + "Output y is true, if input u1 is less than input u2" + parameter Real h(final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "First input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Second input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u1 is less than u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Boolean have_hysteresis=h >= 1E-10 + "True if the block has no hysteresis" + annotation (Evaluate=true); + LessWithHysteresis lesHys( + final h=h, + final pre_y_start=pre_y_start) if have_hysteresis + "Block with hysteresis" + annotation (Placement(transformation(extent={{-10,20},{10,40}}))); + LessNoHysteresis lesNoHys if not have_hysteresis + "Block without hysteresis" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + block LessNoHysteresis + "Less block without hysteresis" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + equation + y=u1 < u2; + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})})); + end LessNoHysteresis; + + block LessWithHysteresis + "Less block without hysteresis" + parameter Real h(final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input u2" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + initial equation + assert(h >= 0, + "Hysteresis must not be negative"); + pre(y)=pre_y_start; + + equation + y=(not pre(y) and u1 < u2 or pre(y) and u1 < u2+h); + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h")})); + end LessWithHysteresis; + +equation + connect(u1,lesHys.u1) + annotation (Line(points={{-120,0},{-66,0},{-66,30},{-12,30}},color={0,0,127})); + connect(u2,lesHys.u2) + annotation (Line(points={{-120,-80},{-60,-80},{-60,22},{-12,22}},color={0,0,127})); + connect(lesHys.y,y) + annotation (Line(points={{12,30},{60,30},{60,0},{120,0}},color={255,0,255})); + connect(u1,lesNoHys.u1) + annotation (Line(points={{-120,0},{-66,0},{-66,-30},{-12,-30}},color={0,0,127})); + connect(u2,lesNoHys.u2) + annotation (Line(points={{-120,-80},{-60,-80},{-60,-38},{-12,-38}},color={0,0,127})); + connect(lesNoHys.y,y) + annotation (Line(points={{12,-30},{60,-30},{60,0},{120,0}},color={255,0,255})); + annotation ( + defaultComponentName="les", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{-100,-80},{42,-80},{42,-62}}, + color={0,0,127}), + Line( + points={{18,14},{-12,2},{18,-8}}, + thickness=0.5), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h"), + Text( + extent={{-88,-18},{-21,24}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u1, + leftJustified=false, + significantDigits=3))), + Text( + extent={{-86,-76},{-19,-34}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u2, + leftJustified=false, + significantDigits=3))), + Text( + extent={{22,20},{89,62}}, + textColor=DynamicSelect({235,235,235}, + if y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(u2, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10), + Text( + extent={{22,20},{89,62}}, + textColor=DynamicSelect({235,235,235}, + if y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(u2, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10), + Text( + extent={{20,-56},{87,-14}}, + textColor=DynamicSelect({235,235,235}, + if not y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(u2+h, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10)}), + Documentation( + info=" +

+Block that outputs true if the Real input u1 +is less than the Real input u2, optionally within a hysteresis h. +

+

+The parameter h ≥ 0 is used to specify a hysteresis. +For any h ≥ 0, the output switches to true if u1 < u2, +and it switches to false if u1 ≥ u2 + h. +Note that in the special case of h = 0, this produces the output y=u1 < u2. +

+

+To disable hysteresis, set h=0. +

+

Usage

+

+Enabling hysteresis can avoid frequent switching.
+In simulation, adding hysteresis is recommended to guard against numerical noise. +Otherwise, numerical noise from a nonlinear solver or from an +implicit time integration algorithm may cause the simulation to stall. +Numerical noise can be present if an input depends +on a state variable or a quantity that requires an iterative solution, +such as a temperature or a mass flow rate of an HVAC system.
+In real controllers, adding hysteresis is recommended to guard against measurement noise. +Otherwise, measurement noise may cause the output to change frequently. +

+", +revisions=" +
    +
  • +April 29, 2022, by Jianjun Hu:
    +Corrected the condition of swiching true back to false.
    +This is for Buildings, issue 2981. +
  • +
  • +February 3, 2021, by Antoine Gautier:
    +Corrected documentation.
    +This is for Buildings, issue 2246. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Added hysteresis.
    +This is for Buildings, issue 2076. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Less; diff --git a/IBPSA/Controls/OBC/CDL/Reals/LessThreshold.mo b/IBPSA/Controls/OBC/CDL/Reals/LessThreshold.mo new file mode 100644 index 0000000000..826d2301fd --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/LessThreshold.mo @@ -0,0 +1,234 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block LessThreshold + "Output y is true, if input u is less than threshold with hysteresis" + parameter Real t=0 + "Threshold for comparison"; + parameter Real h(final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be compared against the threshold" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Outputs true if u is less than the threshold with hysteresis" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Boolean have_hysteresis=h >= 1E-10 + "True if the block has no hysteresis" + annotation (Evaluate=true); + LessWithHysteresis lesHys( + final h=h, + final t=t, + final pre_y_start=pre_y_start) if have_hysteresis + "Block with hysteresis" + annotation (Placement(transformation(extent={{-10,20},{10,40}}))); + LessNoHysteresis lesNoHys( + final t=t) if not have_hysteresis + "Block without hysteresis" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + block LessNoHysteresis + "Less block without hysteresis" + parameter Real t=0 + "Threshold for comparison"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input u" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + equation + y=u < t; + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})})); + end LessNoHysteresis; + + block LessWithHysteresis + "Less block without hysteresis" + parameter Real t=0 + "Threshold for comparison"; + parameter Real h( + final min=0)=0 + "Hysteresis" + annotation (Evaluate=true); + parameter Boolean pre_y_start=false + "Value of pre(y) at initial time" + annotation (Dialog(tab="Advanced")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input u" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Output y" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + initial equation + assert(h >= 0, + "Hysteresis must not be negative"); + pre(y)=pre_y_start; + + equation + y=(not pre(y) and u < t or pre(y) and u < t+h); + annotation ( + Icon( + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h")})); + end LessWithHysteresis; + +equation + connect(u,lesHys.u) + annotation (Line(points={{-120,0},{-66,0},{-66,30},{-12,30}},color={0,0,127})); + connect(lesHys.y,y) + annotation (Line(points={{12,30},{60,30},{60,0},{120,0}},color={255,0,255})); + connect(u,lesNoHys.u) + annotation (Line(points={{-120,0},{-66,0},{-66,-30},{-12,-30}},color={0,0,127})); + connect(lesNoHys.y,y) + annotation (Line(points={{12,-30},{60,-30},{60,0},{120,0}},color={255,0,255})); + annotation ( + defaultComponentName="lesThr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + lineThickness=5.0, + fillColor={210,210,210}, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Ellipse( + extent={{73,7},{87,-7}}, + lineColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if y then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Line( + points={{2,10},{-16,2},{2,-8}}, + thickness=0.5), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-64,62},{62,92}}, + textColor={0,0,0}, + textString="h=%h"), + Text( + extent={{-88,-18},{-21,24}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(u, + leftJustified=false, + significantDigits=3))), + Text( + extent={{4,-18},{71,24}}, + textColor={0,0,0}, + textString="%t", + visible=h < 1E-10), + Text( + extent={{22,20},{89,62}}, + textColor=DynamicSelect({0,0,0}, + if y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(t, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10), + Text( + extent={{20,-56},{87,-14}}, + textColor=DynamicSelect({0,0,0}, + if not y then + {135,135,135} + else + {0,0,0}), + textString=DynamicSelect("",String(t+h, + leftJustified=false, + significantDigits=3)), + visible=h >= 1E-10)}), + Documentation( + info=" +

+Block that outputs true if the Real input u +is less than a threshold t, optionally within a hysteresis h. +

+

+The parameter h ≥ 0 is used to specify a hysteresis. +For any h ≥ 0, the output switches to true if u < t, +where t is the threshold, +and it switches to false if u ≥ t + h. +Note that in the special case of h = 0, this produces the output y=u < t. +

+

Usage

+

+Enabling hysteresis can avoid frequent switching. +Adding hysteresis is recommended in real controllers to guard against sensor noise, and +in simulation to guard against numerical noise. Numerical noise can be present if +an input depends on a state variable or a quantity that requires an iterative solution, such as +a temperature or a mass flow rate of an HVAC system. +To disable hysteresis, set h=0. +

+", +revisions=" +
    +
  • +April 29, 2022, by Jianjun Hu:
    +Corrected the condition of swiching true back to false.
    +This is for Buildings, issue 2981. +
  • +
  • +February 3, 2021, by Antoine Gautier:
    +Corrected documentation.
    +This is for Buildings, issue 2246. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Added hysteresis.
    +This is for Buildings, issue 2076. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end LessThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Reals/LimitSlewRate.mo b/IBPSA/Controls/OBC/CDL/Reals/LimitSlewRate.mo new file mode 100644 index 0000000000..1e845bea7e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/LimitSlewRate.mo @@ -0,0 +1,152 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block LimitSlewRate "Limit the increase or decrease rate of input" + parameter Real raisingSlewRate( + min=Constants.small, + unit="1/s") + "Speed with which to increase the output"; + parameter Real fallingSlewRate( + max=-Constants.small, + unit="1/s")=-raisingSlewRate + "Speed with which to decrease the output"; + parameter Real Td( + final quantity="Time", + final unit="s", + min=Constants.eps)=raisingSlewRate*10 + "Derivative time constant"; + parameter Boolean enable=true + "Set to false to disable rate limiter"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be rate of change limited" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Rate of change limited output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Real thr=(u-y)/Td + "Approximation to derivative between input and output"; + +initial equation + assert(raisingSlewRate > 0, + "raisingSlewRate must be larger than zero."); + assert(fallingSlewRate < 0, + "fallingSlewRate must be less than zero."); + + y=u; + +equation + if enable then + der(y)=smooth( + 1, + noEvent( + if thr < fallingSlewRate then + fallingSlewRate + else + if thr > raisingSlewRate then + raisingSlewRate + else + thr)); + else + y=u; + end if; + annotation ( + defaultComponentName="ramLim", + Documentation( + info=" +

+The block limits the rate of change of the input by a ramp. +

+

+This block computes a threshold for the rate of change of the output y as +thr = (u-y)/Td, where Td > 0 is parameter. +The output y is computed as follows: +

    +
  • +If thr < fallingSlewRate, then dy/dt = fallingSlewRate, +
  • +
  • +if thr > raisingSlewRate, then dy/dt = raisingSlewRate, +
  • +
  • +otherwise, dy/dt = thr. +
  • +
+

Implementation

+

+For the block to work with arbitrary inputs and in order to produce a differentiable output, +the input is numerically differentiated with derivative time constant Td. +Smaller time constant Td means nearer ideal derivative. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from SlewRateLimiter to LimitSlewRate.
    +This is for Buildings, issue 2865. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +April 21, 2020, by Michael Wetter:
    +Removed final attribute on unit because if the input quantity is power, +then the rate limit is units of power per units of time. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 29, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{0,-90},{0,68}}, + color={192,192,192}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Polygon( + points={{90,0},{68,-8},{68,8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-50,-70},{50,70}}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end LimitSlewRate; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Limiter.mo b/IBPSA/Controls/OBC/CDL/Reals/Limiter.mo new file mode 100644 index 0000000000..4cd82d1347 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Limiter.mo @@ -0,0 +1,117 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Limiter + "Limit the range of a signal" + parameter Real uMax + "Upper limit of input signal"; + parameter Real uMin + "Lower limit of input signal"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be limited" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Limited value of input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + assert(uMin < uMax, + "uMin must be smaller than uMax. Check parameters."); + +equation + y=homotopy( + actual=smooth(0,noEvent( + if u > uMax then + uMax + else + if u < uMin then + uMin + else + u)), + simplified=u); + annotation ( + defaultComponentName="lim", + Documentation( + info=" +

+Block that outputs y = min(uMax, max(uMin, u)), +where +u is an input +and +uMax and uMin are parameters. +

+

+If uMax < uMin, an error occurs. +

+", + revisions=" +
    +
  • +February 15, 2024, by Michael Wetter:
    +Updated documentation. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +July 17, 2017, by Michael Wetter:
    +Removed cyclical definition. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{0,-90},{0,68}}, + color={192,192,192}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Polygon( + points={{90,0},{68,-8},{68,8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-70},{-50,-70},{50,70},{80,70}}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{50,70},{80,70}}), + Line( + points={{-80,-70},{-50,-70}}), + Text( + extent={{12,72},{94,98}}, + textColor={0,0,0}, + textString="%uMax"), + Text( + extent={{-100,-98},{-18,-72}}, + textColor={0,0,0}, + textString="%uMin"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Limiter; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Line.mo b/IBPSA/Controls/OBC/CDL/Reals/Line.mo new file mode 100644 index 0000000000..c28c5543a8 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Line.mo @@ -0,0 +1,234 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Line + "Output the value of the input x along a line specified by two points" + parameter Boolean limitBelow=true + "If true, limit input u to be no smaller than x1" + annotation (Evaluate=true); + parameter Boolean limitAbove=true + "If true, limit input u to be no larger than x2" + annotation (Evaluate=true); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput x1 + "Input for support point x1, with x1 < x2" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput f1 + "Input for support point f(x1)" + annotation (Placement(transformation(extent={{-140,20},{-100,60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput x2 + "Input for support point x2, with x2 > x1" + annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput f2 + "Input for support point f(x2)" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for independent variable" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with f(x) along the line specified by (x1, f1) and (x2, f2)" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Real a "Intercept"; + Real b "Slope"; + Real xLim "Input value after applying the limits"; + +equation + if limitBelow or limitAbove then + assert(x2 > x1, + "x2 must be bigger than x1 in " + getInstanceName(), + AssertionLevel.warning); + end if; + + b=(f2-f1)/(x2-x1); + a=f2-b*x2; + + if limitBelow and limitAbove then + xLim=min(x2, max(x1, u)); + elseif limitBelow then + xLim=max(x1, u); + elseif limitAbove then + xLim=min(x2, u); + else + xLim=u; + end if; + + y = a + b * xLim; + + annotation ( + defaultComponentName="lin", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Polygon( + points={{92,-78},{70,-70},{70,-86},{92,-78}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-46,40},{50,-44}}, + color={0,0,0}, + thickness=0.5), + Line( + points={{-80,-80},{-80,72}}, + color={192,192,192}), + Polygon( + points={{-80,92},{-88,70},{-72,70},{-80,92}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-88,-78},{76,-78}}, + color={192,192,192}), + Line( + points={{-100,80},{-64,80}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-64,80},{-62,-78}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-100,40},{-88,40}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-88,40},{-48,40}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-100,-40},{48,-36}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{48,-36},{50,-78}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-100,-80},{-38,-56}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-38,-56},{48,-44}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-100,0},{-62,0}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{-62,0},{8,-8}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{10,-8},{52,-8}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Line( + points={{52,-8},{100,0}}, + color={28,108,200}, + smooth=Smooth.Bezier, + pattern=LinePattern.Dot), + Ellipse( + extent={{44,-38},{56,-50}}, + pattern=LinePattern.None, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{2,-2},{14,-14}}, + pattern=LinePattern.None, + lineColor={0,0,0}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Line( + points={{50,-44},{80,-70}}, + color={0,0,0}, + thickness=0.5, + visible=not limitAbove), + Line( + points={{52,-44},{86,-44}}, + color={238,46,47}, + thickness=0.5, + visible=limitAbove), + Line( + points={{-80,68},{-46,40}}, + color={0,0,0}, + thickness=0.5, + visible=not limitBelow), + Line( + points={{-80,40},{-46,40}}, + color={238,46,47}, + thickness=0.5, + visible=limitBelow), + Ellipse( + extent={{-52,46},{-40,34}}, + pattern=LinePattern.None, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = a + b u, +where +u is an input +and the coefficients a and b +are determined so that the line intercepts the two input points +specified by the two points x1 and f1, +and x2 and f2. +

+

+The parameters limitBelow and limitAbove +determine whether x1 and x2 are also used +to limit the input u. +

+

+If the limits are used, then this block requires x1 < x2. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 25, 2018, by Michael Wetter:
    +Improved documentation, icon and added warning if the limits are used and +x1 > x2.
    +This is for Buildings, issue 1155. +
  • +
  • +January 11, 2017, by Michael Wetter:
    +First implementation. +
  • +
+")); +end Line; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Log.mo b/IBPSA/Controls/OBC/CDL/Reals/Log.mo new file mode 100644 index 0000000000..44b5ca479a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Log.mo @@ -0,0 +1,85 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Log + "Output the natural (base e) logarithm of the input (input > 0 required)" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for base e logarithm" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Base e logarithm of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.log(u); + annotation ( + defaultComponentName="log", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-80,68}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Line( + points={{-80,-80},{-79.2,-50.6},{-78.4,-37},{-77.6,-28},{-76.8,-21.3},{-75.2,-11.4},{-72.8,-1.31},{-69.5,8.08},{-64.7,17.9},{-57.5,28},{-47,38.1},{-31.8,48.1},{-10.1,58},{22.1,68},{68.7,78.1},{80,80}}), + Text( + extent={{-6,-24},{66,-72}}, + textColor={192,192,192}, + textString="log"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = log(u), +where +u is an input and log() is the +natural logarithm (base-e) function. +

+ +

+An error occurs if the input u is +zero or negative. +

+ +

+\"log.png\" +

+ +", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Log; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Log10.mo b/IBPSA/Controls/OBC/CDL/Reals/Log10.mo new file mode 100644 index 0000000000..021676ee8c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Log10.mo @@ -0,0 +1,85 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Log10 + "Output the base 10 logarithm of the input (input > 0 required)" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input for base 10 logarithm" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Base 10 logarithm of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.log10(u); + annotation ( + defaultComponentName="log10", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-80,68}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Line( + points={{-80,-80},{-79.2,-50.6},{-78.4,-37},{-77.6,-28},{-76.8,-21.3},{-75.2,-11.4},{-72.8,-1.31},{-69.5,8.08},{-64.7,17.9},{-57.5,28},{-47,38.1},{-31.8,48.1},{-10.1,58},{22.1,68},{68.7,78.1},{80,80}}), + Text( + extent={{-6,-24},{66,-72}}, + textColor={192,192,192}, + textString="log10"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = log10(u), +where +u is an input and log10() is the +logarithm (base-10) function. +

+ +

+An error occurs if the input u is +zero or negative. +

+ +

+\"log10.png\" +

+ +", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Log10; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MatrixGain.mo b/IBPSA/Controls/OBC/CDL/Reals/MatrixGain.mo new file mode 100644 index 0000000000..c6dee033a3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MatrixGain.mo @@ -0,0 +1,97 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MatrixGain + "Output the product of a gain matrix with the input signal vector" + parameter Real K[:,:]=[1, 0; 0, 1] + "Gain matrix which is multiplied with the input"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input to be multiplied with the gain matrix" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nout] + "Product of gain matrix times the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Integer nin=size(K, 2) + "Number of inputs"; + parameter Integer nout=size(K, 1) + "Number of outputs"; + +equation + y=K*u; + annotation ( + defaultComponentName="matGai", + Documentation( + info=" +

+This blocks computes output vector y as the product of the +gain matrix K with the input signal vector u as +y = K u. +For example, +

+
+   parameter Real K[:,:] = [0.12, 2; 3, 1.5];
+
+

+results in +

+
+     | y[1] |     | 0.12,  2.00 |   | u[1] |
+     |      |  =  |            | * |      |
+     | y[2] |     | 3.00,  1.50 |   | u[2] |
+
+ +", + revisions=" +
    +
  • +February 15, 2024, by Michael Wetter:
    +Updated documentation to have valid syntax. +
  • +
  • +February 11, 2019, by Milica Grahovac:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-50,-30},{20,38}}, + textColor={0,0,0}, + textString="[ ]"), + Text( + extent={{8,-30},{80,10}}, + textColor={0,0,0}, + textString="*")}), + Diagram( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-50,-30},{20,38}}, + textColor={0,0,0}, + textString="[ ]"), + Text( + extent={{8,-30},{80,10}}, + textColor={0,0,0}, + textString="*")})); +end MatrixGain; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MatrixMax.mo b/IBPSA/Controls/OBC/CDL/Reals/MatrixMax.mo new file mode 100644 index 0000000000..973470016f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MatrixMax.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MatrixMax + "Output vector of row- or column-wise maximum of the input matrix" + parameter Boolean rowMax=true + "If true, outputs row-wise maximum, otherwise column-wise"; + parameter Integer nRow(final min=1) + "Number of rows in input matrix"; + parameter Integer nCol(final min=1) + "Number of columns in input matrix"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nRow, nCol] + "Input for the matrix max function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[ + if rowMax then size(u, 1) else size(u, 2)] + "Output with vector of row- or colum-wise maximum of the input matrix" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + if rowMax then + y={max(u[i,:]) for i in 1:size(u,1)}; + else + y={max(u[:,i]) for i in 1:size(u,2)}; + end if; + annotation ( + defaultComponentName="matMax", + Documentation( + info=" +

+If rowMax = true, this block outputs the row-wise maximum +of the input matrix u, +otherwise it outputs the column-wise maximum of the input matrix u. +

+", + revisions=" +
    +
  • +May 17, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-78,-62},{86,68}}, + textColor={0,0,0}, + textString="[ ] max()")}), + Diagram( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}))); +end MatrixMax; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MatrixMin.mo b/IBPSA/Controls/OBC/CDL/Reals/MatrixMin.mo new file mode 100644 index 0000000000..d7872ec15e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MatrixMin.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MatrixMin + "Output vector of row- or column-wise minimum values" + parameter Boolean rowMin=true + "If true, outputs row-wise minimum, otherwise column-wise"; + parameter Integer nRow(final min=1) + "Number of rows in input matrix"; + parameter Integer nCol(final min=1) + "Number of columns in input matrix"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nRow, nCol] + "Input for the matrix min function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[ + if rowMin then size(u, 1) else size(u, 2)] + "Output with vector of row- or colum-wise minimum of the input matrix" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + if rowMin then + y={min(u[i,:]) for i in 1:size(u,1)}; + else + y={min(u[:,i]) for i in 1:size(u,2)}; + end if; + annotation ( + defaultComponentName="matMin", + Documentation( + info=" +

+If rowMin = true, this block outputs the row-wise minimum +of the input matrix u, +otherwise it outputs the column-wise minimum of the input matrix u. +

+", + revisions=" +
    +
  • +May 17, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-78,-62},{86,68}}, + textColor={0,0,0}, + textString="[ ] min()")}), + Diagram( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}))); +end MatrixMin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Max.mo b/IBPSA/Controls/OBC/CDL/Reals/Max.mo new file mode 100644 index 0000000000..f44cdb5d2e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Max.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Max + "Pass through the largest signal" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input to the max function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input to the max function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Maximum of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=max(u1, u2); + annotation ( + defaultComponentName="max", + Documentation( + info=" +

+Block that outputs y = max(u1, u2), +where +u1 and u2 are inputs. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-90,36},{90,-36}}, + textColor={160,160,164}, + textString="max()"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Max; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Min.mo b/IBPSA/Controls/OBC/CDL/Reals/Min.mo new file mode 100644 index 0000000000..f31e9164d2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Min.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Min + "Pass through the smallest signal" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input to the min function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input to the min function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Minimum of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=min(u1, u2); + annotation ( + defaultComponentName="min", + Documentation( + info=" +

+Block that outputs y = min(u1, u2), +where +u1 and u2 are inputs. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-90,36},{90,-36}}, + textColor={160,160,164}, + textString="min()"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Min; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Modulo.mo b/IBPSA/Controls/OBC/CDL/Reals/Modulo.mo new file mode 100644 index 0000000000..b2d3e0a139 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Modulo.mo @@ -0,0 +1,92 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Modulo + "Output the remainder of first input divided by second input (~=0)" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Dividend of the modulus function" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Divisor of the modulus function" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Modulus u1 mod u2" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=mod(u1, u2); + annotation ( + defaultComponentName="mod", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={0,0,127}, + extent={{-50,-48},{50,52}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-32,-52},{40,-100}}, + textColor={192,192,192}, + textString="mod"), + Line( + points={{-8,16}}, + color={0,0,0}), + Line( + points={{-100,60}}, + color={0,0,0}, + thickness=1), + Line( + points={{-100,60},{-28,60},{-12,50}}, + color={0,0,127}), + Line( + points={{-100,-60},{-26,-60},{-2,-48}}, + color={0,0,127}), + Line( + points={{50,2},{102,2},{100,2}}, + color={0,0,127}), + Ellipse( + fillPattern=FillPattern.Solid, + extent={{11,-18},{21,-8}}), + Line( + points={{-24,-20},{26,24}}), + Ellipse( + fillPattern=FillPattern.Solid, + extent={{-21,12},{-11,22}}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = mod(u1/u2), +where +u1 and u2 are inputs. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 15, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Modulo; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MovingAverage.mo b/IBPSA/Controls/OBC/CDL/Reals/MovingAverage.mo new file mode 100644 index 0000000000..47662dc4e7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MovingAverage.mo @@ -0,0 +1,185 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MovingAverage "Block to output moving average" + parameter Real delta( + final quantity="Time", + final unit="s", + min=1E-5) + "Time horizon over which the input is averaged"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be averaged" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Moving average of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real tStart( + final quantity="Time", + final unit="s", + fixed=false) + "Start time"; + Real mu + "Internal integrator variable"; + Real muDel + "Internal integrator variable with delay"; + Boolean mode( + start=false, + fixed=true) + "Calculation mode"; + +initial equation + tStart=time; + mu=0; + +equation + u=der(mu); + muDel=delay(mu, delta); + // Compute the mode so that Dymola generates + // time and not state events as it would with + // an if-then construct + when time >= tStart+delta then + mode=true; + end when; + if mode then + y=(mu-muDel)/delta; + else + y=(mu-muDel)/(time-tStart+1E-3); + end if; + annotation ( + defaultComponentName="movAve", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-78,90},{-86,68},{-70,68},{-78,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-78,68},{-78,-80}}, + color={192,192,192}), + Line( + points={{-88,0},{70,0}}, + color={192,192,192}), + Polygon( + points={{92,0},{70,8},{70,-8},{92,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-78,-31},{-64,-31},{-64,-15},{-56,-15},{-56,-63},{-48,-63}, + {-48,-41},{-40,-41},{-40,43},{-32,43},{-32,11},{-32,11},{-32,-49}, + {-22,-49},{-22,-31},{-12,-31},{-12,-59},{-2,-59},{-2,23},{4,23}, + {4,37},{10,37},{10,-19},{20,-19},{20,-7},{26,-7},{26,-37}, + {36,-37},{36,35},{46,35},{46,1},{54,1},{54,-65},{64,-65}}, + color={215,215,215}), + Line( + points={{-78,-24},{68,-24}}), + Text( + extent={{-140,152},{160,112}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-42,-63},{41,-106}}, + textColor={192,192,192}, + textString="%delta s"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+This block outputs the mean value of its input signal as +

+
+      1  t
+y =   -  ∫   u(s) ds
+      δ  t-δ
+
+

+where δ is a parameter that determines the time window over +which the input is averaged. +For + t < δ seconds, it outputs +

+
+           1      t
+y =   --------    ∫   u(s) ds
+      t-t0+10-10   t0
+
+

+where t0 is the initial time. +

+

+This block can for example be used to output the moving +average of a noisy measurement signal. +

+

+See + +IBPSA.Controls.OBC.CDL.Reals.Validation.MovingAverage +and + +IBPSA.Controls.OBC.CDL.Reals.Validation.MovingAverage_nonZeroStart +for example. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from MovingMean to MovingAverage.
    +This is for Buildings, issue 2865. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +October 24, 2017, by Michael Wetter:
    +Set initial condition for mu. +
  • +
  • +October 17, 2017, by Michael Wetter:
    +Reformulated implementation to avoid direct feedthrough. +
  • +
  • +October 16, 2017, by Michael Wetter:
    +Reformulated implementation to handle division by zero as the previous +implementation caused division by zero in the VAV reheat model with the Radau solver. +
  • +
  • +September 27, 2017, by Thierry S. Nouidui:
    +Reformulated implementation to handle division by zero. +This is for +Buildings, issue 978. +
  • +
  • +September 15, 2017, by Thierry S. Nouidui:
    +Reformulated implementation to avoid state events. +
  • +
  • +July 5, 2017, by Michael Wetter:
    +Revised implementation to allow non-zero start time. +
  • +
  • +June 29, 2017, by Jianjun Hu:
    +First implementation. This is for +Buildings, issue 825. +
  • +
+")); +end MovingAverage; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MultiMax.mo b/IBPSA/Controls/OBC/CDL/Reals/MultiMax.mo new file mode 100644 index 0000000000..de4556fafe --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MultiMax.mo @@ -0,0 +1,61 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MultiMax + "Output the maximum element of the input vector" + parameter Integer nin(min=0)=0 + "Number of input signals" + annotation (Dialog(connectorSizing=true),HideResult=true); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input to max function" + annotation (Placement(transformation(extent={{-140,20},{-100,-20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Largest element of the input vector" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=max(u); + annotation ( + defaultComponentName="mulMax", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-90,36},{90,-36}}, + textColor={160,160,164}, + textString="max()"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Outputs the maximum element of the input vector. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end MultiMax; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MultiMin.mo b/IBPSA/Controls/OBC/CDL/Reals/MultiMin.mo new file mode 100644 index 0000000000..dbbdf5b1d6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MultiMin.mo @@ -0,0 +1,61 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MultiMin + "Output the minimum element of the input vector" + parameter Integer nin(min=0)=0 + "Number of input signals" + annotation (Dialog(connectorSizing=true),HideResult=true); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input to the min function" + annotation (Placement(transformation(extent={{-140,20},{-100,-20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Smallest element of the input vector" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=min(u); + annotation ( + defaultComponentName="mulMin", + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-90,36},{90,-36}}, + textColor={160,160,164}, + textString="min()"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Outputs the minimum element of the input vector. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end MultiMin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MultiSum.mo b/IBPSA/Controls/OBC/CDL/Reals/MultiSum.mo new file mode 100644 index 0000000000..2dc8e08807 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MultiSum.mo @@ -0,0 +1,94 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MultiSum + "Sum of Reals, y = k[1]*u[1] + k[2]*u[2] + ... + k[n]*u[n]" + parameter Integer nin(min=0)=0 + "Number of input signals" + annotation (Dialog(connectorSizing=true),HideResult=true); + parameter Real k[nin]=fill(1, nin) + "Input gains"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input to multiplied by gain and then added" + annotation (Placement(transformation(extent={{-140,20},{-100,-20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Sum of inputs times gains" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + if size(u, 1) > 0 then + y=k*u; + else + y=0; + end if; + annotation ( + defaultComponentName="mulSum", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-200,-110},{200,-140}}, + textColor={0,0,0}, + fillColor={255,213,170}, + fillPattern=FillPattern.Solid, + textString="%k"), + Text( + extent={{-82,90},{82,-46}}, + textColor={0,0,0}, + fillColor={255,213,170}, + fillPattern=FillPattern.Solid, + textString="+"), + Text( + extent={{-144,150},{156,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs +

+

+y = ∑i=1n ki   ui, +

+

+where k is a parameter with n elements and u is +an input of the same length. +The dimension of u can be enlarged by +drawing an additional connection line. The connection is automatically connected +to this new free index. +

+ +

+If no connection to the input connector u is present, +the output is y=0. +

+

+See + +IBPSA.Controls.OBC.CDL.Reals.Validation.MultiSum +for an example. +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +June 28, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the Modelica Standard +Library. This is for +Buildings, issue 825. +
  • +
+")); +end MultiSum; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Multiply.mo b/IBPSA/Controls/OBC/CDL/Reals/Multiply.mo new file mode 100644 index 0000000000..b7e5cfd13c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Multiply.mo @@ -0,0 +1,83 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Multiply "Output product of the two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input to be multiplied" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input to be multiplied" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Product of the inputs" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1*u2; + annotation ( + defaultComponentName="mul", + Documentation( + info=" +

+Block that outputs y = u1 * u2, +where +u1 and u2 are inputs. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Product to Multiply.
    +This is for Buildings, issue 2865. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={0,0,127}, + extent={{-50,-50},{50,50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,60},{-40,60},{-30,40}}, + color={0,0,127}), + Line( + points={{-100,-60},{-40,-60},{-30,-40}}, + color={0,0,127}), + Line( + points={{50,0},{100,0}}, + color={0,0,127}), + Line( + points={{-30,0},{30,0}}), + Line( + points={{-15,25.99},{15,-25.99}}), + Line( + points={{-15,-25.99},{15,25.99}}), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Multiply; diff --git a/IBPSA/Controls/OBC/CDL/Reals/MultiplyByParameter.mo b/IBPSA/Controls/OBC/CDL/Reals/MultiplyByParameter.mo new file mode 100644 index 0000000000..3fadfa265d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/MultiplyByParameter.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block MultiplyByParameter + "Output the product of a gain value with the input signal" + parameter Real k + "Factor to be multiplied with input signal"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be multiplied with gain" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Product of the parameter times the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=k*u; + annotation ( + defaultComponentName="gai", + Documentation( + info=" +

+Block that outputs y = k * u, +where +k is a parameter and +u is an input. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Gain to MultiplyByParameter.
    +This is for Buildings, issue 2865. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Polygon( + points={{-100,-100},{-100,100},{100,0},{-100,-100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,-140},{150,-100}}, + textColor={0,0,0}, + textString="k=%k"), + Text( + extent={{-150,144},{150,104}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end MultiplyByParameter; diff --git a/IBPSA/Controls/OBC/CDL/Reals/PID.mo b/IBPSA/Controls/OBC/CDL/Reals/PID.mo new file mode 100644 index 0000000000..b223a243f3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/PID.mo @@ -0,0 +1,604 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block PID + "P, PI, PD, and PID controller" + parameter IBPSA.Controls.OBC.CDL.Types.SimpleController controllerType = + IBPSA.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Real k( + min=100*Constants.eps)=1 + "Gain of controller" + annotation (Dialog(group="Control gains")); + parameter Real Ti( + final quantity="Time", + final unit="s", + min=100*Constants.eps)=0.5 + "Time constant of integrator block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Td( + final quantity="Time", + final unit="s", + min=100*Constants.eps)=0.1 + "Time constant of derivative block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real r( + min=100*Constants.eps)=1 + "Typical range of control error, used for scaling the control error"; + parameter Real yMax=1 + "Upper limit of output" + annotation (Dialog(group="Limits")); + parameter Real yMin=0 + "Lower limit of output" + annotation (Dialog(group="Limits")); + parameter Real Ni( + min=100*Constants.eps)=0.9 + "Ni*Ti is time constant of anti-windup compensation" + annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Nd( + min=100*Constants.eps)=10 + "The higher Nd, the more ideal the derivative block" + annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real xi_start=0 + "Initial value of integrator state" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yd_start=0 + "Initial value of derivative output" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u_s + "Setpoint input signal" + annotation (Placement(transformation(extent={{-260,-20},{-220,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u_m + "Measurement input signal" + annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Actuator output signal" + annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract controlError "Control error (set point - measurement)" + annotation (Placement(transformation(extent={{-200,-16},{-180,4}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter P(final k=k) + "Gain for proportional control action" + annotation (Placement(transformation(extent={{-50,130},{-30,150}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset I( + final k=k/Ti, + final y_start=xi_start) if with_I + "Integral term" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Derivative D( + final y_start=yd_start) if with_D + "Derivative term" + annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errP + "P error" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errD if with_D + "D error" + annotation (Placement(transformation(extent={{-140,60},{-120,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errI1 if with_I + "I error (before anti-windup compensation)" + annotation (Placement(transformation(extent={{-140,-4},{-120,16}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errI2 if with_I + "I error (after anti-windup compensation)" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Limiter lim( + final uMax=yMax, + final uMin=yMin) + "Limiter" + annotation (Placement(transformation(extent={{120,80},{140,100}}))); + +protected + final parameter Real revAct= if reverseActing then 1 else -1 + "Switch for sign for reverse or direct acting controller"; + final parameter Boolean with_I = + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PI or + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable integral action" + annotation (Evaluate=true,HideResult=true); + final parameter Boolean with_D = + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PD or + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable derivative action" + annotation (Evaluate=true,HideResult=true); + Sources.Constant kDer(k=k*Td) if with_D + "Gain for derivative block" + annotation (Placement(transformation(extent={{-100,110},{-80,130}}))); + Sources.Constant TDer(k=Td/Nd) if with_D + "Time constant for approximation in derivative block" + annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant Dzero(final k=0) + if not with_D + "Zero input signal" + annotation (Evaluate=true,HideResult=true,Placement(transformation(extent={{-50,90}, + {-30,110}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter uS_revAct( + final k=revAct/r) "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,30},{-180,50}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter uMea_revAct( + final k=revAct/r) "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,-50},{-180,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Add addPD + "Outputs P and D gains added" + annotation (Placement(transformation(extent={{20,124},{40,144}}))); + IBPSA.Controls.OBC.CDL.Reals.Add addPID + "Outputs P, I and D gains added" + annotation (Placement(transformation(extent={{80,80},{100,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract antWinErr if with_I + "Error for anti-windup compensation" + annotation (Placement(transformation(extent={{160,50},{180,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter antWinGai(k=1/(k*Ni)) + if with_I "Gain for anti-windup compensation" + annotation (Placement(transformation(extent={{180,-30},{160,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( + final k=yMin < yMax) + "Check for values of yMin and yMax" + annotation (Placement(transformation(extent={{120,-160},{140,-140}}))); + IBPSA.Controls.OBC.CDL.Utilities.Assert assMesYMinMax( + message="LimPID: Limits must be yMin < yMax") + "Assertion on yMin and yMax" + annotation (Placement(transformation(extent={{160,-160},{180,-140}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant Izero(final k=0) + if not with_I + "Zero input signal" + annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con(final k=0) + if with_I + "Constant zero" + annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con1(final k=false) + if with_I + "Constant false" + annotation (Placement(transformation(extent={{-100,-90},{-80,-70}}))); + +equation + connect(u_s,uS_revAct.u) + annotation (Line(points={{-240,0},{-210,0},{-210,40},{-202,40}},color={0,0,127})); + connect(u_m,uMea_revAct.u) + annotation (Line(points={{0,-220},{0,-160},{-210,-160},{-210,-40},{-202,-40}},color={0,0,127})); + connect(D.u,errD.y) + annotation (Line(points={{-52,70},{-118,70}}, + color={0,0,127})); + connect(errI1.u1,uS_revAct.y) + annotation (Line(points={{-142,12},{-170,12},{-170,40},{-178,40}}, + color={0,0,127})); + connect(addPID.u1,addPD.y) + annotation (Line(points={{78,96},{50,96},{50,134},{42,134}},color={0,0,127})); + connect(lim.y,y) + annotation (Line(points={{142,90},{200,90},{200,0},{240,0}},color={0,0,127})); + connect(antWinErr.y,antWinGai.u) + annotation (Line(points={{182,60},{190,60},{190,-20},{182,-20}},color={0,0,127})); + connect(addPD.u2,Dzero.y) + annotation (Line(points={{18,128},{-10,128},{-10,100},{-28,100}},color={0,0,127})); + connect(D.y,addPD.u2) + annotation (Line(points={{-28,70},{-10,70},{-10,128},{18,128}},color={0,0,127})); + connect(addPID.u2,I.y) + annotation (Line(points={{78,84},{60,84},{60,0},{-28,0}},color={0,0,127})); + connect(antWinErr.u2,lim.y) + annotation (Line(points={{158,54},{150,54},{150,90},{142,90}}, color={0,0,127})); + connect(I.u,errI2.y) + annotation (Line(points={{-52,0},{-78,0}},color={0,0,127})); + connect(errI1.y,errI2.u1) + annotation (Line(points={{-118,6},{-102,6}}, + color={0,0,127})); + connect(cheYMinMax.y,assMesYMinMax.u) + annotation (Line(points={{142,-150},{158,-150}},color={255,0,255})); + connect(Izero.y,addPID.u2) + annotation (Line(points={{-28,30},{60,30},{60,84},{78,84}}, + color={0,0,127})); + connect(con.y,I.y_reset_in) + annotation (Line(points={{-78,-40},{-60,-40},{-60,-8},{-52,-8}},color={0,0,127})); + connect(con1.y,I.trigger) + annotation (Line(points={{-78,-80},{-40,-80},{-40,-12}},color={255,0,255})); + connect(uS_revAct.y,errP.u1) + annotation (Line(points={{-178,40},{-170,40},{-170,146},{-142,146}},color={0,0,127})); + connect(errD.u1,uS_revAct.y) + annotation (Line(points={{-142,76},{-170,76},{-170,40},{-178,40}},color={0,0,127})); + connect(addPD.u1, P.y) + annotation (Line(points={{18,140},{-28,140}}, color={0,0,127})); + connect(P.u, errP.y) + annotation (Line(points={{-52,140},{-118,140}},color={0,0,127})); + connect(addPID.y, lim.u) + annotation (Line(points={{102,90},{118,90}},color={0,0,127})); + connect(addPID.y, antWinErr.u1) annotation (Line(points={{102,90},{114,90},{ + 114,66},{158,66}}, + color={0,0,127})); + connect(u_s, controlError.u1) annotation (Line(points={{-240,0},{-202,0}}, + color={0,0,127})); + connect(u_m, controlError.u2) annotation (Line(points={{0,-220},{0,-160},{ + -210,-160},{-210,-12},{-202,-12}}, + color={0,0,127})); + connect(uMea_revAct.y, errP.u2) annotation (Line(points={{-178,-40},{-150,-40}, + {-150,134},{-142,134}}, color={0,0,127})); + connect(uMea_revAct.y, errD.u2) annotation (Line(points={{-178,-40},{-150,-40}, + {-150,64},{-142,64}}, color={0,0,127})); + connect(uMea_revAct.y, errI1.u2) annotation (Line(points={{-178,-40},{-150, + -40},{-150,0},{-142,0}}, color={0,0,127})); + connect(antWinGai.y, errI2.u2) annotation (Line(points={{158,-20},{-110,-20}, + {-110,-6},{-102,-6}},color={0,0,127})); + connect(kDer.y, D.k) annotation (Line(points={{-78,120},{-58,120},{-58,78},{ + -52,78}}, color={0,0,127})); + connect(TDer.y, D.T) annotation (Line(points={{-78,90},{-60,90},{-60,74},{-52, + 74}}, color={0,0,127})); + annotation ( + defaultComponentName="conPID", + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-6,-20},{66,-66}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.P), + extent={{-32,-22},{68,-62}}, + textColor={0,0,0}, + textString="P", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-26,-22},{74,-62}}, + textColor={0,0,0}, + textString="PI", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PD), + extent={{-16,-22},{88,-62}}, + textColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="P D"), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID), + extent={{-14,-22},{86,-62}}, + textColor={0,0,0}, + textString="PID", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Polygon( + points={{-80,82},{-88,60},{-72,60},{-80,82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-100}}, + color={192,192,192}), + Line( + points={{-90,-80},{70,-80}}, + color={192,192,192}), + Polygon( + points={{74,-80},{52,-72},{52,-88},{74,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-80,-80},{-80,-22}}, + color={0,0,0}), + Line( + points={{-80,-22},{6,56}}, + color={0,0,0}), + Line( + points={{6,56},{68,56}}, + color={0,0,0}), + Rectangle( + extent=DynamicSelect({{100,-100},{84,-100}},{{100,-100},{84,-100+(y-yMin)/(yMax-yMin)*200}}), + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0})}), + Diagram( + coordinateSystem( + extent={{-220,-200},{220,200}}), graphics={Rectangle( + extent={{-56,180},{-24,-16}}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), Text( + extent={{-52,184},{-28,156}}, + pattern=LinePattern.None, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + textColor={0,0,0}, + textString="PID")}), + Documentation( + info=" +

+PID controller in the standard form +

+

+yu = k/r   (e(t) + 1 ⁄ Ti   ∫ e(τ) dτ + Td d⁄dt e(t)), +

+

+where +yu is the control signal before output limitation, +e(t) = us(t) - um(t) is the control error, +with us being the set point and um being +the measured quantity, +k is the gain, +Ti is the time constant of the integral term, +Td is the time constant of the derivative term, +and +r is a scaling factor, with default r=1. +The scaling factor should be set to the typical order of magnitude of the range of the error e. +For example, you may set r=100 to r=1000 +if the control input is a pressure of a heating water circulation pump in units of Pascal, or +leave r=1 if the control input is a room temperature. +

+

+Note that the units of k are the inverse of the units of the control error, +while the units of Ti and Td are seconds. +

+

+The actual control output is +

+

+y = min( ymax, max( ymin, y)), +

+

+where ymin and ymax are limits for the control signal. +

+

P, PI, PD, or PID action

+

+Through the parameter controllerType, the controller can be configured +as P, PI, PD or PID controller. The default configuration is PI. +

+

Reverse or direct action

+

+Through the parameter reverseActing, the controller can be configured to +be reverse or direct acting. +The above standard form is reverse acting, which is the default configuration. +For a reverse acting controller, for a constant set point, +an increase in measurement signal u_m decreases the control output signal y +(Montgomery and McDowall, 2008). +Thus, +

+
    +
  • + for a heating coil with a two-way valve, leave reverseActing = true, but +
  • +
  • + for a cooling coil with a two-way valve, set reverseActing = false. +
  • +
+

+If reverseAction=false, then the error e above is multiplied by -1. +

+

Anti-windup compensation

+

+The controller anti-windup compensation is as follows: +Instead of the above basic control law, the implementation is +

+

+yu = k   (e(t) ⁄ r + 1 ⁄ Ti   ∫ (-Δy + e(τ) ⁄ r) dτ + Td ⁄ r d⁄dt e(t)), +

+

+where the anti-windup compensation Δy is +

+

+Δy = (yu - y) ⁄ (k Ni), +

+

+where +Ni > 0 is the time constant for the anti-windup compensation. +To accelerate the anti-windup, decrease Ni. +

+

+Note that the anti-windup term (-Δy + e(τ) ⁄ r) shows that the range of +the typical control error r should be set to a reasonable value so that +

+

+e(τ) ⁄ r = (us(τ) - um(τ)) ⁄ r +

+

+has order of magnitude one, and hence the anti-windup compensation should work well. +

+

Reset of the controller output

+

+Note that this controller implements an integrator anti-windup. Therefore, +for most applications, the controller output does not need to be reset. +However, if the controller is used in conjuction with equipment that is being +switched on, better control performance may be achieved by resetting the controller +output when the equipment is switched on. This is in particular the case in situations +where the equipment control input should continuously increase as the equipment is +switched on, such as a light dimmer that may slowly increase the luminance, or +a variable speed drive of a motor that should continuously increase the speed. In +this case, the controller + +IBPSA.Controls.OBC.CDL.Reals.PIDWithReset +that can reset the output should be used. +

+

Approximation of the derivative term

+

+The derivative of the control error d ⁄ dt e(t) is approximated using +

+

+d⁄dt x(t) = (e(t)-x(t)) Nd ⁄ Td, +

+

+and +

+

+d⁄dt e(t) ≈ Nd (e(t)-x(t)), +

+

+where x(t) is an internal state. +

+

Guidance for tuning the control gains

+

+The parameters of the controller can be manually adjusted by performing +closed loop tests (= controller + plant connected +together) and using the following strategy: +

+
    +
  1. Set very large limits, e.g., set ymax = 1000. +
  2. +
  3. +Select a P-controller and manually enlarge the parameter k +(the total gain of the controller) until the closed-loop response +cannot be improved any more. +
  4. +
  5. +Select a PI-controller and manually adjust the parameters +k and Ti (the time constant of the integrator). +The first value of Ti can be selected such that it is in the +order of the time constant of the oscillations occurring with +the P-controller. If, e.g., oscillations in the order of 100 seconds +occur in the previous step, start with Ti=1/100 seconds. +
  6. +
  7. +If you want to make the reaction of the control loop faster +(but probably less robust against disturbances and measurement noise) +select a PID-controller and manually adjust parameters +k, Ti, Td (time constant of derivative block). +
  8. +
  9. +Set the limits yMax and yMin according to your specification. +
  10. +
  11. +Perform simulations such that the output of the PID controller +goes in its limits. Tune Ni (Ni Ti is the time constant of +the anti-windup compensation) such that the input to the limiter +block (= lim.u) goes quickly enough back to its limits. +If Ni is decreased, this happens faster. If Ni is very large, the +anti-windup compensation is not effective and the controller works bad. +
  12. +
+

References

+

+R. Montgomery and R. McDowall (2008). +\"Fundamentals of HVAC Control Systems.\" +American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA. +

+", + revisions=" +
    +
  • +May 20, 2022, by Michael Wetter:
    +Refactored implementation to use new derivative block from CDL package.
    +This is for +Buildings, issue 3022. +
  • +
  • +May 6, 2022, by Michael Wetter:
    +Corrected wrong documentation in how the derivative of the control error is approximated.
    +This is for +Buildings, issue 2994. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 15, 2020, by Michael Wetter:
    +Added scaling factor r, removed set point weights wp and wd. +Revised documentation.
    +This is for Buildings, issue 2182. +
  • +
  • +August 4, 2020, by Jianjun Hu:
    +Removed the conditional inputs trigger and y_rest_in. +Refactored to internally implement the derivative block.
    +This is for Buildings, issue 2056. +
  • +
  • +June 1, 2020, by Michael Wetter:
    +Corrected wrong convention of reverse and direct action.
    +This is for Buildings, issue 1365. +
  • +
  • +April 23, 2020, by Michael Wetter:
    +Changed default parameters for limits yMax from unspecified to 1 +and yMin from -yMax to 0.
    +This is for +Buildings, issue 1888. +
  • +
  • +April 7, 2020, by Michael Wetter:
    +Reimplemented block using only CDL constructs. +This refactoring removes the no longer use parameters xd_start that was +used to initialize the state of the derivative term. This state is now initialized +based on the requested initial output yd_start which is a new parameter +with a default of 0. +Also, removed the parameters y_start and initType because +the initial output of the controller can be set by using xi_start +and yd_start. +This is a non-backward compatible change, made to simplify the controller through +the removal of options that can be realized differently and are hardly ever used. +This refactoring also removes the parameter strict that +was used in the output limiter. The new implementation enforces a strict check by default.
    +This is for +Buildings, issue 1878. +
  • +
  • +March 9, 2020, by Michael Wetter:
    +Corrected unit declaration for gain k.
    +See Buildings, issue 1821. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +February 25, 2020, by Michael Wetter:
    +Changed icon to display the output value. +
  • +
  • +October 19, 2019, by Michael Wetter:
    +Disabled homotopy to ensure bounded outputs +by copying the implementation from MSL 3.2.3 and by +hardcoding the implementation for homotopyType=NoHomotopy.
    +See Buildings, issue 1221. +
  • +
  • +November 13, 2017, by Michael Wetter:
    +Changed default controller type from PID to PI. +
  • +
  • +November 6, 2017, by Michael Wetter:
    +Explicitly declared types and used integrator with reset from CDL. +
  • +
  • +October 22, 2017, by Michael Wetter:
    +Added to CDL to have a PI controller with integrator reset. +
  • +
  • +September 29, 2016, by Michael Wetter:
    +Refactored model. +
  • +
  • +August 25, 2016, by Michael Wetter:
    +Removed parameter limitsAtInit because it was only propagated to +the instance limiter, but this block no longer makes use of this parameter. +This is a non-backward compatible change.
    +Revised implemenentation, added comments, made some parameter in the instances final. +
  • +
  • July 18, 2016, by Philipp Mehrfeld:
    +Added integrator reset. +This is for Buildings, issue 494. +
  • +
  • +March 15, 2016, by Michael Wetter:
    +Changed the default value to strict=true in order to avoid events +when the controller saturates. +This is for Buildings, issue 433. +
  • +
  • +February 24, 2010, by Michael Wetter:
    +First implementation. +
  • +
+")); +end PID; diff --git a/IBPSA/Controls/OBC/CDL/Reals/PIDWithReset.mo b/IBPSA/Controls/OBC/CDL/Reals/PIDWithReset.mo new file mode 100644 index 0000000000..9c2f75b7c0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/PIDWithReset.mo @@ -0,0 +1,616 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block PIDWithReset + "P, PI, PD, and PID controller with output reset" + parameter IBPSA.Controls.OBC.CDL.Types.SimpleController controllerType = + IBPSA.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Real k(min=100*Constants.eps)=1 + "Gain of controller" + annotation (Dialog(group="Control gains")); + parameter Real Ti( + final quantity="Time", + final unit="s", + min=100*Constants.eps)=0.5 + "Time constant of integrator block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Td( + final quantity="Time", + final unit="s", + min=100*Constants.eps)=0.1 + "Time constant of derivative block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real r(min=100*Constants.eps)=1 + "Typical range of control error, used for scaling the control error"; + parameter Real yMax=1 + "Upper limit of output" + annotation (Dialog(group="Limits")); + parameter Real yMin=0 + "Lower limit of output" + annotation (Dialog(group="Limits")); + parameter Real Ni( + min=100*Constants.eps)=0.9 + "Ni*Ti is time constant of anti-windup compensation" + annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Nd( + min=100*Constants.eps)=10 + "The higher Nd, the more ideal the derivative block" + annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real xi_start=0 + "Initial value of integrator state" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yd_start=0 + "Initial value of derivative output" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; + parameter Real y_reset=xi_start + "Value to which the controller output is reset if the boolean trigger has a rising edge" + annotation (Dialog(enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID,group="Integrator reset")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector of setpoint input signal" + annotation (Placement(transformation(extent={{-260,-20},{-220,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector of measurement input signal" + annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Connector of actuator output signal" + annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-160,-220}),iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract controlError + "Control error (set point - measurement)" + annotation (Placement(transformation(extent={{-200,-16},{-180,4}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter P(final k=k) + "Proportional action" + annotation (Placement(transformation(extent={{-50,130},{-30,150}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset I( + final k=k/Ti, + final y_start=xi_start) if with_I + "Integral term" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Derivative D( + final y_start=yd_start) if with_D + "Derivative term" + annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errP + "P error" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errD if with_D + "D error" + annotation (Placement(transformation(extent={{-140,60},{-120,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errI1 if with_I + "I error (before anti-windup compensation)" + annotation (Placement(transformation(extent={{-140,-4},{-120,16}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errI2 if with_I + "I error (after anti-windup compensation)" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Limiter lim( + final uMax=yMax, + final uMin=yMin) + "Limiter" + annotation (Placement(transformation(extent={{120,80},{140,100}}))); +protected + final parameter Real revAct= if reverseActing then 1 else -1 + "Switch for sign for reverse or direct acting controller"; + final parameter Boolean with_I = + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PI or + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable integral action" + annotation (Evaluate=true,HideResult=true); + final parameter Boolean with_D = + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PD or + controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable derivative action" + annotation (Evaluate=true,HideResult=true); + Sources.Constant kDer(k=k*Td) if with_D + "Gain for derivative block" + annotation (Placement(transformation(extent={{-100,110},{-80,130}}))); + Sources.Constant TDer(k=Td/Nd) if with_D + "Time constant for approximation in derivative block" + annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant Dzero( + final k=0) if not with_D + "Zero input signal" + annotation (Evaluate=true,HideResult=true,Placement(transformation(extent={{-50,90}, + {-30,110}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant Izero( + final k=0) if not with_I + "Zero input signal" + annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter uS_revAct( + final k=revAct/r) + "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,30},{-180,50}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter uMea_revAct( + final k=revAct/r) + "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,-50},{-180,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Add addPD + "Outputs P and D gains added" + annotation (Placement(transformation(extent={{20,124},{40,144}}))); + IBPSA.Controls.OBC.CDL.Reals.Add addPID + "Outputs P, I and D gains added" + annotation (Placement(transformation(extent={{80,80},{100,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract antWinErr if with_I + "Error for anti-windup compensation" + annotation (Placement(transformation(extent={{160,50},{180,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter antWinGai( + k=1/(k*Ni)) if with_I + "Gain for anti-windup compensation" + annotation (Placement(transformation(extent={{180,-30},{160,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant yResSig( + final k=y_reset) if with_I + "Signal for y_reset" + annotation (Placement(transformation(extent={{-140,-84},{-120,-64}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract addRes if with_I + "Adder for integrator reset" + annotation (Placement(transformation(extent={{-100,-90},{-80,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( + final k=yMin < yMax) + "Check for values of yMin and yMax" + annotation (Placement(transformation(extent={{120,-160},{140,-140}}))); + IBPSA.Controls.OBC.CDL.Utilities.Assert assMesYMinMax( + message="LimPID: Limits must be yMin < yMax") + "Assertion on yMin and yMax" + annotation (Placement(transformation(extent={{160,-160},{180,-140}}))); + +equation + connect(trigger,I.trigger) + annotation (Line(points={{-160,-220},{-160,-140},{-40,-140},{-40,-12}},color={255,0,255})); + connect(u_s,uS_revAct.u) + annotation (Line(points={{-240,0},{-210,0},{-210,40},{-202,40}},color={0,0,127})); + connect(u_m,uMea_revAct.u) + annotation (Line(points={{0,-220},{0,-160},{-210,-160},{-210,-40},{-202,-40}},color={0,0,127})); + connect(errD.u2,uMea_revAct.y) + annotation (Line(points={{-142,64},{-150,64},{-150,-40},{-178,-40}}, color={0,0,127})); + connect(D.u,errD.y) + annotation (Line(points={{-52,70},{-118,70}}, color={0,0,127})); + connect(errI1.u1,uS_revAct.y) + annotation (Line(points={{-142,12},{-170,12},{-170,40},{-178,40}}, + color={0,0,127})); + connect(addPID.u1,addPD.y) + annotation (Line(points={{78,96},{50,96},{50,134},{42,134}},color={0,0,127})); + connect(lim.y,y) + annotation (Line(points={{142,90},{200,90},{200,0},{240,0}},color={0,0,127})); + connect(antWinErr.y,antWinGai.u) + annotation (Line(points={{182,60},{190,60},{190,-20},{182,-20}},color={0,0,127})); + connect(addPD.u2,Dzero.y) + annotation (Line(points={{18,128},{-10,128},{-10,100},{-28,100}}, + color={0,0,127})); + connect(D.y,addPD.u2) + annotation (Line(points={{-28,70},{-10,70},{-10,128},{18,128}},color={0,0,127})); + connect(addPID.u2,I.y) + annotation (Line(points={{78,84},{60,84},{60,0},{-28,0}},color={0,0,127})); + connect(addRes.y,I.y_reset_in) + annotation (Line(points={{-78,-80},{-60,-80},{-60,-8},{-52,-8}},color={0,0,127})); + connect(antWinErr.u2,lim.y) + annotation (Line(points={{158,54},{150,54},{150,90},{142,90}}, color={0,0,127})); + connect(I.u,errI2.y) + annotation (Line(points={{-52,0},{-78,0}},color={0,0,127})); + connect(errI1.y,errI2.u1) + annotation (Line(points={{-118,6},{-102,6}}, color={0,0,127})); + connect(controlError.u1,u_s) + annotation (Line(points={{-202,0},{-240,0}}, color={0,0,127})); + connect(cheYMinMax.y,assMesYMinMax.u) + annotation (Line(points={{142,-150},{158,-150}},color={255,0,255})); + connect(Izero.y,addPID.u2) + annotation (Line(points={{-28,30},{60,30},{60,84},{78,84}}, + color={0,0,127})); + connect(errP.u1,uS_revAct.y) + annotation (Line(points={{-142,146},{-170,146},{-170,40},{-178,40}},color={0,0,127})); + connect(errD.u1,uS_revAct.y) + annotation (Line(points={{-142,76},{-170,76},{-170,40},{-178,40}},color={0,0,127})); + connect(addPD.u1, P.y) + annotation (Line(points={{18,140},{-28,140}}, color={0,0,127})); + connect(P.u, errP.y) + annotation (Line(points={{-52,140},{-118,140}},color={0,0,127})); + connect(addPID.y, lim.u) + annotation (Line(points={{102,90},{118,90}},color={0,0,127})); + connect(addPID.y, antWinErr.u1) annotation (Line(points={{102,90},{114,90},{ + 114,66},{158,66}}, color={0,0,127})); + connect(addRes.u1, yResSig.y) + annotation (Line(points={{-102,-74},{-118,-74}}, color={0,0,127})); + connect(u_m, controlError.u2) annotation (Line(points={{0,-220},{0,-160},{ + -210,-160},{-210,-12},{-202,-12}}, + color={0,0,127})); + connect(uMea_revAct.y, errP.u2) annotation (Line(points={{-178,-40},{-150,-40}, + {-150,134},{-142,134}}, color={0,0,127})); + connect(uMea_revAct.y, errI1.u2) annotation (Line(points={{-178,-40},{-150, + -40},{-150,0},{-142,0}}, + color={0,0,127})); + connect(antWinGai.y, errI2.u2) annotation (Line(points={{158,-20},{-110,-20}, + {-110,-6},{-102,-6}}, + color={0,0,127})); + connect(addPD.y, addRes.u2) annotation (Line(points={{42,134},{50,134},{50, + -100},{-110,-100},{-110,-86},{-102,-86}}, + color={0,0,127})); + connect(kDer.y, D.k) annotation (Line(points={{-78,120},{-58,120},{-58,78},{ + -52,78}}, color={0,0,127})); + connect(TDer.y, D.T) annotation (Line(points={{-78,90},{-60,90},{-60,74},{-52, + 74}}, color={0,0,127})); + + annotation ( + defaultComponentName="conPID", + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-6,-20},{66,-66}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.P), + extent={{-32,-22},{68,-62}}, + textColor={0,0,0}, + textString="P", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-26,-22},{74,-62}}, + textColor={0,0,0}, + textString="PI", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PD), + extent={{-16,-22},{88,-62}}, + textColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="P D"), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID), + extent={{-14,-22},{86,-62}}, + textColor={0,0,0}, + textString="PID", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Polygon( + points={{-80,82},{-88,60},{-72,60},{-80,82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-100}}, + color={192,192,192}), + Line( + points={{-90,-80},{70,-80}}, + color={192,192,192}), + Polygon( + points={{74,-80},{52,-72},{52,-88},{74,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-80,-80},{-80,-22}}, + color={0,0,0}), + Line( + points={{-80,-22},{6,56}}, + color={0,0,0}), + Line( + points={{6,56},{68,56}}, + color={0,0,0}), + Rectangle( + extent=DynamicSelect({{100,-100},{84,-100}},{{100,-100},{84,-100+(y-yMin)/(yMax-yMin)*200}}), + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0})}), + Diagram( + coordinateSystem( + extent={{-220,-200},{220,200}}), graphics={Rectangle( + extent={{-56,180},{-24,-16}}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), Text( + extent={{-52,184},{-28,156}}, + pattern=LinePattern.None, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + textColor={0,0,0}, + textString="PID")}), + Documentation( + info=" +

+PID controller in the standard form +

+

+yu = k/r   (e(t) + 1 ⁄ Ti   ∫ e(τ) dτ + Td d⁄dt e(t)), +

+

+with output reset, +where +yu is the control signal before output limitation, +e(t) = us(t) - um(t) is the control error, +with us being the set point and um being +the measured quantity, +k is the gain, +Ti is the time constant of the integral term, +Td is the time constant of the derivative term, +and +r is a scaling factor, with default r=1. +The scaling factor should be set to the typical order of magnitude of the range of the error e. +For example, you may set r=100 to r=1000 +if the control input is a pressure of a heating water circulation pump in units of Pascal, or +leave r=1 if the control input is a room temperature. +

+

+Note that the units of k are the inverse of the units of the control error, +while the units of Ti and Td are seconds. +

+

+The actual control output is +

+

+y = min( ymax, max( ymin, y)), +

+

+where ymin and ymax are limits for the control signal. +

+

P, PI, PD, or PID action

+

+Through the parameter controllerType, the controller can be configured +as P, PI, PD or PID controller. The default configuration is PI. +

+

Reverse or direct action

+

+Through the parameter reverseActing, the controller can be configured to +be reverse or direct acting. +The above standard form is reverse acting, which is the default configuration. +For a reverse acting controller, for a constant set point, +an increase in measurement signal u_m decreases the control output signal y +(Montgomery and McDowall, 2008). +Thus, +

+
    +
  • + for a heating coil with a two-way valve, leave reverseActing = true, but +
  • +
  • + for a cooling coil with a two-way valve, set reverseActing = false. +
  • +
+

+If reverseAction=false, then the error e above is multiplied by -1. +

+

Anti-windup compensation

+

+The controller anti-windup compensation is as follows: +Instead of the above basic control law, the implementation is +

+

+yu = k   (e(t) ⁄ r + 1 ⁄ Ti   ∫ (-Δy + e(τ) ⁄ r) dτ + Td ⁄ r d⁄dt e(t)), +

+

+where the anti-windup compensation Δy is +

+

+Δy = (yu - y) ⁄ (k Ni), +

+

+where +Ni > 0 is the time constant for the anti-windup compensation. +To accelerate the anti-windup, decrease Ni. +

+

+Note that the anti-windup term (-Δy + e(τ) ⁄ r) shows that the range of +the typical control error r should be set to a reasonable value so that +

+

+e(τ) ⁄ r = (us(τ) - um(τ)) ⁄ r +

+

+has order of magnitude one, and hence the anti-windup compensation should work well. +

+

Reset of the controller output

+

+Whenever the value of boolean input signal trigger changes from +false to true, the controller output is reset by setting +y to the value of the parameter y_reset. +

+

Approximation of the derivative term

+

+The derivative of the control error d ⁄ dt e(t) is approximated using +

+

+d⁄dt x(t) = (e(t)-x(t)) Nd ⁄ Td, +

+

+and +

+

+d⁄dt e(t) ≈ Nd (e(t)-x(t)), +

+

+where x(t) is an internal state. +

+

Guidance for tuning the control gains

+

+The parameters of the controller can be manually adjusted by performing +closed loop tests (= controller + plant connected +together) and using the following strategy: +

+
    +
  1. Set very large limits, e.g., set ymax = 1000. +
  2. +
  3. +Select a P-controller and manually enlarge the parameter k +(the total gain of the controller) until the closed-loop response +cannot be improved any more. +
  4. +
  5. +Select a PI-controller and manually adjust the parameters +k and Ti (the time constant of the integrator). +The first value of Ti can be selected such that it is in the +order of the time constant of the oscillations occurring with +the P-controller. If, e.g., oscillations in the order of 100 seconds +occur in the previous step, start with Ti=1/100 seconds. +
  6. +
  7. +If you want to make the reaction of the control loop faster +(but probably less robust against disturbances and measurement noise) +select a PID-controller and manually adjust parameters +k, Ti, Td (time constant of derivative block). +
  8. +
  9. +Set the limits yMax and yMin according to your specification. +
  10. +
  11. +Perform simulations such that the output of the PID controller +goes in its limits. Tune Ni (Ni Ti is the time constant of +the anti-windup compensation) such that the input to the limiter +block (= lim.u) goes quickly enough back to its limits. +If Ni is decreased, this happens faster. If Ni is very large, the +anti-windup compensation is not effective and the controller works bad. +
  12. +
+

References

+

+R. Montgomery and R. McDowall (2008). +\"Fundamentals of HVAC Control Systems.\" +American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA. +

+", + revisions=" +
    +
  • +May 20, 2022, by Michael Wetter:
    +Refactored implementation to use new derivative block from CDL package.
    +This is for +Buildings, issue 3022. +
  • +
  • +May 6, 2022, by Michael Wetter:
    +Corrected wrong documentation in how the derivative of the control error is approximated.
    +This is for +Buildings, issue 2994. +
  • +
  • +April 30, 2021, by Michael Wetter:
    +Corrected error in non-released development version +when reset trigger is true.
    +Refactored implementation to have separate blocks that show the P, I and D contribution, +each with the control gain applied.
    +This is for +Buildings, issue 2475. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 15, 2020, by Michael Wetter:
    +Added scaling factor r, removed set point weights wp and wd. +Revised documentation.
    +This is for Buildings, issue 2182. +
  • +
  • +August 4, 2020, by Jianjun Hu:
    +Removed the input y_reset_in. +Refactored to internally implement the derivative block.
    +This is for Buildings, issue 2056. +
  • +
  • +June 1, 2020, by Michael Wetter:
    +Corrected wrong convention of reverse and direct action.
    +This is for Buildings, issue 1365. +
  • +
  • +April 23, 2020, by Michael Wetter:
    +Changed default parameters for limits yMax from unspecified to 1 +and yMin from -yMax to 0.
    +This is for +Buildings, issue 1888. +
  • +
  • +April 7, 2020, by Michael Wetter:
    +Reimplemented block using only CDL constructs. +This refactoring removes the no longer use parameters xd_start that was +used to initialize the state of the derivative term. This state is now initialized +based on the requested initial output yd_start which is a new parameter +with a default of 0. +Also, removed the parameters y_start and initType because +the initial output of the controller can be set by using xi_start +and yd_start. +This is a non-backward compatible change, made to simplify the controller through +the removal of options that can be realized differently and are hardly ever used. +This refactoring also removes the parameter strict that +was used in the output limiter. The new implementation enforces a strict check by default.
    +This is for +Buildings, issue 1878. +
  • +
  • +March 9, 2020, by Michael Wetter:
    +Corrected unit declaration for gain k.
    +See Buildings, issue 1821. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +February 25, 2020, by Michael Wetter:
    +Changed icon to display the output value. +
  • +
  • +October 19, 2019, by Michael Wetter:
    +Disabled homotopy to ensure bounded outputs +by copying the implementation from MSL 3.2.3 and by +hardcoding the implementation for homotopyType=NoHomotopy.
    +See Buildings, issue 1221. +
  • +
  • +November 13, 2017, by Michael Wetter:
    +Changed default controller type from PID to PI. +
  • +
  • +November 6, 2017, by Michael Wetter:
    +Explicitly declared types and used integrator with reset from CDL. +
  • +
  • +October 22, 2017, by Michael Wetter:
    +Added to CDL to have a PI controller with integrator reset. +
  • +
  • +September 29, 2016, by Michael Wetter:
    +Refactored model. +
  • +
  • +August 25, 2016, by Michael Wetter:
    +Removed parameter limitsAtInit because it was only propagated to +the instance limiter, but this block no longer makes use of this parameter. +This is a non-backward compatible change.
    +Revised implemenentation, added comments, made some parameter in the instances final. +
  • +
  • July 18, 2016, by Philipp Mehrfeld:
    +Added integrator reset. +This is for Buildings, issue 494. +
  • +
  • +March 15, 2016, by Michael Wetter:
    +Changed the default value to strict=true in order to avoid events +when the controller saturates. +This is for Buildings, issue 433. +
  • +
  • +February 24, 2010, by Michael Wetter:
    +First implementation. +
  • +
+")); +end PIDWithReset; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo b/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo new file mode 100644 index 0000000000..4a4b072e84 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo @@ -0,0 +1,144 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Ramp "Limit the changing rate of the input" + + parameter Real raisingSlewRate( + min=Constants.small, + unit="1/s") + "Maximum speed with which to increase the output"; + parameter Real fallingSlewRate( + max=-Constants.small, + unit="1/s")=-raisingSlewRate + "Maximum speed with which to decrease the output"; + parameter Real Td( + final quantity="Time", + final unit="s", + min=Constants.eps)=raisingSlewRate*0.001 + "Derivative time constant"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input that is being rate limited" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput active + "Set to true to enable rate limiter" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Rate limited output if active is true, else output is equal to input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Real thr=(u-y)/Td + "Approximation to derivative between input and output"; + Real y_internal + "Internal variable to track the slew limited value"; + +initial equation + assert(raisingSlewRate > 0, + "raisingSlewRate must be larger than zero."); + assert(fallingSlewRate < 0, + "fallingSlewRate must be less than zero."); + y_internal = u; + +equation + when active then + reinit(y_internal, u); + end when; + der(y_internal)=smooth(1, + noEvent( + if thr < fallingSlewRate then + fallingSlewRate + else + if thr > raisingSlewRate then raisingSlewRate else thr + ) + ); + y = if active then y_internal else u; + +annotation (defaultComponentName="ram", + Icon(coordinateSystem(preserveAspectRatio=false), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name"), + Line( + points={{-90,-80},{82,-80}}, + color={192,192,192}), + Polygon( + points={{90,-80},{68,-72},{68,-88},{90,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,58},{-80,-90}}, + color={192,192,192}), + Polygon( + points={{-80,80},{-88,58},{-72,58},{-80,80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{-80,-44},{-60,20},{-44,26},{40,8},{40,-4}}, + color={0,0,127}), + Line(points={{-80,-80},{-60,-80},{-60,-50},{40,-50},{40,-80},{58,-80}}, + color={254,0,254}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3))), + Line(points={{40,-4},{58,-28},{76,28}}, + color={0,0,127})}), + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Block that limits the rate of change of the input u by a ramp +if the boolean input active is true, +otherwise the block outputs y = u. +

+

+This block computes a threshold for the rate of change between +input u and output y as +thr = (u-y)/Td, where Td > 0 is a parameter. +The output y is computed as follows: +

    +
  • +If thr < fallingSlewRate, then dy/dt = fallingSlewRate, +
  • +
  • +if thr > raisingSlewRate, then dy/dt = raisingSlewRate, +
  • +
  • +otherwise, dy/dt = thr. +
  • +
+

+A smaller time constant Td > 0 means a higher accuracy for the derivative approximation. +

+

+Note that when the input activate switches to false, +the output y can have a discontinuity. +

+

Implementation

+

+For the block to work with arbitrary inputs and in order to produce a differentiable output, +the input is numerically differentiated with derivative time constant Td. +

+", +revisions=" +
    +
  • +February 15, 2024, by Michael Wetter:
    +Updated documentation. +
  • +
  • +November 16, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end Ramp; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Round.mo b/IBPSA/Controls/OBC/CDL/Reals/Round.mo new file mode 100644 index 0000000000..740af8d4b8 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Round.mo @@ -0,0 +1,92 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Round + "Round real number to given digits" + parameter Integer n + "Number of digits to be round to"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to be rounded" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with rounded input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Real fac=10^n + "Factor used for rounding"; + +equation + y=if (u > 0) then + floor( u*fac+0.5)/fac + else + ceil(u*fac-0.5)/fac; + annotation ( + defaultComponentName="rou", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,127}, + extent={{-56,4},{72,106}}, + textString="round( )"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + textColor={0,0,127}, + extent={{-60,-88},{54,-34}}, + textString="%n"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs the input after rounding it to n digits. +

+

+For example, +

+
    +
  • +set n = 0 to round to the nearest integer, +
  • +
  • +set n = 1 to round to the next decimal point, and +
  • +
  • +set n = -1 to round to the next multiple of ten. +
  • +
+

+Hence, the block outputs +

+
+    y = floor(u*(10^n) + 0.5)/(10^n)  for  u > 0,
+    y = ceil(u*(10^n) - 0.5)/(10^n)   for  u < 0.
+
+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Round; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sin.mo b/IBPSA/Controls/OBC/CDL/Reals/Sin.mo new file mode 100644 index 0000000000..0433e205be --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sin.mo @@ -0,0 +1,97 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Sin "Output the sine of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u( + final unit="rad", + displayUnit="deg") + "Input for the sine function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Sine of input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.sin(u); + annotation ( + defaultComponentName="sin", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-80,68}}, + color={192,192,192}), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Line( + points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, + smooth=Smooth.Bezier), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{12,84},{84,36}}, + textColor={192,192,192}, + textString="sin"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = sin(u), +where +u is an input. +

+ +

+\"sin.png\" +

+ +", + revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the input.
    +This is for +Buildings, issue 3277. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Sin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sort.mo b/IBPSA/Controls/OBC/CDL/Reals/Sort.mo new file mode 100644 index 0000000000..2eb5357cb2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sort.mo @@ -0,0 +1,102 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Sort + "Sort elements of input vector in ascending or descending order" + parameter Integer nin( + final min=0)=0 + "Number of input signals" + annotation (Dialog(connectorSizing=true),HideResult=true); + parameter Boolean ascending=true + "Set to true if ascending order, otherwise order is descending"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input to be sorted" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nin] + "Output with sorted input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput yIdx[nin] + "Indices of the sorted vector with respect to the original vector" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-80},{140,-40}}))); +equation + (y, yIdx)=Modelica.Math.Vectors.sort(u, ascending=ascending); + + annotation ( + defaultComponentName="sort", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{-58,70},{54,-60}}, + textColor={0,0,89}, + textString="sort")}), + Documentation( + info=" +

+Block that sorts the elements of the input signal u. +If the parameter ascending = true, then the output signal y satisfies +yi <= yi+1 for all i ∈ {1, ..., n-1}. +Otherwise, it satisfies +yi >= yi+1 for all i ∈ {1, ..., n-1}. +The output signal yIdx contains the indices of the sorted elements, +with respect to the input vector u. +

+

Usage

+

+Note that this block shall only be used for input signals u that are +time sampled.
+Otherwise, in simulation, numerical noise from a nonlinear solver or from an +implicit time integration algorithm may cause the simulation to stall. +Numerical noise can be present if an input depends +on a state variable or a quantity that requires an iterative solution, +such as a temperature or a mass flow rate of an HVAC system.
+In real controllers, measurement noise may cause the output to change frequently. +

+

+This block may for example be used in a variable air volume flow +controller to access the position of the dampers that are most open. +

+", revisions=" +
    +
  • +April 18, 2024, by Jianjun Hu:
    +Added an output variable with the indices of the sorted elements. +This is for Buildings, issue 3809. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +September 22, 2017, by Michael Wetter:
    +Reimplemented function to make it work with OpenModelica. +
  • +
  • +September 14, 2017, by Jianjun Hu:
    +Changed model name. +
  • +
  • +January 10, 2017, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
  • +November 21, 2011, by Michael Wetter:
    +Removed assert statement. +
  • +
  • +November 25, 2008, by Michael Wetter:
    +First implementation. +
  • +
+")); +end Sort; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/CalendarTime.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/CalendarTime.mo new file mode 100644 index 0000000000..3916da50c9 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/CalendarTime.mo @@ -0,0 +1,183 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +model CalendarTime + "Computes the unix time stamp and calendar time from the simulation time" + parameter IBPSA.Controls.OBC.CDL.Types.ZeroTime zerTim + "Enumeration for choosing how reference time (time = 0) should be defined"; + parameter Integer yearRef( + min=firstYear, + max=lastYear)=2016 + "Year when time = 0, used if zerTim=Custom" + annotation (Dialog(enable=zerTim == IBPSA.Controls.OBC.CDL.Types.ZeroTime.Custom)); + parameter Real offset( + final quantity="Time", + final unit="s")=0 + "Offset that is added to 'time', may be used for computing time in different time zone" + annotation (Dialog(tab="Advanced")); + discrete IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput year + "Year" + annotation (Placement(transformation(extent={{100,-40},{120,-20}}),iconTransformation(extent={{100,-40},{120,-20}}))); + discrete IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput month + "Month of the year" + annotation (Placement(transformation(extent={{100,-10},{120,10}}),iconTransformation(extent={{100,-10},{120,10}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput day( + fixed=false) + "Day of the month" + annotation (Placement(transformation(extent={{100,20},{120,40}}),iconTransformation(extent={{100,20},{120,40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput hour( + fixed=false) + "Hour of the day" + annotation (Placement(transformation(extent={{100,50},{120,70}}),iconTransformation(extent={{100,50},{120,70}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput minute + "Minute of the hour" + annotation (Placement(transformation(extent={{100,80},{120,100}}),iconTransformation(extent={{100,80},{120,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput weekDay( + fixed=false) + "Integer output representing week day (monday = 1, sunday = 7)" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}),iconTransformation(extent={{100,-70},{120,-50}}))); + +protected + final constant Integer firstYear=2010 + "First year that is supported, i.e. the first year in timeStampsNewYear[:]"; + final constant Integer lastYear=firstYear+21 + "Last year that is supported (actual building automation system need to support a larger range)"; + IBPSA.Utilities.Time.CalendarTime calTim( + final zerTim=zerTim, + final yearRef=yearRef, + final offset=offset) + "Calendar time" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(calTim.minute,minute) + annotation (Line(points={{11,9},{55.5,9},{55.5,90},{110,90}},color={0,0,127})); + connect(calTim.hour,hour) + annotation (Line(points={{11,6.4},{60,6.4},{60,60},{110,60}},color={255,127,0})); + connect(calTim.day,day) + annotation (Line(points={{11,3.8},{64,3.8},{64,30},{110,30}},color={255,127,0})); + connect(calTim.month,month) + annotation (Line(points={{11,1.2},{80,1.2},{80,0},{110,0}},color={255,127,0})); + connect(calTim.year,year) + annotation (Line(points={{11,-1.4},{64,-1.4},{64,-30},{110,-30}},color={255,127,0})); + connect(calTim.weekDay,weekDay) + annotation (Line(points={{11,-4},{60,-4},{60,-60},{110,-60}},color={255,127,0})); + annotation ( + defaultComponentName="calTim", + Documentation( + info=" +

+Block that outputs minute, hour, day of the month, month, year and weekday. +

+

Assumption and limitations

+

+The implementation only supports date computations from year 2010 up to and including 2020. +Daylight saving and time zones are not supported. +

+

Typical use and important parameters

+

+The user must define which time and date correspond to time = 0 +using the model parameters zerTim, and, if +zerTim == CDL.Types.ZeroTime.Custom, +the parameter yearRef. +The user can choose from new year, midnight for a number of years: +2010 to 2020 and also 1970. +The latter corresponds to a unix stamp of 0. +Note that when choosing the reference time equal to 0 at 1970, +the actual simulation time must be within the 2010-2020 range. +For example, startTime = 1262304000 corresponds +to the simulation starting on the 1st of January 2010 local time +when setting zerTim = CDL.Types.ZeroTime.UnixTimeStamp. +This is within the 2010-2020 range and is therefore allowed. +

+", + revisions=" +
    +
  • +March 30, 2022, by Michael Wetter:
    +Increased value of lastYear as the underlying implementation allows +for 21 years. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +August 20, 2019, by Filip Jorissen:
    +Revised implementation such that the meaning of time is better explained +and unix time stamps are correctly defined with respect to GMT. +(see Buildings, issue 1192). +
  • +
  • +March 14, 2017, by Michael Wetter:
    +Refactored implementation. +
  • +
  • +February 23, 2017, by Milica Grahovac:
    +First CDL implementation. +
  • +
  • +August 3, 2016, by Filip Jorissen:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Ellipse( + extent={{-94,94},{16,-16}}, + lineColor={160,160,164}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Text( + extent={{-34,92},{96,82}}, + textColor={28,108,200}, + horizontalAlignment=TextAlignment.Right, + textString="Minute"), + Text( + extent={{-28,64},{96,54}}, + textColor={28,108,200}, + horizontalAlignment=TextAlignment.Right, + textString="Hour"), + Text( + extent={{-38,36},{96,24}}, + textColor={28,108,200}, + horizontalAlignment=TextAlignment.Right, + textString="Day"), + Text( + extent={{-50,4},{96,-6}}, + textColor={28,108,200}, + horizontalAlignment=TextAlignment.Right, + textString="Month"), + Text( + extent={{-70,-24},{96,-34}}, + textColor={28,108,200}, + horizontalAlignment=TextAlignment.Right, + textString="Year"), + Text( + extent={{-68,-54},{96,-66}}, + textColor={28,108,200}, + horizontalAlignment=TextAlignment.Right, + textString="Weekday"), + Line( + points={{-40,38},{-64,62}}, + thickness=0.5), + Line( + points={{-40,38},{-14,38}}, + thickness=0.5)})); +end CalendarTime; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/CivilTime.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/CivilTime.mo new file mode 100644 index 0000000000..f442b718e0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/CivilTime.mo @@ -0,0 +1,137 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +block CivilTime "Civil time" + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y(final unit="s") + "Civil time" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=time; + annotation ( + defaultComponentName="civTim", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}, + grid={1,1}), + graphics={ + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-80,80},{80,-80}}, + lineColor={160,160,164}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Line( + points={{0,80},{0,60}}, + color={160,160,164}), + Line( + points={{80,0},{60,0}}, + color={160,160,164}), + Line( + points={{0,-80},{0,-60}}, + color={160,160,164}), + Line( + points={{-80,0},{-60,0}}, + color={160,160,164}), + Line( + points={{37,70},{26,50}}, + color={160,160,164}), + Line( + points={{70,38},{49,26}}, + color={160,160,164}), + Line( + points={{71,-37},{52,-27}}, + color={160,160,164}), + Line( + points={{39,-70},{29,-51}}, + color={160,160,164}), + Line( + points={{-39,-70},{-29,-52}}, + color={160,160,164}), + Line( + points={{-71,-37},{-50,-26}}, + color={160,160,164}), + Line( + points={{-71,37},{-54,28}}, + color={160,160,164}), + Line( + points={{-38,70},{-28,51}}, + color={160,160,164}), + Line( + points={{0,0},{-50,50}}, + thickness=0.5), + Line( + points={{0,0},{40,0}}, + thickness=0.5), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

Block that outputs the civil time. +

+

Implementation

+

+This block outputs the time of the model. +In the case of a building automation system, the +building automation system synchronizes time, and hence +need to assign a value for the output of this block. +Daylight saving time shall not be taken into account, +e.g, the block always outputs civil time rather than +daylight savings time. +

+

+If a simulation starts +at t=-1, then this block outputs first t=-1, +and its output is advanced at the same rate as the simulation time. +

+ +

+Note that the block has not been included in the ASHRAE Standard 231p. +However, in the future versions of the ASHRAE 231 Standard, the block should be added. +

+", + revisions=" +
    +
  • +December 12, 2023, by Jianjun Hu:
    +Renamed the block from ModelTime to CivilTime. +This is for +Buildings, issue 3596. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 14, 2017, by Michael Wetter:
    +Revised implemenation. +
  • +
  • +February 23, 2017, by Milica Grahovac:
    +First CDL implementation. +
  • +
  • +January 16, 2015, by Michael Wetter:
    +Moved block from +IBPSA.Utilities.SimulationTime +to +IBPSA.Utilities.Time.ModelTime. +
  • +
  • +May 18, 2010, by Wangda Zuo:
    +First implementation. +
  • +
+")); +end CivilTime; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Constant.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Constant.mo new file mode 100644 index 0000000000..1d7ff89569 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Constant.mo @@ -0,0 +1,80 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +block Constant + "Output constant signal of type Real" + parameter Real k + "Constant output value"; + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Constant output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=k; + annotation ( + defaultComponentName="con", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Line( + points={{-80,68},{-80,-80}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-70},{82,-70}}, + color={192,192,192}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,0},{80,0}}), + Text( + extent={{-150,-150},{150,-110}}, + textColor={0,0,0}, + textString="k=%k"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs a constant signal y = k, +where k is a real-valued parameter. +

+

+\"Constant.png\" +

+", + revisions=" +
    +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 16, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Constant; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Pulse.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Pulse.mo new file mode 100644 index 0000000000..b6243f85be --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Pulse.mo @@ -0,0 +1,164 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +block Pulse + "Generate pulse signal of type Real" + parameter Real amplitude=1.0 + "Amplitude of pulse"; + parameter Real width( + final min=Constants.small, + final max=1, + final unit="1")=0.5 + "Width of pulse in fraction of period"; + parameter Real period( + final quantity="Time", + final unit="s", + final min=Constants.small) + "Time for one period"; + parameter Real shift( + final quantity="Time", + final unit="s")=0 + "Shift time for output"; + parameter Real offset=0.0 + "Offset of output signals"; + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Pulse output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Logical.Sources.Pulse booPul( + final width=width, + final period=period, + final shift=shift) + "Boolean pulse" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Conversions.BooleanToReal booToRea( + final realTrue=offset+amplitude, + final realFalse=offset) + "Boolean to real conversion" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + +equation + connect(booPul.y,booToRea.u) + annotation (Line(points={{-18,0},{18,0}},color={255,0,255})); + connect(y,booToRea.y) + annotation (Line(points={{120,0},{42,0}},color={0,0,127})); + annotation ( + defaultComponentName="pul", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-80}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-70},{82,-70}}, + color={192,192,192}), + Text( + extent={{-147,-152},{153,-112}}, + textColor={0,0,0}, + textString="period=%period"), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3))), + Polygon( + points={{-80,52},{-68,56},{-68,48},{-80,52}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{-80,52},{-4,52}}, + color={135,135,135}), + Text( + extent={{-66,80},{-8,56}}, + textColor={135,135,135}, + textString="%period"), + Polygon( + points={{-2,52},{-14,56},{-14,48},{-2,52}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Line( + points={{40,34},{72,34}}, + color={135,135,135}), + Polygon( + points={{74,34},{62,38},{62,30},{74,34}}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Text( + extent={{38,64},{96,40}}, + textColor={135,135,135}, + textString="%shift"), + Line( + points={{79,-70},{40,-70},{40,44},{-1,44},{-1,-70},{-41,-70},{-41,44},{-80,44}}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+Block that outputs a pulse signal as shown below. +

+

+\"Pulse.png\" +

+

+The pulse signal is generated an infinite number of times, and aligned with time=shift. +

+", + revisions=" +
    +
  • +December 03, 2020, by Milica Grahovac:
    +Renamed delay parameter to shift.
    +This is for +Buildings, issue 2282. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Refactored implementation, avoided state events.
    +This is for +Buildings, issue 2170. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 16, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Pulse; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Ramp.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Ramp.mo new file mode 100644 index 0000000000..d112e1c718 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Ramp.mo @@ -0,0 +1,106 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +block Ramp + "Generate ramp signal" + parameter Real height=1 + "Height of ramps"; + parameter Real duration( + final quantity="Time", + final unit="s", + min=Constants.small) + "Duration of ramp (= 0.0 gives a Step)"; + parameter Real offset=0 + "Offset of output signal"; + parameter Real startTime( + final quantity="Time", + final unit="s")=0 + "Output = offset for time < startTime"; + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Ramp output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=offset+( + if time < startTime then + 0 + else + if time < (startTime+duration) then + (time-startTime)*height/duration + else + height); + annotation ( + defaultComponentName="ram", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-80}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-70},{82,-70}}, + color={192,192,192}), + Polygon( + points={{90,-70},{68,-62},{68,-78},{90,-70}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-70},{-40,-70},{31,38}}), + Text( + extent={{-150,-150},{150,-110}}, + textColor={0,0,0}, + textString="duration=%duration"), + Line( + points={{31,38},{86,38}}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+The Real output y is a ramp signal: +

+ +

+\"Ramp.png\" +

+", + revisions=" +
    +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 16, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Ramp; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Sin.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Sin.mo new file mode 100644 index 0000000000..e1bd26397d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Sin.mo @@ -0,0 +1,120 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +block Sin + "Generate sine signal" + parameter Real amplitude=1 + "Amplitude of sine wave"; + parameter Real freqHz( + final quantity="Frequency", + final unit="Hz", + start=1) + "Frequency of sine wave"; + parameter Real phase( + final quantity="Angle", + final unit="rad", + displayUnit="deg")=0 + "Phase of sine wave"; + parameter Real offset=0 + "Offset of output signal"; + parameter Real startTime( + final quantity="Time", + final unit="s")=0 + "Output = offset for time < startTime"; + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Sine output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=offset+( + if time < startTime then + 0 + else + amplitude*Modelica.Math.sin( + 2*IBPSA.Controls.OBC.CDL.Constants.pi*freqHz*(time-startTime)+phase)); + annotation ( + defaultComponentName="sin", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-148,104},{152,144}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-80}}, + color={192,192,192}), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, + smooth=Smooth.Bezier), + Text( + extent={{-147,-152},{153,-112}}, + textColor={0,0,0}, + textString="freqHz=%freqHz"), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs a sine. +

+

+\"Sin.png\"/ +

+", + revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +April 13, 2023, by Michael Wetter:
    +Renamed block from Sine to Sin +to use consistent naming with + +IBPSA.Controls.OBC.CDL.Reals.Sin.
    +This is for +Buildings, issue 3339 +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +November 06, 2017, by Milica Grahovac:
    +First CDL implementation. +
  • +
+")); +end Sin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/TimeTable.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/TimeTable.mo new file mode 100644 index 0000000000..a508f401e7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/TimeTable.mo @@ -0,0 +1,328 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +block TimeTable + "Table look-up with respect to time and linear or periodic extrapolation" + parameter Real table[:,:] + "Table matrix (time = first column is time in seconds, unless timeScale <> 1)"; + parameter CDL.Types.Smoothness smoothness=CDL.Types.Smoothness.LinearSegments + "Smoothness of table interpolation"; + parameter CDL.Types.Extrapolation extrapolation=CDL.Types.Extrapolation.Periodic + "Extrapolation of data outside the definition range"; + parameter Real offset[:]=fill(0, nout) + "Offsets of output signals as a vector with length equal to number of table matrix columns less one"; + parameter Real timeScale( + final unit="1")=1 + "Time scale of first table column. Set to 3600 if time in table is in hours"; + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nout] + "Output with tabulated values" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + final parameter Integer nout=size(table,2)-1 + "Dimension of output vector"; + parameter Real t0( + final quantity="Time", + final unit="s", + fixed=false) + "First sample time instant"; + parameter Real timeRange( + final quantity="Time", + final unit="s")=timeScale*(table[end,1]-table[1,1]) + "Range of time in table"; + final parameter Integer nT=size( + table, + 1) + "Number of time stamps"; + // CDL uses different enumerations for smoothness and for extrapolation + // than the Modelica Standard Library. Hence, we cast the CDL + // enumeration to the MSL enumaration. + Modelica.Blocks.Sources.CombiTimeTable tab( + final tableOnFile=false, + final table=table, + final columns=2:size( + tab.table, + 2), + final smoothness= + if smoothness == CDL.Types.Smoothness.LinearSegments then + Modelica.Blocks.Types.Smoothness.LinearSegments + else + Modelica.Blocks.Types.Smoothness.ConstantSegments, + final extrapolation= + if extrapolation == CDL.Types.Extrapolation.HoldLastPoint then + Modelica.Blocks.Types.Extrapolation.HoldLastPoint + elseif extrapolation == CDL.Types.Extrapolation.LastTwoPoints then + Modelica.Blocks.Types.Extrapolation.LastTwoPoints + else + Modelica.Blocks.Types.Extrapolation.Periodic, + final offset=offset, + final startTime= + if (extrapolation == Types.Extrapolation.Periodic) then t0 else 0, + final timeScale=timeScale) + "Time table" + annotation (Placement(transformation(extent={{-12,-10},{8,10}}))); + +initial equation + // If the table has only one time stamp, then timeRange is zero. + // We can then set t0 to be equal to the start of the simulation. + t0= + if nT == 1 then + time + else + IBPSA.Utilities.Math.Functions.round( + x=integer(time/timeRange)*timeRange, + n=6); + +equation + connect(tab.y,y) + annotation (Line(points={{9,0},{120,0}},color={0,0,127})); + annotation ( + defaultComponentName="timTab", + Documentation( + info=" +

+Block that outputs values of a time table. +

+

+The block takes as a parameter a time table of a format: +

+
+table = [ 0*3600, 0;
+          6*3600, 0;
+          6*3600, 1;
+         18*3600, 1;
+         18*3600, 0;
+         24*3600, 0];
+
+

+where the first column is time in seconds, and the remaining +column(s) are the table values. +Any number of columns can be specified. +The parameter smoothness determines how the table values +are interpolated. The following settings are allowed: +

+ + + + + + + + + + + +
smoothnessDescription
CDL.Types.LinearSegmentsTable points are linearly interpolated.
CDL.Types.ConstantSegmentsTable points are not interpolated, + but the previous tabulated value is returned.
+ +

+The parameter extrapolation determines how the table +values are extrapolated. The following settings are allowed: +

+ + + + + + + + + + + + + + + +
extrapolationDescription
CDL.Types.HoldLastPointHold the first or last table point outside of the table scope.
CDL.Types.LastTwoPointsExtrapolate by using the derivative at the first or last table points + outside of the table scope.
CDL.Types.PeriodicRepeat the table scope periodically with periodicity + (max(table[:, 1]-min(table[:, 1]))*timeScale).
+ +

+If extrapolation === CDL.Types.Periodic, then the above example +would give a schedule with periodicity of one day. The simulation can start at any time, +whether it is a multiple of a day or not, and positive or negative. +

+ +

+The value of the parameter offset is added to the tabulated +values. +The parameters timeScale is used to scale the first column +of the table. For example, set timeScale = 3600 if the first +column is in hour (because in CDL, the time unit is seconds). +

+

+If the table has only one row, no interpolation is performed and +the table values of this row are just returned. +

+

+An interval boundary is defined by two identical time values +following each other. For example +

+
+   table = [0, 0;
+            1, 0;
+            1, 1;
+            2, 3;
+            3, 5;
+            3, 2;
+            4, 4;
+            5, 5];
+
+

+defines three intervalls: 0..1, 1..3, 3..5. Within an interval the defined +interpolation method is applied (so the table outputs within an interval are +continuous if smoothness = CDL.Types.LinearSegments). +

+

+Example: +

+
+  table = [0, 0;
+           1, 0;
+           1, 1;
+           2, 4;
+           3, 9;
+           4, 16];
+  smoothness = CDL.Types.LinearSegments;
+
+If, e.g., time = 1.0, the output y =  0.0 (before event), 1.0 (after event)
+    e.g., time = 1.5, the output y =  2.5,
+    e.g., time = 2.0, the output y =  4.0,
+    e.g., time = 5.0, the output y = 23.0 (i.e., extrapolation via last 2 points).
+
+

Implementation

+

+For simulation, +no time events are generated within an interval +in order that also intervals with many points do not reduce the simulation efficiency. +If the table points are largely changing, it is adviseable to force +time events by duplicating every time point (especially, if the model in which +the table is present allows the variable step integrator to make large +integrator steps). For example, if a sawtooth signal is defined with the table, +it is more reliable to define the table as: +

+
+   table = [0, 0;
+            1, 2;
+            1, 2;
+            2, 0;
+            2, 0;
+            3, 2;
+            3, 2];
+
+

+instead of +

+
+   table = [0, 0;
+            1, 2;
+            2, 0;
+            3, 2];
+
+

+because time events are then generated at every time point. +

+

+Building automation systems typically have discrete time semantics +with fixed sampling times, and no notion of superdense time (in which +a tabulated value can change without advancing time). +Therefore, to implement a table with two equal time stamps, +a CDL translator may parameterize +a table in the building automation in such a way that the step change happens +at the time indicated in the first column, whereas previous sampling times +output the tabulated value at the last transition. For example, +

+
+table = [0, 0;
+         1, 0;
+         1, 1];
+smoothness = CDL.Types.ConstantSegments;
+
+

+may be converted such that a building automation system with a sampling time +of 0.5 seconds outputs +

+
+  t = 0, 0.5, 1, ...
+  y = 0, 0  , 1, ...
+
+", + revisions=" +
    +
  • +October 21, 2021, by Michael Wetter:
    +Removed writing output value in icon (as it is an array of values). +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +October 19, 2020, by Michael Wetter:
    +Revised to call round() as a function.
    +For Buildings, issue 2170. +
  • +
  • +October 7, 2020, by Michael Wetter:
    +Revised implementation to add timeSpan. +
  • +
  • +March 13, 2020, by Michael Wetter:
    +Corrected implementation so that the table also works if the simulation +starts at a negative time.
    +This is for +Buildings, issue 1834. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 14, 2017, by Michael Wetter:
    +Refactored and simplified implementation. +
  • +
  • +February 23, 2017, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{-80.0,90.0},{-88.0,68.0},{-72.0,68.0},{-80.0,90.0}}), + Line( + points={{-80.0,68.0},{-80.0,-80.0}}, + color={192,192,192}), + Line( + points={{-90.0,-70.0},{82.0,-70.0}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{90.0,-70.0},{68.0,-62.0},{68.0,-78.0},{90.0,-70.0}}), + Rectangle( + lineColor={255,255,255}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-48.0,-50.0},{2.0,70.0}}), + Line( + points={{-48.0,-50.0},{-48.0,70.0},{52.0,70.0},{52.0,-50.0},{-48.0,-50.0},{-48.0,-20.0},{52.0,-20.0},{52.0,10.0},{-48.0,10.0},{-48.0,40.0},{52.0,40.0},{52.0,70.0},{2.0,70.0},{2.0,-51.0}})})); +end TimeTable; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mo new file mode 100644 index 0000000000..cfb80c267a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mo @@ -0,0 +1,48 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model CalendarTimeMonths + "Validation model for the calendar time model" + IBPSA.Controls.OBC.CDL.Reals.Sources.CalendarTime calTim( + zerTim=IBPSA.Controls.OBC.CDL.Types.ZeroTime.NY2017) + "Computes date and time assuming time=0 corresponds to new year 2017" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + annotation ( + experiment( + StartTime=172800, + Tolerance=1e-6, + StopTime=345600), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonths.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the use of the + +IBPSA.Controls.OBC.CDL.Reals.Sources.CalendarTime +block for a period of a couple of months. +This shorter simulation time has been selected to +store the reference results that are used in the regression tests +at a resulation that makes sense for the minute and hour outputs. +

+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end CalendarTimeMonths; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mo new file mode 100644 index 0000000000..29b563f55f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mo @@ -0,0 +1,32 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model CalendarTimeMonthsMinus + "Validation model for the calendar time model with start time slightly below the full hour" + extends IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonths; + annotation ( + experiment( + StartTime=172799, + Tolerance=1e-6, + StopTime=345599), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsMinus.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the use of the + +IBPSA.Controls.OBC.CDL.Reals.Sources.CalendarTime. +It is identical to + +IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonths +except that the start and end time are different. +

+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+")); +end CalendarTimeMonthsMinus; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mo new file mode 100644 index 0000000000..e3501a96af --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mo @@ -0,0 +1,32 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model CalendarTimeMonthsPlus + "Validation model for the calendar time model with start time slightly higher than the full hour" + extends IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonths; + annotation ( + experiment( + StartTime=172801, + Tolerance=1e-6, + StopTime=345601), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CalendarTimeMonthsPlus.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the use of the + +IBPSA.Controls.OBC.CDL.Reals.Sources.CalendarTime. +It is identical to + +IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.CalendarTimeMonths +except that the start and end time are different. +

+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+")); +end CalendarTimeMonthsPlus; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mo new file mode 100644 index 0000000000..a37495396b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mo @@ -0,0 +1,41 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model CivilTime "Test model for the CivilTime block" + IBPSA.Controls.OBC.CDL.Reals.Sources.CivilTime civTim + "Civil time" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation ( + experiment( + StartTime=-1, + Tolerance=1e-6, + StopTime=1), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/CivilTime.mos" "Simulate and plot"), + Documentation( + info=" +

+This model tests the implementation of the block that outputs the +civil time. +

+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end CivilTime; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mo new file mode 100644 index 0000000000..ab692e8100 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mo @@ -0,0 +1,44 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model Constant + "Validate the Constant block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con( + k=2.5) + "Block output real constant value" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Constant.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sources.Constant. +

+ +", + revisions=" +
    +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Constant; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mo new file mode 100644 index 0000000000..45e165d61f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mo @@ -0,0 +1,47 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model Pulse + "Validation model for the Pulse block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pulse( + amplitude=2.0, + width=0.5, + offset=0.2, + period=1) + "Block that generates pulse signal of type Real" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Pulse.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse. +

+ +", + revisions=" +
    +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Pulse; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mo new file mode 100644 index 0000000000..440bd89ff0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mo @@ -0,0 +1,46 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model Ramp + "Validation model for the Ramp" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram( + height=2, + duration=3, + offset=0.5, + startTime=1.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Ramp.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp. +

+", + revisions=" +
    +
  • +July 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Ramp; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mo new file mode 100644 index 0000000000..310b6032cb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mo @@ -0,0 +1,47 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model Sin + "Validation model for Sin" + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + amplitude=5, + freqHz=1/60, + phase=0, + offset=10, + startTime=10) + "Sine source block" + annotation (Placement(transformation(extent={{-12,-10},{8,10}}))); + annotation ( + experiment( + StopTime=130.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/Sin.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp. +

+", + revisions=" +
    +
  • +November 06, 2017, by Milica Grahovac:
    +First CDL implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Sin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mo new file mode 100644 index 0000000000..a1a2e1e337 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mo @@ -0,0 +1,123 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model TimeTable + "Validation model for TimeTable block" + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLinHol( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + extrapolation=IBPSA.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments, hold first and last value" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLinDer( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + extrapolation=IBPSA.Controls.OBC.CDL.Types.Extrapolation.LastTwoPoints, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments, extrapolate with der" + annotation (Placement(transformation(extent={{50,10},{70,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabCon( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLinCon( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + table=[ + 0,0; + 6*3600,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + annotation ( + experiment( + Tolerance=1e-6, + StopTime=172800), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTable.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the TimeTable block. It takes as a parameter a time table of +the format +

+
+table = [ 0*3600, 0;
+          6*3600, 1;
+         18*3600, 0.5;
+         24*3600, 0];
+
+

+The block timTabLin applies smoothness method of linear segments +between table points, periodically repeat the table scope. +

+

+The block timTabLinHol applies smoothness method of linear segments +between table points, hold the last table points when it becomes outside of +table scope. +

+

+The block timTabLinDer applies smoothness method of linear segments +between table points, extrapolate by using the derivative at the last table +points to find points outside the table scope. +

+

+The block timTabCon applies smoothness method of constant segments +between table points, periodically repeat the table scope. +

+

+The block timTabLinCon applies smoothness method of linear segments +between table points, periodically repeat the table scope. Table points is +different so to ensure constant zero during time range of +(0*3600, 6*36000). +

+
+table = [ 0*3600, 0;
+          6*3600, 0;
+          6*3600, 1;
+         18*3600, 0.5;
+         24*3600, 0];
+
+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimeTable; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mo new file mode 100644 index 0000000000..fa0c2d642f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mo @@ -0,0 +1,91 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources.Validation; +model TimeTableNegativeStartTime + "Validation model for TimeTable block with negative start time" + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLin( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLinHol( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + extrapolation=IBPSA.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments, hold first and last value" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLinDer( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + extrapolation=IBPSA.Controls.OBC.CDL.Types.Extrapolation.LastTwoPoints, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments, extrapolate with der" + annotation (Placement(transformation(extent={{50,10},{70,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabCon( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[ + 0,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of constant segments" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTabLinCon( + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.LinearSegments, + table=[ + 0,0; + 6*3600,0; + 6*3600,1; + 18*3600,0.5; + 24*3600,0]) + "Time table with smoothness method of linear segments" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + annotation ( + experiment( + Tolerance=1e-6, + StartTime=-129600.0, + StopTime=172800), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Sources/Validation/TimeTableNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+This model validates the block + +IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable. +The model is identical to + +IBPSA.Controls.OBC.CDL.Reals.Sources.Validation.TimeTable +except that the start time is negative, and not a multiple of a full day. +", + revisions=" +

    +
  • +March 13, 2020, by Michael Wetter:
    +First implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end TimeTableNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.mo new file mode 100644 index 0000000000..13e6b5a2f7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Reals.Sources; +package Validation "Collection of models that validate the continuous sources blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Reals.Sources. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}}), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0)})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.order b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.order new file mode 100644 index 0000000000..44b8c845d0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/Validation/package.order @@ -0,0 +1,10 @@ +CalendarTimeMonths +CalendarTimeMonthsMinus +CalendarTimeMonthsPlus +CivilTime +Constant +Pulse +Ramp +Sin +TimeTable +TimeTableNegativeStartTime diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/package.mo b/IBPSA/Controls/OBC/CDL/Reals/Sources/package.mo new file mode 100644 index 0000000000..0b4acd7fcd --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/package.mo @@ -0,0 +1,33 @@ +within IBPSA.Controls.OBC.CDL.Reals; +package Sources "Package with blocks that generate source signals" + annotation ( + Documentation( + info=" +

+Package with blocks that generate signals. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-70,-4.5},{0,4.5}}), + Polygon( + origin={23.3333,0.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-23.333,30.0},{46.667,0.0},{-23.333,-30.0}}), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0)})); +end Sources; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sources/package.order b/IBPSA/Controls/OBC/CDL/Reals/Sources/package.order new file mode 100644 index 0000000000..95a5483879 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sources/package.order @@ -0,0 +1,8 @@ +CalendarTime +CivilTime +Constant +Pulse +Ramp +Sin +TimeTable +Validation diff --git a/IBPSA/Controls/OBC/CDL/Reals/Sqrt.mo b/IBPSA/Controls/OBC/CDL/Reals/Sqrt.mo new file mode 100644 index 0000000000..bf9bb433e1 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Sqrt.mo @@ -0,0 +1,83 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Sqrt + "Output the square root of the input (input >= 0 required)" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input to square root function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with square root of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=sqrt(u); + + annotation ( + defaultComponentName="sqr", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-80},{68,-80}}, + color={192,192,192}), + Polygon( + points={{90,-80},{68,-72},{68,-88},{90,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-79.2,-68.7},{-78.4,-64},{-76.8,-57.3},{-73.6,-47.9},{-67.9,-36.1},{-59.1,-22.2},{-46.2,-6.49},{-28.5,10.7},{-4.42,30},{27.7,51.3},{69.5,74.7},{80,80}}, + smooth=Smooth.Bezier), + Polygon( + points={{-80,90},{-88,68},{-72,68},{-80,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-88},{-80,68}}, + color={192,192,192}), + Text( + extent={{-8,-4},{64,-52}}, + textColor={192,192,192}, + textString="sqrt"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs square root of the input y = sqrt(u), +where u is an input. The input u must be non-negative. +

+", + revisions=" +
    +
  • +February 15, 2024, by Michael Wetter:
    +Updated documentation. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +March 15, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Sqrt; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Subtract.mo b/IBPSA/Controls/OBC/CDL/Reals/Subtract.mo new file mode 100644 index 0000000000..a5e7e1c190 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Subtract.mo @@ -0,0 +1,73 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Subtract "Output the difference of the two inputs" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input with minuend" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u2 + "Input with subtrahend" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with difference" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=u1-u2; + annotation ( + defaultComponentName="sub", + Documentation( + info=" +

+Block that outputs y as the difference of the +two input signals u1 and u2, +

+
+    y = u1 - u2
+
+", +revisions=" +
    +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + lineColor={0,0,127}, + extent={{-50,-50},{50,50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-100,60},{-74,24},{-44,24}}, + color={0,0,127}), + Line( + points={{-100,-60},{-74,-28},{-42,-28}}, + color={0,0,127}), + Line( + points={{50,0},{100,0}}, + color={0,0,127}), + Text( + extent={{-38,-28},{38,40}}, + textString="-", + textColor={0,0,0}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); +end Subtract; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Switch.mo b/IBPSA/Controls/OBC/CDL/Reals/Switch.mo new file mode 100644 index 0000000000..dfaf50be50 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Switch.mo @@ -0,0 +1,124 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Switch + "Switch between two Real signals" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u1 + "Input u1" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u2 + "Boolean switch input signal, if true, y=u1, else y=u3" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u3 + "Input u3" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Output with u1 if u2 is true, else u3" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=smooth(0, if u2 then u1 else u3); + annotation ( + defaultComponentName="swi", + Documentation( + info=" +

+Block that outputs one of two real input signals based on a boolean input signal. +

+

+If the input signal u2 is true, +the block outputs y = u1. +Otherwise, it outputs y = u3. +

+", + revisions=" +
    +
  • +February 27, 2023, by Michael Wetter:
    +Added smoothOrder(0, ...) as Dymola 2023x assumes y to be +smooth, and simulations can then fail if it differentiated this output. +
  • +
  • +July 17, 2020, by Jianjun Hu:
    +Changed icon to display dynamically which input signal is being outputted.
    +This is for +Buildings, issue 2033. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={210,210,210}, + lineThickness=5.0, + fillPattern=FillPattern.Solid, + borderPattern=BorderPattern.Raised), + Line( + points={{12.0,0.0},{100.0,0.0}}, + color={0,0,127}), + Line( + points={{-100.0,0.0},{-40.0,0.0}}, + color={255,0,255}), + Line( + points={{-100.0,-80.0},{-40.0,-80.0},{-40.0,-80.0}}, + color={0,0,127}), + Line( + points={{-40.0,12.0},{-40.0,-12.0}}, + color={255,0,255}), + Line( + points={{-100.0,80.0},{-40.0,80.0}}, + color={0,0,127}), + Line( + points=DynamicSelect({{10,0},{-40,80}},{{10,0}, + if u2 then + {-40,80} + else + {-40,-80}}), + color={0,0,127}, + thickness=1.0), + Ellipse( + lineColor={0,0,255}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{2.0,-8.0},{18.0,8.0}}), + Ellipse( + extent={{-71,7},{-85,-7}}, + lineColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if u2 then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{-90,80},{-46,54}}, + textColor=DynamicSelect({0,0,0}, + if u2 then + {0,0,0} + else + {235,235,235}), + textString="true"), + Text( + extent={{-90,-46},{-38,-76}}, + textColor=DynamicSelect({0,0,0}, + if u2 then + {235,235,235} + else + {0,0,0}), + textString="false"), + Text( + extent={{-150,150},{150,110}}, + textColor={0,0,255}, + textString="%name")})); +end Switch; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Tan.mo b/IBPSA/Controls/OBC/CDL/Reals/Tan.mo new file mode 100644 index 0000000000..bce583559a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Tan.mo @@ -0,0 +1,97 @@ +within IBPSA.Controls.OBC.CDL.Reals; +block Tan "Output the tangent of the input" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u( + final unit="rad", + displayUnit="deg") + "Input for the tangent function" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Tangent of the input" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=Modelica.Math.tan(u); + annotation ( + defaultComponentName="tan", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-90,72},{-18,24}}, + textColor={192,192,192}, + textString="tan"), + Line( + points={{0,-80},{0,68}}, + color={192,192,192}), + Polygon( + points={{0,90},{-8,68},{8,68},{0,90}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Polygon( + points={{90,0},{68,8},{68,-8},{90,0}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,0},{68,0}}, + color={192,192,192}), + Line( + points={{-80,-80},{-78.4,-68.4},{-76.8,-59.7},{-74.4,-50},{-71.2,-40.9},{-67.1,-33},{-60.7,-24.8},{-51.1,-17.2},{-35.8,-9.98},{-4.42,-1.07},{33.4,9.12},{49.4,16.2},{59.1,23.2},{65.5,30.6},{70.4,39.1},{73.6,47.4},{76,56.1},{77.6,63.8},{80,80}}, + smooth=Smooth.Bezier), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

+Block that outputs y = tan(u), +where +u is an input. +

+ +

+\"tan.png\" +

+ +", + revisions=" +
    +
  • +November 8, 2024, by Michael Wetter:
    +Added final keyword to unit declaration as block is only valid for this unit.
    +Also added displayUnit keyword. +
  • +
  • +March 7, 2023, by Jianjun Hu:
    +Added unit rad to the input.
    +This is for +Buildings, issue 3277. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +Changed icon to display dynamically the output value. +
  • +
  • +January 3, 2017, by Michael Wetter:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end Tan; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Abs.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Abs.mo new file mode 100644 index 0000000000..ed7bda692b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Abs.mo @@ -0,0 +1,60 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Abs + "Validation model for the absolute block" + IBPSA.Controls.OBC.CDL.Reals.Abs abs1 + "Block that outputs the absolute value of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp( + height=2, + duration=1, + offset=-1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp.y,abs1.u) + annotation (Line(points={{-38,0},{-38,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Abs.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Abs. +The input varies from -1 to +1. +

+", + revisions=" + +
    +
  • +February 22, 2017, by Michael Wetter:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Abs; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Acos.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Acos.mo new file mode 100644 index 0000000000..20690cd640 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Acos.mo @@ -0,0 +1,52 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Acos "Validation model for the Acos block" + IBPSA.Controls.OBC.CDL.Reals.Acos arcCos + "Block that outputs the arc tangent of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-1, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y, arcCos.u) + annotation (Line(points={{-38,0},{-12,0},{-12,0}}, color={0,0,127})); + +annotation ( + experiment(StopTime=1.0, Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Acos.mos" "Simulate and plot"), +Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Acos. +

+

+The input u varies from -1 to +1. +

+", +revisions=" +
    +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Acos; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Add.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Add.mo new file mode 100644 index 0000000000..822bbcadeb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Add.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Add + "Validation model for the add block" + IBPSA.Controls.OBC.CDL.Reals.Add add1 + "Block that outputs the sum of the two inputs" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + height=2, + duration=1, + offset=-1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,add1.u1) + annotation (Line(points={{-38,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,add1.u2) + annotation (Line(points={{-38,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Add.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Add. +

+

+The input u1 varies from -2 to +2, input u2 varies from -1 to +1. +

+", + revisions=" +
    +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Add; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/AddParameter.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/AddParameter.mo new file mode 100644 index 0000000000..ae436a8d60 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/AddParameter.mo @@ -0,0 +1,56 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model AddParameter + "Validation model for the AddParameter block" + IBPSA.Controls.OBC.CDL.Reals.AddParameter addPar( + p=0.5) + "Block that outputs the sum of an input plus a parameter" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,addPar.u) + annotation (Line(points={{-38,0},{-38,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/AddParameter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.AddParameter. +

+

+The input u varies from -2 to +2. +

+", + revisions=" +
    +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end AddParameter; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Asin.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Asin.mo new file mode 100644 index 0000000000..2f02e6a55f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Asin.mo @@ -0,0 +1,52 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Asin "Validation model for the Asin block" + IBPSA.Controls.OBC.CDL.Reals.Asin arcSin + "Block that outputs the arc tangent of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-1, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y, arcSin.u) + annotation (Line(points={{-38,0},{-12,0},{-12,0}}, color={0,0,127})); + +annotation ( + experiment(StopTime=1.0, Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Asin.mos" "Simulate and plot"), +Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Asin. +

+

+The input u varies from -1 to +1. +

+", +revisions=" +
    +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Asin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Atan.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Atan.mo new file mode 100644 index 0000000000..2eb745c746 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Atan.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Atan + "Validation model for the Atan block" + IBPSA.Controls.OBC.CDL.Reals.Atan atan1 + "Block that outputs the arc tangent of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,atan1.u) + annotation (Line(points={{-38,0},{-12,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Atan. +

+

+The input u varies from -2 to +2. +

+", + revisions=" +
    +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Atan; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Atan2.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Atan2.mo new file mode 100644 index 0000000000..be7cf20a00 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Atan2.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Atan2 + "Validation model for the Atan2 block" + IBPSA.Controls.OBC.CDL.Reals.Atan2 atan2_1 + "Block that outputs atan(u1/u2) of the inputs u1 and u2" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=1, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,atan2_1.u1) + annotation (Line(points={{-38,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,atan2_1.u2) + annotation (Line(points={{-38,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Atan2.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Atan2. +

+

+The input u1 varies from -2 to +2, +The input u2 varies from +1 to +3. +

+", + revisions=" +
    +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Atan2; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Average.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Average.mo new file mode 100644 index 0000000000..3aa70eaf76 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Average.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Average + "Validation model for the Average block" + IBPSA.Controls.OBC.CDL.Reals.Average avg1 + "Block that outputs the average of its two inputs" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=6) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=1.5, + height=3.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,avg1.u1) + annotation (Line(points={{-39,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,avg1.u2) + annotation (Line(points={{-39,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Average.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Average. +

+

+The input u1 varies from -2.0 to +6.0, input u2 varies from +1.5 to +4.5 +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Average; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Cos.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Cos.mo new file mode 100644 index 0000000000..50d1253aec --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Cos.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Cos + "Validation model for the Cos block" + IBPSA.Controls.OBC.CDL.Reals.Cos cos1 + "Block that outputs the cosine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.283) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,cos1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Cos.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Cos. +

+

+The input u varies from 0.0 to +6.283. +

+", + revisions=" +
    +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Cos; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Derivative.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Derivative.mo new file mode 100644 index 0000000000..3401139851 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Derivative.mo @@ -0,0 +1,130 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Derivative + "Test model for the derivative block" + IBPSA.Controls.OBC.CDL.Reals.Derivative der1(y_start=1) + "Derivative block with input gains" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + Reals.Sources.Constant con(k=1) "Outputs 1" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + Reals.Sources.Ramp ram( + height=0.09, + duration=10, + offset=0.01, + startTime=5) "Ramp for time constant used in approximating derivative" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.CivilTime modTim + "Civil time" + annotation (Placement(transformation(extent={{-110,0},{-90,20}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes(y_start=1) + "Integration of input" + annotation (Placement(transformation(extent={{0,0},{20,20}}))); + Logical.Sources.Constant booSig(k=false) "Contant boolean signal" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Cos cos "Cosine of model time" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Derivative der2(y_start=0) + "Derivative block with input gains" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + Reals.Sources.Constant con2(k=2) "Outputs 2" + annotation (Placement(transformation(extent={{-40,-72},{-20,-52}}))); + Reals.Sources.Constant T(k=0.1) "Time constant for derivative approximation" + annotation (Placement(transformation(extent={{0,-90},{20,-70}}))); + Utilities.Assert assMes(message="Differentiated value differs more than threshold") + "Issue an error if results differ more than a threshold" + annotation (Placement(transformation(extent={{170,26},{190,46}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub + "Difference between original signal, and differentiated integral of that signal" + annotation (Placement(transformation(extent={{80,26},{100,46}}))); + IBPSA.Controls.OBC.CDL.Reals.Abs abs "Absolute difference" + annotation (Placement(transformation(extent={{110,26},{130,46}}))); + IBPSA.Controls.OBC.CDL.Reals.LessThreshold lesThr(t=0.1, h=0.01) + "Output true if difference is within expected accuracy" + annotation (Placement(transformation(extent={{140,26},{160,46}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k=1) + "Dummy gain to avoid unit difference error" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); +equation + connect(con.y, der1.k) annotation (Line(points={{-58,80},{-10,80},{-10,58},{38, + 58}}, color={0,0,127})); + connect(ram.y, der1.T) annotation (Line(points={{-58,50},{-20,50},{-20,54},{38, + 54}}, color={0,0,127})); + connect(intWitRes.y, der1.u) annotation (Line(points={{22,10},{30,10},{30,50}, + {38,50}}, color={0,0,127})); + connect(booSig.y, intWitRes.trigger) + annotation (Line(points={{-18,-20},{10,-20},{10,-2}}, color={255,0,255})); + connect(intWitRes.u, cos.y) + annotation (Line(points={{-2,10},{-18,10}}, color={0,0,127})); + connect(intWitRes.y_reset_in, cos.y) annotation (Line(points={{-2,2},{-10,2},{ + -10,10},{-18,10}}, color={0,0,127})); + connect(intWitRes.y, der2.u) annotation (Line(points={{22,10},{30,10},{30,-70}, + {38,-70}}, color={0,0,127})); + connect(con2.y, der2.k) annotation (Line(points={{-18,-62},{38,-62}}, + color={0,0,127})); + connect(T.y, der2.T) annotation (Line(points={{22,-80},{34,-80},{34,-66},{38,-66}}, + color={0,0,127})); + connect(der1.y, sub.u1) annotation (Line(points={{62,50},{70,50},{70,42},{78,42}}, + color={0,0,127})); + connect(cos.y, sub.u2) annotation (Line(points={{-18,10},{-10,10},{-10,30},{78, + 30}}, color={0,0,127})); + connect(sub.y, abs.u) + annotation (Line(points={{102,36},{108,36}}, color={0,0,127})); + connect(abs.y, lesThr.u) + annotation (Line(points={{132,36},{138,36}}, color={0,0,127})); + connect(lesThr.y, assMes.u) + annotation (Line(points={{162,36},{168,36}}, color={255,0,255})); + connect(modTim.y, gai.u) + annotation (Line(points={{-88,10},{-82,10}}, color={0,0,127})); + connect(gai.y, cos.u) + annotation (Line(points={{-58,10},{-42,10}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-07), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Derivative.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Derivative. +The model integrates a time varying signal, and the differentiates this integrated signal. +Hence, the output der1.y matches the non-integrated signal intWitRes.u, +within a small approximation tolerance. +

+

+The instance der1 uses a varying input for T which controls the accuracy of +the derivative approximation. At the start of the simulation, T is small and hence +the output der1.y matches the signal intWitRes.u well. +As expected, the approximation error increases with increasing der1.T. +

+

+The instance der2 uses a gain of 2, and it initializes the output to 0. +Hence, there is a fast transient at the beginning, and afterwards the output matches der1.y = der2.y / 2. +

+", + revisions=" + +"), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram(coordinateSystem(extent={{-120,-100},{200,100}}))); +end Derivative; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Divide.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Divide.mo new file mode 100644 index 0000000000..39e79ca46b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Divide.mo @@ -0,0 +1,67 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Divide "Validation model for the Divide block" + IBPSA.Controls.OBC.CDL.Reals.Divide div1 + "Block that outputs first input divided by second input: u1/u2" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + height=2, + duration=1, + offset=1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,div1.u1) + annotation (Line(points={{-38,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,div1.u2) + annotation (Line(points={{-38,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Divide.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Divide. +

+

+The input u1 varies from -2 to +2, input u2 varies from +1 to +3. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Division to Divide.
    +This is for Buildings, issue 2865. +
  • +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Divide; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Exp.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Exp.mo new file mode 100644 index 0000000000..d2d001865f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Exp.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Exp + "Validation model for the Exp block" + IBPSA.Controls.OBC.CDL.Reals.Exp Exp1 + "Block that outputs the exponential (base e) of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,Exp1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Exp.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Exp. +

+

+The input u varies from 0.0 to +2. +

+", + revisions=" +
    +
  • +March 17, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Exp; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Greater.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Greater.mo new file mode 100644 index 0000000000..07a5550c46 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Greater.mo @@ -0,0 +1,79 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Greater + "Validation model for the Greater block" + IBPSA.Controls.OBC.CDL.Reals.Greater gre + "Greater block, without hysteresis" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Greater greHys(h=1) + "Greater block, with hysteresis" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram1( + height=5, + duration=10, + offset=-1.5) "Ramp source" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + amplitude=3, + freqHz=1/10, + offset=-2, + startTime=1) + "Sine source" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); +equation + connect(ram1.y, gre.u2) annotation (Line(points={{-18,-30},{20,-30},{20,22},{38, + 22}}, color={0,0,127})); + connect(ram1.y, greHys.u2) annotation (Line(points={{-18,-30},{20,-30},{20,-38}, + {38,-38}}, color={0,0,127})); + connect(sin.y, gre.u1) + annotation (Line(points={{-18,30},{38,30}}, color={0,0,127})); + connect(sin.y, greHys.u1) annotation (Line(points={{-18,30},{30,30},{30,-30},{ + 38,-30}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Greater.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Greater. +The instance gre has no hysteresis, and the +instance greHys has a hysteresis. +

+", +revisions=" +
    +
  • +March 14, 2023, by Jianjun Hu:
    +Changed the greater block input to avoid near zero crossing.
    +This is for + +issue 3294. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Updated model to add a test case with hysteresis. +
  • +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Greater; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mo new file mode 100644 index 0000000000..2d013ed070 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mo @@ -0,0 +1,70 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model GreaterThreshold + "Validation model for the GreaterThreshold block" + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold gre(t=2) + "Greater block, without hysteresis" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold greHys(t=2, h=1) + "Greater block, with hysteresis" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + amplitude=8, + freqHz=1/10, + offset=-2, + startTime=1) + "Sine source" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); +equation + connect(sin.y, gre.u) + annotation (Line(points={{-18,30},{38,30}}, color={0,0,127})); + connect(sin.y, greHys.u) annotation (Line(points={{-18,30},{20,30},{20,-20},{38, + -20}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/GreaterThreshold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold. +The instance gre has no hysteresis, and the +instance greHys has a hysteresis. +

+", + revisions=" +
    +
  • +March 14, 2023, by Jianjun Hu:
    +Changed the greater block input to avoid near zero crossing.
    +This is for + +issue 3294. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Updated model to add a test case with hysteresis. +
  • +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end GreaterThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Hysteresis.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Hysteresis.mo new file mode 100644 index 0000000000..8dce075b65 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Hysteresis.mo @@ -0,0 +1,99 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Hysteresis + "Validation model for the Hysteresis block" + IBPSA.Controls.OBC.CDL.Reals.Hysteresis hysteresis( + final uLow=0, + final uHigh=1) + "Transform Real to Boolean signal with Hysteresis" + annotation (Placement(transformation(extent={{50,30},{70,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis hysteresis1( + final uLow=0, + final uHigh=1, + final pre_y_start=true) + "Transform Real to Boolean signal with Hysteresis" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis hysteresis2( + final uLow=0+0.01, + final uHigh=1-0.01) + "Transform Real to Boolean signal with Hysteresis" + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + +protected + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + final duration=1, + final offset=0, + final height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-74,30},{-54,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sin sin1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gain1( + final k=2.5) + "Block that outputs the product of a gain value with the input signal" + annotation (Placement(transformation(extent={{10,30},{30,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + final amplitude=1, + final freqHz=10) + "Sine signal" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin2( + final amplitude=1, + final freqHz=5) + "Sine signal" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + +equation + connect(ramp1.y,sin1.u) + annotation (Line(points={{-52,40},{-32,40}},color={0,0,127})); + connect(sin1.y,gain1.u) + annotation (Line(points={{-8,40},{8,40}},color={0,0,127})); + connect(gain1.y,hysteresis.u) + annotation (Line(points={{32,40},{48,40}},color={0,0,127})); + connect(hysteresis2.u,sin2.y) + annotation (Line(points={{18,-40},{-18,-40}},color={0,0,127})); + connect(sin.y,hysteresis1.u) + annotation (Line(points={{-18,0},{18,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Hysteresis.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Hysteresis. +

+", + revisions=" +
    +
  • +March 14, 2023, by Jianjun Hu:
    +Changed the greater block input to avoid near zero crossing.
    +This is for + +issue 3294. +
  • +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Hysteresis; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mo new file mode 100644 index 0000000000..335df90b42 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mo @@ -0,0 +1,101 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model IntegratorWithReset + "Test model for integrator with reset" + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intDef(final + y_start=-2) + "Integrator with default values" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes1(final + y_start=-2, + final k=0.5) + "Integrator with reset" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes2( + final y_start=-5, + final k=0.5) + "Integrator with reset and y_reset = 2" + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant cons( + final k=10) + "Constant as source term" + annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booleanPulse( + final width=0.5, + final period=0.2) + "Boolean pulse" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger sampleTrigger( + final period=0.2) + "Sample trigger" + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp( + final height=-1, + final duration=1, + final offset=-2) + "Ramp as a source term" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + +equation + connect(cons.y,intWitRes1.u) + annotation (Line(points={{-38,70},{-20,70},{-20,30},{-2,30}},color={0,0,127})); + connect(cons.y,intWitRes2.u) + annotation (Line(points={{-38,70},{-20,70},{-20,-10},{-2,-10}},color={0,0,127})); + connect(sampleTrigger.y,intWitRes1.trigger) + annotation (Line(points={{-38,10},{10,10},{10,18}},color={255,0,255})); + connect(booleanPulse.y,intWitRes2.trigger) + annotation (Line(points={{-38,-70},{10,-70},{10,-22}},color={255,0,255})); + connect(ramp.y,intWitRes2.y_reset_in) + annotation (Line(points={{-38,-30},{-14,-30},{-14,-18},{-2,-18}},color={0,0,127})); + connect(cons.y,intDef.u) + annotation (Line(points={{-38,70},{-2,70}},color={0,0,127})); + connect(ramp.y,intWitRes1.y_reset_in) + annotation (Line(points={{-38,-30},{-14,-30},{-14,22},{-2,22}},color={0,0,127})); + connect(ramp.y,intDef.y_reset_in) + annotation (Line(points={{-38,-30},{-14,-30},{-14,62},{-2,62}},color={0,0,127})); + connect(sampleTrigger.y,intDef.trigger) + annotation (Line(points={{-38,10},{-26,10},{-26,52},{10,52},{10,58}},color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/IntegratorWithReset.mos" "Simulate and plot"), + Documentation( + info=" +

+This model tests the implementation of + +IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset +with and without reset, and with different start values +and reset values. +

+

+The integrator intWitRes1 is triggered by a sample trigger +which becomes true at t=0, while intWitRes2 is triggered +by a boolean pulse with is true at t=0. +Hence, intWitRes1 starts with y(0)=y_reset while +intWitRes2 starts with y(0)=y_start. +

+", + revisions=" +
    +
  • +March 23, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end IntegratorWithReset; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Less.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Less.mo new file mode 100644 index 0000000000..6736c4b131 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Less.mo @@ -0,0 +1,81 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Less + "Validation model for the Less block" + IBPSA.Controls.OBC.CDL.Reals.Less les + "Less block, without hysteresis" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Less lesHys( + h=1) + "Less block, with hysteresis" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + amplitude=3, + freqHz=1/10, + offset=-2, + startTime=1) + "Sine source" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram1( + height=5, + duration=10, + offset=-2) + "Ramp source" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); +equation + connect(sin.y, les.u1) + annotation (Line(points={{-18,40},{18,40}}, color={0,0,127})); + connect(sin.y, lesHys.u1) annotation (Line(points={{-18,40},{0,40},{0,-20},{18, + -20}}, color={0,0,127})); + connect(ram1.y, les.u2) annotation (Line(points={{-18,-20},{-10,-20},{-10,32}, + {18,32}}, color={0,0,127})); + connect(ram1.y, lesHys.u2) annotation (Line(points={{-18,-20},{-10,-20},{-10,-28}, + {18,-28}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Less.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Less. +The instance les has no hysteresis, and the +instance lesHys has a hysteresis. +

+", + revisions=" +
    +
  • +March 14, 2023, by Jianjun Hu:
    +Changed the greater block input to avoid near zero crossing.
    +This is for + +issue 3294. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Updated model to add a test case with hysteresis. +
  • +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Less; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/LessThreshold.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/LessThreshold.mo new file mode 100644 index 0000000000..6637c59322 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/LessThreshold.mo @@ -0,0 +1,70 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model LessThreshold + "Validation model for the LessThreshold block" + IBPSA.Controls.OBC.CDL.Reals.LessThreshold les(t=2) + "Less block, without hysteresis" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.LessThreshold lesHys(t=2, h=1) + "Less block, with hysteresis" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sin( + amplitude=8, + freqHz=1/10, + offset=-2, + startTime=1) + "Sine source" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); +equation + connect(sin.y, les.u) + annotation (Line(points={{-18,30},{18,30}}, color={0,0,127})); + connect(sin.y, lesHys.u) annotation (Line(points={{-18,30},{0,30},{0,-20},{18, + -20}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LessThreshold.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.LessThreshold. +The instance les has no hysteresis, and the +instance lesHys has a hysteresis. +

+", + revisions=" +
    +
  • +March 14, 2023, by Jianjun Hu:
    +Changed the greater block input to avoid near zero crossing.
    +This is for + +issue 3294. +
  • +
  • +August 5, 2020, by Michael Wetter:
    +Updated model to add a test case with hysteresis. +
  • +
  • +April 1, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end LessThreshold; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mo new file mode 100644 index 0000000000..f3e253f17d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mo @@ -0,0 +1,166 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model LimitSlewRate "Validation model for the LimitSlewRate block" + IBPSA.Controls.OBC.CDL.Reals.LimitSlewRate sleRatLim( + raisingSlewRate=1/30) + "Block that limit the increase or decrease rate of input" + annotation (Placement(transformation(extent={{70,-10},{90,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + offset=0, + height=1.5, + duration=20, + startTime=10) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,100},{-60,120}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + offset=0, + height=-1.5, + startTime=60, + duration=20) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add + "Signal adder" + annotation (Placement(transformation(extent={{-40,80},{-20,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp3( + offset=0, + height=-1.5, + duration=30, + startTime=120+60) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp4( + offset=0, + height=1.5, + duration=30, + startTime=120) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp5( + offset=0, + height=-1.5, + startTime=240+60, + duration=40) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp6( + offset=0, + height=1.5, + startTime=240, + duration=40) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add1 + "Signal adder" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add2 + "Signal adder" + annotation (Placement(transformation(extent={{-40,-48},{-20,-28}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp7( + offset=0, + height=-1.5, + duration=50, + startTime=360+60) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-130},{-60,-110}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp8( + offset=0, + height=1.5, + duration=50, + startTime=360) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-80,-100},{-60,-80}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add3 + "Signal adder" + annotation (Placement(transformation(extent={{-40,-120},{-20,-100}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add4 + "Signal adder" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add5 + "Signal adder" + annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add6 + "Signal adder" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + +equation + connect(ramp1.y,add.u1) + annotation (Line(points={{-58,110},{-46,110},{-46,96},{-42,96}},color={0,0,127})); + connect(ramp2.y,add.u2) + annotation (Line(points={{-58,80},{-52,80},{-52,84},{-42,84}},color={0,0,127})); + connect(ramp4.y,add1.u1) + annotation (Line(points={{-58,50},{-50,50},{-50,36},{-42,36}},color={0,0,127})); + connect(ramp3.y,add1.u2) + annotation (Line(points={{-58,20},{-50,20},{-50,24},{-42,24}},color={0,0,127})); + connect(ramp6.y,add2.u1) + annotation (Line(points={{-58,-20},{-50,-20},{-50,-32},{-42,-32}},color={0,0,127})); + connect(ramp5.y,add2.u2) + annotation (Line(points={{-58,-50},{-50,-50},{-50,-44},{-42,-44}},color={0,0,127})); + connect(ramp8.y,add3.u1) + annotation (Line(points={{-58,-90},{-50,-90},{-50,-104},{-42,-104}},color={0,0,127})); + connect(ramp7.y,add3.u2) + annotation (Line(points={{-58,-120},{-50,-120},{-50,-116},{-42,-116}},color={0,0,127})); + connect(add.y,add4.u1) + annotation (Line(points={{-18,90},{-12,90},{-12,66},{-2,66}},color={0,0,127})); + connect(add1.y,add4.u2) + annotation (Line(points={{-18,30},{-10,30},{-10,54},{-2,54}},color={0,0,127})); + connect(add2.y,add5.u1) + annotation (Line(points={{-18,-38},{-10,-38},{-10,-64},{-2,-64}},color={0,0,127})); + connect(add3.y,add5.u2) + annotation (Line(points={{-18,-110},{-12,-110},{-12,-76},{-2,-76}},color={0,0,127})); + connect(add4.y,add6.u1) + annotation (Line(points={{22,60},{24,60},{24,6},{38,6}},color={0,0,127})); + connect(add5.y,add6.u2) + annotation (Line(points={{22,-70},{24,-70},{24,-6},{38,-6}},color={0,0,127})); + connect(sleRatLim.u,add6.y) + annotation (Line(points={{68,0},{68,0},{62,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=480, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/LimitSlewRate.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.LimitSlewRate. +

+

+The input ramp1.u varies from 0 to +1.5, +in 1 s. +

+

+The increase and decrease rate limits are [increase/incDt, -decrease/decDt] , which is [1, -1] here. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from SlewRateLimiter to LimitSlewRate.
    +This is for Buildings, issue 2865. +
  • +
  • +March 29, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Diagram( + coordinateSystem( + extent={{-100,-140},{100,140}})), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end LimitSlewRate; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Limiter.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Limiter.mo new file mode 100644 index 0000000000..a4ce6c979a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Limiter.mo @@ -0,0 +1,57 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Limiter + "Validation model for the Limiter block" + IBPSA.Controls.OBC.CDL.Reals.Limiter limiter1( + uMax=2.5, + uMin=1.2) + "Block that limit the range of a signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,limiter1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Limiter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Limiter. +

+

+The input u varies from 0.0 to +2. +

+", + revisions=" +
    +
  • +March 20, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Limiter; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Line.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Line.mo new file mode 100644 index 0000000000..57be9565b4 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Line.mo @@ -0,0 +1,128 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Line + "Validation model for the Line block" + IBPSA.Controls.OBC.CDL.Reals.Line line1 + "Block that out the value of the input x along a line specified by two points" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant x1( + k=1.0) + "Block that generate x1" + annotation (Placement(transformation(extent={{-60,52},{-40,72}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant f1( + k=0.5) + "Block that generate f(x1)" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant x2( + k=2.0) + "Block that generate x2" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant f2( + k=1.5) + "Block that generate f(x2)" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + offset=0, + duration=0.5, + startTime=0.25, + height=3) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Line line2( + limitAbove=true, + limitBelow=false) + "Block that out the value of the input x along a line specified by two points" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Line line3( + limitBelow=true, + limitAbove=false) + "Block that out the value of the input x along a line specified by two points" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); + +equation + connect(ramp1.y,line1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + connect(f1.y,line1.f1) + annotation (Line(points={{-39,30},{-24,30},{-24,4},{-12,4}},color={0,0,127})); + connect(x1.y,line1.x1) + annotation (Line(points={{-39,62},{-26,62},{-26,8},{-12,8}},color={0,0,127})); + connect(x2.y,line1.x2) + annotation (Line(points={{-39,-30},{-24,-30},{-24,-4},{-12,-4}},color={0,0,127})); + connect(f2.y,line1.f2) + annotation (Line(points={{-39,-60},{-26,-60},{-26,-8},{-12,-8}},color={0,0,127})); + connect(ramp1.y,line2.u) + annotation (Line(points={{-39,0},{-36,0},{-36,-30},{-12,-30}},color={0,0,127})); + connect(f1.y,line2.f1) + annotation (Line(points={{-39,30},{-24,30},{-24,-26},{-12,-26}},color={0,0,127})); + connect(x1.y,line2.x1) + annotation (Line(points={{-39,62},{-26,62},{-26,-22},{-12,-22}},color={0,0,127})); + connect(x2.y,line2.x2) + annotation (Line(points={{-39,-30},{-24,-30},{-24,-34},{-12,-34}},color={0,0,127})); + connect(f2.y,line2.f2) + annotation (Line(points={{-39,-60},{-26,-60},{-26,-38},{-12,-38}},color={0,0,127})); + connect(ramp1.y,line3.u) + annotation (Line(points={{-39,0},{-36,0},{-36,-60},{-12,-60}},color={0,0,127})); + connect(f1.y,line3.f1) + annotation (Line(points={{-39,30},{-24,30},{-24,-56},{-12,-56}},color={0,0,127})); + connect(x1.y,line3.x1) + annotation (Line(points={{-39,62},{-26,62},{-26,-52},{-12,-52}},color={0,0,127})); + connect(x2.y,line3.x2) + annotation (Line(points={{-39,-30},{-24,-30},{-24,-64},{-12,-64}},color={0,0,127})); + connect(f2.y,line3.f2) + annotation (Line(points={{-39,-60},{-26,-60},{-26,-68},{-12,-68}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Line.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Line. +

+

+The input u varies from 0.0 to +2. +

+

+The block outputs y = a + b u, +where +u is an input +and the coefficients a and b +are determined so that the line intercepts the two input points +specified by the two points x1 and f1, +and x2 and f2. +

+

+The parameters limitBelow and limitAbove +determine whether x1 and x2 are also used +to limit the input u. +

+", + revisions=" +
    +
  • +March 25, 2018, by Michael Wetter:
    +Improved test to validate that the limits are properly used. +
  • +
  • +March 20, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Line; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Log.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Log.mo new file mode 100644 index 0000000000..52b138963a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Log.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Log + "Validation model for the Log block" + IBPSA.Controls.OBC.CDL.Reals.Log log1 + "Block that outputs the natural (base e) logarithm of the input (input > 0 required)" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=1, + height=5) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,log1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Log. +

+

+The input u varies from +1 to +6. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Log; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Log10.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Log10.mo new file mode 100644 index 0000000000..9a844dc8a0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Log10.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Log10 + "Validation model for the Log10 block" + IBPSA.Controls.OBC.CDL.Reals.Log10 log10_1 + "Block that outputs the base 10 logarithm of the input (input > 0 required)" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=1, + height=9) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,log10_1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Log10.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Log10. +

+

+The input u varies from +1 to +10. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Log10; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixGain.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixGain.mo new file mode 100644 index 0000000000..322ffab0a3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixGain.mo @@ -0,0 +1,84 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MatrixGain + "Validation model for the MatrixGain block" + IBPSA.Controls.OBC.CDL.Reals.MatrixGain matGai( + K=[ + 1,0; + 1,1; + 1,2]) + "Block that outputs the product of a matrix gain value with the input signal" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixGain matGai1( + K=[ + 1,2; + 3,4]) + "Block that outputs the product of a matrix gain value with the input signal" + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp( + duration=1, + offset=0, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + Reals.Sources.Ramp ramp2( + duration=1, + offset=0, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + +equation + connect(ramp2.y,matGai1.u[2]) + annotation (Line(points={{-19,-60},{0,-60},{0,-40},{18,-40}},color={0,0,127})); + connect(ramp1.y,matGai1.u[1]) + annotation (Line(points={{-19,-20},{0,-20},{0,-40},{18,-40}},color={0,0,127})); + connect(ramp.y,matGai.u[1]) + annotation (Line(points={{-19,40},{18,40}},color={0,0,127})); + connect(ramp.y,matGai.u[2]) + annotation (Line(points={{-19,40},{18,40}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixGain.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MatrixGain. +

+

+The input vector output two identical values u[1] and +u[2] that vary from 0.0 to +2. +

+", + revisions=" +
    +
  • +February 11, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MatrixGain; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMax.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMax.mo new file mode 100644 index 0000000000..43d5ad8d6f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMax.mo @@ -0,0 +1,75 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MatrixMax + "Validation model for the MatrixMax block" + Reals.Sources.Constant con[3,3]( + k={{1,2,3},{6,4,2},{3,9,6}}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + Reals.Sources.Constant con1[2,3]( + k={{1,4,3},{2,2,6}}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Reals.Sources.Constant con2[2,3]( + k={{1,2,3},{6,4,2}}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixMax matMax( + rowMax=false, + nRow=3, + nCol=3) + "Matrix maximum" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixMax matMax1( + nCol=3, + nRow=2) + "Matrix maximum" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixMax matMax2( + nCol=3, + nRow=2) + "Matrix maximum" + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); + +equation + connect(con.y,matMax.u) + annotation (Line(points={{-19,60},{-2,60}},color={0,0,127})); + connect(con1.y,matMax1.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(con2.y,matMax2.u) + annotation (Line(points={{-19,-60},{-2,-60}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMax.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MatrixMax. +

+", + revisions=" +
    +
  • +May 17, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MatrixMax; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMin.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMin.mo new file mode 100644 index 0000000000..66a71fe46e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MatrixMin.mo @@ -0,0 +1,77 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MatrixMin + "Validation model for the MatrixMin block" + Reals.Sources.Constant con[3,3]( + k={{-1,-2,-3},{-6,-4,-2},{-3,-9,-6}}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + Reals.Sources.Constant con1[2,3]( + k={{-1,-4,-3},{-2,-2,-6}}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Reals.Sources.Constant con2[2,3]( + k={{-1,-2,-3},{-6,-4,-2}}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixMin matMin( + nRow=3, + nCol=3, + rowMin=false) + "Matrix minimum" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixMin matMin1( + nCol=3, + rowMin=false, + nRow=2) + "Matrix minimum" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.MatrixMin matMin2( + nCol=3, + rowMin=true, + nRow=2) + "Matrix minimum" + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); + +equation + connect(con.y,matMin.u) + annotation (Line(points={{-19,60},{-2,60}},color={0,0,127})); + connect(con1.y,matMin1.u) + annotation (Line(points={{-19,0},{-2,0}},color={0,0,127})); + connect(con2.y,matMin2.u) + annotation (Line(points={{-19,-60},{-2,-60}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MatrixMin.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MatrixMin. +

+", + revisions=" +
    +
  • +May 17, 2019, by Milica Grahovac:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MatrixMin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Max.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Max.mo new file mode 100644 index 0000000000..82660df86d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Max.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Max + "Validation model for the Max block" + IBPSA.Controls.OBC.CDL.Reals.Max max1 + "Block that pass through the largest signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,max1.u1) + annotation (Line(points={{-39,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,max1.u2) + annotation (Line(points={{-39,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Max.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Max. +

+

+The input u1 varies from -2 to +2, input u2 varies from -1 to +1. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Max; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Min.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Min.mo new file mode 100644 index 0000000000..7ff7169fc0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Min.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Min + "Validation model for the Min block" + IBPSA.Controls.OBC.CDL.Reals.Min min1 + "Block that pass through the smallest signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,min1.u1) + annotation (Line(points={{-39,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,min1.u2) + annotation (Line(points={{-39,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Min.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Min. +

+

+The input u1 varies from -2 to +2, input u2 varies from -1 to +1. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Min; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Modulo.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Modulo.mo new file mode 100644 index 0000000000..23a527bc88 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Modulo.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Modulo + "Validation model for the Modulo block" + IBPSA.Controls.OBC.CDL.Reals.Modulo mod1 + "Block that outputs the remainder of first input divided by second input (~=0)" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=6) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=1.5, + height=3.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,mod1.u1) + annotation (Line(points={{-39,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,mod1.u2) + annotation (Line(points={{-39,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Modulo.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Modulo. +

+

+The input u1 varies from -2.0 to +6.0, input u2 varies from +1.5 to +4.5 +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Modulo; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage.mo new file mode 100644 index 0000000000..1f7d2a7f8a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage.mo @@ -0,0 +1,113 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MovingAverage "Validation model for the MovingAverage block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sinInpNoDel( + freqHz=1/80) "Start from zero second" + annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve1(delta=100) + "Moving average with 100 s sliding window" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve2(delta=200) + "Moving average with 200 s sliding window" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve3(delta=300) + "Moving average with 300 s sliding window" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve4(delta=400) + "Moving average with 400 s sliding window" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve5(delta=500) + "Moving average with 500 s sliding window" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sinInp50sDel( + freqHz=1/80, + startTime=50) + "Start from 50 seconds" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve6(delta=100) + "Moving average with 100 s sliding window" + annotation (Placement(transformation(extent={{60,50},{80,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve7(delta=200) + "Moving average with 200 s sliding window" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin sinInp100sDel( + freqHz=1/80, + startTime=100) + "Start from 100 seconds" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve8(delta=100) + "Moving average with 100 s sliding window" + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve9(delta=200) + "Moving average with 200 s sliding window" + annotation (Placement(transformation(extent={{60,-60},{80,-40}}))); + +equation + connect(sinInpNoDel.y,movAve3.u) + annotation (Line(points={{-69,60},{-60,60},{-60,0},{-42,0}},color={0,0,127})); + connect(sinInpNoDel.y,movAve1.u) + annotation (Line(points={{-69,60},{-42,60}},color={0,0,127})); + connect(sinInpNoDel.y,movAve2.u) + annotation (Line(points={{-69,60},{-60,60},{-60,30},{-42,30}},color={0,0,127})); + connect(sinInpNoDel.y,movAve5.u) + annotation (Line(points={{-69,60},{-60,60},{-60,-60},{-42,-60}},color={0,0,127})); + connect(sinInpNoDel.y,movAve4.u) + annotation (Line(points={{-69,60},{-60,60},{-60,-30},{-42,-30}},color={0,0,127})); + connect(sinInp50sDel.y,movAve6.u) + annotation (Line(points={{21,60},{21,60},{58,60}},color={0,0,127})); + connect(sinInp50sDel.y,movAve7.u) + annotation (Line(points={{21,60},{21,60},{40,60},{40,30},{58,30}},color={0,0,127})); + connect(sinInp100sDel.y,movAve9.u) + annotation (Line(points={{21,-20},{21,-20},{40,-20},{40,-50},{58,-50}},color={0,0,127})); + connect(sinInp100sDel.y,movAve8.u) + annotation (Line(points={{21,-20},{58,-20}},color={0,0,127})); + annotation ( + experiment( + StopTime=900.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MovingAverage. +

+

+The input sinInpNoDel, sinInp50sDel, +sinInp100sDel, generate sine outputs with same frequency of +1/80 Hz, but different start times of 0 second, +50 second, 100 second. +

+", +revisions=" +
    +
  • +March 17, 2023, by Michael Wetter:
    +Replaced blocks from Modelica Standard Library with CDL blocks. +
  • +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from MovingMean to MovingAverage.
    +This is for Buildings, issue 2865. +
  • +
  • +June 29, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MovingAverage; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mo new file mode 100644 index 0000000000..245206c99b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mo @@ -0,0 +1,106 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MovingAverage_nonZeroStart + "Validation model for the MovingAverage block" + Modelica.Blocks.Sources.Sine sinInpNoDel(f=1/80) "Start from zero second" + annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve1(delta=100) + "Moving average with 100 s sliding window" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve2(delta=200) + "Moving average with 200 s sliding window" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve3(delta=300) + "Moving average with 300 s sliding window" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve4(delta=400) + "Moving average with 400 s sliding window" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve5(delta=500) + "Moving average with 500 s sliding window" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + Modelica.Blocks.Sources.Sine sinInp50sDel(f=1/80, startTime=50) + "Start from 50 seconds" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve6(delta=100) + "Moving average with 100 s sliding window" + annotation (Placement(transformation(extent={{60,50},{80,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve7(delta=200) + "Moving average with 200 s sliding window" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Modelica.Blocks.Sources.Sine sinInp100sDel(f=1/80, startTime=100) + "Start from 100 seconds" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve8(delta=100) + "Moving average with 100 s sliding window" + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.MovingAverage movAve9(delta=200) + "Moving average with 200 s sliding window" + annotation (Placement(transformation(extent={{60,-60},{80,-40}}))); + +equation + connect(sinInpNoDel.y,movAve3.u) + annotation (Line(points={{-69,60},{-60,60},{-60,0},{-42,0}},color={0,0,127})); + connect(sinInpNoDel.y,movAve1.u) + annotation (Line(points={{-69,60},{-42,60}},color={0,0,127})); + connect(sinInpNoDel.y,movAve2.u) + annotation (Line(points={{-69,60},{-60,60},{-60,30},{-42,30}},color={0,0,127})); + connect(sinInpNoDel.y,movAve5.u) + annotation (Line(points={{-69,60},{-60,60},{-60,-60},{-42,-60}},color={0,0,127})); + connect(sinInpNoDel.y,movAve4.u) + annotation (Line(points={{-69,60},{-60,60},{-60,-30},{-42,-30}},color={0,0,127})); + connect(sinInp50sDel.y,movAve6.u) + annotation (Line(points={{21,60},{21,60},{58,60}},color={0,0,127})); + connect(sinInp50sDel.y,movAve7.u) + annotation (Line(points={{21,60},{21,60},{40,60},{40,30},{58,30}},color={0,0,127})); + connect(sinInp100sDel.y,movAve9.u) + annotation (Line(points={{21,-20},{21,-20},{40,-20},{40,-50},{58,-50}},color={0,0,127})); + connect(sinInp100sDel.y,movAve8.u) + annotation (Line(points={{21,-20},{58,-20}},color={0,0,127})); + annotation ( + experiment( + StartTime=100, + StopTime=900.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MovingAverage_nonZeroStart.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MovingAverage. +

+

+The inputs sinInpNoDel, sinInp50sDel and +sinInp100sDel generate sine outputs with the same frequency of +1/80 Hertz, but different start times of 0 seconds, +50 seconds and 100 seconds. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from MovingMean to MovingAverage.
    +This is for Buildings, issue 2865. +
  • +
  • +June 29, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MovingAverage_nonZeroStart; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMax.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMax.mo new file mode 100644 index 0000000000..14327a02f7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMax.mo @@ -0,0 +1,56 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MultiMax + "Validation model for the MultiMax block" + parameter Integer sizOfVec=5 + "Size of the input vector"; + IBPSA.Controls.OBC.CDL.Reals.MultiMax maxVal( + nin=sizOfVec) + "Block that outputs the maximum element of the input vector" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con[sizOfVec]( + k={1,2,3,4,5}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); + +equation + connect(con.y,maxVal.u) + annotation (Line(points={{-37,0},{-24.5,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMax.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MultiMax. +

+

+The input vectorcon has size 5 and its element values are {1,2,3,4,5}. +

+", + revisions=" +
    +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiMax; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMin.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMin.mo new file mode 100644 index 0000000000..a03a49f5bd --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiMin.mo @@ -0,0 +1,58 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MultiMin + "Validation model for the MultiMin block" + parameter Integer sizOfVec=5 + "Size of the input vector"; + IBPSA.Controls.OBC.CDL.Reals.MultiMin minVal( + nin=sizOfVec) + "Block that outputs the minimum element of the input vector" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con[sizOfVec]( + k={1,2,3,4,5}) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); + +equation + for i in 1:sizOfVec loop + connect(con[i].y,minVal.u[i]) + annotation (Line(points={{-37,0},{-24.5,0},{-12,0}},color={0,0,127})); + end for; + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiMin.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MultiMin. +

+

+The input vectorcon has size 5 and its element values are {1,2,3,4,5}. +

+", + revisions=" +
    +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiMin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiSum.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiSum.mo new file mode 100644 index 0000000000..eebdba0895 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiSum.mo @@ -0,0 +1,137 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MultiSum + "Model to validate the application of MultiSum block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + height=2, + duration=1, + offset=-1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp3( + height=3, + duration=1, + offset=-1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp4( + height=3, + duration=1, + offset=-2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp5( + height=3, + duration=1, + offset=-3) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiSum mulSum_5( + nin=5, + k={1,0.5,0.1,1,2}) + "Sum of Reals, y = k[1]*u[1] + k[2]*u[2] + ... + k[5]*u[5]" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiSum mulSum_2( + nin=2, + k={1,0.5}) + "Sum of Reals, y = k[1]*u[1] + k[2]*u[2]" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiSum mulSum_1( + nin=1, + k={1}) + "Sum of Reals, y = k[1]*u[1]" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiSum mulSum_3( + nin=3) + "Sum of Reals, y = k[1]*u[1] + k[2]*u[2]" + annotation (Placement(transformation(extent={{40,-92},{60,-72}}))); + +equation + connect(ramp1.y,mulSum_5.u[1]) + annotation (Line(points={{-39,60},{-39,60},{20,60},{20,-28.4},{38,-28.4}},color={0,0,127})); + connect(ramp2.y,mulSum_5.u[2]) + annotation (Line(points={{-39,30},{-39,30},{10,30},{10,-29.2},{38,-29.2}},color={0,0,127})); + connect(ramp3.y,mulSum_5.u[3]) + annotation (Line(points={{-39,0},{0,0},{0,-30},{38,-30}},color={0,0,127})); + connect(ramp4.y,mulSum_5.u[4]) + annotation (Line(points={{-39,-30},{-20,-30},{-20,-32},{10,-32},{10,-30.8},{38,-30.8}},color={0,0,127})); + connect(ramp5.y,mulSum_5.u[5]) + annotation (Line(points={{-39,-60},{20,-60},{20,-31.6},{38,-31.6}},color={0,0,127})); + connect(ramp1.y,mulSum_1.u[1]) + annotation (Line(points={{-39,60},{20,60},{20,50},{38,50}},color={0,0,127})); + connect(ramp1.y,mulSum_2.u[1]) + annotation (Line(points={{-39,60},{20,60},{20,11},{38,11}},color={0,0,127})); + connect(ramp2.y,mulSum_2.u[2]) + annotation (Line(points={{-39,30},{10,30},{10,9},{38,9}},color={0,0,127})); + connect(ramp4.y,mulSum_3.u[1]) + annotation (Line(points={{-39,-30},{-0.5,-30},{-0.5,-80.6667},{38,-80.6667}},color={0,0,127})); + connect(ramp5.y,mulSum_3.u[2]) + annotation (Line(points={{-39,-60},{0,-60},{0,-82},{38,-82}},color={0,0,127})); + connect(ramp5.y,mulSum_3.u[3]) + annotation (Line(points={{-39,-60},{0,-60},{0,-83.3333},{38,-83.3333}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiSum.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MultiSum. +

+

+The inputs and gains are configured as follows: +

+
    +
  • +u1 varies from -2 to +2, +with gain k = 1. +
  • +
  • +u2 varies from -1 to +1, +with gain k = 0.5. +
  • +
  • +u3 varies from -1 to +2, +with gain k = 0.1. +
  • +
  • +u4 varies from -2 to +1, +with gain k = 1. +
  • +
  • +u5 varies from -3 to 0, +with gain k = 2. +
  • +
+", + revisions=" +
    +
  • +June 28, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiSum; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Multiply.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Multiply.mo new file mode 100644 index 0000000000..2616dd9f62 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Multiply.mo @@ -0,0 +1,67 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Multiply "Validation model for the Multiply block" + IBPSA.Controls.OBC.CDL.Reals.Multiply product1 + "Block that outputs product of the two inputs" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1, + height=3) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y,product1.u1) + annotation (Line(points={{-38,20},{-26,20},{-26,6},{-12,6}},color={0,0,127})); + connect(ramp2.y,product1.u2) + annotation (Line(points={{-38,-20},{-26,-20},{-26,-6},{-12,-6}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Multiply.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Multiply. +

+

+The input u1 varies from -2 to +2, input u2 varies from -1 to +2. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Product to Multiply.
    +This is for Buildings, issue 2865. +
  • +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Multiply; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mo new file mode 100644 index 0000000000..692e9f4d0a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mo @@ -0,0 +1,59 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model MultiplyByParameter "Validation model for the Gain block" + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gain1(k=2.5) + "Block that outputs the product of a gain value with the input signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,gain1.u) + annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/MultiplyByParameter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter. +

+

+The input u varies from 0.0 to +2. +

+", +revisions=" +
    +
  • +January 27, 2022, by Jianjun Hu:
    +Renamed the block name from Gain to MultiplyByParameter.
    +This is for Buildings, issue 2865. +
  • +
  • +March 20, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end MultiplyByParameter; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/PID.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/PID.mo new file mode 100644 index 0000000000..6cdfe5ccca --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/PID.mo @@ -0,0 +1,122 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model PID + "Test model for PID controller" + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pulse( + period=0.25) + "Setpoint" + annotation (Placement(transformation(extent={{-90,14},{-70,34}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + Ti=1, + Td=1, + yMin=-1) + "PID controller" + annotation (Placement(transformation(extent={{-30,40},{-10,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant const( + k=0.5) + "Measurement data" + annotation (Placement(transformation(extent={{-90,-22},{-70,-2}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPI( + Ti=1, + Td=1, + yMin=-1, + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI) + "PI controller" + annotation (Placement(transformation(extent={{-30,2},{-10,22}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPD( + Ti=1, + Td=1, + yMin=-1, + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PD) + "PD controller" + annotation (Placement(transformation(extent={{-30,-30},{-10,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limP( + Ti=1, + Td=1, + yMin=-1, + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.P) + "P controller" + annotation (Placement(transformation(extent={{-30,-60},{-10,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.PID noLimPID( + Ti=1, + Td=1, + yMax=1e15, + yMin=-1e15, + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID) + "PID controller with no output limit" + annotation (Placement(transformation(extent={{-30,-90},{-10,-70}}))); + +equation + connect(pulse.y,limPID.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,50},{-32,50}},color={0,0,127})); + connect(const.y,limPID.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{-20,30},{-20,38}},color={0,0,127})); + connect(const.y,limPI.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-2},{-20,-2},{-20,0}},color={0,0,127})); + connect(const.y,limPD.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-34},{-20,-34},{-20,-32}},color={0,0,127})); + connect(pulse.y,limPI.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,12},{-32,12}},color={0,0,127})); + connect(pulse.y,limPD.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,-20},{-32,-20}},color={0,0,127})); + connect(pulse.y,limP.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,-50},{-32,-50}},color={0,0,127})); + connect(pulse.y,noLimPID.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,-80},{-32,-80}},color={0,0,127})); + connect(const.y,limP.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-64},{-20,-64},{-20,-62}},color={0,0,127})); + connect(const.y,noLimPID.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-96},{-20,-96},{-20,-92}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PID.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.PID. +This tests the different settings for the controller types. +

+", + revisions=" +
    +
  • +October 15, 2020, by Michael Wetter:
    +Removed instance limPIDOri which was identical to limPID. +
  • +
  • +March 24, 2017, by Jianjun Hu:
    +Added into CDL, simplified the validation model. +
  • +
  • +April 26, 2016, by Michael Wetter:
    +Relaxed tolerance of assertions from 1E-10 +to 1E-3 as the default relative tolerance in JModelica +is 1E-4. +This is for +Buildings, issue 510. +
  • +
  • +November 21, 2011, by Michael Wetter:
    +Added documentation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end PID; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mo new file mode 100644 index 0000000000..a2c17ea4cf --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mo @@ -0,0 +1,81 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model PIDInitialDerivativeOutput + "Test model for LimPID controller with initial output of the derivative term specified" + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant ySet( + k=0.75) + "Set point" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant yMea( + k=0.75) + "Measured value" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=3, + yd_start=0.2) + "PID controller" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPD( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PD, + k=3, + yd_start=0.2) + "PD controller" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + +equation + connect(ySet.y,limPID.u_s) + annotation (Line(points={{-18,40},{0,40},{0,30},{18,30}},color={0,0,127})); + connect(ySet.y,limPD.u_s) + annotation (Line(points={{-18,40},{0,40},{0,-30},{18,-30}},color={0,0,127})); + connect(yMea.y,limPID.u_m) + annotation (Line(points={{-18,10},{30,10},{30,18}},color={0,0,127})); + connect(yMea.y,limPD.u_m) + annotation (Line(points={{-18,10},{-4,10},{-4,-50},{30,-50},{30,-42}},color={0,0,127})); + annotation ( + experiment( + StopTime=0.2, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialDerivativeOutput.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.PID. +

+

+This model validates setting the initial output of the controller to a specified value. +Note that the control error must be zero for the initial output to be at the specified value. +See the description of + +IBPSA.Controls.OBC.CDL.Reals.PID. +

+", + revisions=" +
    +
  • +April 8, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}}))); +end PIDInitialDerivativeOutput; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mo new file mode 100644 index 0000000000..b2c1ea38e4 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mo @@ -0,0 +1,88 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model PIDInitialState + "Test model for LimPID controller with initial state specified" + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant ySet( + k=0.75) + "Set point" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant yMea( + k=0.5) + "Measured value" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=3, + xi_start=0.25) + "PID controller" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.PID limPI( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + k=3, + xi_start=0.25) + "PI controller" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + +equation + connect(ySet.y,limPID.u_s) + annotation (Line(points={{-18,40},{0,40},{0,30},{18,30}},color={0,0,127})); + connect(ySet.y,limPI.u_s) + annotation (Line(points={{-18,40},{0,40},{0,-30},{18,-30}},color={0,0,127})); + connect(yMea.y,limPID.u_m) + annotation (Line(points={{-18,10},{30,10},{30,18}},color={0,0,127})); + connect(yMea.y,limPI.u_m) + annotation (Line(points={{-18,10},{-4,10},{-4,-50},{30,-50},{30,-42}},color={0,0,127})); + annotation ( + experiment( + StopTime=1, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDInitialState.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.PID. +

+

+This model validates setting the initial state of the controller to a specified value. +

+

+The model sets the initial values xi_start=0.25 +of the integrator for both instances of the controller. +For the instance limPID, it also sets the initial value of the state of the +derivative block xd_start=-0.5. +The derivative block obtains as an input signal the value +u=-0.5 because the set point weight for the derivative action is wd=0. +Therefore, an initial state of x(t0)=-0.5 causes the state of the derivative +block to be at steady-state, because +dx(t)/dt = (u - x)/T. +

+", + revisions=" +
    +
  • +April 8, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}}))); +end PIDInitialState; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDScale.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDScale.mo new file mode 100644 index 0000000000..781841e085 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDScale.mo @@ -0,0 +1,120 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model PIDScale + "Test model for PID controller with scaling of the control error" + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pulse( + amplitude=1000, + period=50) + "Setpoint" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.PID pidSca( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=2, + Ti=1, + Td=2, + r=1000, + yMin=-1) + "PID controller with scaling of control input" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset pla1( + k=1000) + "Plant model" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + Reals.Sources.Constant resVal( + k=0) + "Reset value" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + Logical.Sources.Constant resSig( + k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID pidNoSca( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=2, + Ti=1, + Td=2, + yMin=-1) + "PID controller without scaling of control input" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=1/1000) + "Gain to scale setpoint" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=1/1000) + "Gain to scale measured value" + annotation (Placement(transformation(extent={{52,-90},{32,-70}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset pla2( + k=1000) + "Plant model" + annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); + +equation + connect(pulse.y,pidSca.u_s) + annotation (Line(points={{-58,50},{-2,50}},color={0,0,127})); + connect(pla1.u,pidSca.y) + annotation (Line(points={{38,50},{22,50}},color={0,0,127})); + connect(pla1.y,pidSca.u_m) + annotation (Line(points={{62,50},{82,50},{82,0},{10,0},{10,38}},color={0,0,127})); + connect(resVal.y,pla1.y_reset_in) + annotation (Line(points={{-58,10},{30,10},{30,42},{38,42}},color={0,0,127})); + connect(resSig.y,pla1.trigger) + annotation (Line(points={{-58,-30},{50,-30},{50,38}},color={255,0,255})); + connect(gai.y,pidNoSca.u_s) + annotation (Line(points={{-18,-50},{-2,-50}},color={0,0,127})); + connect(gai.u,pulse.y) + annotation (Line(points={{-42,-50},{-50,-50},{-50,50},{-60,50}},color={0,0,127})); + connect(pidNoSca.y,pla2.u) + annotation (Line(points={{22,-50},{38,-50}},color={0,0,127})); + connect(pla2.y,gai1.u) + annotation (Line(points={{62,-50},{70,-50},{70,-80},{54,-80}},color={0,0,127})); + connect(gai1.y,pidNoSca.u_m) + annotation (Line(points={{30,-80},{10,-80},{10,-60}},color={0,0,127})); + connect(pla2.y_reset_in,resVal.y) + annotation (Line(points={{38,-58},{30,-58},{30,10},{-60,10}},color={0,0,127})); + connect(resSig.y,pla2.trigger) + annotation (Line(points={{-58,-30},{26,-30},{26,-64},{50,-64},{50,-62}},color={255,0,255})); + annotation ( + experiment( + StopTime=100.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDScale.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.PID +with and without setting of the parameter that scales the control error. +

+

+The test has two combinations of a PID controller and a plant. +In PIDSca, the control error is scaled inside the controller, whereas +in the configuration that has PIDNoSca, the setpoint signal and the +measurement signal is scaled outside of the controller. +Both controllers and plants have the same trajectory, thereby validating that +the scaling is implemented correctly. +

+", + revisions=" + +"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end PIDScale; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mo new file mode 100644 index 0000000000..12186226f9 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mo @@ -0,0 +1,167 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model PIDWithReset + "Test model for LimPID controller with reset trigger" + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal setPoi + "Set point" + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.CivilTime modTim + "Civil time" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold greEquThr( + t=1) + "Outputs true after t=1" + annotation (Placement(transformation(extent={{-52,-70},{-32,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset limPIDPar( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=1, + Ti=1, + Td=1, + yMin=-1, + y_reset=0.5) + "Controller, reset to parameter value" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes1 + "Integrator whose output should be brought to the set point" + annotation (Placement(transformation(extent={{60,60},{80,80}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset limPIDInp( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=1, + Ti=1, + Td=1, + yMin=-1, + y_reset=0.75) + "Controller, reset to input value" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes2 + "Integrator whose output should be brought to the set point" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant resVal( + k=0) + "Reset value" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset limPIPar( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + k=1, + Ti=1, + Td=1, + yMin=-1, + y_reset=0.5) + "Controller, reset to parameter value" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes3 + "Integrator whose output should be brought to the set point" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset limPIInp( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + k=1, + Ti=1, + Td=1, + yMin=-1, + y_reset=0.75) + "Controller, reset to input value" + annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes4 + "Integrator whose output should be brought to the set point" + annotation (Placement(transformation(extent={{60,-80},{80,-60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + final k=false) + "Constant false" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + +equation + connect(limPIDPar.u_s,setPoi.y) + annotation (Line(points={{18,70},{6,70},{6,-30},{2,-30}},color={0,0,127})); + connect(intWitRes1.u,limPIDPar.y) + annotation (Line(points={{58,70},{42,70}},color={0,0,127})); + connect(intWitRes1.y,limPIDPar.u_m) + annotation (Line(points={{82,70},{90,70},{90,50},{30,50},{30,58}},color={0,0,127})); + connect(modTim.y,greEquThr.u) + annotation (Line(points={{-58,-60},{-54,-60}},color={0,0,127})); + connect(greEquThr.y,setPoi.u) + annotation (Line(points={{-30,-60},{-26,-60},{-26,-30},{-22,-30}},color={255,0,255})); + connect(greEquThr.y,limPIDPar.trigger) + annotation (Line(points={{-30,-60},{12,-60},{12,50},{24,50},{24,58}},color={255,0,255})); + connect(intWitRes2.u,limPIDInp.y) + annotation (Line(points={{58,30},{42,30}},color={0,0,127})); + connect(intWitRes2.y,limPIDInp.u_m) + annotation (Line(points={{82,30},{90,30},{90,10},{30,10},{30,18}},color={0,0,127})); + connect(limPIDInp.u_s,setPoi.y) + annotation (Line(points={{18,30},{6,30},{6,-30},{2,-30}},color={0,0,127})); + connect(limPIPar.u_s,setPoi.y) + annotation (Line(points={{18,-30},{2,-30}},color={0,0,127})); + connect(intWitRes3.u,limPIPar.y) + annotation (Line(points={{58,-30},{42,-30}},color={0,0,127})); + connect(intWitRes3.y,limPIPar.u_m) + annotation (Line(points={{82,-30},{90,-30},{90,-50},{30,-50},{30,-42}},color={0,0,127})); + connect(greEquThr.y,limPIPar.trigger) + annotation (Line(points={{-30,-60},{12,-60},{12,-50},{24,-50},{24,-42}},color={255,0,255})); + connect(intWitRes4.u,limPIInp.y) + annotation (Line(points={{58,-70},{42,-70}},color={0,0,127})); + connect(intWitRes4.y,limPIInp.u_m) + annotation (Line(points={{82,-70},{90,-70},{90,-90},{30,-90},{30,-82}},color={0,0,127})); + connect(limPIInp.u_s,setPoi.y) + annotation (Line(points={{18,-70},{6,-70},{6,-30},{2,-30}},color={0,0,127})); + connect(greEquThr.y,limPIInp.trigger) + annotation (Line(points={{-30,-60},{12,-60},{12,-90},{24,-90},{24,-82}},color={255,0,255})); + connect(limPIDInp.trigger,greEquThr.y) + annotation (Line(points={{24,18},{24,10},{12,10},{12,-60},{-30,-60}},color={255,0,255})); + connect(resVal.y,intWitRes1.y_reset_in) + annotation (Line(points={{-58,0},{48,0},{48,62},{58,62}},color={0,0,127})); + connect(resVal.y,intWitRes2.y_reset_in) + annotation (Line(points={{-58,0},{48,0},{48,22},{58,22}},color={0,0,127})); + connect(resVal.y,intWitRes3.y_reset_in) + annotation (Line(points={{-58,0},{48,0},{48,-38},{58,-38}},color={0,0,127})); + connect(resVal.y,intWitRes4.y_reset_in) + annotation (Line(points={{-58,0},{48,0},{48,-78},{58,-78}},color={0,0,127})); + connect(con.y,intWitRes1.trigger) + annotation (Line(points={{-58,40},{-20,40},{-20,-6},{54,-6},{54,54},{70,54},{70,58}},color={255,0,255})); + connect(con.y,intWitRes2.trigger) + annotation (Line(points={{-58,40},{-20,40},{-20,-6},{70,-6},{70,18}},color={255,0,255})); + connect(con.y,intWitRes3.trigger) + annotation (Line(points={{-58,40},{-20,40},{-20,-6},{54,-6},{54,-46},{70,-46},{70,-42}},color={255,0,255})); + connect(con.y,intWitRes4.trigger) + annotation (Line(points={{-58,40},{-20,40},{-20,-6},{54,-6},{54,-86},{70,-86},{70,-82}},color={255,0,255})); + annotation ( + experiment( + StopTime=10, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithReset.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.PID. +

+

+This model validates the controller for different settings of the control output reset. +

+", + revisions=" +
    +
  • +April 7, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}}))); +end PIDWithReset; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mo new file mode 100644 index 0000000000..06eac2deb7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mo @@ -0,0 +1,130 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model PIDWithResetScale + "Test model for PID controller with reset and scaling of the control error" + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pulse( + amplitude=1000, + period=50) + "Setpoint" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset pidSca( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=2, + Ti=1, + Td=2, + r=1000, + yMin=-1, + y_reset=0) + "PID controller with scaling of control input" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset pla1( + k=1000) + "Plant model" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + Reals.Sources.Constant resVal( + k=0) + "Reset value" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Logical.Sources.Constant resSig( + k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset pidNoSca( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=2, + Ti=1, + Td=2, + yMin=-1, + y_reset=0) + "PID controller without scaling of control input" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=1/1000) + "Gain to scale setpoint" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=1/1000) + "Gain to scale measured value" + annotation (Placement(transformation(extent={{52,-90},{32,-70}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset pla2( + k=1000) + "Plant model" + annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); + Logical.Sources.Pulse booPul( + period=30) + "Pulse for controller reset" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + +equation + connect(pulse.y,pidSca.u_s) + annotation (Line(points={{-58,70},{-30,70},{-30,50},{-2,50}},color={0,0,127})); + connect(pla1.u,pidSca.y) + annotation (Line(points={{38,50},{22,50}},color={0,0,127})); + connect(pla1.y,pidSca.u_m) + annotation (Line(points={{62,50},{82,50},{82,0},{10,0},{10,38}},color={0,0,127})); + connect(resVal.y,pla1.y_reset_in) + annotation (Line(points={{-58,0},{30,0},{30,42},{38,42}},color={0,0,127})); + connect(resSig.y,pla1.trigger) + annotation (Line(points={{-58,-30},{50,-30},{50,38}},color={255,0,255})); + connect(gai.y,pidNoSca.u_s) + annotation (Line(points={{-18,-50},{-2,-50}},color={0,0,127})); + connect(gai.u,pulse.y) + annotation (Line(points={{-42,-50},{-50,-50},{-50,70},{-58,70}},color={0,0,127})); + connect(pidNoSca.y,pla2.u) + annotation (Line(points={{22,-50},{38,-50}},color={0,0,127})); + connect(pla2.y,gai1.u) + annotation (Line(points={{62,-50},{70,-50},{70,-80},{54,-80}},color={0,0,127})); + connect(gai1.y,pidNoSca.u_m) + annotation (Line(points={{30,-80},{10,-80},{10,-60}},color={0,0,127})); + connect(pla2.y_reset_in,resVal.y) + annotation (Line(points={{38,-58},{30,-58},{30,0},{-58,0}},color={0,0,127})); + connect(resSig.y,pla2.trigger) + annotation (Line(points={{-58,-30},{26,-30},{26,-64},{50,-64},{50,-62}},color={255,0,255})); + connect(booPul.y,pidSca.trigger) + annotation (Line(points={{-58,30},{4,30},{4,38}},color={255,0,255})); + connect(booPul.y,pidNoSca.trigger) + annotation (Line(points={{-58,30},{-10,30},{-10,-72},{4,-72},{4,-62}},color={255,0,255})); + annotation ( + experiment( + StopTime=100.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/PIDWithResetScale.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.PIDWithReset +with and without setting of the parameter that scales the control error. +

+

+The test has two combinations of a PID controller and a plant. +In PIDSca, the control error is scaled inside the controller, whereas +in the configuration that has PIDNoSca, the setpoint signal and the +measurement signal is scaled outside of the controller. +Both controllers and plants have the same trajectory, thereby validating that +the scaling is implemented correctly. +

+", + revisions=" + +"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end PIDWithResetScale; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Ramp.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Ramp.mo new file mode 100644 index 0000000000..e51c1e8ea6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Ramp.mo @@ -0,0 +1,127 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Ramp "Validation model for the Ramp block" + + IBPSA.Controls.OBC.CDL.Reals.Ramp ramUp( + final raisingSlewRate=1/20) + "Ramp the input increasing" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Ramp ramUp1( + final raisingSlewRate=1/10) + "Ramp the input increasing in different speed" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Ramp ramUpDow( + final raisingSlewRate=1/5) + "Limit the increase and decrease of the input if the active is true" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Ramp ramUpDow1( + final raisingSlewRate=1/5, + final fallingSlewRate=-1/2) + "Different increase and decrease slew rate limits" + annotation (Placement(transformation(extent={{80,-10},{100,10}}))); + + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + final width=0.9, + final period=12, + final shift=1) + "Boolean pulse" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul( + final width=0.8, + final period=12.0, + final shift=2.0) + "Boolean pulse" + annotation (Placement(transformation(extent={{-100,70},{-80,90}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( + final width=0.9, + final period=12, + final shift=2) + "Boolean pulse" + annotation (Placement(transformation(extent={{-100,-100},{-80,-80}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul1( + final width=0.2, + final period=12.0, + final shift=1.5) + "Boolean pulse" + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul2( + final width=0.3, + final period=12.0, + final shift=3.0) + "Boolean pulse" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul5( + final width=0.9, + final period=12, + final shift=1) + "Boolean pulse" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); +equation + connect(booPul2.y, ramUpDow.active) annotation (Line(points={{-78,-90},{-60,-90}, + {-60,-68},{-42,-68}}, color={255,0,255})); + connect(booPul5.y, ramUpDow1.active) annotation (Line(points={{42,-30},{70, + -30},{70,-8},{78,-8}}, + color={255,0,255})); + connect(pul.y, ramUp.u) annotation (Line(points={{-78,80},{-60,80},{-60,80},{-42, + 80}}, color={0,0,127})); + connect(pul.y, ramUp1.u) annotation (Line(points={{-78,80},{-60,80},{-60,20},{ + -42,20}}, color={0,0,127})); + connect(booPul1.y, ramUp.active) annotation (Line(points={{-78,30},{-70,30},{-70, + 72},{-42,72}}, color={255,0,255})); + connect(booPul1.y, ramUp1.active) annotation (Line(points={{-78,30},{-70,30},{ + -70,12},{-42,12}}, color={255,0,255})); + connect(pul1.y, ramUpDow.u) annotation (Line(points={{-78,-30},{-60,-30},{-60, + -60},{-42,-60}}, color={0,0,127})); + connect(pul2.y, ramUpDow1.u) + annotation (Line(points={{42,30},{70,30},{70,0},{78,0}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Ramp.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Ramp. +

+
    +
  • +The instances ramUp and ramUp1 shows ramping up the +input in different speed. +
  • +
  • +The instance ramUpDow shows ramping up and down the input in +the same speed. It also shows that the output will be the ramped input if +the boolean input active is true. +
  • +
  • +The instance ramUpDow1 shows ramping up and down the input in +the different speed. +
  • +
+", +revisions=" +
    +
  • +November 16, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram(coordinateSystem(extent={{-120,-140},{120,140}}))); +end Ramp; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Round.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Round.mo new file mode 100644 index 0000000000..12a6ff7f1d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Round.mo @@ -0,0 +1,76 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Round + "Validation model for the Round block" + IBPSA.Controls.OBC.CDL.Reals.Round round1( + n=0) + "Round real number to given digits" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-3.5, + height=7.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round2( + n=1) + "Round real number to given digits" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Round round3( + n=-1) + "Round real number to given digits" + annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=0.1) "Gain" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=10) "Gain" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + +equation + connect(ramp1.y,round1.u) + annotation (Line(points={{-39,0},{-20,0},{-20,50},{38,50}},color={0,0,127})); + connect(ramp1.y,gai.u) + annotation (Line(points={{-39,0},{-20,0},{-2,0}},color={0,0,127})); + connect(round2.u,gai.y) + annotation (Line(points={{38,0},{21,0}},color={0,0,127})); + connect(ramp1.y,gai1.u) + annotation (Line(points={{-39,0},{-20,0},{-20,-50},{-2,-50}},color={0,0,127})); + connect(round3.u,gai1.y) + annotation (Line(points={{38,-50},{30,-50},{21,-50}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Round.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Round. +

+

+The input u varies from -3.5 to +3.5. +

+", + revisions=" +
    +
  • +September 14, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Round; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Sin.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Sin.mo new file mode 100644 index 0000000000..e6a3d40070 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Sin.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Sin + "Validation model for the Sin block" + IBPSA.Controls.OBC.CDL.Reals.Sin sin1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=6.2831852) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,sin1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sin.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sin. +

+

+The input u varies from 0.0 to +2π. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Sin; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Sort.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Sort.mo new file mode 100644 index 0000000000..b405676561 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Sort.mo @@ -0,0 +1,109 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Sort + "Validation model for the Sort block" + IBPSA.Controls.OBC.CDL.Reals.Sort sorAsc( + nin=5) + "Block that sorts signals in ascending order" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,56},{-40,76}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=1, + offset=-1, + height=3) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,22},{-40,42}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp3( + duration=1, + offset=2, + height=-4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp4( + duration=1, + offset=3, + height=-1) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-42},{-40,-22}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp5( + duration=1, + offset=0, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-74},{-40,-54}}))); + IBPSA.Controls.OBC.CDL.Reals.Sort sorDes( + nin=5, + ascending=false) + "Block that sorts signals in ascending order" + annotation (Placement(transformation(extent={{0,-40},{20,-20}}))); + +equation + connect(ramp1.y,sorAsc.u[1]) + annotation (Line(points={{-39,66},{-22,66},{-22,28.4},{-2,28.4}},color={0,0,127})); + connect(ramp2.y,sorAsc.u[2]) + annotation (Line(points={{-39,32},{-20,32},{-20,29.2},{-2,29.2}},color={0,0,127})); + connect(ramp3.y,sorAsc.u[3]) + annotation (Line(points={{-39,0},{-22,0},{-22,30},{-2,30}},color={0,0,127})); + connect(ramp4.y,sorAsc.u[4]) + annotation (Line(points={{-39,-32},{-22,-32},{-22,30.8},{-2,30.8}},color={0,0,127})); + connect(ramp5.y,sorAsc.u[5]) + annotation (Line(points={{-39,-64},{-20,-64},{-20,31.6},{-2,31.6}},color={0,0,127})); + connect(ramp1.y,sorDes.u[1]) + annotation (Line(points={{-39,66},{-22,66},{-22,-31.6},{-2,-31.6}},color={0,0,127})); + connect(ramp2.y,sorDes.u[2]) + annotation (Line(points={{-39,32},{-20,32},{-20,-30.8},{-2,-30.8}},color={0,0,127})); + connect(ramp3.y,sorDes.u[3]) + annotation (Line(points={{-39,0},{-22,0},{-22,-30},{-2,-30}},color={0,0,127})); + connect(ramp4.y,sorDes.u[4]) + annotation (Line(points={{-39,-32},{-22,-32},{-22,-29.2},{-2,-29.2}},color={0,0,127})); + connect(ramp5.y,sorDes.u[5]) + annotation (Line(points={{-39,-64},{-20,-64},{-20,-28.4},{-2,-28.4}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sort.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sort. +

+

+The input u1 varies from -2 to +2, input u2 varies from -1 to +2, +input u3 varies from +2 to -2, input u4 varies from +3 to +2, +input u5 varies from 0 to +4, +

+", + revisions=" +
    +
  • +September 14, 2017, by Jianjun Hu:
    +Changed model name. +
  • +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Sort; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Sqrt.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Sqrt.mo new file mode 100644 index 0000000000..0b476f6938 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Sqrt.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Sqrt + "Validation model for the Sqrt block" + IBPSA.Controls.OBC.CDL.Reals.Sqrt sqrt1 + "Block that outputs the square root of the input (input >= 0 required)" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=0, + height=9) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,sqrt1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Sqrt.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Sqrt. +

+

+The input u varies from 0.0 to +9.0. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Sqrt; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Subtract.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Subtract.mo new file mode 100644 index 0000000000..8fc615897e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Subtract.mo @@ -0,0 +1,62 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Subtract "Validation model for the Subtract block" + IBPSA.Controls.OBC.CDL.Reals.Subtract sub + "Block that outputs the difference of the two inputs" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-2, + height=4) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + height=2, + duration=1, + offset=-0.5) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + +equation + connect(ramp1.y, sub.u1) annotation (Line(points={{-38,20},{-26,20},{-26,6},{-12, + 6}}, color={0,0,127})); + connect(ramp2.y, sub.u2) annotation (Line(points={{-38,-20},{-26,-20},{-26,-6}, + {-12,-6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Subtract.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Subtract. +

+

+The input u1 varies from -2 to +2, input u2 varies from -1 to +1. +

+", + revisions=" +
    +
  • +January 28, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Subtract; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Switch.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Switch.mo new file mode 100644 index 0000000000..ca772c6b80 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Switch.mo @@ -0,0 +1,66 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Switch "Validation model for the Switch block" + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=5, + offset=-1, + height=6) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-26,22},{-6,42}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp2( + duration=5, + offset=-1, + height=2) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-26,-42},{-6,-22}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + width=0.5, + period=2) + "Block that outputs cyclic on and off" + annotation (Placement(transformation(extent={{-26,-10},{-6,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Switch switch1 + "Switch between two real inputs" + annotation (Placement(transformation(extent={{26,-10},{46,10}}))); + +equation + connect(booPul.y,switch1.u2) + annotation (Line(points={{-4,0},{-4,0},{24,0}},color={255,0,255})); + connect(ramp2.y,switch1.u3) + annotation (Line(points={{-4,-32},{8,-32},{8,-8},{24,-8}},color={0,0,127})); + connect(ramp1.y,switch1.u1) + annotation (Line(points={{-4,32},{8,32},{8,8},{24,8}},color={0,0,127})); + annotation ( + experiment( + StopTime=5.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Switch.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Switch. +

+", + revisions=" +
    +
  • +April 2, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Switch; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/Tan.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/Tan.mo new file mode 100644 index 0000000000..8b5f1c40eb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/Tan.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Reals.Validation; +model Tan + "Validation model for the Tan block" + IBPSA.Controls.OBC.CDL.Reals.Tan tan1 + "Block that outputs the sine of the input" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ramp1( + duration=1, + offset=-1.5, + height=3.0) + "Block that generates ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ramp1.y,tan1.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Reals/Validation/Tan.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Reals.Tan. +

+

+The input u varies from -1.5 to +1.5. +

+", + revisions=" +
    +
  • +March 22, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Tan; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Reals/Validation/package.mo new file mode 100644 index 0000000000..34615e147b --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Reals; +package Validation "Collection of models that validate the continuous blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Reals. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}}), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0)})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Reals/Validation/package.order b/IBPSA/Controls/OBC/CDL/Reals/Validation/package.order new file mode 100644 index 0000000000..a3a46092e0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/Validation/package.order @@ -0,0 +1,50 @@ +Abs +Acos +Add +AddParameter +Asin +Atan +Atan2 +Average +Cos +Derivative +Divide +Exp +Greater +GreaterThreshold +Hysteresis +IntegratorWithReset +Less +LessThreshold +LimitSlewRate +Limiter +Line +Log +Log10 +MatrixGain +MatrixMax +MatrixMin +Max +Min +Modulo +MovingAverage +MovingAverage_nonZeroStart +MultiMax +MultiMin +MultiSum +Multiply +MultiplyByParameter +PID +PIDInitialDerivativeOutput +PIDInitialState +PIDScale +PIDWithReset +PIDWithResetScale +Ramp +Round +Sin +Sort +Sqrt +Subtract +Switch +Tan diff --git a/IBPSA/Controls/OBC/CDL/Reals/package.mo b/IBPSA/Controls/OBC/CDL/Reals/package.mo new file mode 100644 index 0000000000..2666a2b1b2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL; +package Reals "Package with blocks for continuous variables" + annotation ( + Documentation( + info=" +

+Package with blocks for elementary mathematical functions +for continuous variables. +

+", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Text( + extent={{-52,86},{52,-92}}, + textColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + textString="R"), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0)})); +end Reals; diff --git a/IBPSA/Controls/OBC/CDL/Reals/package.order b/IBPSA/Controls/OBC/CDL/Reals/package.order new file mode 100644 index 0000000000..29bdf47966 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Reals/package.order @@ -0,0 +1,47 @@ +Abs +Acos +Add +AddParameter +Asin +Atan +Atan2 +Average +Cos +Derivative +Divide +Exp +Greater +GreaterThreshold +Hysteresis +IntegratorWithReset +Less +LessThreshold +LimitSlewRate +Limiter +Line +Log +Log10 +MatrixGain +MatrixMax +MatrixMin +Max +Min +Modulo +MovingAverage +MultiMax +MultiMin +MultiSum +Multiply +MultiplyByParameter +PID +PIDWithReset +Ramp +Round +Sin +Sort +Sqrt +Subtract +Switch +Tan +Sources +Validation diff --git a/IBPSA/Controls/OBC/CDL/Routing/BooleanExtractSignal.mo b/IBPSA/Controls/OBC/CDL/Routing/BooleanExtractSignal.mo new file mode 100644 index 0000000000..13bc1e3149 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/BooleanExtractSignal.mo @@ -0,0 +1,178 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block BooleanExtractSignal + "Extract signals from a boolean input signal vector" + parameter Integer nin=1 + "Number of inputs"; + parameter Integer nout=1 + "Number of outputs"; + parameter Integer extract[nout]=1:nout + "Extracting vector"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u[nin] + "Boolean input signals" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y[nout] + "Boolean signals extracted from the input vector with the extraction scheme specified by the integer vector" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + assert( + Modelica.Math.BooleanVectors.andTrue({(extract[i] > 0 and extract[i] <= nin) for i in 1:nout}), + "In " + getInstanceName() + ": The element of the extracting vector has out of range value.", + AssertionLevel.error); + +equation + for i in 1:nout loop + y[i]=u[extract[i]]; + end for; + annotation ( + defaultComponentName="extBooSig", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-90,51},{-50,-49}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Rectangle( + extent={{50,50},{90,-50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Polygon( + points={{-94.4104,1.90792},{-94.4104,-2.09208},{-90.4104,-0.0920762},{-94.4104,1.90792}}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Line( + points={{-72,2},{-60.1395,12.907},{-49.1395,12.907}}, + color={255,0,255}), + Line( + points={{-73,4},{-59,40},{-49,40}}, + color={255,0,255}), + Line( + points={{-113,0},{-76.0373,-0.0180176}}, + color={255,0,255}), + Ellipse( + extent={{-81.0437,4.59255},{-71.0437,-4.90745}}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Line( + points={{-73,-5},{-60,-40},{-49,-40}}, + color={255,0,255}), + Line( + points={{-72,-2},{-60.0698,-12.907},{-49.0698,-12.907}}, + color={255,0,255}), + Polygon( + points={{-48.8808,-11},{-48.8808,-15},{-44.8808,-13},{-48.8808,-11}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Line( + points={{-46,13},{-35,13},{35,-30},{45,-30}}, + color={255,0,255}), + Line( + points={{-45,40},{-35,40},{35,0},{44,0}}, + color={255,0,255}), + Line( + points={{-45,-40},{-34,-40},{35,30},{44,30}}, + color={255,0,255}), + Polygon( + points={{-49,42},{-49,38},{-45,40},{-49,42}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Polygon( + points={{-48.8728,-38.0295},{-48.8728,-42.0295},{-44.8728,-40.0295},{-48.8728,-38.0295}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Polygon( + points={{-48.9983,14.8801},{-48.9983,10.8801},{-44.9983,12.8801},{-48.9983,14.8801}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Ellipse( + extent={{69.3052,4.12743},{79.3052,-5.37257}}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Line( + points={{80,0},{100,0}}, + color={255,0,255}), + Polygon( + points={{43.1618,32.3085},{43.1618,28.3085},{47.1618,30.3085},{43.1618,32.3085}}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Polygon( + points={{43.2575,1.80443},{43.2575,-2.19557},{47.2575,-0.195573},{43.2575,1.80443}}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Polygon( + points={{43.8805,-28.1745},{43.8805,-32.1745},{47.8805,-30.1745},{43.8805,-28.1745}}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineColor={255,0,255}), + Line( + points={{48,0},{70,0}}, + color={255,0,255}), + Line( + points={{47,30},{60,30},{73,3}}, + color={255,0,255}), + Line( + points={{49,-30},{60,-30},{74,-4}}, + color={255,0,255}), + Text( + extent={{-150,-150},{150,-110}}, + textColor={0,0,0}, + textString="extract=%extract"), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name")}), + Documentation( + info=" +

+Extract signals from the vector-valued boolean input signal and transfer them +to the vector-valued boolean output signal. +

+

+The extraction scheme is specified by the integer vector extract. +This vector specifies which input signals are taken and in which +order they are transferred to the output vector. Note that the +dimension of extract has to match the number of outputs and the elements +of extract has to be in the range of [1, nin]. +Additionally, the dimensions of the input connector signals and +the output connector signals have to be explicitly defined via the +parameters nin and nout. +

+

Example

+

+The specification +

+
     nin = 7 \"Number of inputs\";
+     nout = 4 \"Number of outputs\";
+     extract[nout] = {6,3,3,2} \"Extracting vector\";
+
+

extracts four output signals (nout=4) +from the seven elements of the +input vector (nin=7):

+
   y[1, 2, 3, 4] = u[6, 3, 3, 2];
+
+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end BooleanExtractSignal; diff --git a/IBPSA/Controls/OBC/CDL/Routing/BooleanExtractor.mo b/IBPSA/Controls/OBC/CDL/Routing/BooleanExtractor.mo new file mode 100644 index 0000000000..c12f2aaadb --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/BooleanExtractor.mo @@ -0,0 +1,148 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block BooleanExtractor + "Extract scalar signal out of boolean signal vector dependent on integer input index" + parameter Integer nin=1 + "Number of inputs"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput index + "Index of input vector element to be extracted out" + annotation (Placement(transformation(origin={0,-120},extent={{-20,-20},{20,20}},rotation=90))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u[nin] + "Boolean input signals" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y + "Boolean signal extracted from input vector, u[index]" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + assert( + index > 0 and index <= nin, + "In " + getInstanceName() + ": The extract index is out of the range.", + AssertionLevel.warning); + y = u[min(nin, max(1, index))]; + +annotation (defaultComponentName="extIndBoo", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-80,50},{-40,-50}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-84.4104,1.9079},{-84.4104,-2.09208},{-80.4104,-0.09208},{-84.4104,1.9079}}, + lineColor={255,0,255}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-62,2},{-50.1395,12.907},{-39.1395,12.907}}, + color={255,0,255}), + Line( + points={{-63,4},{-49,40},{-39,40}}, + color={255,0,255}), + Line( + points={{-102,0},{-65.0373,-0.01802}}, + color={255,0,255}), + Ellipse( + extent={{-70.0437,4.5925},{-60.0437,-4.90745}}, + lineColor={0,0,127}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-63,-5},{-50,-40},{-39,-40}}, + color={255,0,255}), + Line( + points={{-62,-2},{-50.0698,-12.907},{-39.0698,-12.907}}, + color={255,0,255}), + Polygon( + points={{-38.8808,-11},{-38.8808,-15},{-34.8808,-13},{-38.8808,-11}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-39,42},{-39,38},{-35,40},{-39,42}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-38.8728,-38.0295},{-38.8728,-42.0295},{-34.8728,-40.0295},{-38.8728,-38.0295}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-38.9983,14.8801},{-38.9983,10.8801},{-34.9983,12.8801},{-38.9983,14.8801}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-30,50},{30,-50}}, + fillColor={235,235,235}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{100,0},{0,0}}, + color={255,0,255}), + Line( + points={{0,2},{0,-104}}, + color={255,128,0}), + Line( + points={{-35,40},{-20,40}}, + color={255,0,255}), + Line( + points={{-35,13},{-20,13}}, + color={255,0,255}), + Line( + points={{-35,-13},{-20,-13}}, + color={255,0,255}), + Line( + points={{-35,-40},{-20,-40}}, + color={255,0,255}), + Polygon( + points={{0,0},{-20,13},{-20,13},{0,0},{0,0}}, + lineColor={255,0,255}), + Ellipse( + extent={{-6,6},{6,-6}}, + lineColor={255,128,0}, + fillColor={255,128,0}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name")}), + Documentation( + info=" +

+Block that returns +

+
    y = u[index];
+
+

+where u is a vector-valued Boolean input signal and +index is an Integer input signal. When the index +is out of range, +

+
    +
  • +then y = u[nin] if index > nin, and +
  • +
  • +y = u[1] if index < 1. +
  • +
+", +revisions=" +
    +
  • +September 30, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end BooleanExtractor; diff --git a/IBPSA/Controls/OBC/CDL/Routing/BooleanScalarReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/BooleanScalarReplicator.mo new file mode 100644 index 0000000000..ada7fb5678 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/BooleanScalarReplicator.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block BooleanScalarReplicator "Boolean signal replicator" + parameter Integer nout=1 + "Number of outputs"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Input signal to be replicated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y[nout] + "Output with replicated input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=fill(u, nout); + annotation ( + defaultComponentName="booScaRep", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-6,0}}, + color={255,0,255}), + Line( + points={{100,0},{10,0}}, + color={255,0,255}), + Line( + points={{0,0},{100,10}}, + color={255,0,255}), + Line( + points={{0,0},{100,-10}}, + color={255,0,255}), + Ellipse( + extent={{-14,16},{16,-14}}, + lineColor={0,0,0}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name")}), + Documentation( + info=" +

+This block replicates the Boolean input signal to an array of nout +identical Boolean output signals. +

+", + revisions=" +
    +
  • +July 27, 2021, by Baptiste Ravache:
    +Renamed to BooleanScalarReplicator. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end BooleanScalarReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/BooleanVectorFilter.mo b/IBPSA/Controls/OBC/CDL/Routing/BooleanVectorFilter.mo new file mode 100644 index 0000000000..cde256c18d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/BooleanVectorFilter.mo @@ -0,0 +1,69 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block BooleanVectorFilter "Filter a boolean vector based on a boolean mask" + + parameter Integer nin "Size of input vector"; + parameter Integer nout "Size of output vector"; + parameter Boolean msk[nin]=fill(true,nin) "Array mask"; + + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u[nin] + "Input signals from which values are extracted" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y[nout] + "Output with extracted input signals" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Integer mskId[nout] = Modelica.Math.BooleanVectors.index(msk) + "Indices of included element in input vector"; + +initial equation + assert(nout==sum({if msk[i] then 1 else 0 for i in 1:nin}), + "In " + getInstanceName() + ": The size of the output vector does not + match the size of included elements in the mask."); +equation + y = u[mskId]; + annotation ( + defaultComponentName="booVecFil", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line(points={{-102,0},{-60,0}}, color={255,0,255}), + Line(points={{70,0},{100,0}}, color={255,0,255}), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Polygon( + points={{-60,80},{-60,-80},{20,-10},{60,-10},{80,10},{20,10},{-60,80}}, + lineColor={0,0,0}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid, + lineThickness=0.5)}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 22, 2021, by Baptiste Ravache:
    +First implementation +
  • +
+", info=" +

+This block filters a Boolean vector of size nin to +a vector of size nout given a Boolean mask +msk. +

+

+If an entry in msk is true, then the value +of this input will be sent to the output y, otherwise it +will be discarded. +

+

+The parameter msk must have exactly nout entries +set to true, otherwise an error message is issued. +

+")); +end BooleanVectorFilter; diff --git a/IBPSA/Controls/OBC/CDL/Routing/BooleanVectorReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/BooleanVectorReplicator.mo new file mode 100644 index 0000000000..fe9da2cfb7 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/BooleanVectorReplicator.mo @@ -0,0 +1,67 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block BooleanVectorReplicator "Boolean vector signal replicator" + + parameter Integer nin=1 "Size of input vector"; + parameter Integer nout=1 "Number of row in output"; + + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u[nin] + "Input signal to be replicated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput y[nout, nin] + "Output with replicated input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=fill(u, nout); + annotation ( + defaultComponentName="booVecRep", + Documentation( + info=" +

+This block replicates a Boolean vector input signal of size nin, +to a matrix with nout rows and nin columns, +where each row is duplicating the input vector. +

+", + revisions=" +
    +
  • +June 22, 2021, by Baptiste Ravache:
    +First implementation +
  • +
+"), + Icon(graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-6,0}}, + color={255,0,255}), + Line( + points={{100,0},{10,0}}, + color={255,0,255}), + Line( + points={{0,0},{100,10}}, + color={255,0,255}), + Line( + points={{0,0},{100,-10}}, + color={255,0,255}), + Ellipse( + extent={{-14,16},{16,-14}}, + lineColor={0,0,0}, + fillColor={255,0,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Line( + points={{-100,-10},{0,0}}, + color={255,0,255}), + Line( + points={{-100,10},{0,0}}, + color={255,0,255})})); +end BooleanVectorReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/IntegerExtractSignal.mo b/IBPSA/Controls/OBC/CDL/Routing/IntegerExtractSignal.mo new file mode 100644 index 0000000000..3d9c57188e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/IntegerExtractSignal.mo @@ -0,0 +1,178 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block IntegerExtractSignal + "Extract signals from an integer input signal vector" + parameter Integer nin=1 + "Number of inputs"; + parameter Integer nout=1 + "Number of outputs"; + parameter Integer extract[nout]=1:nout + "Extracting vector"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u[nin] + "Integer input signals" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y[nout] + "Integer signals extracted from the input vector with the extraction scheme specified by the integer vector" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + assert( + Modelica.Math.BooleanVectors.andTrue({(extract[i] > 0 and extract[i] <= nin) for i in 1:nout}), + "In " + getInstanceName() + ": The element of the extracting vector has out of range value.", + AssertionLevel.error); + +equation + for i in 1:nout loop + y[i]=u[extract[i]]; + end for; + annotation ( + defaultComponentName="extIntSig", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-90,51},{-50,-49}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Rectangle( + extent={{50,50},{90,-50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Polygon( + points={{-94.4104,1.90792},{-94.4104,-2.09208},{-90.4104,-0.0920762},{-94.4104,1.90792}}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Line( + points={{-72,2},{-60.1395,12.907},{-49.1395,12.907}}, + color={255,127,0}), + Line( + points={{-73,4},{-59,40},{-49,40}}, + color={255,127,0}), + Line( + points={{-113,0},{-76.0373,-0.0180176}}, + color={255,127,0}), + Ellipse( + extent={{-81.0437,4.59255},{-71.0437,-4.90745}}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Line( + points={{-73,-5},{-60,-40},{-49,-40}}, + color={255,127,0}), + Line( + points={{-72,-2},{-60.0698,-12.907},{-49.0698,-12.907}}, + color={255,127,0}), + Polygon( + points={{-48.8808,-11},{-48.8808,-15},{-44.8808,-13},{-48.8808,-11}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Line( + points={{-46,13},{-35,13},{35,-30},{45,-30}}, + color={255,127,0}), + Line( + points={{-45,40},{-35,40},{35,0},{44,0}}, + color={255,127,0}), + Line( + points={{-45,-40},{-34,-40},{35,30},{44,30}}, + color={255,127,0}), + Polygon( + points={{-49,42},{-49,38},{-45,40},{-49,42}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Polygon( + points={{-48.8728,-38.0295},{-48.8728,-42.0295},{-44.8728,-40.0295},{-48.8728,-38.0295}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Polygon( + points={{-48.9983,14.8801},{-48.9983,10.8801},{-44.9983,12.8801},{-48.9983,14.8801}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Ellipse( + extent={{69.3052,4.12743},{79.3052,-5.37257}}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Line( + points={{80,0},{100,0}}, + color={255,127,0}), + Polygon( + points={{43.1618,32.3085},{43.1618,28.3085},{47.1618,30.3085},{43.1618,32.3085}}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Polygon( + points={{43.2575,1.80443},{43.2575,-2.19557},{47.2575,-0.195573},{43.2575,1.80443}}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Polygon( + points={{43.8805,-28.1745},{43.8805,-32.1745},{47.8805,-30.1745},{43.8805,-28.1745}}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Line( + points={{48,0},{70,0}}, + color={255,127,0}), + Line( + points={{47,30},{60,30},{73,3}}, + color={255,127,0}), + Line( + points={{49,-30},{60,-30},{74,-4}}, + color={255,127,0}), + Text( + extent={{-150,-150},{150,-110}}, + textColor={0,0,0}, + textString="extract=%extract"), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name")}), + Documentation( + info=" +

+Extract signals from the vector-valued integer input signal and transfer them +to the vector-valued integer output signal. +

+

+The extraction scheme is specified by the integer vector extract. +This vector specifies which input signals are taken and in which +order they are transferred to the output vector. Note that the +dimension of extract has to match the number of outputs and +the elements of extract has to be in the range of [1, nin]. +Additionally, the dimensions of the input connector signals and +the output connector signals have to be explicitly defined via the +parameters nin and nout. +

+

Example

+

+The specification +

+
     nin = 7 \"Number of inputs\";
+     nout = 4 \"Number of outputs\";
+     extract[nout] = {6,3,3,2} \"Extracting vector\";
+
+

extracts four output signals (nout=4) +from the seven elements of the +input vector (nin=7):

+
   y[1, 2, 3, 4] = u[6, 3, 3, 2];
+
+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end IntegerExtractSignal; diff --git a/IBPSA/Controls/OBC/CDL/Routing/IntegerExtractor.mo b/IBPSA/Controls/OBC/CDL/Routing/IntegerExtractor.mo new file mode 100644 index 0000000000..4a957ddf10 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/IntegerExtractor.mo @@ -0,0 +1,148 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block IntegerExtractor + "Extract scalar signal out of integer signal vector dependent on integer input index" + parameter Integer nin=1 + "Number of inputs"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput index + "Index of input vector element to be extracted out" + annotation (Placement(transformation(origin={0,-120},extent={{-20,-20},{20,20}},rotation=90))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u[nin] + "Integer input signals" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y + "Integer signal extracted from input vector, u[index]" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + assert( + index > 0 and index <= nin, + "In " + getInstanceName() + ": The extract index is out of the range.", + AssertionLevel.warning); + y = u[min(nin, max(1, index))]; + +annotation (defaultComponentName="extIndInt", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-80,50},{-40,-50}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-84.4104,1.9079},{-84.4104,-2.09208},{-80.4104,-0.09208},{-84.4104,1.9079}}, + lineColor={255,127,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid), + Line( + points={{-62,2},{-50.1395,12.907},{-39.1395,12.907}}, + color={255,127,0}), + Line( + points={{-63,4},{-49,40},{-39,40}}, + color={255,127,0}), + Line( + points={{-102,0},{-65.0373,-0.01802}}, + color={255,127,0}), + Ellipse( + extent={{-70.0437,4.5925},{-60.0437,-4.90745}}, + lineColor={255,127,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid), + Line( + points={{-63,-5},{-50,-40},{-39,-40}}, + color={255,127,0}), + Line( + points={{-62,-2},{-50.0698,-12.907},{-39.0698,-12.907}}, + color={255,127,0}), + Polygon( + points={{-38.8808,-11},{-38.8808,-15},{-34.8808,-13},{-38.8808,-11}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-39,42},{-39,38},{-35,40},{-39,42}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-38.8728,-38.0295},{-38.8728,-42.0295},{-34.8728,-40.0295},{-38.8728,-38.0295}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-38.9983,14.8801},{-38.9983,10.8801},{-34.9983,12.8801},{-38.9983,14.8801}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-30,50},{30,-50}}, + fillColor={235,235,235}, + fillPattern=FillPattern.Solid, + lineColor={255,127,0}), + Line( + points={{100,0},{0,0}}, + color={255,127,0}), + Line( + points={{0,2},{0,-104}}, + color={255,127,0}), + Line( + points={{-35,40},{-20,40}}, + color={255,127,0}), + Line( + points={{-35,13},{-20,13}}, + color={255,127,0}), + Line( + points={{-35,-13},{-20,-13}}, + color={255,127,0}), + Line( + points={{-35,-40},{-20,-40}}, + color={255,127,0}), + Polygon( + points={{0,0},{-20,13},{-20,13},{0,0},{0,0}}, + lineColor={255,127,0}), + Ellipse( + extent={{-6,6},{6,-6}}, + lineColor={255,127,0}, + fillColor={255,128,0}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name")}), + Documentation( + info=" +

+Block that returns +

+
    y = u[index];
+
+

+where u is a vector-valued Integer input signal and +index is an Integer input signal. When the index +is out of range, +

+
    +
  • +then y = u[nin] if index > nin, and +
  • +
  • +y = u[1] if index < 1. +
  • +
+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end IntegerExtractor; diff --git a/IBPSA/Controls/OBC/CDL/Routing/IntegerScalarReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/IntegerScalarReplicator.mo new file mode 100644 index 0000000000..e4864ac5b0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/IntegerScalarReplicator.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block IntegerScalarReplicator "Integer signal replicator" + parameter Integer nout=1 + "Number of outputs"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u + "Input signal to be replicated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y[nout] + "Output with replicated input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=fill(u, nout); + annotation ( + defaultComponentName="intScaRep", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-6,0}}, + color={255,127,0}), + Line( + points={{100,0},{10,0}}, + color={255,127,0}), + Line( + points={{0,0},{100,10}}, + color={255,127,0}), + Line( + points={{0,0},{100,-10}}, + color={255,127,0}), + Ellipse( + extent={{-14,16},{16,-14}}, + lineColor={0,0,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name")}), + Documentation( + info=" +

+This block replicates the Integer input signal to an array of nout +identical Integer output signals. +

+", + revisions=" +
    +
  • +July 27, 2021, by Baptiste Ravache:
    +Renamed to IntegerScalarReplicator. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end IntegerScalarReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/IntegerVectorFilter.mo b/IBPSA/Controls/OBC/CDL/Routing/IntegerVectorFilter.mo new file mode 100644 index 0000000000..29ff14c6a6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/IntegerVectorFilter.mo @@ -0,0 +1,69 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block IntegerVectorFilter "Filter an integer vector based on a boolean mask" + + parameter Integer nin "Size of input vector"; + parameter Integer nout "Size of output vector"; + parameter Boolean msk[nin]=fill(true,nin) "Array mask"; + + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u[nin] + "Input signals from which values are extracted" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y[nout] + "Output with extracted input signals" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Integer mskId[nout] = Modelica.Math.BooleanVectors.index(msk) + "Indices of included element in input vector"; + +initial equation + assert(nout==sum({if msk[i] then 1 else 0 for i in 1:nin}), + "In " + getInstanceName() + ": The size of the output vector does not + match the size of included elements in the mask."); +equation + y = u[mskId]; + annotation ( + defaultComponentName="intVecFil", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Polygon( + points={{-60,80},{-60,-80},{20,-10},{60,-10},{80,10},{20,10},{-60,80}}, + lineColor={0,0,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid, + lineThickness=0.5), + Line(points={{-100,0},{-60,0}}, color={255,127,0}), + Line(points={{70,0},{100,0}}, color={255,127,0})}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 22, 2021, by Baptiste Ravache:
    +First implementation +
  • +
+", info=" +

+This block filters a Integer vector of size nin to +a vector of size nout given a Boolean mask +msk. +

+

+If an entry in msk is true, then the value +of this input will be sent to the output y, otherwise it +will be discarded. +

+

+The parameter msk must have exactly nout entries +set to true, otherwise an error message is issued. +

+")); +end IntegerVectorFilter; diff --git a/IBPSA/Controls/OBC/CDL/Routing/IntegerVectorReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/IntegerVectorReplicator.mo new file mode 100644 index 0000000000..e0a73dd33d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/IntegerVectorReplicator.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block IntegerVectorReplicator "Integer vector signal replicator" + + parameter Integer nin=1 "Size of input vector"; + parameter Integer nout=1 "Number of row in output"; + + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput u[nin] + "Input signal to be replicated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.IntegerOutput y[nout, nin] + "Output with replicated input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=fill(u, nout); + annotation ( + defaultComponentName="intVecRep", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={255,127,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-6,0}}, + color={255,127,0}), + Line( + points={{100,0},{10,0}}, + color={255,127,0}), + Line( + points={{0,0},{100,10}}, + color={255,127,0}), + Line( + points={{0,0},{100,-10}}, + color={255,127,0}), + Ellipse( + extent={{-14,16},{16,-14}}, + lineColor={0,0,0}, + fillColor={255,127,0}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Line(points={{-100,-10},{0,0}}, color={255,127,0}), + Line(points={{-100,10},{0,0}}, color={255,127,0})}), + Documentation( + info=" +

+This block replicates an Integer vector input signal of size nin, +to a matrix with nout rows and nin columns, +where each row is duplicating the input vector. +

+", + revisions=" +
    +
  • +June 22, 2021, by Baptiste Ravache:
    +First implementation +
  • +
+")); +end IntegerVectorReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/RealExtractSignal.mo b/IBPSA/Controls/OBC/CDL/Routing/RealExtractSignal.mo new file mode 100644 index 0000000000..da171e5e1a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/RealExtractSignal.mo @@ -0,0 +1,187 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block RealExtractSignal + "Extract signals from a real input signal vector" + parameter Integer nin=1 + "Number of inputs"; + parameter Integer nout=1 + "Number of outputs"; + parameter Integer extract[nout]=1:nout + "Extracting vector"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Real input signals" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nout] + "Real signals extracted from the input vector with the extraction scheme specified by the integer vector" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +initial equation + assert( + Modelica.Math.BooleanVectors.andTrue({(extract[i] > 0 and extract[i] <= nin) for i in 1:nout}), + "In " + getInstanceName() + ": The element of the extracting vector has out of range value.", + AssertionLevel.error); + +equation + for i in 1:nout loop + y[i]=u[extract[i]]; + end for; + annotation ( + defaultComponentName="extReaSig", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-90,51},{-50,-49}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Rectangle( + extent={{50,50},{90,-50}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Polygon( + points={{-94.4104,1.90792},{-94.4104,-2.09208},{-90.4104,-0.0920762},{-94.4104,1.90792}}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{-72,2},{-60.1395,12.907},{-49.1395,12.907}}, + color={0,0,127}), + Line( + points={{-73,4},{-59,40},{-49,40}}, + color={0,0,127}), + Line( + points={{-113,0},{-76.0373,-0.0180176}}, + color={0,0,127}), + Ellipse( + extent={{-81.0437,4.59255},{-71.0437,-4.90745}}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{-73,-5},{-60,-40},{-49,-40}}, + color={0,0,127}), + Line( + points={{-72,-2},{-60.0698,-12.907},{-49.0698,-12.907}}, + color={0,0,127}), + Polygon( + points={{-48.8808,-11},{-48.8808,-15},{-44.8808,-13},{-48.8808,-11}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{-46,13},{-35,13},{35,-30},{45,-30}}, + color={0,0,127}), + Line( + points={{-45,40},{-35,40},{35,0},{44,0}}, + color={0,0,127}), + Line( + points={{-45,-40},{-34,-40},{35,30},{44,30}}, + color={0,0,127}), + Polygon( + points={{-49,42},{-49,38},{-45,40},{-49,42}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Polygon( + points={{-48.8728,-38.0295},{-48.8728,-42.0295},{-44.8728,-40.0295},{-48.8728,-38.0295}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Polygon( + points={{-48.9983,14.8801},{-48.9983,10.8801},{-44.9983,12.8801},{-48.9983,14.8801}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Ellipse( + extent={{69.3052,4.12743},{79.3052,-5.37257}}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{80,0},{100,0}}, + color={0,0,127}), + Polygon( + points={{43.1618,32.3085},{43.1618,28.3085},{47.1618,30.3085},{43.1618,32.3085}}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Polygon( + points={{43.2575,1.80443},{43.2575,-2.19557},{47.2575,-0.195573},{43.2575,1.80443}}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Polygon( + points={{43.8805,-28.1745},{43.8805,-32.1745},{47.8805,-30.1745},{43.8805,-28.1745}}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{48,0},{70,0}}, + color={0,0,127}), + Line( + points={{47,30},{60,30},{73,3}}, + color={0,0,127}), + Line( + points={{49,-30},{60,-30},{74,-4}}, + color={0,0,127}), + Text( + extent={{-150,-150},{150,-110}}, + textColor={0,0,0}, + textString="extract=%extract"), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name")}), + Documentation( + info=" +

+Extract signals from the vector-valued real input signal and transfer them +to the vector-valued real output signal. +

+

+The extraction scheme is specified by the integer vector extract. +This vector specifies which input signals are taken and in which +order they are transferred to the output vector. Note that the +dimension of extract has to match the number of outputs and the elements +of extract has to be in the range of [1, nin]. +Additionally, the dimensions of the input connector signals and +the output connector signals have to be explicitly defined via the +parameters nin and nout. +

+

Example

+

+The specification +

+
     nin = 7 \"Number of inputs\";
+     nout = 4 \"Number of outputs\";
+     extract[nout] = {6,3,3,2} \"Extracting vector\";
+
+

extracts four output signals (nout=4) +from the seven elements of the +input vector (nin=7):

+
   y[1, 2, 3, 4] = u[6, 3, 3, 2];
+
+", +revisions=" +
    +
  • +October 14, 2022, by Jianjun Hu:
    +Added assertion to check if there is any element in extracting vector is out of range. +
  • +
  • +July 19, 2018, by Jianjun Hu:
    +Changed block name. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end RealExtractSignal; diff --git a/IBPSA/Controls/OBC/CDL/Routing/RealExtractor.mo b/IBPSA/Controls/OBC/CDL/Routing/RealExtractor.mo new file mode 100644 index 0000000000..c0b723c1c6 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/RealExtractor.mo @@ -0,0 +1,159 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block RealExtractor + "Extract scalar signal out of real signal vector dependent on integer input index" + parameter Integer nin=1 + "Number of inputs"; + IBPSA.Controls.OBC.CDL.Interfaces.IntegerInput index + "Index of input vector element to be extracted out" + annotation (Placement(transformation(origin={0,-120},extent={{-20,-20},{20,20}},rotation=90))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Real input signals" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Real signal extracted from input vector, u[index]" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +algorithm + assert( + index > 0 and index <= nin, + "In " + getInstanceName() + ": The extract index is out of the range.", + AssertionLevel.warning); + y := u[min(nin, max(1, index))]; + +annotation (defaultComponentName="extIndRea", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-80,50},{-40,-50}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-84.4104,1.9079},{-84.4104,-2.09208},{-80.4104,-0.09208},{-84.4104,1.9079}}, + lineColor={0,0,127}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line( + points={{-62,2},{-50.1395,12.907},{-39.1395,12.907}}, + color={0,0,127}), + Line( + points={{-63,4},{-49,40},{-39,40}}, + color={0,0,127}), + Line( + points={{-102,0},{-65.0373,-0.01802}}, + color={0,0,127}), + Ellipse( + extent={{-70.0437,4.5925},{-60.0437,-4.90745}}, + lineColor={0,0,127}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Line( + points={{-63,-5},{-50,-40},{-39,-40}}, + color={0,0,127}), + Line( + points={{-62,-2},{-50.0698,-12.907},{-39.0698,-12.907}}, + color={0,0,127}), + Polygon( + points={{-38.8808,-11},{-38.8808,-15},{-34.8808,-13},{-38.8808,-11}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-39,42},{-39,38},{-35,40},{-39,42}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-38.8728,-38.0295},{-38.8728,-42.0295},{-34.8728,-40.0295},{-38.8728,-38.0295}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-38.9983,14.8801},{-38.9983,10.8801},{-34.9983,12.8801},{-38.9983,14.8801}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-30,50},{30,-50}}, + fillColor={235,235,235}, + fillPattern=FillPattern.Solid, + lineColor={0,0,127}), + Line( + points={{100,0},{0,0}}, + color={0,0,127}), + Line( + points={{0,2},{0,-104}}, + color={255,128,0}), + Line( + points={{-35,40},{-20,40}}, + color={0,0,127}), + Line( + points={{-35,13},{-20,13}}, + color={0,0,127}), + Line( + points={{-35,-13},{-20,-13}}, + color={0,0,127}), + Line( + points={{-35,-40},{-20,-40}}, + color={0,0,127}), + Polygon( + points={{0,0},{-20,13},{-20,13},{0,0},{0,0}}, + lineColor={0,0,127}), + Ellipse( + extent={{-6,6},{6,-6}}, + lineColor={255,128,0}, + fillColor={255,128,0}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-100,100},{100,140}}, + textString="%name")}), + Documentation( + info=" +

+Block that returns +

+
    y = u[index];
+
+

+where u is a vector-valued Real input signal and +index is an Integer input signal. When the index +is out of range, +

+
    +
  • +then y = u[nin] if index > nin, and +
  • +
  • +y = u[1] if index < 1. +
  • +
+", +revisions=" +
    +
  • +April 19, 2023, by Michael Wetter:
    +Converted equation section to algorithm section. +This works around the issue reported +in OpenModelica, #10580. +
  • +
  • +October 14, 2022, by Jianjun Hu:
    +Changed output from a specified value to the element with the nearest valid index when the index input is out of range. +
  • +
  • +July 19, 2018, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end RealExtractor; diff --git a/IBPSA/Controls/OBC/CDL/Routing/RealScalarReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/RealScalarReplicator.mo new file mode 100644 index 0000000000..76375e611a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/RealScalarReplicator.mo @@ -0,0 +1,65 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block RealScalarReplicator + "Real signal replicator" + parameter Integer nout=1 + "Number of outputs"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u + "Input signal to be replicated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nout] + "Output with replicated input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=fill(u, nout); + annotation ( + defaultComponentName="reaScaRep", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-6,0}}, + color={0,0,127}), + Line( + points={{100,0},{10,0}}, + color={0,0,127}), + Line( + points={{0,0},{100,10}}, + color={0,0,127}), + Line( + points={{0,0},{100,-10}}, + color={0,0,127}), + Ellipse( + extent={{-14,16},{16,-14}}, + lineColor={0,0,0}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name")}), + Documentation( + info=" +

+This block replicates the Real input signal to an array of nout +identical Real output signals. +

+", + revisions=" +
    +
  • +July 27, 2021, by Baptiste Ravache:
    +Renamed to RealScalarReplicator. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation, based on the implementation of the +Modelica Standard Library. +
  • +
+")); +end RealScalarReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/RealVectorFilter.mo b/IBPSA/Controls/OBC/CDL/Routing/RealVectorFilter.mo new file mode 100644 index 0000000000..e1f32071af --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/RealVectorFilter.mo @@ -0,0 +1,70 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block RealVectorFilter "Filter a real vector of based on a boolean mask" + + parameter Integer nin "Size of input vector"; + parameter Integer nout "Size of output vector"; + parameter Boolean msk[nin]=fill(true,nin) "Array mask"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input signals from which values are extracted" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nout] + "Output with extracted input signals" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + parameter Integer mskId[nout] = Modelica.Math.BooleanVectors.index(msk) + "Indices of included element in input vector"; + +initial equation + assert(nout==sum({if msk[i] then 1 else 0 for i in 1:nin}), + "In " + getInstanceName() + ": The size of the output vector does not + match the size of included elements in the mask."); +equation + y = u[mskId]; + annotation ( + defaultComponentName="reaVecFil", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Polygon( + points={{-60,80},{-60,-80},{20,-10},{60,-10},{80,10},{20,10},{-60,80}}, + lineColor={0,0,0}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid, + lineThickness=0.5), + Line(points={{-100,0},{-60,0}}, color={0,0,127}), + Line(points={{70,0},{100,0}}, color={0,0,127})}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 22, 2021, by Baptiste Ravache:
    +First implementation +
  • +
+", info=" +

+This block filters a Real vector of size nin to +a vector of size nout given a boolean mask +msk. +

+

+If an entry in msk is true, then the value +of this input will be sent to the output y, otherwise it +will be discarded. +

+

+The parameter msk must have exactly nout entries +set to true, otherwise an error message is issued. +

+")); +end RealVectorFilter; diff --git a/IBPSA/Controls/OBC/CDL/Routing/RealVectorReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/RealVectorReplicator.mo new file mode 100644 index 0000000000..1ed80049dc --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/RealVectorReplicator.mo @@ -0,0 +1,63 @@ +within IBPSA.Controls.OBC.CDL.Routing; +block RealVectorReplicator "Real vector signal replicator" + + parameter Integer nin=1 "Size of input vector"; + parameter Integer nout=1 "Number of row in output"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u[nin] + "Input signal to be replicated" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y[nout, nin] + "Output with replicated input signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +equation + y=fill(u, nout); + annotation ( + defaultComponentName="reaVecRep", + Documentation( + info=" +

+This block replicates an Real vector input signal of size nin, +to a matrix with nout rows and nin columns, +where each row is duplicating the input vector. +

+", + revisions=" +
    +
  • +June 22, 2021, by Baptiste Ravache:
    +First implementation +
  • +
+"), + Icon(graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-100,0},{-6,0}}, + color={0,0,127}), + Line( + points={{100,0},{10,0}}, + color={0,0,127}), + Line( + points={{0,0},{100,10}}, + color={0,0,127}), + Line( + points={{0,0},{100,-10}}, + color={0,0,127}), + Ellipse( + extent={{-14,16},{16,-14}}, + lineColor={0,0,0}, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Line(points={{-100,-10},{0,0}}, color={0,0,127}), + Line(points={{-100,10},{0,0}}, color={0,0,127})})); +end RealVectorReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mo new file mode 100644 index 0000000000..87d38a5c92 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mo @@ -0,0 +1,94 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model BooleanExtractSignal + "Validation model for extracting boolean signals" + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractSignal extBooSig( + final nin=4, + final nout=3, + final extract={3,2,4}) + "Block that extracts signal from a boolean input signal vector" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractSignal extBooSig1( + final nin=4, + final nout=5, + final extract={3,2,4,1,1}) + "Block that extracts signal from a boolean input signal vector" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con1( + final k=true) + "Block that outputs true signal" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + final k=false) + "Block that outputs false signal" + annotation (Placement(transformation(extent={{-80,-78},{-60,-58}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final period=0.2) "Generate pulse signal of type boolean" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + final period=0.3) + "Generate pulse signal of type boolean" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + +equation + connect(con1.y, extBooSig.u[1]) annotation (Line(points={{-58,60},{-10,60},{-10, + 29.25},{38,29.25}}, color={255,0,255})); + connect(booPul.y, extBooSig.u[2]) annotation (Line(points={{-58,30},{-20,30},{ + -20,29.75},{38,29.75}}, color={255,0,255})); + connect(booPul1.y, extBooSig.u[3]) annotation (Line(points={{-58,-30},{10,-30}, + {10,30.25},{38,30.25}}, color={255,0,255})); + connect(con.y, extBooSig.u[4]) annotation (Line(points={{-58,-68},{20,-68},{20, + 30.75},{38,30.75}}, color={255,0,255})); + connect(con1.y, extBooSig1.u[1]) annotation (Line(points={{-58,60},{-10,60},{-10, + -30.75},{38,-30.75}}, color={255,0,255})); + connect(booPul.y, extBooSig1.u[2]) annotation (Line(points={{-58,30},{-20,30}, + {-20,-30.25},{38,-30.25}}, color={255,0,255})); + connect(booPul1.y, extBooSig1.u[3]) annotation (Line(points={{-58,-30},{10,-30}, + {10,-29.75},{38,-29.75}}, color={255,0,255})); + connect(con.y, extBooSig1.u[4]) annotation (Line(points={{-58,-68},{20,-68},{20, + -29.25},{38,-29.25}}, color={255,0,255})); +annotation ( + experiment(StopTime=1.0,Tolerance=1e-06), + __Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractSignal.mos" "Simulate and plot"), + Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.BooleanExtractSignal. +

+

+The instance extBooSig has the input vector with dimension of 4 and +the extracting vector is [3, 2, 4]. Thus the output vectors is [u[3], u[2], u[4]]. +

+

+The instance extBooSig1 has the input vector with dimension of 4 and +the extracting vector is [3, 2, 4, 1, 1]. Thus the output vectors is [u[3], u[2], u[4], u[1], u[1]]. +

+

+Note that when the extracting vector extract has any element with the value that +is out of range [1, nin], e.g. [1, 4] for instance in extBooSig. +It will issue error and the model will not translate. +

+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end BooleanExtractSignal; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mo new file mode 100644 index 0000000000..66dc1022fc --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mo @@ -0,0 +1,177 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model BooleanExtractor + "Validation model for the boolean extractor block" + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractor extIndBoo( + final nin=4) "Extracts signal from an input signal vector" + annotation (Placement(transformation(extent={{40,80},{60,100}}))); + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractor extIndBoo1( + final nin=4) + "Extracts signal from an input signal vector when the extract index is out of the upper range" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractor extIndBoo2( + final nin=4) + "Extracts signal from an input signal vector when the extract index is out of the lower range" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractor extIndBoo3( + final nin=4) + "Extracts signal from an input signal vector when the extract index changes from within range to out of range" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Routing.BooleanExtractor extIndBoo4( + final nin=4) + "Extracts signal from an input signal vector when the extract index changes from out of range to within range" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con1( + final k=true) + "Block that outputs true signal" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + final k=false) + "Block that outputs false signal" + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + final period=0.2) "Generate pulse signal of type boolean" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( + final period=0.3) + "Generate pulse signal of type boolean" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt( + final k=2) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt1( + k=6) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt2( + k=0) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul( + final amplitude=3, + final period=1, + final offset=-1) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul1( + final amplitude=-3, + final period=1, + final offset=3) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{0,-100},{20,-80}}))); + +equation + connect(conInt.y, extIndBoo.index) + annotation (Line(points={{22,70},{50,70},{50,78}}, color={255,127,0})); + connect(conInt1.y, extIndBoo1.index) + annotation (Line(points={{22,30},{50,30},{50,38}}, color={255,127,0})); + connect(con1.y, extIndBoo.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + 89.25},{38,89.25}}, color={255,0,255})); + connect(booPul.y, extIndBoo.u[2]) annotation (Line(points={{-58,30},{-30,30},{ + -30,89.75},{38,89.75}}, color={255,0,255})); + connect(booPul1.y, extIndBoo.u[3]) annotation (Line(points={{-58,-20},{-20,-20}, + {-20,90.25},{38,90.25}}, color={255,0,255})); + connect(con.y, extIndBoo.u[4]) annotation (Line(points={{-58,-70},{-10,-70},{-10, + 90.75},{38,90.75}}, color={255,0,255})); + connect(con1.y, extIndBoo1.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + 49.25},{38,49.25}}, color={255,0,255})); + connect(booPul.y, extIndBoo1.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,49.75},{38,49.75}}, color={255,0,255})); + connect(booPul1.y, extIndBoo1.u[3]) annotation (Line(points={{-58,-20},{-20,-20}, + {-20,50.25},{38,50.25}}, color={255,0,255})); + connect(con.y, extIndBoo1.u[4]) annotation (Line(points={{-58,-70},{-10,-70},{ + -10,50.75},{38,50.75}}, color={255,0,255})); + connect(con1.y, extIndBoo2.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + 9.25},{38,9.25}}, color={255,0,255})); + connect(booPul.y, extIndBoo2.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,9.75},{38,9.75}}, color={255,0,255})); + connect(booPul1.y, extIndBoo2.u[3]) annotation (Line(points={{-58,-20},{-10,-20}, + {-10,10.25},{38,10.25}}, color={255,0,255})); + connect(con.y, extIndBoo2.u[4]) annotation (Line(points={{-58,-70},{-10,-70},{ + -10,10.75},{38,10.75}}, color={255,0,255})); + connect(conInt2.y, extIndBoo2.index) + annotation (Line(points={{22,-10},{50,-10},{50,-2}}, color={255,127,0})); + connect(con1.y, extIndBoo3.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + -30.75},{38,-30.75}}, color={255,0,255})); + connect(booPul.y, extIndBoo3.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,-30.25},{38,-30.25}}, color={255,0,255})); + connect(booPul1.y, extIndBoo3.u[3]) annotation (Line(points={{-58,-20},{-20,-20}, + {-20,-29.75},{38,-29.75}}, color={255,0,255})); + connect(con.y, extIndBoo3.u[4]) annotation (Line(points={{-58,-70},{-10,-70},{ + -10,-29.25},{38,-29.25}}, color={255,0,255})); + connect(intPul.y, extIndBoo3.index) annotation (Line(points={{22,-50},{50,-50}, + {50,-42}}, color={255,127,0})); + connect(intPul1.y, extIndBoo4.index) + annotation (Line(points={{22,-90},{50,-90},{50,-82}}, color={255,127,0})); + connect(con1.y, extIndBoo4.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + -70.75},{38,-70.75}}, color={255,0,255})); + connect(booPul.y, extIndBoo4.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,-70.25},{38,-70.25}}, color={255,0,255})); + connect(booPul1.y, extIndBoo4.u[3]) annotation (Line(points={{-58,-20},{-20,-20}, + {-20,-69.75},{38,-69.75}}, color={255,0,255})); + connect(con.y, extIndBoo4.u[4]) annotation (Line(points={{-58,-70},{-10,-70},{ + -10,-69.25},{38,-69.25}}, color={255,0,255})); +annotation ( + experiment(StopTime=1.0,Tolerance=1e-06), + __Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanExtractor.mos" "Simulate and plot"), + Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.BooleanExtractor. +

+

+The instances extIndBoo, extIndBoo1, extIndBoo2, +extIndBoo3, and extIndBoo4 have the same input vector with +dimension of 4. However, they have different extract index and thus different output. +

+
    +
  • +The instance extIndBoo has the extract index of 2. The output is u[2]. +
  • +
  • +The instance extIndBoo1 has the extract index of 6. +Thus it is out of upper range [1, 4] and it outputs u[4]. +It also issues a warning to indicate that the extract index is out of range. +
  • +
  • +The instance extIndBoo2 has the extract index of 0. +Thus it is out of lower range [1, 4] and it outputs u[1]. +It also issues a warning to indicate that the extract index is out of range. +
  • +
  • +The instance extIndBoo3 has the extract index changing from 2 +to -1. Thus it first outputs u[2], and then changes to u[1]. +At the moment when the extract index becomes out of range, it issues a warning. +
  • +
  • +The instance extIndBoo4 has the extract index changing from 0 +to 3. Thus it first outputs u[1], and then changes to u[3]. +It issues a warning at the start of the simulation. +
  • +
+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram(coordinateSystem(extent={{-100,-120},{100,120}}))); +end BooleanExtractor; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mo new file mode 100644 index 0000000000..039b9e5040 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mo @@ -0,0 +1,55 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model BooleanScalarReplicator + "Validation model for the BooleanScalarReplicator block" + IBPSA.Controls.OBC.CDL.Routing.BooleanScalarReplicator booRep( + nout=3) + "Block that outputs the array replicating input value" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + period=0.2) + "Block that outputs boolean pulse" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + +equation + connect(booPul.y,booRep.u) + annotation (Line(points={{-19,0},{18,0}},color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanScalarReplicator.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.BooleanScalarReplicator. +

+", + revisions=" +
    +
  • +July 27, 2021, by Baptiste Ravache:
    +Renamed to BooleanScalarReplicator. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end BooleanScalarReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mo new file mode 100644 index 0000000000..7335948539 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mo @@ -0,0 +1,49 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model BooleanVectorFilter + "Validation model for the BooleanVectorFilter block" + IBPSA.Controls.OBC.CDL.Routing.BooleanVectorFilter + booFil(nin=3, nout=2, msk={true,false,true}) + "Block that filter the input vector" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + + Logical.Sources.Constant booInp[3](k={true,true,false}) "Boolean inputs" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); +equation + connect(booInp.y, booFil.u) + annotation (Line(points={{-18,0},{18,0}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorFilter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.BooleanVectorFilter. +

+", + revisions=" +
    +
  • +June 25, 2021, by Baptiste Ravache:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end BooleanVectorFilter; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mo new file mode 100644 index 0000000000..10e973702a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mo @@ -0,0 +1,49 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model BooleanVectorReplicator + "Validation model for the BooleanVectorReplicator block" + IBPSA.Controls.OBC.CDL.Routing.BooleanVectorReplicator booRep(nin=2, nout=3) + "Block that outputs the vector replicating input value" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul[2](period=fill(0.2,2)) + "Block that outputs boolean pulse" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + +equation + connect(booPul.y, booRep.u) + annotation (Line(points={{-18,0},{18,0}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/BooleanVectorReplicator.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.BooleanVectorReplicator. +

+", + revisions=" +
    +
  • +June 25, 2021, by Baptiste Ravache:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end BooleanVectorReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mo new file mode 100644 index 0000000000..24ed9ed0f2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mo @@ -0,0 +1,99 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model IntegerExtractSignal + "Validation model for extracting integer signals" + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractSignal extIntSig( + final nin=4, + final nout=3, + final extract={3,2,4}) + "Block that extracts signal from an integer input signal vector" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractSignal extIntSig1( + final nin=4, + final nout=5, + final extract={3,2,4,2,3}) + "Block that extracts signal from an integer input signal vector" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt2( + final k=1) + "Block that outputs integer constant" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul( + final amplitude=1, + final period=0.2) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul1( + final period=0.3, + final amplitude=2, + final offset=-1) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt3( + final k=4) + "Block that outputs integer constant" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + +equation + connect(conInt2.y,extIntSig. u[1]) annotation (Line(points={{-58,60},{-20,60}, + {-20,29.25},{38,29.25}}, color={255,127,0})); + connect(intPul.y,extIntSig. u[2]) annotation (Line(points={{-58,20},{-10,20},{ + -10,29.75},{38,29.75}}, color={255,127,0})); + connect(intPul1.y,extIntSig. u[3]) annotation (Line(points={{-58,-20},{0,-20}, + {0,30.25},{38,30.25}}, color={255,127,0})); + connect(conInt3.y,extIntSig. u[4]) annotation (Line(points={{-58,-60},{10,-60}, + {10,30.75},{38,30.75}}, color={255,127,0})); + connect(conInt2.y, extIntSig1.u[1]) annotation (Line(points={{-58,60},{-20,60}, + {-20,-30.75},{38,-30.75}}, color={255,127,0})); + connect(intPul.y, extIntSig1.u[2]) annotation (Line(points={{-58,20},{-10,20}, + {-10,-30.25},{38,-30.25}}, color={255,127,0})); + connect(intPul1.y, extIntSig1.u[3]) annotation (Line(points={{-58,-20},{0,-20}, + {0,-29.75},{38,-29.75}}, color={255,127,0})); + connect(conInt3.y, extIntSig1.u[4]) annotation (Line(points={{-58,-60},{10,-60}, + {10,-29.25},{38,-29.25}}, color={255,127,0})); +annotation ( + experiment(StopTime=1.0,Tolerance=1e-06), + __Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractSignal.mos" "Simulate and plot"), + Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.IntegerExtractSignal. +

+

+The instance extIntSig has the input vector with dimension of 4 and +the extracting vector is [3, 2, 4]. Thus the output vectors is [u[3], u[2], u[4]]. +

+

+The instance extIntSig1 has the input vector with dimension of 4 and +the extracting vector is [3, 2, 4, 2, 3]. +Thus the output vectors is [u[3], u[2], u[4], u[2], u[3]]. +

+

+Note that when the extracting vector extract has any element with the value that +is out of range [1, nin], e.g. [1, 4] for instance in extIntSig. +It will issue error and the model will not translate. +

+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end IntegerExtractSignal; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mo new file mode 100644 index 0000000000..3685a4c29f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mo @@ -0,0 +1,177 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model IntegerExtractor + "Validation model for the integer extractor block" + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractor extIndInt( + final nin=4) "Extracts signal from an input signal vector" + annotation (Placement(transformation(extent={{40,80},{60,100}}))); + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractor extIndInt1( + final nin=4) + "Extracts signal from an input signal vector when the extract index is out of the upper range" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractor extIndInt2( + final nin=4) + "Extracts signal from an input signal vector when the extract index is out of the lower range" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractor extIndInt3( + final nin=4) + "Extracts signal from an input signal vector when the extract index changes from within range to out of range" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Routing.IntegerExtractor extIndInt4( + final nin=4) + "Extracts signal from an input signal vector when the extract index changes from out of range to within range" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt2( + final k=0) + "Block that outputs integer constant" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt3( + final k=4) + "Block that outputs integer constant" + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul( + final amplitude=1, + final period=0.2) "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul1( + final period=0.3, + final amplitude=2, + final offset=-1) "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt( + final k=2) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt1(k=6) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt4(k=0) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul2( + final period=1, + final amplitude=3, + final offset=-1) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul3( + final period=1, + final amplitude=-3, + final offset=3) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{0,-100},{20,-80}}))); + +equation + connect(conInt1.y, extIndInt1.index) + annotation (Line(points={{22,30},{50,30},{50,38}}, color={255,127,0})); + connect(conInt2.y, extIndInt.u[1]) annotation (Line(points={{-58,80},{-40,80}, + {-40,89.25},{38,89.25}}, color={255,127,0})); + connect(intPul.y, extIndInt.u[2]) annotation (Line(points={{-58,30},{-30,30},{ + -30,89.75},{38,89.75}}, color={255,127,0})); + connect(intPul1.y, extIndInt.u[3]) annotation (Line(points={{-58,-30},{-20,-30}, + {-20,90.25},{38,90.25}}, color={255,127,0})); + connect(conInt3.y, extIndInt.u[4]) annotation (Line(points={{-58,-80},{-10,-80}, + {-10,90.75},{38,90.75}}, color={255,127,0})); + connect(conInt2.y, extIndInt1.u[1]) annotation (Line(points={{-58,80},{-40,80}, + {-40,49.25},{38,49.25}}, color={255,127,0})); + connect(intPul.y, extIndInt1.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,49.75},{38,49.75}}, color={255,127,0})); + connect(intPul1.y, extIndInt1.u[3]) annotation (Line(points={{-58,-30},{-20,-30}, + {-20,50.25},{38,50.25}}, color={255,127,0})); + connect(conInt3.y, extIndInt1.u[4]) annotation (Line(points={{-58,-80},{-10,-80}, + {-10,50.75},{38,50.75}}, color={255,127,0})); + connect(conInt.y, extIndInt.index) + annotation (Line(points={{22,70},{50,70},{50,78}}, color={255,127,0})); + connect(conInt4.y, extIndInt2.index) + annotation (Line(points={{22,-10},{50,-10},{50,-2}}, color={255,127,0})); + connect(conInt2.y, extIndInt2.u[1]) annotation (Line(points={{-58,80},{-40,80}, + {-40,9.25},{38,9.25}}, color={255,127,0})); + connect(intPul.y, extIndInt2.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,9.75},{38,9.75}}, color={255,127,0})); + connect(intPul1.y, extIndInt2.u[3]) annotation (Line(points={{-58,-30},{-20,-30}, + {-20,10.25},{38,10.25}}, color={255,127,0})); + connect(conInt3.y, extIndInt2.u[4]) annotation (Line(points={{-58,-80},{-10,-80}, + {-10,10.75},{38,10.75}}, color={255,127,0})); + connect(conInt2.y, extIndInt3.u[1]) annotation (Line(points={{-58,80},{-40,80}, + {-40,-30.75},{38,-30.75}}, color={255,127,0})); + connect(intPul.y, extIndInt3.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,-30.25},{38,-30.25}}, color={255,127,0})); + connect(intPul1.y, extIndInt3.u[3]) annotation (Line(points={{-58,-30},{-20,-30}, + {-20,-29.75},{38,-29.75}}, color={255,127,0})); + connect(conInt3.y, extIndInt3.u[4]) annotation (Line(points={{-58,-80},{-10,-80}, + {-10,-29.25},{38,-29.25}}, color={255,127,0})); + connect(intPul2.y, extIndInt3.index) annotation (Line(points={{22,-50},{50,-50}, + {50,-42}}, color={255,127,0})); + connect(intPul3.y, extIndInt4.index) + annotation (Line(points={{22,-90},{50,-90},{50,-82}}, color={255,127,0})); + connect(conInt2.y, extIndInt4.u[1]) annotation (Line(points={{-58,80},{-40,80}, + {-40,-70.75},{38,-70.75}}, color={255,127,0})); + connect(intPul.y, extIndInt4.u[2]) annotation (Line(points={{-58,30},{-30,30}, + {-30,-70.25},{38,-70.25}}, color={255,127,0})); + connect(intPul1.y, extIndInt4.u[3]) annotation (Line(points={{-58,-30},{-20,-30}, + {-20,-69.75},{38,-69.75}}, color={255,127,0})); + connect(conInt3.y, extIndInt4.u[4]) annotation (Line(points={{-58,-80},{-10,-80}, + {-10,-69.25},{38,-69.25}}, color={255,127,0})); +annotation ( + experiment(StopTime=1.0, Tolerance=1e-06), + __Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerExtractor.mos" "Simulate and plot"), + Documentation(info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.IntegerExtractor. +

+

+The instances extIndInt, extIndInt1, extIndInt2, +extIndInt3, and extIndInt4 have the same input vector with +dimension of 4. However, they have different extract index and thus different output. +

+
    +
  • +The instance extIndInt has the extract index of 2. The output is u[2]. +
  • +
  • +The instance extIndInt1 has the extract index of 6. +Thus it is out of upper range [1, 4] and it outputs u[4]. +It also issues a warning to indicate that the extract index is out of range. +
  • +
  • +The instance extIndInt2 has the extract index of 0. +Thus it is out of lower range [1, 4] and it outputs u[1]. +It also issues a warning to indicate that the extract index is out of range. +
  • +
  • +The instance extIndInt3 has the extract index changing from 2 +to -1. Thus it first outputs u[2], and then changes to u[1]. +At the moment when the extract index becomes out of range, it issues a warning. +
  • +
  • +The instance extIndInt4 has the extract index changing from 0 +to 3. Thus it first outputs u[1], and then changes to u[3]. +It issues a warning at the start of the simulation. +
  • +
+", +revisions=" +
    +
  • +October 5, 2022, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram(coordinateSystem(extent={{-100,-120},{100,120}}))); +end IntegerExtractor; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mo new file mode 100644 index 0000000000..1c500c9671 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mo @@ -0,0 +1,62 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model IntegerScalarReplicator + "Validation model for the IntegerScalarReplicator block" + IBPSA.Controls.OBC.CDL.Routing.IntegerScalarReplicator intRep( + nout=3) + "Block that outputs the array replicating input value" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram( + height=5, + duration=1, + offset=-2) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt + "Convert Real input to Integer output" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(ram.y,reaToInt.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + connect(reaToInt.y,intRep.u) + annotation (Line(points={{11,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerScalarReplicator.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.IntegerScalarReplicator. +

+", + revisions=" +
    +
  • +July 27, 2021, by Baptiste Ravache:
    +Renamed to IntegerScalarReplicator. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end IntegerScalarReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mo new file mode 100644 index 0000000000..28f221403c --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mo @@ -0,0 +1,49 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model IntegerVectorFilter + "Validation model for the IntegerVectorFilter block" + IBPSA.Controls.OBC.CDL.Routing.IntegerVectorFilter + intFil(nin=3, nout=2, msk={true,false,true}) + "Block that filter the input vector" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + + Integers.Sources.Constant IntInp[3](k={1,2,3}) "Integer inputs" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); +equation + connect(IntInp.y, intFil.u) + annotation (Line(points={{-18,0},{18,0}}, color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorFilter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.IntegerVectorFilter. +

+", + revisions=" +
    +
  • +June 25, 2021, by Baptiste Ravache:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end IntegerVectorFilter; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mo new file mode 100644 index 0000000000..95c3b9336e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mo @@ -0,0 +1,57 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model IntegerVectorReplicator + "Validation model for the IntegerVectorReplicator block" + IBPSA.Controls.OBC.CDL.Routing.IntegerVectorReplicator + intRep(nin=2, nout=3) + "Block that outputs the vector replicating input value" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram[2]( + height=fill(5,2), + duration=fill(1,2), + offset=fill(-2,2)) "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Conversions.RealToInteger reaToInt[2] + "Convert Real input to Integer output" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + +equation + connect(ram.y,reaToInt.u) + annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); + connect(reaToInt.y,intRep.u) + annotation (Line(points={{12,0},{38,0}},color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/IntegerVectorReplicator.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.IntegerVectorReplicator. +

+", + revisions=" +
    +
  • +June 25, 2021, by Baptiste Ravache:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end IntegerVectorReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mo new file mode 100644 index 0000000000..6626dd3443 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mo @@ -0,0 +1,120 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model RealExtractSignal + "Validation model for the extract signal block" + IBPSA.Controls.OBC.CDL.Routing.RealExtractSignal extSig( + final nin=5, + final nout=3, + final extract={1,2,5}) + "Block that extracts signals from an input signal vector" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Routing.RealExtractSignal extSig1( + final nin=5, + final nout=6, + final extract={1,2,5,3,4,2}) + "Block that extracts signals from an input signal vector" + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram( + final height=5, + final duration=1, + final offset=-2) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram1( + final duration=1, + final height=4, + final offset=-1) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram2( + final duration=1, + final height=3, + final offset=-2) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul( + final amplitude=0.5, + final period=0.2) + "Generate pulse signal of type Real" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul1( + final period=0.2, + final amplitude=1.5, + final offset=-0.2) + "Generate pulse signal of type Real" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ram.y,extSig.u[1]) + annotation (Line(points={{-38,60},{-20,60},{-20,39.2},{18,39.2}}, color={0,0,127})); + connect(pul.y,extSig.u[2]) + annotation (Line(points={{-38,30},{-16,30},{-16,39.6},{18,39.6}}, color={0,0,127})); + connect(pul1.y,extSig.u[3]) + annotation (Line(points={{-38,0},{-12,0},{-12,40},{18,40}}, color={0,0,127})); + connect(ram1.y,extSig.u[4]) + annotation (Line(points={{-38,-30},{-8,-30},{-8,40.4},{18,40.4}}, color={0,0,127})); + connect(ram2.y,extSig.u[5]) + annotation (Line(points={{-38,-60},{-4,-60},{-4,40.8},{18,40.8}},color={0,0,127})); + connect(ram.y, extSig1.u[1]) annotation (Line(points={{-38,60},{-20,60},{-20,-40.8}, + {18,-40.8}}, color={0,0,127})); + connect(pul.y, extSig1.u[2]) annotation (Line(points={{-38,30},{-16,30},{-16,-40.4}, + {18,-40.4}}, color={0,0,127})); + connect(pul1.y, extSig1.u[3]) annotation (Line(points={{-38,0},{-12,0},{-12,-40}, + {18,-40}}, color={0,0,127})); + connect(ram1.y, extSig1.u[4]) annotation (Line(points={{-38,-30},{-8,-30},{-8, + -39.6},{18,-39.6}}, color={0,0,127})); + connect(ram2.y, extSig1.u[5]) annotation (Line(points={{-38,-60},{-4,-60},{-4, + -39.2},{18,-39.2}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractSignal.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.RealExtractSignal. +

+

+The instance extSig has the input vector with dimension of 4 and +the extracting vector is [1, 2, 5]. +Thus the output vectors is [u[1], u[2], u[5]]. +

+

+The instance extSig1 has the input vector with dimension of 4 and +the extracting vector is [1, 2, 5, 3, 4, 2]. Thus the output vectors is [u[1], u[2], u[5], u[3], u[4], u[2]]. +

+

+Note that when the extracting vector extract has any element with the value that +is out of range [1, nin], e.g. [1, 4] for instance in extSig. +It will issue error and the model will not translate. +

+", +revisions=" +
    +
  • +October 14, 2022, by Jianjun Hu:
    +Added validation when the number of outputs is more than the number of inputs. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end RealExtractSignal; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractor.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractor.mo new file mode 100644 index 0000000000..b720fd33f0 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealExtractor.mo @@ -0,0 +1,206 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model RealExtractor + "Validation model for the extractor block" + IBPSA.Controls.OBC.CDL.Routing.RealExtractor extIndSig( + final nin=5) "Extracts signal from an input signal vector" + annotation (Placement(transformation(extent={{40,80},{60,100}}))); + IBPSA.Controls.OBC.CDL.Routing.RealExtractor extIndSig1( + final nin=5) + "Extracts signal from an input signal vector when the extract index is out of the upper range" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + IBPSA.Controls.OBC.CDL.Routing.RealExtractor extIndSig2( + final nin=5) + "Extracts signal from an input signal vector when the extract index is out of the lower range" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + IBPSA.Controls.OBC.CDL.Routing.RealExtractor extIndSig3( + final nin=5) + "Extracts signal from an input signal vector when the extract index changes from within range to out of range" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + IBPSA.Controls.OBC.CDL.Routing.RealExtractor extIndSig4( + final nin=5) + "Extracts signal from an input signal vector when the extract index changes from out of range to within range" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram( + final height=5, + final duration=1, + final offset=-2) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram1( + final duration=1, + final height=4, + final offset=-1) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram2( + final duration=1, + final height=3, + final offset=-2) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul( + final amplitude=0.5, + final period=0.2) + "Generate pulse signal of type Real" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul1( + final period=0.2, + final amplitude=1.5, + final offset=-0.2) + "Generate pulse signal of type Real" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt( + final k=2) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt1(k=6) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Constant conInt2(k=0) + "Index to extract input signal" + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul( + final amplitude=3, + final period=1, + final offset=-1) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + IBPSA.Controls.OBC.CDL.Integers.Sources.Pulse intPul1( + final amplitude=-3, + final period=1, + final offset=3) + "Generate pulse signal of type Integer" + annotation (Placement(transformation(extent={{0,-100},{20,-80}}))); +equation + connect(ram.y,extIndSig.u[1]) + annotation (Line(points={{-58,80},{-40,80},{-40,89.2},{38,89.2}}, color={0,0,127})); + connect(pul.y,extIndSig.u[2]) + annotation (Line(points={{-58,50},{-34,50},{-34,89.6},{38,89.6}}, color={0,0,127})); + connect(pul1.y,extIndSig.u[3]) + annotation (Line(points={{-58,20},{-28,20},{-28,90},{38,90}},color={0,0,127})); + connect(ram1.y,extIndSig.u[4]) + annotation (Line(points={{-58,-10},{-22,-10},{-22,90.4},{38,90.4}}, color={0,0,127})); + connect(ram2.y,extIndSig.u[5]) + annotation (Line(points={{-58,-40},{-16,-40},{-16,90.8},{38,90.8}}, color={0,0,127})); + connect(conInt.y,extIndSig.index) + annotation (Line(points={{22,70},{50,70},{50,78}},color={255,127,0})); + connect(conInt1.y,extIndSig1.index) + annotation (Line(points={{22,30},{50,30},{50,38}}, color={255,127,0})); + connect(ram.y,extIndSig1.u[1]) + annotation (Line(points={{-58,80},{-40,80},{-40,49.2},{38,49.2}}, color={0,0,127})); + connect(pul.y,extIndSig1.u[2]) + annotation (Line(points={{-58,50},{-34,50},{-34,49.6},{38,49.6}}, color={0,0,127})); + connect(pul1.y,extIndSig1.u[3]) + annotation (Line(points={{-58,20},{-28,20},{-28,50},{38,50}}, color={0,0,127})); + connect(ram1.y,extIndSig1.u[4]) + annotation (Line(points={{-58,-10},{-22,-10},{-22,50.4},{38,50.4}}, color={0,0,127})); + connect(ram2.y,extIndSig1.u[5]) + annotation (Line(points={{-58,-40},{-16,-40},{-16,50.8},{38,50.8}},color={0,0,127})); + connect(conInt2.y, extIndSig2.index) + annotation (Line(points={{22,-10},{50,-10},{50,-2}}, color={255,127,0})); + connect(ram.y, extIndSig2.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + 9.2},{38,9.2}}, color={0,0,127})); + connect(pul.y, extIndSig2.u[2]) annotation (Line(points={{-58,50},{-34,50},{-34, + 9.6},{38,9.6}}, color={0,0,127})); + connect(pul1.y, extIndSig2.u[3]) annotation (Line(points={{-58,20},{-28,20},{-28, + 10},{38,10}}, color={0,0,127})); + connect(ram1.y, extIndSig2.u[4]) annotation (Line(points={{-58,-10},{-22,-10}, + {-22,10.4},{38,10.4}}, color={0,0,127})); + connect(ram2.y, extIndSig2.u[5]) annotation (Line(points={{-58,-40},{-16,-40}, + {-16,10.8},{38,10.8}}, color={0,0,127})); + connect(ram.y, extIndSig3.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + -30.8},{38,-30.8}}, color={0,0,127})); + connect(pul.y, extIndSig3.u[2]) annotation (Line(points={{-58,50},{-34,50},{-34, + -30.4},{38,-30.4}}, color={0,0,127})); + connect(pul1.y, extIndSig3.u[3]) annotation (Line(points={{-58,20},{-28,20},{-28, + -30},{38,-30}}, color={0,0,127})); + connect(ram1.y, extIndSig3.u[4]) annotation (Line(points={{-58,-10},{-22,-10}, + {-22,-29.6},{38,-29.6}}, color={0,0,127})); + connect(ram2.y, extIndSig3.u[5]) annotation (Line(points={{-58,-40},{-16,-40}, + {-16,-29.2},{38,-29.2}}, color={0,0,127})); + connect(ram.y, extIndSig4.u[1]) annotation (Line(points={{-58,80},{-40,80},{-40, + -70.8},{38,-70.8}}, color={0,0,127})); + connect(pul.y, extIndSig4.u[2]) annotation (Line(points={{-58,50},{-34,50},{-34, + -70.4},{38,-70.4}}, color={0,0,127})); + connect(pul1.y, extIndSig4.u[3]) annotation (Line(points={{-58,20},{-28,20},{-28, + -70},{38,-70}}, color={0,0,127})); + connect(ram1.y, extIndSig4.u[4]) annotation (Line(points={{-58,-10},{-22,-10}, + {-22,-69.6},{38,-69.6}}, color={0,0,127})); + connect(ram2.y, extIndSig4.u[5]) annotation (Line(points={{-58,-40},{-16,-40}, + {-16,-69.2},{38,-69.2}}, color={0,0,127})); + connect(intPul.y, extIndSig3.index) + annotation (Line(points={{22,-50},{50,-50},{50,-42}}, color={255,127,0})); + connect(intPul1.y, extIndSig4.index) + annotation (Line(points={{22,-90},{50,-90},{50,-82}}, color={255,127,0})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealExtractor.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.RealExtractor. +

+

+The instances extIndSig, extIndSig1, extIndSig2, +extIndSig3, and extIndSig4 have the same input vector with +dimension of 5. However, they have different extract index and thus different output. +

+
    +
  • +The instance extIndSig has the extract index of 2. The output is u[2]. +
  • +
  • +The instance extIndSig1 has the extract index of 6. +Thus it is out of upper range [1, 5] and it outputs u[5]. +It also issues a warning to indicate that the extract index is out of range. +
  • +
  • +The instance extIndSig2 has the extract index of 0. +Thus it is out of lower range [1, 5] and it outputs u[1]. +It also issues a warning to indicate that the extract index is out of range. +
  • +
  • +The instance extIndSig3 has the extract index changing from 2 +to -1. Thus it first outputs u[2], and then changes to u[1]. +At the moment when the extract index becomes out of range, it issues a warning. +
  • +
  • +The instance extIndSig4 has the extract index changing from 0 +to 3. Thus it first outputs u[1], and then changes to u[3]. +It issues a warning at the start of the simulation. +
  • +
+", +revisions=" +
    +
  • +October 14, 2022, by Jianjun Hu:
    +Added more validations. +
  • +
  • +July 19, 2018, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram(coordinateSystem(extent={{-100,-120},{100,120}}))); +end RealExtractor; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mo new file mode 100644 index 0000000000..33b2b18eac --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mo @@ -0,0 +1,57 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model RealScalarReplicator + "Validation model for the RealScalarReplicator block" + IBPSA.Controls.OBC.CDL.Routing.RealScalarReplicator reaRep( + nout=3) + "Block that outputs the array replicating input value" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram( + height=5, + duration=1, + offset=-2) + "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ram.y,reaRep.u) + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealScalarReplicator.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.RealScalarReplicator. +

+", + revisions=" +
    +
  • +July 27, 2021, by Baptiste Ravache:
    +Renamed to RealScalarReplicator. +
  • +
  • +July 24, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end RealScalarReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mo new file mode 100644 index 0000000000..7c29b49995 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mo @@ -0,0 +1,49 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model RealVectorFilter + "Validation model for the RealVectorFilter block" + IBPSA.Controls.OBC.CDL.Routing.RealVectorFilter + reaFil(nin=3, nout=2, msk={true,false,true}) + "Block that filter the input vector" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + + Reals.Sources.Constant ReaInp[3](k={1,2,3}) "Real inputs" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); +equation + connect(ReaInp.y, reaFil.u) + annotation (Line(points={{-18,0},{18,0}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorFilter.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.RealVectorFilter. +

+", + revisions=" +
    +
  • +June 25, 2021, by Baptiste Ravache:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end RealVectorFilter; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mo new file mode 100644 index 0000000000..0247bf813d --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mo @@ -0,0 +1,52 @@ +within IBPSA.Controls.OBC.CDL.Routing.Validation; +model RealVectorReplicator + "Validation model for the RealVectorReplicator block" + IBPSA.Controls.OBC.CDL.Routing.RealVectorReplicator + reaRep(nin=2, nout=3) + "Block that outputs the vector replicating input value" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp ram[2]( + height=fill(5,2), + duration=fill(1,2), + offset=fill(-2,2)) "Block that outputs ramp signal" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(ram.y,reaRep.u) + annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Routing/Validation/RealVectorReplicator.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Routing.RealVectorReplicator. +

+", + revisions=" +
    +
  • +June 25, 2021, by Baptiste Ravache:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end RealVectorReplicator; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Routing/Validation/package.mo new file mode 100644 index 0000000000..982dccc2aa --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Routing; +package Validation "Collection of models that validate the routing blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Routing. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Routing/Validation/package.order b/IBPSA/Controls/OBC/CDL/Routing/Validation/package.order new file mode 100644 index 0000000000..c5606d9843 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/Validation/package.order @@ -0,0 +1,15 @@ +BooleanExtractSignal +BooleanExtractor +BooleanScalarReplicator +BooleanVectorFilter +BooleanVectorReplicator +IntegerExtractSignal +IntegerExtractor +IntegerScalarReplicator +IntegerVectorFilter +IntegerVectorReplicator +RealExtractSignal +RealExtractor +RealScalarReplicator +RealVectorFilter +RealVectorReplicator diff --git a/IBPSA/Controls/OBC/CDL/Routing/package.mo b/IBPSA/Controls/OBC/CDL/Routing/package.mo new file mode 100644 index 0000000000..e2ac3a28cc --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/package.mo @@ -0,0 +1,34 @@ +within IBPSA.Controls.OBC.CDL; +package Routing "Package with blocks that combine and extract signals" + annotation ( + Documentation( + info=" +

+This package contains blocks to combine and extract signals. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Line( + points={{-90,0},{4,0}}, + color={95,95,95}), + Line( + points={{88,65},{48,65},{-8,0}}, + color={95,95,95}), + Line( + points={{-8,0},{93,0}}, + color={95,95,95}), + Line( + points={{87,-65},{48,-65},{-8,0}}, + color={95,95,95})})); +end Routing; diff --git a/IBPSA/Controls/OBC/CDL/Routing/package.order b/IBPSA/Controls/OBC/CDL/Routing/package.order new file mode 100644 index 0000000000..99919894d5 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Routing/package.order @@ -0,0 +1,16 @@ +BooleanExtractSignal +BooleanExtractor +BooleanScalarReplicator +BooleanVectorFilter +BooleanVectorReplicator +IntegerExtractSignal +IntegerExtractor +IntegerScalarReplicator +IntegerVectorFilter +IntegerVectorReplicator +RealExtractSignal +RealExtractor +RealScalarReplicator +RealVectorFilter +RealVectorReplicator +Validation diff --git a/IBPSA/Controls/OBC/CDL/Types/Extrapolation.mo b/IBPSA/Controls/OBC/CDL/Types/Extrapolation.mo new file mode 100644 index 0000000000..556ac9fb3a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Types/Extrapolation.mo @@ -0,0 +1,33 @@ +within IBPSA.Controls.OBC.CDL.Types; +type Extrapolation = enumeration( + HoldLastPoint + "Hold the first/last table point outside of the table scope", + LastTwoPoints + "Extrapolate by using the derivative at the first/last table points outside of the table scope", + Periodic + "Repeat the table scope periodically") + "Enumeration defining the extrapolation of time table interpolation" + annotation (Documentation(info=" +

+Enumeration for the type of extrapolation that is used when reading data from a table. +The possible values are: +

+ + + + + + + + + + + +
EnumerationDescription
HoldLastPoint +Hold the first or last point outside of the table scope. +
LastTwoPoints +Extrapolate by using the derivative at the first or last table points outside of the table scope. +
Periodic +Repeat the table scope periodically. +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Types/SimpleController.mo b/IBPSA/Controls/OBC/CDL/Types/SimpleController.mo new file mode 100644 index 0000000000..bf712562b2 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Types/SimpleController.mo @@ -0,0 +1,41 @@ +within IBPSA.Controls.OBC.CDL.Types; +type SimpleController = enumeration( + P "P controller", + PI "PI controller", + PD "PD controller", + PID "PID controller") + "Enumeration defining P, PI, PD, or PID simple controller type" + annotation (Evaluate=true,Documentation(info=" +

+Enumeration to define the type of the controller. +Possible values are: +

+ + + + + + + + + + + + +
EnumerationDescription
P +Controller with proportional term. +
PI +Controller with proportional and integral terms. +
PD +Controller with proportional and derivative term. +
PID +Controller with proportional, integral and derivative terms. +
+",revisions=" +
    +
  • +March 23, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Types/Smoothness.mo b/IBPSA/Controls/OBC/CDL/Types/Smoothness.mo new file mode 100644 index 0000000000..54eb898037 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Types/Smoothness.mo @@ -0,0 +1,25 @@ +within IBPSA.Controls.OBC.CDL.Types; +type Smoothness = enumeration( + LinearSegments "Table points are linearly interpolated", + ConstantSegments "Table points are not interpolated, but the previous tabulated value is returned") + "Enumeration defining the smoothness of table interpolation" + annotation (Documentation(info=" +

+Enumeration for the type of smoothness that is used when interpolating data from a table. +The possible values are: +

+ + + + + + + + + +
EnumerationDescription
LinearSegments +Linearly interpolate table points. +
ConstantSegments +Do not interpolate, but rather use the previously tabulated value. +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Types/ZeroTime.mo b/IBPSA/Controls/OBC/CDL/Types/ZeroTime.mo new file mode 100644 index 0000000000..6ce41ba621 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Types/ZeroTime.mo @@ -0,0 +1,86 @@ +within IBPSA.Controls.OBC.CDL.Types; +type ZeroTime = enumeration( + UnixTimeStamp "Thu, 01 Jan 1970 00:00:00 local time", + UnixTimeStampGMT "Thu, 01 Jan 1970 00:00:00 GMT", + Custom "User specified local time", + NY2010 "New year 2010, 00:00:00 local time", + NY2011 "New year 2011, 00:00:00 local time", + NY2012 "New year 2012, 00:00:00 local time", + NY2013 "New year 2013, 00:00:00 local time", + NY2014 "New year 2014, 00:00:00 local time", + NY2015 "New year 2015, 00:00:00 local time", + NY2016 "New year 2016, 00:00:00 local time", + NY2017 "New year 2017, 00:00:00 local time", + NY2018 "New year 2018, 00:00:00 local time", + NY2019 "New year 2019, 00:00:00 local time", + NY2020 "New year 2020, 00:00:00 local time", + NY2021 "New year 2021, 00:00:00 local time", + NY2022 "New year 2022, 00:00:00 local time", + NY2023 "New year 2023, 00:00:00 local time", + NY2024 "New year 2024, 00:00:00 local time", + NY2025 "New year 2025, 00:00:00 local time", + NY2026 "New year 2026, 00:00:00 local time", + NY2027 "New year 2027, 00:00:00 local time", + NY2028 "New year 2028, 00:00:00 local time", + NY2029 "New year 2029, 00:00:00 local time", + NY2030 "New year 2030, 00:00:00 local time", + NY2031 "New year 2031, 00:00:00 local time", + NY2032 "New year 2032, 00:00:00 local time", + NY2033 "New year 2033, 00:00:00 local time", + NY2034 "New year 2034, 00:00:00 local time", + NY2035 "New year 2035, 00:00:00 local time", + NY2036 "New year 2036, 00:00:00 local time", + NY2037 "New year 2037, 00:00:00 local time", + NY2038 "New year 2038, 00:00:00 local time", + NY2039 "New year 2039, 00:00:00 local time", + NY2040 "New year 2040, 00:00:00 local time", + NY2041 "New year 2041, 00:00:00 local time", + NY2042 "New year 2042, 00:00:00 local time", + NY2043 "New year 2043, 00:00:00 local time", + NY2044 "New year 2044, 00:00:00 local time", + NY2045 "New year 2045, 00:00:00 local time", + NY2046 "New year 2046, 00:00:00 local time", + NY2047 "New year 2047, 00:00:00 local time", + NY2048 "New year 2048, 00:00:00 local time", + NY2049 "New year 2049, 00:00:00 local time", + NY2050 "New year 2050, 00:00:00 local time") + "Use this to set the date corresponding to time = 0" + annotation (Documentation(info=" +

+Type for choosing how to set the reference time in + +IBPSA.Controls.OBC.CDL.Reals.Sources.CalendarTime. +

+

+For example, CDL.Types.TimeReference.NY2016 +means that if model time is 0, it is +January 1, 2016, 0:00:00 local time. +

+",revisions=" +
    +
  • +March 8, 2024, by Jelger Jansen:
    +Extend functionality to year 2050.
    +This is for +Buildings, issue 1847. +
  • +
  • +March 14, 2017, by Michael Wetter:
    +Revised documentation. +
  • +
  • +February 23, 2017, by Milica Grahovac:
    +Initial CDL implementation. +
  • +
  • +September 10, 2016, by Michael Wetter:
    +Revised implementation and moved to new package + +IBPSA.Utilities.Time.CalendarTime.Types. +
  • +
  • +August 3, 2016, by Filip Jorissen:
    +First implementation. +
  • +
+")); diff --git a/IBPSA/Controls/OBC/CDL/Types/package.mo b/IBPSA/Controls/OBC/CDL/Types/package.mo new file mode 100644 index 0000000000..98d27ea8ce --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Types/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL; +package Types "Package with type definitions" + annotation ( + Documentation( + info=" +

+This package contains type definitions. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={-12.167,-23}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{12.167,65},{14.167,93},{36.167,89},{24.167,20},{4.167,-30},{14.167,-30},{24.167,-30},{24.167,-40},{-5.833,-50},{-15.833,-30},{4.167,20},{12.167,65}}, + smooth=Smooth.Bezier, + lineColor={0,0,0}), + Polygon( + origin={2.7403,1.6673}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{49.2597,22.3327},{31.2597,24.3327},{7.2597,18.3327},{-26.7403,10.3327},{-46.7403,14.3327},{-48.7403,6.3327},{-32.7403,0.3327},{-6.7403,4.3327},{33.2597,14.3327},{49.2597,14.3327},{49.2597,22.3327}}, + smooth=Smooth.Bezier)})); +end Types; diff --git a/IBPSA/Controls/OBC/CDL/Types/package.order b/IBPSA/Controls/OBC/CDL/Types/package.order new file mode 100644 index 0000000000..5b39c19665 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Types/package.order @@ -0,0 +1,4 @@ +Extrapolation +SimpleController +Smoothness +ZeroTime diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Assert.mo b/IBPSA/Controls/OBC/CDL/Utilities/Assert.mo new file mode 100644 index 0000000000..6c361a89c5 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Assert.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Utilities; +block Assert + "Print a warning message when input becomes false" + parameter String message + "Message written when u becomes false"; + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput u + "Boolean input that triggers assert when it becomes false" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + +equation + assert(u, message, AssertionLevel.warning); + annotation ( + defaultComponentName="assMes", + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{0,80},{-80,-60},{80,-60},{0,80}}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0}), + Text( + extent={{-100,160},{100,106}}, + textColor={0,0,255}, + textString="%name"), + Polygon( + points={{0,72},{-72,-56},{72,-56},{0,72}}, + lineColor={0,0,0}, + fillColor={255,255,170}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-4,38},{2,-24}}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-6,-32},{4,-42}}, + pattern=LinePattern.None, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid)}), + Documentation( + info=" +

+Block that writes a warning if the input becomes false. +

+

+Tools or control systems are expected to write message together +with a time stamp to an output device and/or a log file. +

+", + revisions=" +
    +
  • +November 6, 2017, by Michael Wetter:
    +Simplified implementation. +
  • +
  • +November 3, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+")); +end Assert; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/SunRiseSet.mo b/IBPSA/Controls/OBC/CDL/Utilities/SunRiseSet.mo new file mode 100644 index 0000000000..8d162683ae --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/SunRiseSet.mo @@ -0,0 +1,391 @@ +within IBPSA.Controls.OBC.CDL.Utilities; +block SunRiseSet + "Next sunrise and sunset time" + parameter Real lat( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Latitude"; + parameter Real lon( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Longitude"; + parameter Real timZon( + final quantity="Time", + final unit="s", + displayUnit="h") + "Time zone"; + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput nextSunRise( + final quantity="Time", + final unit="s", + displayUnit="h") + "Time of next sunrise" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput nextSunSet( + final quantity="Time", + final unit="s", + displayUnit="h") + "Time of next sunset" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput sunUp + "Output with true if the sun is up" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); + +protected + constant Real k1=sin( + 23.45*2*Modelica.Constants.pi/360) + "Intermediate constant"; + constant Real k2=2*Modelica.Constants.pi/365.25 + "Intermediate constant"; + parameter Real staTim( + final quantity="Time", + final unit="s", + fixed=false) + "Simulation start time"; + parameter Real timDifLocCiv( + final quantity="Time", + final unit="s", + fixed=false) + "Time difference between local and civil time"; + + Real eqnTim( + final quantity="Time", + final unit="s") + "Equation of time"; + Real timCor( + final quantity="Time", + final unit="s") + "Time correction"; + Real decAng( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Declination angle"; + Real Bt + "Intermediate variable to calculate equation of time"; + Real cosHou + "Cosine of hour angle"; + + + function nextHourAngle + "Calculate the hour angle when the sun rises or sets next time" + input Real t( + final quantity="Time", + final unit="s") + "Current simulation time"; + input Real timDifLocCiv( + final quantity="Time", + final unit="s") + "Time difference between local and civil time"; + input Real lat( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Latitude"; + output Real houAng( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Solar hour angle"; + output Real tNext( + final quantity="Time", + final unit="s") + "Timesnap when sun rises or sets next time"; + output Real timCor( + final quantity="Time", + final unit="s") + "Time correction"; + + protected + Integer iDay; + Boolean compute + "Flag, set to false when the sun rise or sets "; + Real Bt + "Intermediate variable to calculate equation of time"; + Real eqnTim( + final quantity="Time", + final unit="s") + "Equation of time"; + Real decAng( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Declination angle"; + Real cosHou + "Cosine of hour angle"; + + algorithm + iDay := 1; + compute := true; + while compute loop + tNext := t+iDay*86400; + Bt := Modelica.Constants.pi*((tNext+86400)/86400-81)/182; + eqnTim := 60*(9.87*Modelica.Math.sin( + 2*Bt)-7.53*Modelica.Math.cos(Bt)-1.5*Modelica.Math.sin(Bt)); + timCor := eqnTim+timDifLocCiv; + decAng := Modelica.Math.asin( + -k1*Modelica.Math.cos( + (tNext/86400+10)*k2)); + cosHou :=-Modelica.Math.tan(lat)*Modelica.Math.tan(decAng); + compute := abs(cosHou) > 1; + iDay := iDay+1; + end while; + houAng := Modelica.Math.acos(cosHou); + end nextHourAngle; + + function computeSunRise + "Output the next sunrise time" + input Real t( + final quantity="Time", + final unit="s") + "Current simulation time"; + input Real staTim( + final quantity="Time", + final unit="s") + "Simulation start time"; + input Real timDifLocCiv( + final quantity="Time", + final unit="s") + "Time difference between local and civil time"; + input Real lat( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Latitude"; + output Real nextSunRise( + final quantity="Time", + final unit="s"); + + protected + Real houAng( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Solar hour angle"; + Real tNext( + final quantity="Time", + final unit="s") + "Timesnap when sun rises next time"; + Real timCor( + final quantity="Time", + final unit="s") + "Time correction"; + Real sunRis( + final quantity="Time", + final unit="s") + "Sunrise of the same day as input time"; + Real cosHou( + final quantity="Time", + final unit="s") + "Cosine of hour angle"; + + algorithm + (houAng,tNext,timCor) := nextHourAngle( + t=t, + timDifLocCiv=timDifLocCiv, + lat=lat); + sunRis :=(12-houAng*24/(2*Modelica.Constants.pi)-timCor/3600)*3600+floor( + tNext/86400)*86400; + //If simulation start time has passed the sunrise of the initial day, output + //the sunrise of the next day. + if staTim > sunRis then + nextSunRise := sunRis+86400; + else + nextSunRise := sunRis; + end if; + end computeSunRise; + + function computeSunSet + "Output the next sunset time" + input Real t( + final quantity="Time", + final unit="s") + "Current simulation time"; + input Real staTim( + final quantity="Time", + final unit="s") + "Simulation start time"; + input Real timDifLocCiv( + final quantity="Time", + final unit="s") + "Time difference between local and civil time"; + input Real lat( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Latitude"; + output Real nextSunSet( + final quantity="Time", + final unit="s"); + + protected + Real houAng( + final quantity="Angle", + final unit="rad", + displayUnit="deg") + "Solar hour angle"; + Real tNext( + final quantity="Time", + final unit="s") + "Timesnap when sun sets next time"; + Real timCor( + final quantity="Time", + final unit="s") + "Time correction"; + Real sunSet( + final quantity="Time", + final unit="s") + "Sunset of the same day as input time"; + Real cosHou( + final quantity="Time", + final unit="s") + "Cosine of hour angle"; + + algorithm + (houAng,tNext,timCor) := nextHourAngle( + t=t, + timDifLocCiv=timDifLocCiv, + lat=lat); + sunSet :=(12+houAng*24/(2*Modelica.Constants.pi)-timCor/3600)*3600+floor( + tNext/86400)*86400; + //If simulation start time has passed the sunset of the initial day, output + //the sunset of the next day. + if staTim > sunSet then + nextSunSet := sunSet+86400; + else + nextSunSet := sunSet; + end if; + end computeSunSet; + +initial equation + staTim=time; + timDifLocCiv=lon*43200/Modelica.Constants.pi-timZon; + nextSunRise=computeSunRise( + t=time-86400, + staTim=staTim, + timDifLocCiv=timDifLocCiv, + lat=lat); + + //In the polar cases where the sun is up during initialization, the next sunset + //actually occurs before the next sunrise + if cosHou <-1 then + nextSunSet=computeSunSet( + t=time-86400, + staTim=staTim, + timDifLocCiv=timDifLocCiv, + lat=lat)-86400; + else + nextSunSet=computeSunSet( + t=time-86400, + staTim=staTim, + timDifLocCiv=timDifLocCiv, + lat=lat); + end if; + +equation + Bt=Modelica.Constants.pi*((time+86400)/86400-81)/182; + eqnTim=60*(9.87*Modelica.Math.sin( + 2*Bt)-7.53*Modelica.Math.cos(Bt)-1.5*Modelica.Math.sin(Bt)); + timCor=eqnTim+timDifLocCiv; + decAng=Modelica.Math.asin( + -k1*Modelica.Math.cos( + (time/86400+10)*k2)); + cosHou=-Modelica.Math.tan(lat)*Modelica.Math.tan(decAng); + //When time passes the current sunrise/sunset, output the next sunrise/sunset + when time >= pre(nextSunRise) then + nextSunRise=computeSunRise( + t=time, + staTim=staTim, + timDifLocCiv=timDifLocCiv, + lat=lat); + end when; + when time >= pre(nextSunSet) then + nextSunSet=computeSunSet( + t=time, + staTim=staTim, + timDifLocCiv=timDifLocCiv, + lat=lat); + end when; + sunUp=nextSunSet < nextSunRise; + annotation ( + defaultComponentName="sunRiseSet", + Documentation( + info=" +

+This block outputs the next sunrise and sunset time. +The sunrise time keeps constant until the model time reaches the next sunrise, +at which time the output gets updated. +Similarly, the output for the next sunset is updated at each sunset. +

+

+The time zone parameter is based on UTC time; for instance, Eastern Standard Time is -5h. +Note that daylight savings time is not considered in this component. +

+

Validation

+

+A validation can be found at + +IBPSA.Controls.OBC.CDL.Utilities.Validation.SunRiseSet. +

+", + revisions=" +
    +
  • +January 4, 2022, by Michael Wetter:
    +Changed implementation to avoid NaN in OpenModelica.
    +This is for +Buildings, issue 2835. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +November 27, 2018, by Kun Zhang:
    +First implementation. +This is for +issue 829. +
  • +
+"), + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-100,160},{100,106}}, + textColor={0,0,255}, + textString="%name"), + Ellipse( + extent={{70,-100},{-70,20}}, + lineColor={238,46,47}, + startAngle=0, + endAngle=180), + Line( + points={{-94,-40},{92,-40},{92,-40}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{0,60},{0,32}}, + color={238,46,47}), + Line( + points={{60,40},{40,20}}, + color={238,46,47}), + Line( + points={{94,-6},{70,-6}}, + color={238,46,47}), + Line( + points={{10,10},{-10,-10}}, + color={238,46,47}, + origin={-50,30}, + rotation=90), + Line( + points={{-70,-6},{-94,-6}}, + color={238,46,47})})); +end SunRiseSet; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Validation/Assert.mo b/IBPSA/Controls/OBC/CDL/Utilities/Validation/Assert.mo new file mode 100644 index 0000000000..c3b9e8705e --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Validation/Assert.mo @@ -0,0 +1,51 @@ +within IBPSA.Controls.OBC.CDL.Utilities.Validation; +model Assert + "Validate the Assert block" + IBPSA.Controls.OBC.CDL.Utilities.Assert assert( + message="input became false") + "Trigger warning and print warning message" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse booPul( + period=0.5) + "Output boolean pulse" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + +equation + connect(booPul.y,assert.u) + annotation (Line(points={{-19,0},{18,0}},color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/Assert.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.CDL.Utilities.Assert. +

+", + revisions=" +
    +
  • +November 3, 2017, by Jianjun Hu:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end Assert; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mo b/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mo new file mode 100644 index 0000000000..7b4b05ad2a --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mo @@ -0,0 +1,77 @@ +within IBPSA.Controls.OBC.CDL.Utilities.Validation; +model SunRiseSet + "Test model for the block SunRiseSet" + + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetArctic( + lat=1.2566370614359, + lon=-1.2566370614359, + timZon=-18000) + "Arctic circle case" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetSf( + lat=0.6457718232379, + lon=-2.1293016874331, + timZon=-28800) + "San Francisco as an example in the northen hemisphere" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetAntarctic( + lat=-1.3089969389957, + lon=0.99483767363677, + timZon=14400) + "Antarctic circle case" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetSyd( + lat=-0.59341194567807, + lon=2.6354471705114, + timZon=36000) + "Sydney as an example in the southern hemisphere" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); + annotation ( + experiment( + StopTime=31536000, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSet.mos" "Simulate and plot"), + Documentation( + info=" +

+This example includes four instances of the + +IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet block: +Two normal cases, an arctic and antarctic case. +The normal cases are represented by San Francisco and Sydney, +where there is a sunrise and sunset every day. +

+

+Above the arctic circle and below the antarctic circle, +in winter and summer there is a period in which there is no sunset and sunrise +for a few days. +Hence, the output signals of the block remain constant. +

+", + revisions=" +
    +
  • +March 17, 2023, by Michael Wetter:
    +Removed extends statement and added graphical annotation for icon. +
  • +
  • +November 27, 2018, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SunRiseSet; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mo b/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mo new file mode 100644 index 0000000000..d17a95c0ed --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Utilities.Validation; +model SunRiseSetNegativeStartTime + "Test model for the block SunRiseSet with negative start time" + + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetArctic( + lat=1.2566370614359, + lon=-1.2566370614359, + timZon=-18000) + "Arctic circle case" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetSf( + lat=0.6457718232379, + lon=-2.1293016874331, + timZon=-28800) + "San Francisco as a test example in the northen hemisphere" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetAntarctic( + lat=-1.3089969389957, + lon=0.99483767363677, + timZon=14400) + "Antarctic circle case" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetSyd( + lat=-0.59341194567807, + lon=2.6354471705114, + timZon=36000) + "Sydney as a test example in the southern hemisphere" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); + annotation ( + experiment( + StartTime=-43200, + StopTime=259200, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

This example includes 4 tests for the +IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet block: 2 normal cases, an arctic and antarctic case. +The normal cases are represented by San Francisco and Sydney, where there is a sunrise and sunset every day.

+

This model starts the simulation from -12 hour instead of 0.

+", + revisions=" +
    +
  • +March 17, 2023, by Michael Wetter:
    +Removed extends statement and added graphical annotation for icon. +
  • +
  • +November 27, 2018, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SunRiseSetNegativeStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mo b/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mo new file mode 100644 index 0000000000..21fcd54b80 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mo @@ -0,0 +1,68 @@ +within IBPSA.Controls.OBC.CDL.Utilities.Validation; +model SunRiseSetPositiveStartTime + "Test model for the block SunRiseSet with positive start time" + + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetArctic( + lat=1.2566370614359, + lon=-1.2566370614359, + timZon=-18000) + "Arctic circle case" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetSf( + lat=0.6457718232379, + lon=-2.1293016874331, + timZon=-28800) + "San Francisco as a test example in the northen hemisphere" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetAntarctic( + lat=-1.3089969389957, + lon=0.99483767363677, + timZon=14400) + "Antarctic circle case" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet sunRiseSetSyd( + lat=-0.59341194567807, + lon=2.6354471705114, + timZon=36000) + "Sydney as a test example in the southern hemisphere" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); + annotation ( + experiment( + StartTime=43200, + StopTime=345600, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/CDL/Utilities/Validation/SunRiseSetPositiveStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

This example includes 4 tests for the +IBPSA.Controls.OBC.CDL.Utilities.SunRiseSet block: 2 normal cases, an arctic and antarctic case. +The normal cases are represented by San Francisco and Sydney, where there is a sunrise and sunset every day.

+

This model starts the simulation from 12 hour instead of 0.

+", + revisions=" +
    +
  • +March 17, 2023, by Michael Wetter:
    +Removed extends statement and added graphical annotation for icon. +
  • +
  • +November 27, 2018, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SunRiseSetPositiveStartTime; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Validation/package.mo b/IBPSA/Controls/OBC/CDL/Utilities/Validation/package.mo new file mode 100644 index 0000000000..fe00591499 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.CDL.Utilities; +package Validation "Collection of models that validate the utilities blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.CDL.Utilities. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/Validation/package.order b/IBPSA/Controls/OBC/CDL/Utilities/Validation/package.order new file mode 100644 index 0000000000..1b5a39d88f --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/Validation/package.order @@ -0,0 +1,4 @@ +Assert +SunRiseSet +SunRiseSetNegativeStartTime +SunRiseSetPositiveStartTime diff --git a/IBPSA/Controls/OBC/CDL/Utilities/package.mo b/IBPSA/Controls/OBC/CDL/Utilities/package.mo new file mode 100644 index 0000000000..b0f113f019 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/package.mo @@ -0,0 +1,39 @@ +within IBPSA.Controls.OBC.CDL; +package Utilities "Package with utility functions" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains utility models +that are used throughout the library. +

+"), + Icon( + coordinateSystem( + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={1.3835,-4.1418}, + rotation=45.0, + fillColor={64,64,64}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-15.0,93.333},{-15.0,68.333},{0.0,58.333},{15.0,68.333},{15.0,93.333},{20.0,93.333},{25.0,83.333},{25.0,58.333},{10.0,43.333},{10.0,-41.667},{25.0,-56.667},{25.0,-76.667},{10.0,-91.667},{0.0,-91.667},{0.0,-81.667},{5.0,-81.667},{15.0,-71.667},{15.0,-61.667},{5.0,-51.667},{-5.0,-51.667},{-15.0,-61.667},{-15.0,-71.667},{-5.0,-81.667},{0.0,-81.667},{0.0,-91.667},{-10.0,-91.667},{-25.0,-76.667},{-25.0,-56.667},{-10.0,-41.667},{-10.0,43.333},{-25.0,58.333},{-25.0,83.333},{-20.0,93.333}}), + Polygon( + origin={10.1018,5.218}, + rotation=-45.0, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + points={{-15.0,87.273},{15.0,87.273},{20.0,82.273},{20.0,27.273},{10.0,17.273},{10.0,7.273},{20.0,2.273},{20.0,-2.727},{5.0,-2.727},{5.0,-77.727},{10.0,-87.727},{5.0,-112.727},{-5.0,-112.727},{-10.0,-87.727},{-5.0,-77.727},{-5.0,-2.727},{-20.0,-2.727},{-20.0,2.273},{-10.0,7.273},{-10.0,17.273},{-20.0,27.273},{-20.0,82.273}})})); +end Utilities; diff --git a/IBPSA/Controls/OBC/CDL/Utilities/package.order b/IBPSA/Controls/OBC/CDL/Utilities/package.order new file mode 100644 index 0000000000..e7322e50f3 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/Utilities/package.order @@ -0,0 +1,3 @@ +Assert +SunRiseSet +Validation diff --git a/IBPSA/Controls/OBC/CDL/package.mo b/IBPSA/Controls/OBC/CDL/package.mo new file mode 100644 index 0000000000..54ae177284 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/package.mo @@ -0,0 +1,64 @@ +within IBPSA.Controls.OBC; +package CDL "Package with blocks, examples and validation tests for control description language" + annotation ( + Documentation( + info=" +

+Package that has Elementary Blocks +that form the Control Description Language (CDL). +

+

+The implementation is structured into sub-packages. +The packages Validation +contain validation models. +These are not part of the CDL specification, but rather +implemented to provide reference responses computed by the CDL blocks. +For a specification of CDL, see + +https://obc.lbl.gov/specification/cdl.html. +

+", + revisions=" +
    +
  • +December 22, 2016, by Michael Wetter:
    +Firt implementation, based on the blocks from the Modelica Standard Library. +
  • +
+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); +end CDL; diff --git a/IBPSA/Controls/OBC/CDL/package.order b/IBPSA/Controls/OBC/CDL/package.order new file mode 100644 index 0000000000..2a8aa44364 --- /dev/null +++ b/IBPSA/Controls/OBC/CDL/package.order @@ -0,0 +1,11 @@ +Constants +Conversions +Discrete +Integers +Logical +Psychrometrics +Reals +Routing +Utilities +Types +Interfaces diff --git a/IBPSA/Controls/OBC/Utilities/BaseClasses/OptimalStartCalculation.mo b/IBPSA/Controls/OBC/Utilities/BaseClasses/OptimalStartCalculation.mo new file mode 100644 index 0000000000..21200ac458 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/BaseClasses/OptimalStartCalculation.mo @@ -0,0 +1,316 @@ +within IBPSA.Controls.OBC.Utilities.BaseClasses; +block OptimalStartCalculation + "Base class for the block OptimalStart" + parameter Real tOptMax( + final quantity="Time", + final unit="s") + "Maximum optimal start time"; + parameter Real thrOptOn( + final quantity="Time", + final unit="s") + "Threshold time for the output optOn to become true"; + parameter Integer nDay + "Number of previous days for averaging the temperature slope"; + parameter Real uLow( + final quantity="TemperatureDifference", + final unit="K") + "Threshold to determine if the zone temperature reaches the occupied setpoint, + should be a non-negative number"; + parameter Real uHigh( + final quantity="TemperatureDifference", + final unit="K") + "Threshold to determine the need to start the HVAC system before occupancy, + should be greater than uLow"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TDif( + final quantity="TemperatureDifference", + final unit="K") + "Difference between zone setpoint and measured temperature, must be bigger than zero for heating and cooling if setpoint is not yet reached" + annotation (Placement(transformation(extent={{-320,100},{-280,140}}), + iconTransformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput staCal + "Start calculation" + annotation (Placement(transformation(extent={{-320,20},{-280,60}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput tNexOcc( + final quantity="Time", + final unit="s", + displayUnit="h") + "Time until next occupancy" + annotation (Placement(transformation(extent={{-320,-160},{-280,-120}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput tOpt( + final quantity="Time", + final unit="s", + displayUnit="h") + "Optimal start time of HVAC system" + annotation (Placement(transformation(extent={{440,40},{480,80}}), + iconTransformation(extent={{100,20},{140,60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput optOn + "Optimal start boolean output" + annotation (Placement(transformation(extent={{440,-80},{480,-40}}), + iconTransformation(extent={{100,-60},{140,-20}}))); + +protected + constant Real tReaMin( + final quantity="Time", + final unit="s", + displayUnit="h")=120 + "Minimum value for optimal start time if the system reached the set point almost immediately (used to avoid division by zero)"; + constant Real temSloDef( + final quantity="TemperatureSlope", + final unit="K/s")=1/3600 + "Minimum value for temperature slope (used to avoid division by zero)"; + IBPSA.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri( + final period=86400, + final shift=0) + "Trigger that triggers each midnight" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredMovingMean samTemSloAve( + final n=nDay) + "Calculate the averaged temperature slope over the past n days" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler dTCalOn + "Get the sampled temperature difference at the same time each day" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler dTHVACOn + "Get the temperature difference when the HVAC system starts" + annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con( + final k=0) + "Deadband case" + annotation (Placement(transformation(extent={{40,50},{60,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant timReaMin( + final k=tReaMin) + "Minimum time to reach set point (used to avoid division by zero)" + annotation (Placement(transformation(extent={{-80,-42},{-60,-22}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant defTemSlo( + final k=temSloDef) + "Default temperature slope in case of zero division" + annotation (Placement(transformation(extent={{88,-40},{108,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.Edge edg + "HVAC start time" + annotation (Placement(transformation(extent={{-148,-90},{-128,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.FallingEdge falEdg + "The instant when the zone temperature reaches setpoint" + annotation (Placement(transformation(extent={{-148,-30},{-128,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis hys( + final uLow=uLow, + final uHigh=uHigh) + "Comparing zone temperature with zone setpoint" + annotation (Placement(transformation(extent={{-260,64},{-240,84}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis hysOpt( + final pre_y_start=false, + final uHigh=0, + final uLow=-60) + "Hysteresis to activate the optimal start" + annotation (Placement(transformation(extent={{320,-90},{340,-70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant maxStaTim( + final k=tOptMax) + "Maximum optimal start time" + annotation (Placement(transformation(extent={{210,-40},{230,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.TrueFalseHold truHol( + final falseHoldDuration=0, + final trueHoldDuration=tOptMax + 11*3600) + "Hold the start time for timer" + annotation (Placement(transformation(extent={{-240,0},{-220,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Divide temSlo + "Calculate temperature slope" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Pre pre + "Break algebraic loops" + annotation (Placement(transformation(extent={{390,-16},{410,4}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub1 + "Calculate the time duration to reach the setpoint" + annotation (Placement(transformation(extent={{-88,-10},{-68,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub2 + "Calculate differential between time-to-next-occupancy and the cool-down time" + annotation (Placement(transformation(extent={{280,-90},{300,-70}}))); + IBPSA.Controls.OBC.CDL.Reals.Min min + "Get the final optimal start time" + annotation (Placement(transformation(extent={{240,-16},{260,4}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triSam + "The instant when the zone temperature reaches setpoint with maximum time cutoff" + annotation (Placement(transformation(extent={{-130,0},{-110,20}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler triSam1 + "Record the start time when the HVAC system is turned on" + annotation (Placement(transformation(extent={{-130,-60},{-110,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.Latch lat + "Stop calculation when the zone temperature reaches setpoint" + annotation (Placement(transformation(extent={{-188,70},{-168,90}}))); + IBPSA.Controls.OBC.CDL.Logical.Timer tim + "Record time duration for the zone temperature to reach setpoint" + annotation (Placement(transformation(extent={{-210,0},{-190,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Becomes true when the setpoint is reached" + annotation (Placement(transformation(extent={{-220,64},{-200,84}}))); + IBPSA.Controls.OBC.CDL.Reals.Divide tOptCal + "Calculate optimal start time using the averaged previous temperature slope" + annotation (Placement(transformation(extent={{160,-10},{180,10}}))); + IBPSA.Controls.OBC.CDL.Discrete.TriggeredSampler samTimOpt + "Get the sampled optimal start time at the same time each day" + annotation (Placement(transformation(extent={{190,-10},{210,10}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold greThr( + final t=thrOptOn) + "The threshold for optOn signal becomes true" + annotation (Placement(transformation(extent={{320,-16},{340,4}}))); + IBPSA.Controls.OBC.CDL.Logical.And and2 + "Logical and" + annotation (Placement(transformation(extent={{360,-16},{380,4}}))); + IBPSA.Controls.OBC.CDL.Reals.Max timRea + "Time required to reach the set point" + annotation (Placement(transformation(extent={{-40,-16},{-20,4}}))); + IBPSA.Controls.OBC.CDL.Reals.Max temSloAve + "Temperature slope during heat up or cool down over the past sampled days" + annotation (Placement(transformation(extent={{120,-16},{140,4}}))); + IBPSA.Controls.OBC.CDL.Reals.Switch dTUse + "dT used in the calculations (to avoid negative dT)" + annotation (Placement(transformation(extent={{80,70},{100,90}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold reqStaUp( + final t=0, + final h=0) + "Output true if optimal startup is needed" + annotation (Placement(transformation(extent={{10,70},{30,90}}))); + IBPSA.Controls.OBC.CDL.Logical.And triAve + "Trigger sampling but only if optimal start up is needed" + annotation (Placement(transformation(extent={{40,-42},{60,-22}}))); + +equation + connect(tim.y,triSam.u) + annotation (Line(points={{-188,10},{-132,10}},color={0,0,127})); + connect(falEdg.y,triSam.trigger) + annotation (Line(points={{-126,-20},{-120,-20},{-120,-1.8}},color={255,0,255})); + connect(not1.y,lat.clr) + annotation (Line(points={{-198,74},{-190,74}},color={255,0,255})); + connect(temSlo.y,samTemSloAve.u) + annotation (Line(points={{22,0},{58,0}},color={0,0,127})); + connect(TDif,hys.u) + annotation (Line(points={{-300,120},{-272,120},{-272,74},{-262,74}},color={0,0,127})); + connect(staCal,dTCalOn.trigger) + annotation (Line(points={{-300,40},{-30,40},{-30,68.2}},color={255,0,255})); + connect(TDif,dTHVACOn.u) + annotation (Line(points={{-300,120},{-42,120}},color={0,0,127})); + connect(pre.y,dTHVACOn.trigger) + annotation (Line(points={{412,-6},{420,-6},{420,104},{-30,104},{-30,108.2}},color={255,0,255})); + connect(pre.y,lat.u) + annotation (Line(points={{412,-6},{420,-6},{420,150},{-190,150},{-190,80}},color={255,0,255})); + connect(edg.y,triSam1.trigger) + annotation (Line(points={{-126,-80},{-120,-80},{-120,-61.8}},color={255,0,255})); + connect(triSam1.y,sub1.u2) + annotation (Line(points={{-108,-50},{-100,-50},{-100,-6},{-90,-6}},color={0,0,127})); + connect(triSam.y,sub1.u1) + annotation (Line(points={{-108,10},{-100,10},{-100,6},{-90,6}},color={0,0,127})); + connect(TDif,dTCalOn.u) + annotation (Line(points={{-300,120},{-140,120},{-140,80},{-42,80}},color={0,0,127})); + connect(tNexOcc,sub2.u2) + annotation (Line(points={{-300,-140},{272,-140},{272,-86},{278,-86}},color={0,0,127})); + connect(sub2.y,hysOpt.u) + annotation (Line(points={{302,-80},{318,-80}},color={0,0,127})); + connect(min.y,sub2.u1) + annotation (Line(points={{262,-6},{270,-6},{270,-74},{278,-74}},color={0,0,127})); + connect(staCal,truHol.u) + annotation (Line(points={{-300,40},{-260,40},{-260,10},{-242,10}},color={255,0,255})); + connect(truHol.y,tim.u) + annotation (Line(points={{-218,10},{-212,10}},color={255,0,255})); + connect(tim.y,triSam1.u) + annotation (Line(points={{-188,10},{-168,10},{-168,-50},{-132,-50}},color={0,0,127})); + connect(min.y,tOpt) + annotation (Line(points={{262,-6},{270,-6},{270,60},{460,60}},color={0,0,127})); + connect(not1.u,hys.y) + annotation (Line(points={{-222,74},{-238,74}},color={255,0,255})); + connect(lat.y,edg.u) + annotation (Line(points={{-166,80},{-162,80},{-162,-80},{-150,-80}},color={255,0,255})); + connect(lat.y,falEdg.u) + annotation (Line(points={{-166,80},{-162,80},{-162,-20},{-150,-20}},color={255,0,255})); + connect(tOptCal.y,samTimOpt.u) + annotation (Line(points={{182,0},{188,0}},color={0,0,127})); + connect(staCal,samTimOpt.trigger) + annotation (Line(points={{-300,40},{146,40},{146,-20},{200,-20},{200,-11.8}},color={255,0,255})); + connect(dTHVACOn.y,temSlo.u1) + annotation (Line(points={{-18,120},{-10,120},{-10,6},{-2,6}},color={0,0,127})); + connect(min.y,greThr.u) + annotation (Line(points={{262,-6},{318,-6}},color={0,0,127})); + connect(hysOpt.y,and2.u2) + annotation (Line(points={{342,-80},{350,-80},{350,-14},{358,-14}},color={255,0,255})); + connect(greThr.y,and2.u1) + annotation (Line(points={{342,-6},{358,-6}},color={255,0,255})); + connect(and2.y,pre.u) + annotation (Line(points={{382,-6},{388,-6}},color={255,0,255})); + connect(pre.y,optOn) + annotation (Line(points={{412,-6},{420,-6},{420,-60},{460,-60}},color={255,0,255})); + connect(timRea.y,temSlo.u2) + annotation (Line(points={{-18,-6},{-2,-6}},color={0,0,127})); + connect(timRea.u1,sub1.y) + annotation (Line(points={{-42,0},{-66,0}},color={0,0,127})); + connect(temSloAve.y,tOptCal.u2) + annotation (Line(points={{142,-6},{158,-6}},color={0,0,127})); + connect(temSloAve.u1,samTemSloAve.y) + annotation (Line(points={{118,0},{82,0}},color={0,0,127})); + connect(defTemSlo.y,temSloAve.u2) + annotation (Line(points={{110,-30},{112,-30},{112,-12},{118,-12}},color={0,0,127})); + connect(min.u1,samTimOpt.y) + annotation (Line(points={{238,0},{212,0}},color={0,0,127})); + connect(maxStaTim.y,min.u2) + annotation (Line(points={{232,-30},{234,-30},{234,-12},{238,-12}},color={0,0,127})); + connect(reqStaUp.u,dTCalOn.y) + annotation (Line(points={{8,80},{-18,80}},color={0,0,127})); + connect(dTUse.u2,reqStaUp.y) + annotation (Line(points={{78,80},{32,80}},color={255,0,255})); + connect(dTCalOn.y,dTUse.u1) + annotation (Line(points={{-18,80},{2,80},{2,100},{52,100},{52,88},{78,88}},color={0,0,127})); + connect(con.y,dTUse.u3) + annotation (Line(points={{62,60},{72,60},{72,72},{78,72}},color={0,0,127})); + connect(dTUse.y,tOptCal.u1) + annotation (Line(points={{102,80},{150,80},{150,6},{158,6}},color={0,0,127})); + connect(triAve.u2,samTri.y) + annotation (Line(points={{38,-40},{22,-40}},color={255,0,255})); + connect(reqStaUp.y,triAve.u1) + annotation (Line(points={{32,80},{36,80},{36,-32},{38,-32}},color={255,0,255})); + connect(triAve.y,samTemSloAve.trigger) + annotation (Line(points={{62,-32},{70,-32},{70,-12}},color={255,0,255})); + connect(timReaMin.y, timRea.u2) annotation (Line(points={{-58,-32},{-50,-32}, + {-50,-12},{-42,-12}}, color={0,0,127})); + annotation ( + defaultComponentName="optStaCal", + Documentation( + info=" +

+This base class contains the algorithm for the optimal start calculation. For the +description of the algorithm, please refer to the documentation for the block + +IBPSA.Controls.OBC.Utilities.OptimalStart. +

+", + revisions=" +
    +
  • +January 30, 2021, by Michael Wetter:
    +Refactored sampling of history of temperature slope to only sample when control error requires optimal start up. +Refactored guarding against division by zero.
    +This is for +Buildings, issue 2345. +
  • +
  • +October 20, 2020, by Michael Wetter:
    +Reimplemented trigger of the moving average computation. +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +
  • +
+"), + Diagram( + coordinateSystem( + extent={{-280,-160},{440,160}})), + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name")})); +end OptimalStartCalculation; diff --git a/IBPSA/Controls/OBC/Utilities/BaseClasses/package.mo b/IBPSA/Controls/OBC/Utilities/BaseClasses/package.mo new file mode 100644 index 0000000000..876a6f3908 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/BaseClasses/package.mo @@ -0,0 +1,29 @@ +within IBPSA.Controls.OBC.Utilities; +package BaseClasses "Package with base classes" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains base classes to construct blocks in +IBPSA.Controls.OBC.Utilities. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Ellipse( + extent={{-30,-30},{30,30}}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)})); +end BaseClasses; diff --git a/IBPSA/Controls/OBC/Utilities/BaseClasses/package.order b/IBPSA/Controls/OBC/Utilities/BaseClasses/package.order new file mode 100644 index 0000000000..8b68ab4181 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/BaseClasses/package.order @@ -0,0 +1 @@ +OptimalStartCalculation diff --git a/IBPSA/Controls/OBC/Utilities/OptimalStart.mo b/IBPSA/Controls/OBC/Utilities/OptimalStart.mo new file mode 100644 index 0000000000..5846edbc08 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/OptimalStart.mo @@ -0,0 +1,383 @@ +within IBPSA.Controls.OBC.Utilities; +block OptimalStart + "Block that outputs the optimal start time for an HVAC system before occupancy" + parameter Real tOptMax( + final quantity="Time", + final unit="s", + displayUnit="h", + final min=0, + max=21600)=10800 + "Maximum optimal start time"; + parameter Integer nDay( + min=1)=3 + "Number of previous days used to compute the optimal start up time"; + parameter Boolean computeHeating=false + "Set to true to compute optimal start for heating"; + parameter Boolean computeCooling=false + "Set to true to compute optimal start for cooling"; + parameter Real uLow( + final quantity="TemperatureDifference", + final unit="K", + final min=0)=0 + "Threshold to determine if the zone temperature reaches the occupied setpoint, + must be a non-negative number"; + parameter Real uHigh( + final quantity="TemperatureDifference", + final unit="K", + final min=0)=0.5 + "Threshold to determine the need to start the HVAC system before occupancy, + must be greater than uLow"; + parameter Real thrOptOn( + final quantity="Time", + final unit="s", + displayUnit="h", + final min=0, + max=10800)=60 + "Threshold time, optimal start on signal becomes true when tOpt larger than thrOptOn"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TSetZonHea( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) if computeHeating + "Zone heating setpoint temperature during occupancy" + annotation (Placement(transformation(extent={{-180,60},{-140,100}}), + iconTransformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TZon( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) + "Zone temperature" + annotation (Placement(transformation(extent={{-180,-60},{-140,-20}}), + iconTransformation(extent={{-140,-60},{-100,-20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TSetZonCoo( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) if computeCooling + "Zone cooling setpoint temperature during occupancy" + annotation (Placement(transformation(extent={{-180,20},{-140,60}}), + iconTransformation(extent={{-140,20},{-100,60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput tNexOcc( + final quantity="Time", + final unit="s", + displayUnit="h") + "Time until next occupancy" + annotation (Placement(transformation(extent={{-180,-100},{-140,-60}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput tOpt( + final quantity="Time", + final unit="s", + displayUnit="h") + "Optimal start time duration of HVAC system" + annotation (Placement(transformation(extent={{140,20},{180,60}}), + iconTransformation(extent={{100,20},{140,60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput optOn + "Outputs true if the HVAC system remains in the optimal start period" + annotation (Placement(transformation(extent={{140,-60},{180,-20}}), + iconTransformation(extent={{100,-60},{140,-20}}))); + IBPSA.Controls.OBC.Utilities.BaseClasses.OptimalStartCalculation optHea( + final tOptMax=tOptMax, + final thrOptOn=thrOptOn, + final nDay=nDay, + final uLow=uLow, + final uHigh=uHigh) if computeHeating + "Optimal start time for heating system" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + IBPSA.Controls.OBC.Utilities.BaseClasses.OptimalStartCalculation optCoo( + final tOptMax=tOptMax, + final thrOptOn=thrOptOn, + final nDay=nDay, + final uLow=uLow, + final uHigh=uHigh) if computeCooling + "Optimal start time for cooling system" + annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold hysSta( + t=60, + h=60) + "Hysteresis to activate the optimal start boolean output" + annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); + +protected + IBPSA.Controls.OBC.CDL.Reals.Max max + "Get the maximum optimal start time " + annotation (Placement(transformation(extent={{100,30},{120,50}}))); + IBPSA.Controls.OBC.CDL.Reals.AddParameter addPar( + p=-tOptMax) + "Maximum optimal start time" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Or or2 + "Get the optimal start boolean output" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dTHea if computeHeating + "Temperature difference between heating setpoint and zone temperature" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dTCoo if computeCooling + "Temperature difference between zone temperature and cooling setpoint" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + IBPSA.Controls.OBC.CDL.Logical.FallingEdge falEdg + "Stop calculation" + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con2( + final k=0) if not computeHeating + "Becomes effective when optimal start is only for heating" + annotation (Placement(transformation(extent={{60,40},{80,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con1( + final k=0) if not computeCooling + "Becomes effective when optimal start is only for cooling" + annotation (Placement(transformation(extent={{60,10},{80,30}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con( + final k=false) if not computeHeating + "Becomes effective when optimal start is only for heating" + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con3( + final k=false) if not computeCooling + "Becomes effective when optimal start is only for cooling" + annotation (Placement(transformation(extent={{60,-94},{80,-74}}))); + +equation + connect(TSetZonCoo,dTCoo.u2) + annotation (Line(points={{-160,40},{-132,40},{-132,-56},{-82,-56}},color={0,0,127})); + connect(TZon,dTCoo.u1) + annotation (Line(points={{-160,-40},{-90,-40},{-90,-44},{-82,-44}}, color={0,0,127})); + connect(TZon,dTHea.u2) + annotation (Line(points={{-160,-40},{-122,-40},{-122,74},{-82,74}},color={0,0,127})); + connect(TSetZonHea,dTHea.u1) + annotation (Line(points={{-160,80},{-126,80},{-126,86},{-82,86}},color={0,0,127})); + connect(max.y,tOpt) + annotation (Line(points={{122,40},{160,40}},color={0,0,127})); + connect(con2.y,max.u1) + annotation (Line(points={{82,50},{88,50},{88,46},{98,46}},color={0,0,127})); + connect(con1.y,max.u2) + annotation (Line(points={{82,20},{88,20},{88,34},{98,34}},color={0,0,127})); + connect(dTCoo.y,optCoo.TDif) + annotation (Line(points={{-58,-50},{-22,-50},{-22,-62},{18,-62}},color={0,0,127})); + connect(dTHea.y,optHea.TDif) + annotation (Line(points={{-58,80},{-8,80},{-8,78},{18,78}},color={0,0,127})); + connect(tNexOcc,addPar.u) + annotation (Line(points={{-160,-80},{-120,-80},{-120,0},{-102,0}},color={0,0,127})); + connect(tNexOcc,optHea.tNexOcc) + annotation (Line(points={{-160,-80},{-120,-80},{-120,62},{18,62}},color={0,0,127})); + connect(optCoo.tOpt,max.u2) + annotation (Line(points={{42,-66},{88,-66},{88,34},{98,34}},color={0,0,127})); + connect(optHea.tOpt,max.u1) + annotation (Line(points={{42,74},{88,74},{88,46},{98,46}},color={0,0,127})); + connect(tNexOcc,optCoo.tNexOcc) + annotation (Line(points={{-160,-80},{-68,-80},{-68,-78},{18,-78}},color={0,0,127})); + connect(falEdg.y,optHea.staCal) + annotation (Line(points={{-8,0},{0,0},{0,70},{18,70}},color={255,0,255})); + connect(falEdg.y,optCoo.staCal) + annotation (Line(points={{-8,0},{0,0},{0,-70},{18,-70}},color={255,0,255})); + connect(or2.y,optOn) + annotation (Line(points={{122,-40},{160,-40}},color={255,0,255})); + connect(con.y,or2.u1) + annotation (Line(points={{82,-20},{92,-20},{92,-40},{98,-40}},color={255,0,255})); + connect(con3.y,or2.u2) + annotation (Line(points={{82,-84},{92,-84},{92,-48},{98,-48}},color={255,0,255})); + connect(optCoo.optOn,or2.u2) + annotation (Line(points={{42,-74},{50,-74},{50,-48},{98,-48}},color={255,0,255})); + connect(optHea.optOn,or2.u1) + annotation (Line(points={{42,66},{92,66},{92,-40},{98,-40}},color={255,0,255})); + connect(falEdg.u,hysSta.y) + annotation (Line(points={{-32,0},{-48,0}},color={255,0,255})); + connect(addPar.y,hysSta.u) + annotation (Line(points={{-78,0},{-72,0}},color={0,0,127})); + annotation ( + defaultComponentName="optSta", + Documentation( + info=" +

+This block predicts the shortest time for an HVAC system to meet the occupied setpoint +prior to the scheduled occupancy. The block requires inputs of zone temperature, +occupied zone setpoint(s) and next occupancy. The two outputs are the optimal start +duration tOpt and the optimal start on signal optOn for +the HVAC system. +

+

+The block estimates the thermal mass of a zone using its measured air temperature gradient +with respect to time. Once the temperature slope of a zone is known, the optimal start +time can be calculated by the difference between the zone temperature +and the occupied setpoint divided by the temperature slope, assuming the zone responds +as if all thermal mass were concentrated in the room air. +

+

+The temperature slope is self-tuned based on past data. The moving +average of the temperature slope of the past nDay days +is calculated and used for +the prediction of the optimal start time in the current day. +

+

Parameters

+

+The parameter nDay is used to compute the moving average of the temperature +slope; the first n days of simulation is therefore used to +initialize the block. +

+

+The parameter +tOptMax is the maximum allowed optimal start time. +

+

+The block includes two hysteresis parameters uLow and uHigh. +The parameter +uLow is used to determine if the zone temperature reaches +the setpoint. The algorithm assumes that the zone temperature has reached the setpoint if +TSetZonHea-TZon ≤ uLow for a heating system, or +TZon-TSetZonCoo ≤ uLow for a cooling system, where +TSetZonHea +denotes the zone heating setpoint during occupancy, TSetZonCoo +denotes the zone cooling setpoint during occupancy, and TZon denotes the +zone temperature. +The parameter +uHigh is used by the algorithm to determine if there is a need to +start the HVAC system prior to occupancy. If +TSetZonHea-TZon ≤ uHigh for heating case or +TZon-TSetZonCoo ≤ uHigh for cooling case, +then there is no need for the system to start before the occupancy. +

+

+The optimal start is only active (i.e., the optimal start on signal optOn +becomes true) if the optimal start time is larger than the parameter +thrOptOn. +

+

Configuration for HVAC systems

+

+The block can be used for heating system only or cooling system only or for both +heating and cooling system. +The two parameters computeHeating and computeCooling are +used to configure the block for these three scenarios. +

+

+The block calculates the optimal start time separately for heating and cooling systems. +The base class + +IBPSA.Controls.OBC.Utilities.BaseClasses.OptimalStartCalculation is used +for the calculation. +

+

Algorithm

+

+The algorithm is as follows: +

+
Step 1: Calculate temeperature slope TSlo
+

+Once the HVAC system is started, a timer records the time duration +Δt for the zone temperature to reach the +setpoint. At the time when the timer starts, the zone temperature TSam1 is sampled. +The temperature slope is +approximated using the equation TSlo = |TSetZonOcc-TSam1|/Δt, +where TSetZonOcc is the occupied zone setpoint. Note that if +Δt is greater than the maximum optimal start time tOptMax, +then tOptMax is used instead of Δt. +This is to avoid corner cases where the setpoint is never reached, e.g., the HVAC +system is undersized, or there is a steady-state error associated with the HVAC control. +

+
Step 2: Calculate temperature slope moving average TSloMa
+

+After computing the temperature slope of each day, the moving average of the +temperature slope TSloMa during the previous nDay days +is calculated. Please refer to + +IBPSA.Controls.OBC.CDL.Discrete.TriggeredMovingMean for details about +the moving average algorithm. +

+
Step 3: Calculate optimal start time tOpt
+

+Each day at a certain time before the occupancy, the algorithm takes another +sample of the zone temperature, denoted as TSam2. The sample +takes place tOptMax prior to occupancy start time. +

+

+The optimal start time is then calculated as tOpt = |TSetZonOcc-TSam2|/TSloMa. +

+

Validation

+

+Validation models can be found in the package + +IBPSA.Controls.OBC.Utilities.Validation. +

+", + revisions=" +
    +
  • +January 30, 2021, by Michael Wetter:
    +Refactored sampling of history of temperature slope to only sample when control error requires optimal start up. +Refactored guarding against division by zero.
    +This is for +Buildings, issue 2345. +
  • +
  • +August 6, 2020, by Michael Wetter:
    +Replaced hysteresis with new inequality block. +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +This is for Buildings, issue #1589. +
  • +
+"), + Diagram( + coordinateSystem( + extent={{-140,-100},{140,100}})), + Icon( + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-70,40},{10,40},{10,-28},{70,-28}}, + color={28,108,200}), + Line( + points={{-34,40},{-20,32},{-12,22},{-6,2},{0,-16},{10,-28}}, + smooth=Smooth.Bezier, + color={238,46,47}), + Text( + extent={{-68,56},{-44,40}}, + textColor={28,108,200}, + textString="TSet"), + Polygon( + points={{-70,92},{-78,70},{-62,70},{-70,92}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-70,70},{-70,-78}}, + color={192,192,192}), + Line( + points={{-88,-60},{70,-60}}, + color={192,192,192}), + Polygon( + points={{92,-60},{70,-52},{70,-68},{92,-60}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{10,40},{24,32},{32,22},{38,2},{44,-16},{54,-28}}, + smooth=Smooth.Bezier, + color={28,108,200}, + pattern=LinePattern.Dot), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Ellipse( + extent={{79,-33},{93,-47}}, + lineColor=DynamicSelect({235,235,235}, + if optOn then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if optOn then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid), + Text( + extent={{226,106},{106,56}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(tOpt, + leftJustified=false, + significantDigits=3)))})); +end OptimalStart; diff --git a/IBPSA/Controls/OBC/Utilities/PIDWithInputGains.mo b/IBPSA/Controls/OBC/Utilities/PIDWithInputGains.mo new file mode 100644 index 0000000000..ae25b3a5eb --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/PIDWithInputGains.mo @@ -0,0 +1,565 @@ +within IBPSA.Controls.OBC.Utilities; +block PIDWithInputGains + "P, PI, PD, and PID controller with output reset and input gains" + parameter IBPSA.Controls.OBC.CDL.Types.SimpleController controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Real r( + min=100*CDL.Constants.eps)=1 + "Typical range of control error, used for scaling the control error"; + parameter Real yMax=1 + "Upper limit of output" + annotation (Dialog(group="Limits")); + parameter Real yMin=0 + "Lower limit of output" + annotation (Dialog(group="Limits")); + parameter Real Ni( + min=100*CDL.Constants.eps)=0.9 + "Ni*Ti is time constant of anti-windup compensation" + annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType ==CDL.Types.SimpleController.PID)); + parameter Real Nd( + min=100*CDL.Constants.eps)=10 + "The higher Nd, the more ideal the derivative block" + annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType ==CDL.Types.SimpleController.PID)); + parameter Real xi_start=0 + "Initial value of integrator state" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yd_start=0 + "Initial value of derivative output" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; + parameter Real y_reset=xi_start + "Value to which the controller output is reset if the boolean trigger has a rising edge" + annotation (Dialog(enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID,group="Integrator reset")); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector for setpoint input signal" + annotation (Placement(transformation(extent={{-260,-20},{-220,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector for measurement input signal" + annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput k( + min=100*IBPSA.Controls.OBC.CDL.Constants.eps) + "Connector for control gain signal" + annotation (Placement(transformation(extent={{-260,160},{-220,200}}),iconTransformation(extent={{-140,60},{-100,100}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput Ti( + quantity="Time", + unit="s", + min=100*IBPSA.Controls.OBC.CDL.Constants.eps) + if with_I + "Connector for time constant signal for the integral term" + annotation (Placement(transformation(extent={{-260,100},{-220,140}}), + iconTransformation(extent={{-140,20},{-100,60}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput Td( + quantity="Time", + unit="s", + min=100*IBPSA.Controls.OBC.CDL.Constants.eps) + if with_D + "Connector for time constant signal for the derivative term" + annotation (Placement(transformation(extent={{-260,40},{-220,80}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput y + "Connector for actuator output signal" + annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-160,-220}),iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract controlError + "Control error (set point - measurement)" + annotation (Placement(transformation(extent={{-200,-16},{-180,4}}))); + IBPSA.Controls.OBC.CDL.Reals.Multiply P + "Proportional action" + annotation (Placement(transformation(extent={{-50,130},{-30,150}}))); + IBPSA.Controls.OBC.CDL.Reals.IntegratorWithReset I( + final k=1, + final y_start=xi_start) if with_I + "Integral term" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Derivative D( + final y_start=yd_start) if with_D + "Derivative term" + annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errP + "P error" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errD if with_D + "D error" + annotation (Placement(transformation(extent={{-140,60},{-120,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errI1 if with_I + "I error (before anti-windup compensation)" + annotation (Placement(transformation(extent={{-140,-4},{-120,16}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract errI2 if with_I + "I error (after anti-windup compensation)" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Limiter lim( + final uMax=yMax, + final uMin=yMin) + "Limiter" + annotation (Placement(transformation(extent={{120,80},{140,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Divide antWinGai2 if with_I + "Outputs of anti-windup compensation" + annotation (Placement(transformation(extent={{100,-30},{80,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Divide gaiI if with_I "Gain of the integral term" + annotation (Placement(transformation(extent={{-200,116},{-180,136}}))); + IBPSA.Controls.OBC.CDL.Reals.Multiply errIWithGai if with_I + "I error (after multiplying with the gain of the integral term)" + annotation (Placement(transformation(extent={{-84,28},{-64,48}}))); + IBPSA.Controls.OBC.CDL.Reals.Multiply mulkTd if with_D + "Product of k and Td" + annotation (Placement(transformation(extent={{-200,150},{-180,170}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold greThrkTd( + t=1E-6, + h=1E-6/2) + if with_D + "Check if k*Td is larger than 0" + annotation (Placement(transformation(extent={{140,160},{160,180}}))); + +protected + final parameter Real revAct= + if reverseActing then + 1 + else + -1 + "Switch for sign for reverse or direct acting controller"; + final parameter Boolean with_I=controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable integral action" + annotation (Evaluate=true,HideResult=true); + final parameter Boolean with_D=controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable derivative action" + annotation (Evaluate=true,HideResult=true); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant Dzero( + final k=0) if not with_D + "Zero input signal" + annotation (Evaluate=true,HideResult=true,Placement(transformation(extent={{-50,90}, + {-30,110}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant Izero( + final k=0) if not with_I + "Zero input signal" + annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter uS_revAct( + final k=revAct/r) "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,30},{-180,50}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter uMea_revAct( + final k=revAct/r) + "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,-50},{-180,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Add addPD + "Outputs P and D gains added" + annotation (Placement(transformation(extent={{20,124},{40,144}}))); + IBPSA.Controls.OBC.CDL.Reals.Add addPID + "Outputs P, I and D gains added" + annotation (Placement(transformation(extent={{80,80},{100,100}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract antWinErr if with_I + "Error for anti-windup compensation" + annotation (Placement(transformation(extent={{160,50},{180,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter antWinGai1(k=1/Ni) + if with_I "Gain for anti-windup compensation without the proportional gain" + annotation (Placement(transformation(extent={{180,-30},{160,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant yResSig( + final k=y_reset) if with_I + "Signal for y_reset" + annotation (Placement(transformation(extent={{-140,-84},{-120,-64}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract addRes if with_I + "Adder for integrator reset" + annotation (Placement(transformation(extent={{-100,-90},{-80,-70}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( + final k=yMin < yMax) "Check for values of yMin and yMax" + annotation (Placement(transformation(extent={{140,120},{160,140}}))); + IBPSA.Controls.OBC.CDL.Utilities.Assert assMesYMinMax( + message="LimPID: Limits must be yMin < yMax") "Assertion on yMin and yMax" + annotation (Placement(transformation(extent={{180,120},{200,140}}))); + IBPSA.Controls.OBC.CDL.Utilities.Assert assMeskTd( + message="LimPIDWithInputGains: Limits must be k*Td > 0") + if with_D + "Assertion on k and Td" + annotation (Placement(transformation(extent={{180,160},{200,180}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter gaiT(final k=1/Nd) if with_D + "Gain to compute time constant for derivative action" + annotation (Placement(transformation(extent={{-140,100},{-120,120}}))); + +equation + connect(trigger,I.trigger) + annotation (Line(points={{-160,-220},{-160,-140},{-40,-140},{-40,-12}},color={255,0,255})); + connect(u_s,uS_revAct.u) + annotation (Line(points={{-240,0},{-210,0},{-210,40},{-202,40}},color={0,0,127})); + connect(u_m,uMea_revAct.u) + annotation (Line(points={{0,-220},{0,-160},{-210,-160},{-210,-40},{-202,-40}},color={0,0,127})); + connect(errD.u2,uMea_revAct.y) + annotation (Line(points={{-142,64},{-150,64},{-150,-40},{-178,-40}}, color={0,0,127})); + connect(D.u,errD.y) + annotation (Line(points={{-52,70},{-118,70}}, color={0,0,127})); + connect(errI1.u1,uS_revAct.y) + annotation (Line(points={{-142,12},{-170,12},{-170,40},{-178,40}}, + color={0,0,127})); + connect(addPID.u1,addPD.y) + annotation (Line(points={{78,96},{50,96},{50,134},{42,134}},color={0,0,127})); + connect(lim.y,y) + annotation (Line(points={{142,90},{200,90},{200,0},{240,0}},color={0,0,127})); + connect(antWinErr.y, antWinGai1.u) + annotation (Line(points={{182,60},{190,60},{190,-20},{182,-20}}, color={0,0,127})); + connect(addPD.u2,Dzero.y) + annotation (Line(points={{18,128},{-10,128},{-10,100},{-28,100}}, + color={0,0,127})); + connect(D.y,addPD.u2) + annotation (Line(points={{-28,70},{-10,70},{-10,128},{18,128}},color={0,0,127})); + connect(addPID.u2,I.y) + annotation (Line(points={{78,84},{68,84},{68,0},{-28,0}},color={0,0,127})); + connect(addRes.y,I.y_reset_in) + annotation (Line(points={{-78,-80},{-60,-80},{-60,-8},{-52,-8}},color={0,0,127})); + connect(antWinErr.u2,lim.y) + annotation (Line(points={{158,54},{150,54},{150,90},{142,90}}, color={0,0,127})); + connect(errI1.y,errI2.u1) + annotation (Line(points={{-118,6},{-102,6}}, color={0,0,127})); + connect(controlError.u1,u_s) + annotation (Line(points={{-202,0},{-240,0}}, color={0,0,127})); + connect(cheYMinMax.y,assMesYMinMax.u) + annotation (Line(points={{162,130},{178,130}}, color={255,0,255})); + connect(Izero.y,addPID.u2) + annotation (Line(points={{-28,30},{58,30},{58,84},{78,84}}, + color={0,0,127})); + connect(errP.u1,uS_revAct.y) + annotation (Line(points={{-142,146},{-170,146},{-170,40},{-178,40}},color={0,0,127})); + connect(errD.u1,uS_revAct.y) + annotation (Line(points={{-142,76},{-170,76},{-170,40},{-178,40}},color={0,0,127})); + connect(addPD.u1, P.y) + annotation (Line(points={{18,140},{-28,140}}, color={0,0,127})); + connect(addPID.y, lim.u) + annotation (Line(points={{102,90},{118,90}},color={0,0,127})); + connect(addPID.y, antWinErr.u1) + annotation (Line(points={{102,90},{114,90},{114,66},{158,66}},color={0,0,127})); + connect(addRes.u1, yResSig.y) + annotation (Line(points={{-102,-74},{-118,-74}}, color={0,0,127})); + connect(u_m, controlError.u2) + annotation (Line(points={{0,-220},{0,-160},{-210,-160},{-210,-12},{-202,-12}}, + color={0,0,127})); + connect(uMea_revAct.y, errP.u2) + annotation (Line(points={{-178,-40},{-150,-40},{-150,134},{-142,134}}, color={0,0,127})); + connect(uMea_revAct.y, errI1.u2) + annotation (Line(points={{-178,-40},{-150,-40},{-150,0},{-142,0}}, color={0,0,127})); + connect(addPD.y, addRes.u2) + annotation (Line(points={{42,134},{50,134},{50,-100},{-110,-100},{-110,-86}, + {-102,-86}}, color={0,0,127})); + connect(errP.y, P.u2) + annotation (Line(points={{-118,140},{-74,140},{-74,134},{-52,134}}, color={0,0,127})); + connect(P.u1, k) + annotation (Line(points={{-52,146},{-70,146},{-70,188},{-212,188},{-212,180}, + {-240,180}}, color={0,0,127})); + connect(antWinGai1.y, antWinGai2.u1) + annotation (Line(points={{158,-20},{140,-20},{140,-14},{102,-14}}, + color={0,0,127})); + connect(antWinGai2.u2, k) + annotation (Line(points={{102,-26},{108,-26},{108,188},{-212,188},{-212,180}, + {-240,180}}, color={0,0,127})); + connect(antWinGai2.y, errI2.u2) + annotation (Line(points={{78,-20},{-110,-20},{-110,-6},{-102,-6}}, + color={0,0,127})); + connect(gaiI.u1, k) + annotation (Line(points={{-202,132},{-212,132},{-212,180},{-240,180}}, color={0,0,127})); + connect(gaiI.u2, Ti) + annotation (Line(points={{-202,120},{-240,120}}, color={0,0,127})); + connect(gaiI.y, errIWithGai.u1) + annotation (Line(points={{-178,126},{-100,126},{-100,44},{-86,44}},color={0,0,127})); + connect(errI2.y, errIWithGai.u2) + annotation (Line(points={{-78,0},{-70,0},{-70,20},{-100,20},{-100,32},{-86, + 32}}, color={0,0,127})); + connect(errIWithGai.y, I.u) + annotation (Line(points={{-62,38},{-60,38},{-60,0},{-52,0}}, color={0,0,127})); + connect(mulkTd.u1, k) + annotation (Line(points={{-202,166},{-212,166},{-212,180},{-240,180}},color={0,0,127})); + connect(greThrkTd.y, assMeskTd.u) + annotation (Line(points={{162,170},{178,170}}, color={255,0,255})); + connect(mulkTd.y, greThrkTd.u) + annotation (Line(points={{-178,160},{-168,160},{-168,184},{132,184},{132, + 170},{138,170}}, color={0,0,127})); + connect(mulkTd.u2, Td) + annotation (Line(points={{-202,154},{-206,154},{-206,60},{-240,60}},color={0,0,127})); + connect(Td, gaiT.u) + annotation (Line(points={{-240,60},{-180,60},{-180,110},{-142,110}}, color={0,0,127})); + connect(gaiT.y, D.T) + annotation (Line(points={{-118,110},{-84,110},{-84,74},{-52,74}}, color={0,0,127})); + connect(mulkTd.y, D.k) annotation (Line(points={{-178,160},{-168,160},{-168, + 184},{-80,184},{-80,78},{-52,78}}, color={0,0,127})); + annotation ( + defaultComponentName="conPID", + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-6,-20},{66,-66}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.P), + extent={{-32,-22},{68,-62}}, + textColor={0,0,0}, + textString="P", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-26,-22},{74,-62}}, + textColor={0,0,0}, + textString="PI", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PD), + extent={{-16,-22},{88,-62}}, + textColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="P D"), + Text( + visible=(controllerType == IBPSA.Controls.OBC.CDL.Types.SimpleController.PID), + extent={{-14,-22},{86,-62}}, + textColor={0,0,0}, + textString="PID", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Polygon( + points={{-80,82},{-88,60},{-72,60},{-80,82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-100}}, + color={192,192,192}), + Line( + points={{-90,-80},{70,-80}}, + color={192,192,192}), + Polygon( + points={{74,-80},{52,-72},{52,-88},{74,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-80,-80},{-80,-22}}, + color={0,0,0}), + Line( + points={{-80,-22},{6,56}}, + color={0,0,0}), + Line( + points={{6,56},{68,56}}, + color={0,0,0}), + Rectangle( + extent=DynamicSelect({{100,-100},{84,-100}},{{100,-100},{84,-100+(y-yMin)/(yMax-yMin)*200}}), + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0})}), + Diagram( + coordinateSystem( + extent={{-220,-200},{220,200}}), graphics={Rectangle( + extent={{-56,180},{-24,-16}}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), Text( + extent={{-52,184},{-28,156}}, + pattern=LinePattern.None, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + textColor={0,0,0}, + textString="PID")}), + Documentation( + info=" +

+PID controller in the standard form +

+

+yu = k/r   (e(t) + 1 ⁄ Ti   ∫ e(τ) dτ + Td d⁄dt e(t)), +

+

+with output reset, +where +yu is the control signal before output limitation, +e(t) = us(t) - um(t) is the control error, +with us being the set point and um being +the measured quantity, +k is the gain, +Ti is the time constant of the integral term, +Td is the time constant of the derivative term, +r is a scaling factor, with default r=1. +The scaling factor should be set to the typical order of magnitude of the range of the error e. +For example, you may set r=100 to r=1000 +if the control input is a pressure of a heating water circulation pump in units of Pascal, or +leave r=1 if the control input is a room temperature. +

+

+Note that the units of k are the inverse of the units of the control error, +while the units of Ti and Td are seconds. +

+

+The actual control output is +

+

+y = min( ymax, max( ymin, y)), +

+

+where ymin and ymax are limits for the control signal. +

+

+This block is identical to + +IBPSA.Controls.OBC.CDL.Reals.PIDWithReset, +except that the controller gains +k, Ti and Td are inputs rather than parameters. +

+

P, PI, PD, or PID action

+

+Through the parameter controllerType, the controller can be configured +as P, PI, PD or PID controller. The default configuration is PI. +

+

Reverse or direct action

+

+Through the parameter reverseActing, the controller can be configured to +be reverse or direct acting. +The above standard form is reverse acting, which is the default configuration. +For a reverse acting controller, for a constant set point, +an increase in measurement signal u_m decreases the control output signal y +(Montgomery and McDowall, 2008). +Thus, +

+
    +
  • + for a heating coil with a two-way valve, leave reverseActing = true, but +
  • +
  • + for a cooling coil with a two-way valve, set reverseActing = false. +
  • +
+

+If reverseAction=false, then the error e above is multiplied by -1. +

+

Anti-windup compensation

+

+The controller anti-windup compensation is as follows: +Instead of the above basic control law, the implementation is +

+

+yu = k   (e(t) ⁄ r + 1 ⁄ Ti   ∫ (-Δy + e(τ) ⁄ r) dτ + Td ⁄ r d⁄dt e(t)), +

+

+where the anti-windup compensation Δy is +

+

+Δy = (yu - y) ⁄ (k Ni), +

+

+where +Ni > 0 is the time constant for the anti-windup compensation. +To accelerate the anti-windup, decrease Ni. +

+

+Note that the anti-windup term (-Δy + e(τ) ⁄ r) shows that the range of +the typical control error r should be set to a reasonable value so that +

+

+e(τ) ⁄ r = (us(τ) - um(τ)) ⁄ r +

+

+has order of magnitude one, and hence the anti-windup compensation should work well. +

+

Reset of the controller output

+

+Whenever the value of boolean input signal trigger changes from +false to true, the controller output is reset by setting +y to the value of the parameter y_reset. +

+

Approximation of the derivative term

+

+The derivative of the control error d ⁄ dt e(t) is approximated using +

+

+d⁄dt x(t) = (e(t)-x(t)) Nd ⁄ Td, +

+

+and +

+

+d⁄dt e(t) ≈ Nd (e(t)-x(t)), +

+

+where x(t) is an internal state. +

+

Guidance for tuning the control gains

+

+The parameters of the controller can be manually adjusted by performing +closed loop tests (= controller + plant connected +together) and using the following strategy: +

+
    +
  1. Set very large limits, e.g., set ymax = 1000. +
  2. +
  3. +Select a P-controller and manually enlarge the parameter k +(the total gain of the controller) until the closed-loop response +cannot be improved any more. +
  4. +
  5. +Select a PI-controller and manually adjust the parameters +k and Ti (the time constant of the integrator). +The first value of Ti can be selected such that it is in the +order of the time constant of the oscillations occurring with +the P-controller. If, e.g., oscillations in the order of 100 seconds +occur in the previous step, start with Ti=1/100 seconds. +
  6. +
  7. +If you want to make the reaction of the control loop faster +(but probably less robust against disturbances and measurement noise) +select a PID-controller and manually adjust parameters +k, Ti, Td (time constant of derivative block). +
  8. +
  9. +Set the limits yMax and yMin according to your specification. +
  10. +
  11. +Perform simulations such that the output of the PID controller +goes in its limits. Tune Ni (Ni Ti is the time constant of +the anti-windup compensation) such that the input to the limiter +block (= lim.u) goes quickly enough back to its limits. +If Ni is decreased, this happens faster. If Ni is very large, the +anti-windup compensation is not effective and the controller works bad. +
  12. +
+

References

+

+R. Montgomery and R. McDowall (2008). +\"Fundamentals of HVAC Control Systems.\" +American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA. +

+", +revisions=" +
    +
  • +June 5, 2023, by Jianjun Hu:
    +Changed the instance antWinGai2 to be conditional.
    +This is for +Buildings, issue 3423. +
  • +
  • +May 17, 2022, by Sen Huang:
    +Changing the gains from parameters to inputs
    +This is for +Buildings, issue 2993. +
  • +
  • +April 30, 2021, by Michael Wetter:
    +Corrected error in non-released development version +when reset trigger is true.
    +Refactored implementation to have separate blocks that show the P, I and D contribution, +each with the control gain applied.
    +This is for +Buildings, issue 2475. +
  • +
+")); +end PIDWithInputGains; diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.mo b/IBPSA/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.mo new file mode 100644 index 0000000000..f0178cee30 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/SupplyReturnTemperatureReset.mo @@ -0,0 +1,486 @@ +within IBPSA.Controls.OBC.Utilities.SetPoints; +block SupplyReturnTemperatureReset + "Block to compute the supply and return set point" + parameter Real m=1.3 + "Exponent for heat transfer"; + parameter Real TSup_nominal( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC") + "Supply temperature" + annotation (Dialog(group="Nominal conditions")); + parameter Real TRet_nominal( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC") + "Return temperature" + annotation (Dialog(group="Nominal conditions")); + parameter Real TZon_nominal( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")=293.15 + "Zone temperature" + annotation (Dialog(group="Nominal conditions")); + parameter Real TOut_nominal( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC") + "Outside temperature" + annotation (Dialog(group="Nominal conditions")); + parameter Real dTOutHeaBal( + final quantity="TemperatureDifference", + final unit="K", + displayUnit="K")=8 + "Offset for heating curve"; + CDL.Interfaces.RealInput TSetZon( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) + "Zone setpoint temperature" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + CDL.Interfaces.RealInput TOut( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) + "Outside temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + CDL.Interfaces.RealOutput TSup( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) + "Setpoint for supply temperature" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + CDL.Interfaces.RealOutput TRet( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=200) + "Setpoint for return temperature" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); + +protected + CDL.Reals.Sources.Constant dTOutHeaBal_nominal( + final k=dTOutHeaBal, + y(final quantity="TemperatureDifference", + final unit="K")) + "Offset of outdoor temperature to take into account heat gain" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + CDL.Reals.Sources.Constant TSup_nom( + final k=TSup_nominal, + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Heating supply water temperature at nominal condition" + annotation (Placement(transformation(extent={{-80,160},{-60,180}}))); + CDL.Reals.Sources.Constant TZon_nom( + final k=TZon_nominal, + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Zone temperature at design condition" + annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); + CDL.Reals.Sources.Constant zer( + final k=1E-100) + "Small positive constant to avoid log(0)" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + CDL.Reals.Sources.Constant TRet_nom( + final k=TRet_nominal, + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Heating return water temperature at nominal condition" + annotation (Placement(transformation(extent={{-80,120},{-60,140}}))); + CDL.Reals.Sources.Constant TOut_nom( + final k=TOut_nominal, + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Outside temperature at design condition" + annotation (Placement(transformation(extent={{-80,38},{-60,58}}))); + CDL.Reals.Sources.Constant expM( + final k=m) + "Exponent of heat transfer" + annotation (Placement(transformation(extent={{-80,-180},{-60,-160}}))); + CDL.Reals.Sources.Constant one( + final k=1) + "Outputs 1" + annotation (Placement(transformation(extent={{-80,-140},{-60,-120}}))); + CDL.Reals.Add TOutOffSet( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Effective outside temperature for heat transfer (takes into account zone heat gains)" + annotation (Placement(transformation(extent={{-80,-58},{-60,-38}}))); + CDL.Reals.Subtract qRelDen( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Denominator for relative heating load calculation" + annotation (Placement(transformation(extent={{-40,74},{-20,94}}))); + CDL.Reals.Subtract qRelNum( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Numerator for relative heating load calculation" + annotation (Placement(transformation(extent={{-40,-52},{-20,-32}}))); + CDL.Reals.Divide qRel "Relative heating load = Q_flow/Q_flow_nominal" + annotation (Placement(transformation(extent={{0,24},{20,44}}))); + CDL.Reals.Subtract dTFlu2_nom + "Heating supply minus return water temperature at nominal condition" + annotation (Placement(transformation(extent={{-40,150},{-20,170}}))); + CDL.Reals.Average TFluAve_nominal( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Average heating water temperature at nominal condition" + annotation (Placement(transformation(extent={{-40,120},{-20,140}}))); + CDL.Reals.Subtract dTFluAve_nominal( + y(final quantity="TemperatureDifference", + final unit="K")) + "Average heating water temperature minus room temperature at nominal condition" + annotation (Placement(transformation(extent={{36,110},{56,130}}))); + CDL.Reals.Divide mInv "Inverse of heat transfer exponent, y = 1/m" + annotation (Placement(transformation(extent={{-40,-160},{-20,-140}}))); + CDL.Reals.Add TAve( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Average of supply and return temperature" + annotation (Placement(transformation(extent={{-40,276},{-20,296}}))); + CDL.Reals.Add TSupCur( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Current supply water temperature" + annotation (Placement(transformation(extent={{42,270},{62,290}}))); + CDL.Reals.Subtract TRetCur( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Current return water temperature" + annotation (Placement(transformation(extent={{40,238},{60,258}}))); + CDL.Reals.Max qRel0 + "Relative heating load, but always non-zero value" + annotation (Placement(transformation(extent={{32,30},{52,50}}))); + CDL.Reals.Multiply pro "Product used to compute q^(1/m)" + annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); + CDL.Reals.Exp qRaiInvM + "Outputs qRel^(1/m)" + annotation (Placement(transformation(extent={{0,-110},{20,-90}}))); + CDL.Reals.Log log1 + "Logarithm used for evaluation of qRel^(1/m)" + annotation (Placement(transformation(extent={{-80,-110},{-60,-90}}))); + CDL.Reals.Multiply dTQ(y( + final quantity="TemperatureDifference", + final unit="K")) "Temperature contribution due to qRel^(1/m)" + annotation (Placement(transformation(extent={{-80,220},{-60,240}}))); + CDL.Reals.Multiply dTFlu(y( + final quantity="TemperatureDifference", + final unit="K")) "Supply minus return water temperature" + annotation (Placement(transformation(extent={{0,220},{20,240}}))); + CDL.Reals.Add TOutOffSet_nominal( + y(final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC")) + "Effective outside temperature for heat transfer at nominal condition (takes into account zone heat gains)" + annotation (Placement(transformation(extent={{-44,32},{-24,52}}))); + CDL.Reals.MultiplyByParameter gai( + final k=0.5, + y(final quantity="TemperatureDifference", + final unit="K")) "Gain factor" + annotation (Placement(transformation(extent={{0,150},{20,170}}))); + +equation + connect(dTOutHeaBal_nominal.y,TOutOffSet.u1) + annotation (Line(points={{-58,0},{-52,0},{-52,-28},{-86,-28},{-86,-42},{-82,-42}},color={0,0,127})); + connect(TOut,TOutOffSet.u2) + annotation (Line(points={{-120,60},{-90,60},{-90,-54},{-82,-54}},color={0,0,127})); + connect(TZon_nom.y,qRelDen.u1) + annotation (Line(points={{-58,90},{-42,90}},color={0,0,127})); + connect(qRel.y,qRel0.u2) + annotation (Line(points={{22,34},{30,34}},color={0,0,127})); + connect(zer.y,qRel0.u1) + annotation (Line(points={{22,70},{26,70},{26,46},{30,46}},color={0,0,127})); + connect(dTFlu2_nom.u1,TSup_nom.y) + annotation (Line(points={{-42,166},{-48,166},{-48,170},{-58,170}},color={0,0,127})); + connect(dTFlu2_nom.u2,TRet_nom.y) + annotation (Line(points={{-42,154},{-52,154},{-52,130},{-58,130}},color={0,0,127})); + connect(TFluAve_nominal.u1,TSup_nom.y) + annotation (Line(points={{-42,136},{-48,136},{-48,170},{-58,170}},color={0,0,127})); + connect(TRet_nom.y,TFluAve_nominal.u2) + annotation (Line(points={{-58,130},{-52,130},{-52,124},{-42,124}},color={0,0,127})); + connect(dTFluAve_nominal.u2,TZon_nom.y) + annotation (Line(points={{34,114},{-50,114},{-50,90},{-58,90}},color={0,0,127})); + connect(qRel0.y,log1.u) + annotation (Line(points={{54,40},{64,40},{64,-80},{-90,-80},{-90,-100},{-82,-100}},color={0,0,127})); + connect(one.y,mInv.u1) + annotation (Line(points={{-58,-130},{-50,-130},{-50,-144},{-42,-144}},color={0,0,127})); + connect(expM.y,mInv.u2) + annotation (Line(points={{-58,-170},{-50,-170},{-50,-156},{-42,-156}},color={0,0,127})); + connect(log1.y,pro.u1) + annotation (Line(points={{-58,-100},{-50,-100},{-50,-94},{-42,-94}},color={0,0,127})); + connect(pro.u2,mInv.y) + annotation (Line(points={{-42,-106},{-48,-106},{-48,-120},{-10,-120},{-10,-150},{-18,-150}},color={0,0,127})); + connect(qRaiInvM.u,pro.y) + annotation (Line(points={{-2,-100},{-18,-100}},color={0,0,127})); + connect(dTQ.u1,dTFluAve_nominal.y) + annotation (Line(points={{-82,236},{-92,236},{-92,204},{60,204},{60,120},{58, + 120}}, color={0,0,127})); + connect(qRaiInvM.y,dTQ.u2) + annotation (Line(points={{22,-100},{46,-100},{46,-98},{70,-98},{70,206},{-90,206},{-90,224},{-82,224}},color={0,0,127})); + connect(TSetZon,TAve.u1) + annotation (Line(points={{-120,-60},{-94,-60},{-94,292},{-42,292}},color={0,0,127})); + connect(TAve.u2,dTQ.y) + annotation (Line(points={{-42,280},{-52,280},{-52,230},{-58,230}},color={0,0,127})); + connect(qRel0.y,dTFlu.u2) + annotation (Line(points={{54,40},{64,40},{64,216},{-6,216},{-6,224},{-2,224}},color={0,0,127})); + connect(TSupCur.u1,TAve.y) + annotation (Line(points={{40,286},{-18,286}},color={0,0,127})); + connect(dTFlu.y,TSupCur.u2) + annotation (Line(points={{22,230},{32,230},{32,274},{40,274}},color={0,0,127})); + connect(TSupCur.y,TSup) + annotation (Line(points={{64,280},{88,280},{88,60},{120,60}},color={0,0,127})); + connect(TRetCur.u1,TAve.y) + annotation (Line(points={{38,254},{12,254},{12,286},{-18,286}},color={0,0,127})); + connect(TRetCur.u2,dTFlu.y) + annotation (Line(points={{38,242},{32,242},{32,230},{22,230}},color={0,0,127})); + connect(TRetCur.y,TRet) + annotation (Line(points={{62,248},{80,248},{80,-60},{120,-60}},color={0,0,127})); + connect(qRel.u1,qRelNum.y) + annotation (Line(points={{-2,40},{-12,40},{-12,-42},{-18,-42}},color={0,0,127})); + connect(qRel.u2,qRelDen.y) + annotation (Line(points={{-2,28},{-6,28},{-6,84},{-18,84}},color={0,0,127})); + connect(TOutOffSet_nominal.u1,TOut_nom.y) + annotation (Line(points={{-46,48},{-58,48}},color={0,0,127})); + connect(dTOutHeaBal_nominal.y,TOutOffSet_nominal.u2) + annotation (Line(points={{-58,0},{-52,0},{-52,36},{-46,36}},color={0,0,127})); + connect(TOutOffSet_nominal.y,qRelDen.u2) + annotation (Line(points={{-22,42},{-20,42},{-20,66},{-50,66},{-50,78},{-42,78}},color={0,0,127})); + connect(TSetZon, qRelNum.u1) annotation (Line(points={{-120,-60},{-48,-60},{-48, + -36},{-42,-36}}, color={0,0,127})); + connect(TOutOffSet.y, qRelNum.u2) + annotation (Line(points={{-58,-48},{-42,-48}}, color={0,0,127})); + connect(dTFlu2_nom.y, gai.u) + annotation (Line(points={{-18,160},{-2,160}}, color={0,0,127})); + connect(gai.y, dTFlu.u1) annotation (Line(points={{22,160},{28,160},{28,180},{ + -10,180},{-10,236},{-2,236}}, color={0,0,127})); + connect(TFluAve_nominal.y, dTFluAve_nominal.u1) annotation (Line(points={{-18, + 130},{10,130},{10,126},{34,126}}, color={0,0,127})); + annotation ( + defaultComponentName="watRes", + Documentation( + info=" +

+This block computes the set point temperatures for the +supply and return water temperature. +The set point for the zone air temperature can be an input to the model. +It allows to use this model with systems that have night set back. +

+

+If used to reset the temperature in a heating system, +the parameter dTOutHeaBal can be used to shift the heating curve +to take into account that heat gains from solar, equipment and people +make up for some of the transmission losses. +For example, in energy efficient houses, the heating may not be switched on if +the outside air temperature is greater than +12°C, even if a zone temperature of 20°C is required. +In such a situation, set dTOutHeaBal=20-12=8 Kelvin to +shift the heating curve. +

+

Typical usage

+

+The figure below shows a typical usage for a hot water temperature reset +for a heating system. +The parameters of the block heaCur +are for a heating system with +60°C supply water temperature and +40°C return water temperature at +an outside temperature of +-10°C and a room temperature of +20°C. The offset for the temperature reset is +8 Kelvin, i.e., above +12°C outside temperature, there is no heating load. +The figure shows the computed supply and return water temperatures. +

+

+ +

+", + revisions=" +
    +
  • +October 21, 2021, by Michael Wetter:
    +Corrected icon. +
  • +
  • +February 8, 2021, by Michael Wetter:
    +Renamed to IBPSA.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset +and reimplemented using elementary CDL blocks.
    +This is for +Buildings, issue 2355. +
  • +
  • +November 12, 2020, by Michael Wetter:
    +Reformulated to remove dependency to Modelica.Units.SI.
    +This is for +Buildings, issue 2243. +
  • +
  • +January 3, 2020, by Jianjun Hu:
    +Changed name from HotWaterTemperatureReset to +SupplyReturnTemperatureReset. +This is for +Buildings, issue 860. +
  • +
  • +January 10, 2017, by Milica Grahovac:
    +First CDL implementation. +
  • +
  • +May 29, 2014, by Michael Wetter:
    +Removed undesirable annotation Evaluate=true. +
  • +
  • +February 13, 2013, by Michael Wetter:
    +Corrected error that led to wrong results if the zone air temperature is +different from its nominal value TZon_nominal. +See ticket Buildings, issue 74. +
  • +
  • +November 21, 2011, by Michael Wetter:
    +Improved documentation. +
  • +
  • +February 5, 2009 by Michael Wetter:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{90,-82},{68,-74},{68,-90},{90,-82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-90,-82},{82,-82}}, + color={192,192,192}), + Line( + points={{-80,76},{-80,-92}}, + color={192,192,192}), + Polygon( + points={{-80,88},{-88,66},{-72,66},{-80,86},{-80,88}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-82},{60,32}}), + Line( + points={{-80,-82},{-42,-38},{4,2},{60,32}}, + smooth=Smooth.Bezier), + Line( + points={{-80,-82},{-58,-42},{-4,8},{60,32}}, + smooth=Smooth.Bezier), + Text( + extent={{-152,120},{-102,70}}, + textColor={0,0,127}, + textString="TOut"), + Text( + extent={{-152,-4},{-102,-54}}, + textColor={0,0,127}, + textString="TSetZon"), + Text( + extent={{40,86},{90,36}}, + textColor={0,0,127}, + textString="TSup"), + Text( + extent={{42,-30},{92,-80}}, + textColor={0,0,127}, + textString="TRet"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255})}), + Diagram( + coordinateSystem( + extent={{-100,-200},{100,340}}), + graphics={ + Rectangle( + extent={{-84,320},{76,212}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Text( + extent={{-34,318},{66,306}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Current fluid setpoint temperatures"), + Rectangle( + extent={{-84,-84},{76,-192}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Text( + extent={{-26,-178},{74,-190}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Computation of qRel^(1/m)"), + Rectangle( + extent={{-86,200},{-16,-22}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Text( + extent={{-84,198},{-36,190}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Nominal values"), + Rectangle( + extent={{-10,102},{58,-22}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Text( + extent={{-4,98},{56,90}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Guard against 0^(1/m)"), + Rectangle( + extent={{-84,-28},{58,-76}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Text( + extent={{-6,-68},{60,-76}}, + textColor={0,0,255}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + horizontalAlignment=TextAlignment.Left, + textString="Numerator for qRel")})); +end SupplyReturnTemperatureReset; diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mo b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mo new file mode 100644 index 0000000000..9fb1d42a71 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mo @@ -0,0 +1,103 @@ +within IBPSA.Controls.OBC.Utilities.SetPoints.Validation; +model SupplyReturnTemperatureReset + "Test model for the heating curve" + IBPSA.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset heaCur( + m=1, + TSup_nominal=333.15, + TRet_nominal=313.15, + TOut_nominal=263.15) + "Compute the supply and return set point of heating systems with varying outdoor temperature" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TOut( + height=40, + duration=1, + offset=263.15, + y(unit="K")) + "Outdoor temperature varying from -10 degC to 30 degC" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + IBPSA.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset heaCur1( + m=1, + dTOutHeaBal=15, + TSup_nominal=333.15, + TRet_nominal=313.15, + TOut_nominal=263.15) + "Compute the supply and return set point of heating systems with changing room setpoint temperature" + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse TRoo1( + offset=273.15+20, + shift=0.5, + amplitude=-5, + period=1, + y(unit="K")) + "Night set back from 20 degC to 15 degC" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TOut1( + k=273.15-10, + y(unit="K")) + "Constant outdoor air temperature" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TRoo( + k=273.15+20, + y(unit="K")) + "Room temperature 20 degC" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + +equation + connect(TOut1.y,heaCur1.TOut) + annotation (Line(points={{-38,-20},{-38,-20},{0,-20},{0,-34},{18,-34}},color={0,0,127})); + connect(TOut.y,heaCur.TOut) + annotation (Line(points={{-38,60},{-38,60},{0,60},{0,46},{18,46}},color={0,0,127})); + connect(TRoo.y,heaCur.TSetZon) + annotation (Line(points={{-38,20},{0,20},{0,34},{18,34}},color={0,0,127})); + connect(TRoo1.y,heaCur1.TSetZon) + annotation (Line(points={{-38,-60},{0,-60},{0,-46},{18,-46}},color={0,0,127})); + annotation ( + experiment( + Tolerance=1e-6, + StopTime=1.0), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureReset.mos" "Simulate and plot"), + Documentation( + info=" +

+Example that demonstrates the use of the hot water temperature reset +for a heating system. +The parameters of the block heaCur +are for a heating system with +60°C supply water temperature and +40°C return water temperature at +an outside temperature of +-10°C and a room temperature of +20°C. The offset for the temperature reset is +8 Kelvin, i.e., above +12°C outside temperature, there is no heating load. +The figure below shows the computed supply and return water temperatures. +

+

+ +

+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SupplyReturnTemperatureReset; diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mo b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mo new file mode 100644 index 0000000000..b536e9207b --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mo @@ -0,0 +1,75 @@ +within IBPSA.Controls.OBC.Utilities.SetPoints.Validation; +model SupplyReturnTemperatureResetExponent + "Test model for the heating curve with different exponent" + IBPSA.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset heaCur( + m=1, + TSup_nominal=313.15, + TRet_nominal=308.15, + TOut_nominal=263.15) + "Compute the supply and return set point of heating systems with varying outdoor temperature and m=1" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TOut( + height=30, + duration=1, + offset=258.15, + y(unit="K")) + "Outdoor temperature varying from -10 degC to 30 degC" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TRoo( + k=273.15+20, + y(unit="K")) + "Room temperature 20 degC" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.Utilities.SetPoints.SupplyReturnTemperatureReset heaCurM( + m=1.3, + TSup_nominal=313.15, + TRet_nominal=308.15, + TOut_nominal=263.15) + "Compute the supply and return set point of heating systems with varying outdoor temperature and m=1.3" + annotation (Placement(transformation(extent={{20,-20},{40,0}}))); + +equation + connect(TOut.y,heaCur.TOut) + annotation (Line(points={{-38,60},{-38,60},{0,60},{0,46},{18,46}},color={0,0,127})); + connect(TRoo.y,heaCur.TSetZon) + annotation (Line(points={{-38,20},{-10,20},{-10,34},{18,34}},color={0,0,127})); + connect(heaCurM.TOut,TOut.y) + annotation (Line(points={{18,-4},{0,-4},{0,60},{-38,60}},color={0,0,127})); + connect(TRoo.y,heaCurM.TSetZon) + annotation (Line(points={{-38,20},{-10,20},{-10,-16},{18,-16}},color={0,0,127})); + annotation ( + experiment( + Tolerance=1e-6, + StopTime=1.0), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/SetPoints/Validation/SupplyReturnTemperatureResetExponent.mos" "Simulate and plot"), + Documentation( + info=" +

+Example that demonstrates the use of the hot water temperature reset +for a heating system. +Both instances are identical except that heaCurM sets m=1.3. +

+", + revisions=" +
    +
  • +July 18, 2017, by Jianjun Hu:
    +First implementation in CDL. +
  • +
+"), + Icon( + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})})); +end SupplyReturnTemperatureResetExponent; diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.mo b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.mo new file mode 100644 index 0000000000..be8825a472 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC.Utilities.SetPoints; +package Validation "Collection of models that validate the SetPoints blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +IBPSA.Controls.OBC.Utilities.SetPoints. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.order b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.order new file mode 100644 index 0000000000..cf5551e9de --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/Validation/package.order @@ -0,0 +1,2 @@ +SupplyReturnTemperatureReset +SupplyReturnTemperatureResetExponent diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/package.mo b/IBPSA/Controls/OBC/Utilities/SetPoints/package.mo new file mode 100644 index 0000000000..1a7c371b65 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/package.mo @@ -0,0 +1,46 @@ +within IBPSA.Controls.OBC.Utilities; +package SetPoints "Package with blocks for setpoint resets" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains components models to compute set points for control systems. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); +end SetPoints; diff --git a/IBPSA/Controls/OBC/Utilities/SetPoints/package.order b/IBPSA/Controls/OBC/Utilities/SetPoints/package.order new file mode 100644 index 0000000000..b51882f1ee --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/SetPoints/package.order @@ -0,0 +1,2 @@ +SupplyReturnTemperatureReset +Validation diff --git a/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mo b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mo new file mode 100644 index 0000000000..dc4e71e72c --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mo @@ -0,0 +1,153 @@ +within IBPSA.Controls.OBC.Utilities.Validation; +model OptimalStartCoolingNegativeStartTime + "Validation model for the block OptimalStart for cooling system with a negative start time" + IBPSA.Controls.OBC.Utilities.OptimalStart optStaCoo( + computeHeating=false, + computeCooling=true) + "Optimal start for cooling system" + annotation (Placement(transformation(extent={{20,0},{40,20}}))); + Modelica.Blocks.Continuous.Integrator TRoo( + k=0.0000005, + y_start=24+273.15) + "Room air temperature" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetCooOcc( + k=24+273.15) + "Zone cooling setpoint during occupancy" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOut( + amplitude=5, + freqHz=1/86400, + offset=28+273.15, + startTime( + displayUnit="s")=-691200) + "Outdoor dry bulb temperature to test cooling system" + annotation (Placement(transformation(extent={{-194,50},{-174,70}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter UA(k=100) + "Overall heat loss coefficient" + annotation (Placement(transformation(extent={{-120,0},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dT + "Temperature difference between zone and outdoor" + annotation (Placement(transformation(extent={{-160,0},{-140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add dTdt + "Temperature derivative" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QCoo(k=-2000) + "Heat extraction in the zone" + annotation (Placement(transformation(extent={{-120,-60},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea( + realTrue=-6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{60,0},{80,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add + "Reset setpoint from unoccupied to occupied during optimal start period" + annotation (Placement(transformation(extent={{120,0},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=1, + reverseActing=false) + "PI control signal for the cooling power" + annotation (Placement(transformation(extent={{160,0},{180,20}}))); + IBPSA.Controls.SetPoints.OccupancySchedule occSch( + occupancy=3600*{7,19}, + period=24*3600) + "Daily schedule" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetCoo( + realTrue=273.15+24, + realFalse=273.15+30, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for cooling" + annotation (Placement(transformation(extent={{60,-60},{80,-40}}))); + +equation + connect(dT.y,UA.u) + annotation (Line(points={{-138,10},{-122,10}},color={0,0,127})); + connect(dTdt.y,TRoo.u) + annotation (Line(points={{-58,10},{-42,10}},color={0,0,127})); + connect(QCoo.y,dTdt.u2) + annotation (Line(points={{-98,-50},{-88,-50},{-88,4},{-82,4}},color={0,0,127})); + connect(TRoo.y,optStaCoo.TZon) + annotation (Line(points={{-19,10},{-8,10},{-8,6},{18,6}},color={0,0,127})); + connect(TSetCooOcc.y,optStaCoo.TSetZonCoo) + annotation (Line(points={{-18,80},{0,80},{0,14},{18,14}},color={0,0,127})); + connect(UA.y,dTdt.u1) + annotation (Line(points={{-98,10},{-90,10},{-90,16},{-82,16}},color={0,0,127})); + connect(optStaCoo.optOn,booToRea.u) + annotation (Line(points={{42,6},{50,6},{50,10},{58,10}},color={255,0,255})); + connect(add.y,conPID.u_s) + annotation (Line(points={{142,10},{158,10}},color={0,0,127})); + connect(TRoo.y,conPID.u_m) + annotation (Line(points={{-19,10},{-14,10},{-14,-20},{170,-20},{170,-2}},color={0,0,127})); + connect(occSch.tNexOcc,optStaCoo.tNexOcc) + annotation (Line(points={{-19,-44},{0,-44},{0,2},{18,2}},color={0,0,127})); + connect(conPID.y,QCoo.u) + annotation (Line(points={{182,10},{188,10},{188,-80},{-130,-80},{-130,-50},{-122,-50}},color={0,0,127})); + connect(occSch.occupied,TSetCoo.u) + annotation (Line(points={{-19,-56},{10,-56},{10,-50},{58,-50}},color={255,0,255})); + connect(TSetCoo.y,add.u2) + annotation (Line(points={{82,-50},{110,-50},{110,4},{118,4}},color={0,0,127})); + connect(booToRea.y,add.u1) + annotation (Line(points={{82,10},{86,10},{86,16},{118,16}},color={0,0,127})); + connect(TRoo.y, dT.u2) + annotation (Line(points={{-19,10},{-14,10},{-14,-20},{-166,-20},{-166,4},{-162,4}}, + color={0,0,127})); + connect(TOut.y, dT.u1) + annotation (Line(points={{-172,60},{-166,60},{-166,16},{-162,16}}, color={0,0,127})); + + annotation ( + experiment( + StartTime=-660000, + StopTime=0, + Tolerance=1e-07), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingNegativeStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+This model is to validate the block + +IBPSA.Controls.OBC.Utilities.OptimalStart for space cooling system with +a negative simulation start time. +

+

+The room is modeled as a simple differential equation with a time constant of +around 5.6 hours. The cooling power is relatively large compared to the heat gain from +the outdoor temperature. The outdoor temperature is repetitive each day; +the optimal start time converges to a small amount of time tOpt after a few days. +

+", + revisions=" +
    +
  • +March 19, 2020, by Michael Wetter:
    +Simplified setpoint implementation.' +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-200,-160},{200,160}}))); +end OptimalStartCoolingNegativeStartTime; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mo b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mo new file mode 100644 index 0000000000..0b9a9ed6f1 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mo @@ -0,0 +1,152 @@ +within IBPSA.Controls.OBC.Utilities.Validation; +model OptimalStartCoolingPositiveStartTime + "Validation model for the block OptimalStart for cooling system with a positive start time" + IBPSA.Controls.OBC.Utilities.OptimalStart optStaCoo( + computeHeating=false, + computeCooling=true) + "Optimal start for cooling system" + annotation (Placement(transformation(extent={{20,0},{40,20}}))); + Modelica.Blocks.Continuous.Integrator TRoo( + k=0.0000005, + y_start=24+273.15) + "Room air temperature" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetCooOcc( + k=24+273.15) + "Zone cooling setpoint during occupancy" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOut( + amplitude=5, + freqHz=1/86400, + offset=28+273.15, + startTime( + displayUnit="s")=0) + "Outdoor dry bulb temperature to test cooling system" + annotation (Placement(transformation(extent={{-194,40},{-174,60}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter UA(k=100) + "Overall heat loss coefficient" + annotation (Placement(transformation(extent={{-120,0},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dT + "Temperature difference between zone and outdoor" + annotation (Placement(transformation(extent={{-160,0},{-140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add dTdt + "Temperature derivative" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QCoo(k=-2000) + "Heat extraction in the zone" + annotation (Placement(transformation(extent={{-120,-60},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea( + realTrue=-6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{60,0},{80,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add + "Reset setpoint from unoccupied to occupied during optimal start period" + annotation (Placement(transformation(extent={{120,0},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=1, + reverseActing=false) + "PI control signal for the cooling power" + annotation (Placement(transformation(extent={{160,0},{180,20}}))); + IBPSA.Controls.SetPoints.OccupancySchedule occSch( + occupancy=3600*{7,19}, + period=24*3600) + "Daily schedule" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetCoo( + realTrue=273.15+24, + realFalse=273.15+30, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for cooling" + annotation (Placement(transformation(extent={{60,-60},{80,-40}}))); + +equation + connect(dT.y,UA.u) + annotation (Line(points={{-138,10},{-122,10}},color={0,0,127})); + connect(dTdt.y,TRoo.u) + annotation (Line(points={{-58,10},{-42,10}},color={0,0,127})); + connect(QCoo.y,dTdt.u2) + annotation (Line(points={{-98,-50},{-88,-50},{-88,4},{-82,4}},color={0,0,127})); + connect(TRoo.y,optStaCoo.TZon) + annotation (Line(points={{-19,10},{-8,10},{-8,6},{18,6}},color={0,0,127})); + connect(TSetCooOcc.y,optStaCoo.TSetZonCoo) + annotation (Line(points={{-18,80},{0,80},{0,14},{18,14}},color={0,0,127})); + connect(UA.y,dTdt.u1) + annotation (Line(points={{-98,10},{-90,10},{-90,16},{-82,16}},color={0,0,127})); + connect(optStaCoo.optOn,booToRea.u) + annotation (Line(points={{42,6},{50,6},{50,10},{58,10}},color={255,0,255})); + connect(add.y,conPID.u_s) + annotation (Line(points={{142,10},{158,10}},color={0,0,127})); + connect(TRoo.y,conPID.u_m) + annotation (Line(points={{-19,10},{-14,10},{-14,-20},{170,-20},{170,-2}},color={0,0,127})); + connect(occSch.tNexOcc,optStaCoo.tNexOcc) + annotation (Line(points={{-19,-44},{0,-44},{0,2},{18,2}},color={0,0,127})); + connect(conPID.y,QCoo.u) + annotation (Line(points={{182,10},{188,10},{188,-80},{-130,-80},{-130,-50},{-122,-50}},color={0,0,127})); + connect(occSch.occupied,TSetCoo.u) + annotation (Line(points={{-19,-56},{10,-56},{10,-50},{58,-50}},color={255,0,255})); + connect(TSetCoo.y,add.u2) + annotation (Line(points={{82,-50},{100,-50},{100,4},{118,4}},color={0,0,127})); + connect(booToRea.y,add.u1) + annotation (Line(points={{82,10},{100,10},{100,16},{118,16}},color={0,0,127})); + connect(TRoo.y, dT.u2) annotation (Line(points={{-19,10},{-14,10},{-14,-20},{-166, + -20},{-166,4},{-162,4}}, color={0,0,127})); + connect(TOut.y, dT.u1) annotation (Line(points={{-172,50},{-166,50},{-166,16}, + {-162,16}}, color={0,0,127})); + + annotation ( + experiment( + StartTime=34000, + StopTime=864000, + Tolerance=1e-07), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartCoolingPositiveStartTime.mos" "Simulate and plot"), + Documentation( + info=" +

+This model is to validate the block + +IBPSA.Controls.OBC.Utilities.OptimalStart for space cooling system +with a positive simulation start time. +

+

+The room is modeled as a simple differential equation with a time constant of +around 5.6 hours. The cooling power is relatively large compared to the heat gain from +the outdoor temperature. The outdoor temperature is repetitive each day; +the optimal start time converges to a small amount of time tOpt after a few days. +

+", + revisions=" +
    +
  • +March 19, 2020, by Michael Wetter:
    +Simplified setpoint implementation.' +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-200,-160},{200,160}}))); +end OptimalStartCoolingPositiveStartTime; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeating.mo b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeating.mo new file mode 100644 index 0000000000..25a9e4ac57 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeating.mo @@ -0,0 +1,150 @@ +within IBPSA.Controls.OBC.Utilities.Validation; +model OptimalStartHeating + "Validation model for the block OptimalStart for heating system" + IBPSA.Controls.OBC.Utilities.OptimalStart optStaHea( + computeHeating=true, + computeCooling=false) + "Optimal start for heating system" + annotation (Placement(transformation(extent={{20,0},{40,20}}))); + Modelica.Blocks.Continuous.Integrator TRoo( + k=0.000005, + y_start=21+273.15) + "Room air temperature" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetHeaOcc( + k=21+273.15) + "Zone heating setpoint during occupancy" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + IBPSA.Controls.SetPoints.OccupancySchedule occSch( + occupancy=3600*{7,19}, + period=24*3600) + "Daily schedule" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter UA(k=10) + "Overall heat loss coefficient" + annotation (Placement(transformation(extent={{-120,0},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dT + "Temperature difference between zone and outdoor" + annotation (Placement(transformation(extent={{-160,0},{-140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add dTdt + "Temperature derivative" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QHea(k=500) + "Heat injection in the zone" + annotation (Placement(transformation(extent={{-120,-60},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea( + realTrue=6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{60,0},{80,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOut( + amplitude=10, + freqHz=1/86400, + phase=3.1415926535898, + offset=10+273.15, + startTime( + displayUnit="d")=-172800) + "Outdoor dry bulb temperature to test heating system" + annotation (Placement(transformation(extent={{-194,40},{-174,60}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=1.5) + "PI control for space heating" + annotation (Placement(transformation(extent={{160,0},{180,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add + "Reset temperature from unoccupied to occupied for optimal start period" + annotation (Placement(transformation(extent={{120,0},{140,20}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetHea( + realTrue=273.15+21, + realFalse=273.15+15, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for heating" + annotation (Placement(transformation(extent={{60,-60},{80,-40}}))); + +equation + connect(dT.y,UA.u) + annotation (Line(points={{-138,10},{-122,10}},color={0,0,127})); + connect(dTdt.y,TRoo.u) + annotation (Line(points={{-58,10},{-42,10}},color={0,0,127})); + connect(QHea.y,dTdt.u2) + annotation (Line(points={{-98,-50},{-88,-50},{-88,4},{-82,4}},color={0,0,127})); + connect(TRoo.y,optStaHea.TZon) + annotation (Line(points={{-19,10},{-12,10},{-12,6},{18,6}},color={0,0,127})); + connect(occSch.tNexOcc,optStaHea.tNexOcc) + annotation (Line(points={{-19,-44},{0,-44},{0,2},{18,2}},color={0,0,127})); + connect(TSetHeaOcc.y,optStaHea.TSetZonHea) + annotation (Line(points={{-18,80},{0,80},{0,18},{18,18}},color={0,0,127})); + connect(UA.y,dTdt.u1) + annotation (Line(points={{-98,10},{-90,10},{-90,16},{-82,16}},color={0,0,127})); + connect(add.y,conPID.u_s) + annotation (Line(points={{142,10},{158,10}},color={0,0,127})); + connect(conPID.y,QHea.u) + annotation (Line(points={{182,10},{184,10},{184,-70},{-126,-70},{-126,-50},{-122,-50}},color={0,0,127})); + connect(TRoo.y,conPID.u_m) + annotation (Line(points={{-19,10},{-12,10},{-12,-16},{170,-16},{170,-2}},color={0,0,127})); + connect(optStaHea.optOn,booToRea.u) + annotation (Line(points={{42,6},{50,6},{50,10},{58,10}},color={255,0,255})); + connect(TSetHea.u,occSch.occupied) + annotation (Line(points={{58,-50},{10,-50},{10,-56},{-19,-56}},color={255,0,255})); + connect(TSetHea.y,add.u2) + annotation (Line(points={{82,-50},{104,-50},{104,4},{118,4}},color={0,0,127})); + connect(booToRea.y,add.u1) + annotation (Line(points={{82,10},{104,10},{104,16},{118,16}},color={0,0,127})); + connect(TOut.y, dT.u1) annotation (Line(points={{-172,50},{-166,50},{-166,16}, + {-162,16}}, color={0,0,127})); + connect(TRoo.y, dT.u2) annotation (Line(points={{-19,10},{-12,10},{-12,-16},{-166, + -16},{-166,4},{-162,4}}, color={0,0,127})); + annotation ( + experiment( + StartTime=-172800, + StopTime=604800, + Tolerance=1e-07), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeating.mos" "Simulate and plot"), + Documentation( + info=" +

+This model is to validate the block + +IBPSA.Controls.OBC.Utilities.OptimalStart for space heating system. +

+

+The room is modeled as a simple differential equation with a time constant of +around 5.6 hours. +The outdoor temperature is also repetitive each day; +the optimal start time converges to a small amount of time tOpt after a few days. +

+", + revisions=" +
    +
  • +March 19, 2020, by Michael Wetter:
    +Simplified setpoint implementation.' +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-200,-160},{200,160}}))); +end OptimalStartHeating; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mo b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mo new file mode 100644 index 0000000000..8cb555570f --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mo @@ -0,0 +1,211 @@ +within IBPSA.Controls.OBC.Utilities.Validation; +model OptimalStartHeatingCooling + "Validation model for the block OptimalStart for both heating and cooling system" + IBPSA.Controls.OBC.Utilities.OptimalStart optSta( + computeHeating=true, + computeCooling=true) + "Optimal start for both heating and cooling system" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + Modelica.Blocks.Continuous.Integrator TRoo( + k=0.0000004, + y_start=19+273.15) + "Room air temperature" + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetCooOcc( + k=24+273.15) + "Zone cooling setpoint during occupancy" + annotation (Placement(transformation(extent={{-20,60},{0,80}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOutBase( + amplitude=5, + freqHz=1/86400, + offset=15+273.15, + startTime( + displayUnit="h")=0) + "Outdoor dry bulb temperature, base component" + annotation (Placement(transformation(extent={{-212,70},{-192,90}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter UA(k=25) + "Overall heat loss coefficient" + annotation (Placement(transformation(extent={{-100,0},{-80,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dT + "Temperature difference between zone and outdoor" + annotation (Placement(transformation(extent={{-140,0},{-120,20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QCoo(k=-4000) + "Heat extraction in the zone" + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea1( + realTrue=-6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{80,0},{100,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add1 + "Reset temperature from unoccupied to occupied for optimal start period" + annotation (Placement(transformation(extent={{140,0},{160,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID1( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=3, + reverseActing=false) + "PI control for space cooling" + annotation (Placement(transformation(extent={{180,0},{200,20}}))); + IBPSA.Controls.SetPoints.OccupancySchedule occSch( + occupancy=3600*{7,19}, + period=24*3600) + "Daily schedule" + annotation (Placement(transformation(extent={{-20,-60},{0,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiSum mulSum( + nin=3) + "Sum heat gains" + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetHeaOcc( + k=21+273.15) + "Zone heating setpoint during occupancy" + annotation (Placement(transformation(extent={{-20,100},{0,120}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea2( + realTrue=6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{80,40},{100,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add2 + "Reset temperature from unoccupied to occupied for optimal start period" + annotation (Placement(transformation(extent={{140,40},{160,60}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=3) + "PI control for space heating" + annotation (Placement(transformation(extent={{180,40},{200,60}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QHea(k=2000) + "Heat injection in the zone" + annotation (Placement(transformation(extent={{-100,-110},{-80,-90}}))); + IBPSA.Controls.OBC.CDL.Reals.Add TOut + "Outdoor dry bulb temperature" + annotation (Placement(transformation(extent={{-174,50},{-154,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul( + shift( + displayUnit="d")=604800, + amplitude=15, + period( + displayUnit="d")=1209600) + "Range of outdoor dry bulb temperature" + annotation (Placement(transformation(extent={{-214,30},{-194,50}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetHea( + realTrue=273.15+21, + realFalse=273.15+15, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for heating" + annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetCoo( + realTrue=273.15+24, + realFalse=273.15+30, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for cooling" + annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); + +equation + connect(dT.y,UA.u) + annotation (Line(points={{-118,10},{-102,10}},color={0,0,127})); + connect(TRoo.y,optSta.TZon) + annotation (Line(points={{1,10},{10,10},{10,6},{38,6}},color={0,0,127})); + connect(TSetCooOcc.y,optSta.TSetZonCoo) + annotation (Line(points={{2,70},{10,70},{10,14},{38,14}},color={0,0,127})); + connect(optSta.optOn,booToRea1.u) + annotation (Line(points={{62,6},{70,6},{70,10},{78,10}},color={255,0,255})); + connect(add1.y,conPID1.u_s) + annotation (Line(points={{162,10},{178,10}},color={0,0,127})); + connect(TRoo.y,conPID1.u_m) + annotation (Line(points={{1,10},{6,10},{6,-6},{190,-6},{190,-2}},color={0,0,127})); + connect(occSch.tNexOcc,optSta.tNexOcc) + annotation (Line(points={{1,-44},{10,-44},{10,2},{38,2}},color={0,0,127})); + connect(UA.y,mulSum.u[1]) + annotation (Line(points={{-78,10},{-70,10},{-70,11.3333},{-62,11.3333}},color={0,0,127})); + connect(TRoo.u,mulSum.y) + annotation (Line(points={{-22,10},{-38,10}},color={0,0,127})); + connect(TSetHeaOcc.y,optSta.TSetZonHea) + annotation (Line(points={{2,110},{14,110},{14,18},{38,18}},color={0,0,127})); + connect(optSta.optOn,booToRea2.u) + annotation (Line(points={{62,6},{70,6},{70,50},{78,50}},color={255,0,255})); + connect(add2.y,conPID.u_s) + annotation (Line(points={{162,50},{178,50}},color={0,0,127})); + connect(conPID1.y,QCoo.u) + annotation (Line(points={{202,10},{210,10},{210,-80},{-110,-80},{-110,-30},{-102,-30}},color={0,0,127})); + connect(conPID.y,QHea.u) + annotation (Line(points={{202,50},{212,50},{212,-130},{-108,-130},{-108,-100},{-102,-100}},color={0,0,127})); + connect(QCoo.y,mulSum.u[2]) + annotation (Line(points={{-78,-30},{-70,-30},{-70,10},{-62,10}},color={0,0,127})); + connect(QHea.y,mulSum.u[3]) + annotation (Line(points={{-78,-100},{-68,-100},{-68,8.66667},{-62,8.66667}},color={0,0,127})); + connect(TOutBase.y,TOut.u1) + annotation (Line(points={{-190,80},{-182,80},{-182,66},{-176,66}}, color={0,0,127})); + connect(pul.y,TOut.u2) + annotation (Line(points={{-192,40},{-180,40},{-180,54},{-176,54}}, color={0,0,127})); + connect(TSetCoo.y,add1.u2) + annotation (Line(points={{102,-30},{130,-30},{130,4},{138,4}},color={0,0,127})); + connect(occSch.occupied,TSetCoo.u) + annotation (Line(points={{1,-56},{60,-56},{60,-30},{78,-30}},color={255,0,255})); + connect(TSetHea.u,occSch.occupied) + annotation (Line(points={{78,-60},{60,-60},{60,-56},{1,-56}},color={255,0,255})); + connect(booToRea1.y,add1.u1) + annotation (Line(points={{102,10},{120,10},{120,16},{138,16}},color={0,0,127})); + connect(booToRea2.y,add2.u1) + annotation (Line(points={{102,50},{120,50},{120,56},{138,56}},color={0,0,127})); + connect(TSetHea.y,add2.u2) + annotation (Line(points={{102,-60},{126,-60},{126,44},{138,44}},color={0,0,127})); + connect(TRoo.y, conPID.u_m) annotation (Line(points={{1,10},{6,10},{6,34},{190, + 34},{190,38}}, color={0,0,127})); + connect(TOut.y, dT.u1) annotation (Line(points={{-152,60},{-146,60},{-146,16}, + {-142,16}}, color={0,0,127})); + connect(TRoo.y, dT.u2) annotation (Line(points={{1,10},{6,10},{6,-6},{-146,-6}, + {-146,4},{-142,4}}, color={0,0,127})); + annotation ( + experiment( + StopTime=2419200, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartHeatingCooling.mos" "Simulate and plot"), + Documentation( + info=" +

+This models validates both space heating and cooling for the block + +IBPSA.Controls.OBC.Utilities.OptimalStart. +

+

+The first ten days is to test the heating case with a lower outdoor temperature. +The next ten days has a higher outdoor temprature, which is to test the cooling case. +The zone model has a time constant of 27.8 hours. The optimal start block converges separately +to an optimal start time for heating and cooling. Note that during the three transition +days, the zone temperature is in the deadband, so there is no need to optimally start +the heating or cooling system in advance. +

+", + revisions=" +
    +
  • +March 19, 2020, by Michael Wetter:
    +Simplified setpoint implementation.' +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-220,-160},{220,160}}))); +end OptimalStartHeatingCooling; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mo b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mo new file mode 100644 index 0000000000..bde745e1b6 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mo @@ -0,0 +1,196 @@ +within IBPSA.Controls.OBC.Utilities.Validation; +model OptimalStartNoHeatingNoCooling + "Validation model for the block OptimalStart for the case with no preheating nor precooling" + IBPSA.Controls.OBC.Utilities.OptimalStart optSta( + computeHeating=false, + computeCooling=false) + "Optimal start for both heating and cooling system" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + Modelica.Blocks.Continuous.Integrator TRoo( + k=0.0000004, + y_start=19+273.15) + "Room air temperature" + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOutBase( + amplitude=5, + freqHz=1/86400, + offset=15+273.15, + startTime( + displayUnit="h")=0) + "Outdoor dry bulb temperature, base component" + annotation (Placement(transformation(extent={{-212,70},{-192,90}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter UA(k=25) + "Overall heat loss coefficient" + annotation (Placement(transformation(extent={{-100,0},{-80,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract dT + "Temperature difference between zone and outdoor" + annotation (Placement(transformation(extent={{-140,0},{-120,20}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QCoo(k=-4000) + "Heat extraction in the zone" + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea1( + realTrue=-6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{80,0},{100,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add1 + "Reset temperature from unoccupied to occupied for optimal start period" + annotation (Placement(transformation(extent={{140,0},{160,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID1( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=3, + reverseActing=false) + "PI control for space cooling" + annotation (Placement(transformation(extent={{180,0},{200,20}}))); + IBPSA.Controls.SetPoints.OccupancySchedule occSch( + occupancy=3600*{7,19}, + period=24*3600) + "Daily schedule" + annotation (Placement(transformation(extent={{-20,-60},{0,-40}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiSum mulSum( + nin=3) + "Sum heat gains" + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal booToRea2( + realTrue=6) + "Convert Boolean to Real signal" + annotation (Placement(transformation(extent={{80,40},{100,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Add add2 + "Reset temperature from unoccupied to occupied for optimal start period" + annotation (Placement(transformation(extent={{140,40},{160,60}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI, + Ti=3) + "PI control for space heating" + annotation (Placement(transformation(extent={{180,40},{200,60}}))); + IBPSA.Controls.OBC.CDL.Reals.MultiplyByParameter QHea(k=2000) + "Heat injection in the zone" + annotation (Placement(transformation(extent={{-100,-110},{-80,-90}}))); + IBPSA.Controls.OBC.CDL.Reals.Add TOut + "Outdoor dry bulb temperature" + annotation (Placement(transformation(extent={{-174,50},{-154,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pul( + shift( + displayUnit="d")=604800, + amplitude=15, + period( + displayUnit="d")=1209600) + "Range of outdoor dry bulb temperature" + annotation (Placement(transformation(extent={{-214,30},{-194,50}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetHea( + realTrue=273.15+21, + realFalse=273.15+15, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for heating" + annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal TSetCoo( + realTrue=273.15+24, + realFalse=273.15+30, + y(final unit="K", + displayUnit="degC")) + "Room temperature set point for cooling" + annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); + +equation + connect(dT.y,UA.u) + annotation (Line(points={{-118,10},{-102,10}},color={0,0,127})); + connect(TRoo.y,optSta.TZon) + annotation (Line(points={{1,10},{10,10},{10,6},{38,6}},color={0,0,127})); + connect(optSta.optOn,booToRea1.u) + annotation (Line(points={{62,6},{70,6},{70,10},{78,10}},color={255,0,255})); + connect(add1.y,conPID1.u_s) + annotation (Line(points={{162,10},{178,10}},color={0,0,127})); + connect(TRoo.y,conPID1.u_m) + annotation (Line(points={{1,10},{6,10},{6,-12},{190,-12},{190,-2}},color={0,0,127})); + connect(occSch.tNexOcc,optSta.tNexOcc) + annotation (Line(points={{1,-44},{10,-44},{10,2},{38,2}},color={0,0,127})); + connect(UA.y,mulSum.u[1]) + annotation (Line(points={{-78,10},{-70,10},{-70,11.3333},{-62,11.3333}},color={0,0,127})); + connect(TRoo.u,mulSum.y) + annotation (Line(points={{-22,10},{-38,10}},color={0,0,127})); + connect(optSta.optOn,booToRea2.u) + annotation (Line(points={{62,6},{70,6},{70,50},{78,50}},color={255,0,255})); + connect(add2.y,conPID.u_s) + annotation (Line(points={{162,50},{178,50}},color={0,0,127})); + connect(conPID1.y,QCoo.u) + annotation (Line(points={{202,10},{210,10},{210,-80},{-110,-80},{-110,-30},{-102,-30}},color={0,0,127})); + connect(conPID.y,QHea.u) + annotation (Line(points={{202,50},{212,50},{212,-120},{-108,-120},{-108,-100},{-102,-100}},color={0,0,127})); + connect(QCoo.y,mulSum.u[2]) + annotation (Line(points={{-78,-30},{-70,-30},{-70,10},{-62,10}},color={0,0,127})); + connect(QHea.y,mulSum.u[3]) + annotation (Line(points={{-78,-100},{-68,-100},{-68,8.66667},{-62,8.66667}},color={0,0,127})); + connect(TOutBase.y,TOut.u1) + annotation (Line(points={{-190,80},{-182,80},{-182,66},{-176,66}}, color={0,0,127})); + connect(pul.y,TOut.u2) + annotation (Line(points={{-192,40},{-180,40},{-180,54},{-176,54}}, color={0,0,127})); + connect(TSetCoo.y,add1.u2) + annotation (Line(points={{102,-30},{130,-30},{130,4},{138,4}},color={0,0,127})); + connect(occSch.occupied,TSetCoo.u) + annotation (Line(points={{1,-56},{60,-56},{60,-30},{78,-30}},color={255,0,255})); + connect(TSetHea.u,occSch.occupied) + annotation (Line(points={{78,-60},{60,-60},{60,-56},{1,-56}},color={255,0,255})); + connect(TSetHea.y,add2.u2) + annotation (Line(points={{102,-60},{126,-60},{126,44},{138,44}},color={0,0,127})); + connect(booToRea2.y,add2.u1) + annotation (Line(points={{102,50},{126,50},{126,56},{138,56}},color={0,0,127})); + connect(booToRea1.y,add1.u1) + annotation (Line(points={{102,10},{120,10},{120,16},{138,16}},color={0,0,127})); + connect(TRoo.y, conPID.u_m) annotation (Line(points={{1,10},{10,10},{10,34},{190, + 34},{190,38}}, color={0,0,127})); + connect(TOut.y, dT.u1) annotation (Line(points={{-152,60},{-146,60},{-146,16}, + {-142,16}}, color={0,0,127})); + connect(TRoo.y, dT.u2) annotation (Line(points={{1,10},{6,10},{6,-12},{-146,-12}, + {-146,4},{-142,4}}, color={0,0,127})); + annotation ( + experiment( + StopTime=2419200, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/OptimalStartNoHeatingNoCooling.mos" "Simulate and plot"), + Documentation( + info=" +

+This models validates the block + +IBPSA.Controls.OBC.Utilities.OptimalStart for the case when the optimal start +is not turned on for preheating or precooling before the scheduled occupancy. +

+

+The results shows that the optimal start time tOpt remains zero and +the optimal start on signal optOn remains false during the simulation. +

+", + revisions=" +
    +
  • +March 19, 2020, by Michael Wetter:
    +Simplified setpoint implementation. +
  • +
  • +December 15, 2019, by Kun Zhang:
    +First implementation. +
  • +
+"), + Icon( + coordinateSystem( + preserveAspectRatio=false, + extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-220,-160},{220,160}}))); +end OptimalStartNoHeatingNoCooling; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/PIDWithInputGains.mo b/IBPSA/Controls/OBC/Utilities/Validation/PIDWithInputGains.mo new file mode 100644 index 0000000000..ad0f5dd93a --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/PIDWithInputGains.mo @@ -0,0 +1,158 @@ +within IBPSA.Controls.OBC.Utilities.Validation; +model PIDWithInputGains + "Test model for PIDWithInputGains" + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse pulse( + period=0.25) + "Setpoint" + annotation (Placement(transformation(extent={{-30,14},{-10,34}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant const( + k=0.5) + "Measured value" + annotation (Placement(transformation(extent={{-30,-22},{-10,-2}}))); + IBPSA.Controls.OBC.Utilities.PIDWithInputGains PIDWitInpGai( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID) + "PID controller with input gains" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + IBPSA.Controls.OBC.CDL.Reals.PIDWithReset PID( + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PID, + k=1, + Ti=0.5, + Td=0.1) + "PID controller with constant gains" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse resSig(period=1) + "Reset signal" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse k( + amplitude=0.2, + width=0.4, + period=1, + shift=0.6, + offset=1) + "Control gain signal" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse Ti( + amplitude=0.2, + width=0.4, + period=1, + shift=0.6, + offset=0.5) + "Time constant signal for the integral term" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Pulse Td( + amplitude=0.1, + width=0.4, + period=1, + shift=0.6, + offset=0.1) + "Time constant signal for the derivative term" + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + IBPSA.Controls.OBC.CDL.Reals.Abs abs1 + "Absolute value of controller output" + annotation (Placement(transformation(extent={{110,-10},{130,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub + "Difference in controller output" + annotation (Placement(transformation(extent={{80,-10},{100,10}}))); + IBPSA.Controls.OBC.CDL.Reals.LessThreshold lesThr(t=1E-5, h=1E-4) + "Output true if outputs are bigger than threshold" + annotation (Placement(transformation(extent={{140,-10},{160,10}}))); + IBPSA.Controls.OBC.CDL.Utilities.Assert assMes( + message="Control outputs differ more than expected") + "Make sure outputs are within expected tolerance" + annotation (Placement(transformation(extent={{200,20},{220,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.CivilTime modTim + "Civil time" + annotation (Placement(transformation(extent={{80,40},{100,60}}))); + IBPSA.Controls.OBC.CDL.Reals.GreaterThreshold greThr(t=0.59) + "Output true if model time is below 0.6" + annotation (Placement(transformation(extent={{140,40},{160,60}}))); + IBPSA.Controls.OBC.CDL.Logical.Or or2 + "Output true either if time is bigger than 0.59, or if tolerance is maintained" + annotation (Placement(transformation(extent={{170,20},{190,40}}))); +equation + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,50},{0,50},{0,10}, + {24,10},{24,18}}, color={255,0,255})); + connect(PIDWitInpGai.trigger, PID.trigger) annotation (Line(points={{24, + -32},{24,-60},{0,-60},{0,10},{24,10},{24,18}}, color={255,0,255})); + connect(pulse.y, PID.u_s) annotation (Line(points={{-8,24},{14,24},{14,30},{ + 18,30}}, color={0,0,127})); + connect(PIDWitInpGai.u_s, PID.u_s) annotation (Line(points={{18,-20},{14, + -20},{14,30},{18,30}}, color={0,0,127})); + connect(const.y, PID.u_m) annotation (Line(points={{-8,-12},{8,-12},{8,0},{30, + 0},{30,18}}, color={0,0,127})); + connect(PIDWitInpGai.u_m, PID.u_m) annotation (Line(points={{30,-32},{30, + -40},{8,-40},{8,0},{30,0},{30,18}}, color={0,0,127})); + connect(k.y, PIDWitInpGai.k) annotation (Line(points={{-58,10},{-40,10},{ + -40,4},{12,4},{12,-12},{18,-12}}, color={0,0,127})); + connect(PIDWitInpGai.Ti, Ti.y) annotation (Line(points={{18,-16},{2,-16}, + {2,-30},{-58,-30}}, color={0,0,127})); + connect(PIDWitInpGai.Td, Td.y) annotation (Line(points={{18,-24},{14,-24}, + {14,-70},{-58,-70}}, color={0,0,127})); + connect(PID.y, sub.u1) + annotation (Line(points={{42,30},{50,30},{50,6},{78,6}}, color={0,0,127})); + connect(PIDWitInpGai.y, sub.u2) annotation (Line(points={{42,-20},{50,-20},{50, + -6},{78,-6}}, color={0,0,127})); + connect(sub.y, abs1.u) + annotation (Line(points={{102,0},{108,0}}, color={0,0,127})); + connect(abs1.y, lesThr.u) + annotation (Line(points={{132,0},{138,0}}, color={0,0,127})); + connect(modTim.y, greThr.u) + annotation (Line(points={{102,50},{138,50}}, color={0,0,127})); + connect(greThr.y, or2.u1) annotation (Line(points={{162,50},{166,50},{166,30}, + {168,30}}, color={255,0,255})); + connect(lesThr.y, or2.u2) annotation (Line(points={{162,0},{166,0},{166,22},{168, + 22}}, color={255,0,255})); + connect(or2.y, assMes.u) + annotation (Line(points={{192,30},{198,30}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://IBPSA/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +IBPSA.Controls.OBC.Utilities.PIDWithInputGains. +

+

+For t ∈ [0, 0.6] both PID controllers have the same gains. +During this time, they generate the same output. +Afterwards, the gains, and hence also their outputs, differ. + +IBPSA.Controls.OBC.CDL.Reals.PIDWithReset. +

+", + revisions=" +
    +
  • +May 17, 2022, by Sen Huang:
    +First implementation. +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ + Ellipse( + lineColor={75,138,73}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100,-100},{100,100}}), + Polygon( + lineColor={0,0,255}, + fillColor={75,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-36,60},{64,0},{-36,-60},{-36,60}})}), + Diagram(coordinateSystem(extent={{-100,-100},{240,100}}), graphics={ + Rectangle( + extent={{72,80},{228,-20}}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), Text( + extent={{78,78},{168,68}}, + textColor={0,0,0}, + textString="Trigger an assertion if outputs differ more than threshold")})); +end PIDWithInputGains; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/package.mo b/IBPSA/Controls/OBC/Utilities/Validation/package.mo new file mode 100644 index 0000000000..ba55bfe58d --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/package.mo @@ -0,0 +1,31 @@ +within IBPSA.Controls.OBC.Utilities; +package Validation "Collection of validation models" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains validation models for blocks in +IBPSA.Controls.OBC.Utilities. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Polygon( + origin={8,14}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/IBPSA/Controls/OBC/Utilities/Validation/package.order b/IBPSA/Controls/OBC/Utilities/Validation/package.order new file mode 100644 index 0000000000..8aae0d17d7 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/Validation/package.order @@ -0,0 +1,6 @@ +OptimalStartCoolingNegativeStartTime +OptimalStartCoolingPositiveStartTime +OptimalStartHeating +OptimalStartHeatingCooling +OptimalStartNoHeatingNoCooling +PIDWithInputGains diff --git a/IBPSA/Controls/OBC/Utilities/package.mo b/IBPSA/Controls/OBC/Utilities/package.mo new file mode 100644 index 0000000000..04e39c63be --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/package.mo @@ -0,0 +1,37 @@ +within IBPSA.Controls.OBC; +package Utilities "Package with utility functions" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains utility blocks, base classes and validation models for +the OpenBuildingControl (OBC) library. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={1.3835,-4.1418}, + rotation=45.0, + fillColor={64,64,64}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-15.0,93.333},{-15.0,68.333},{0.0,58.333},{15.0,68.333},{15.0,93.333},{20.0,93.333},{25.0,83.333},{25.0,58.333},{10.0,43.333},{10.0,-41.667},{25.0,-56.667},{25.0,-76.667},{10.0,-91.667},{0.0,-91.667},{0.0,-81.667},{5.0,-81.667},{15.0,-71.667},{15.0,-61.667},{5.0,-51.667},{-5.0,-51.667},{-15.0,-61.667},{-15.0,-71.667},{-5.0,-81.667},{0.0,-81.667},{0.0,-91.667},{-10.0,-91.667},{-25.0,-76.667},{-25.0,-56.667},{-10.0,-41.667},{-10.0,43.333},{-25.0,58.333},{-25.0,83.333},{-20.0,93.333}}), + Polygon( + origin={10.1018,5.218}, + rotation=-45.0, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + points={{-15.0,87.273},{15.0,87.273},{20.0,82.273},{20.0,27.273},{10.0,17.273},{10.0,7.273},{20.0,2.273},{20.0,-2.727},{5.0,-2.727},{5.0,-77.727},{10.0,-87.727},{5.0,-112.727},{-5.0,-112.727},{-10.0,-87.727},{-5.0,-77.727},{-5.0,-2.727},{-20.0,-2.727},{-20.0,2.273},{-10.0,7.273},{-10.0,17.273},{-20.0,27.273},{-20.0,82.273}})})); +end Utilities; diff --git a/IBPSA/Controls/OBC/Utilities/package.order b/IBPSA/Controls/OBC/Utilities/package.order new file mode 100644 index 0000000000..b77eda1478 --- /dev/null +++ b/IBPSA/Controls/OBC/Utilities/package.order @@ -0,0 +1,5 @@ +OptimalStart +PIDWithInputGains +SetPoints +Validation +BaseClasses diff --git a/IBPSA/Controls/OBC/package.mo b/IBPSA/Controls/OBC/package.mo new file mode 100644 index 0000000000..f24a3df951 --- /dev/null +++ b/IBPSA/Controls/OBC/package.mo @@ -0,0 +1,30 @@ +within IBPSA.Controls; +package OBC "Blocks and preconfigured control sequences" + extends Modelica.Icons.Package; + +annotation ( +Documentation(info=" +

+Package that contains a library of elementary control blocks +based on ASHRAE Standard 231P, +and libraries for building control sequences. +

+ +"), +Icon(graphics={Bitmap(extent={{-92,-98},{104,96}}, +fileName="modelica://IBPSA/Resources/Images/Controls/OBC/OBC_logo-only_150dpi.png")})); +end OBC; diff --git a/IBPSA/Controls/OBC/package.order b/IBPSA/Controls/OBC/package.order new file mode 100644 index 0000000000..fd5ea55a12 --- /dev/null +++ b/IBPSA/Controls/OBC/package.order @@ -0,0 +1,8 @@ +UsersGuide +ASHRAE +CDL +OutdoorLights +RadiantSystems +Shade +UnitConversions +Utilities From 1569da698efa05aff6e2b9a1e43c09eab8123fba Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 15:46:30 -0800 Subject: [PATCH 05/15] Updated package.order --- IBPSA/Controls/OBC/package.order | 6 ------ IBPSA/Controls/package.order | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/IBPSA/Controls/OBC/package.order b/IBPSA/Controls/OBC/package.order index fd5ea55a12..d59809a8a9 100644 --- a/IBPSA/Controls/OBC/package.order +++ b/IBPSA/Controls/OBC/package.order @@ -1,8 +1,2 @@ -UsersGuide -ASHRAE CDL -OutdoorLights -RadiantSystems -Shade -UnitConversions Utilities diff --git a/IBPSA/Controls/package.order b/IBPSA/Controls/package.order index 39c754ac6a..8b5fdf3505 100644 --- a/IBPSA/Controls/package.order +++ b/IBPSA/Controls/package.order @@ -1,3 +1,4 @@ Continuous Discrete +OBC SetPoints From bb464bb6ed652f3bfab3db2c4541f019d8118000 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 15:50:02 -0800 Subject: [PATCH 06/15] Updated documentation --- IBPSA/Controls/OBC/package.mo | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/IBPSA/Controls/OBC/package.mo b/IBPSA/Controls/OBC/package.mo index f24a3df951..1cd951554e 100644 --- a/IBPSA/Controls/OBC/package.mo +++ b/IBPSA/Controls/OBC/package.mo @@ -9,7 +9,6 @@ Package that contains a library of elementary control blocks based on ASHRAE Standard 231P, and libraries for building control sequences.

- "), Icon(graphics={Bitmap(extent={{-92,-98},{104,96}}, fileName="modelica://IBPSA/Resources/Images/Controls/OBC/OBC_logo-only_150dpi.png")})); From 3b9cb9dcf4324bccf6b97b9461b4f34fe847b1fd Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 15:50:52 -0800 Subject: [PATCH 07/15] Formatted code --- IBPSA/Controls/OBC/CDL/Reals/Ramp.mo | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo b/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo index 4a4b072e84..4476f73cb5 100644 --- a/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo +++ b/IBPSA/Controls/OBC/CDL/Reals/Ramp.mo @@ -48,9 +48,7 @@ equation if thr < fallingSlewRate then fallingSlewRate else - if thr > raisingSlewRate then raisingSlewRate else thr - ) - ); + if thr > raisingSlewRate then raisingSlewRate else thr)); y = if active then y_internal else u; annotation (defaultComponentName="ram", From 92b60933dbc8a84c3c17d010136eb0e189ff1602 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 23:55:46 +0000 Subject: [PATCH 08/15] Added reference results --- ...l_CDL_Controls_Validation_BoilerReturn.txt | 12 ++++++++++ ...CDL_Controls_Validation_EquipmentOnOff.txt | 12 ++++++++++ ...CDL_Controls_Validation_RadiatorSupply.txt | 12 ++++++++++ ...al_CDL_Controls_Validation_SystemOnOff.txt | 13 +++++++++++ .../IBPSA_Examples_Tutorial_CDL_System1.txt | 19 +++++++++++++++ .../IBPSA_Examples_Tutorial_CDL_System2.txt | 19 +++++++++++++++ .../IBPSA_Examples_Tutorial_CDL_System3.txt | 19 +++++++++++++++ .../IBPSA_Examples_Tutorial_CDL_System4.txt | 21 +++++++++++++++++ .../IBPSA_Examples_Tutorial_CDL_System5.txt | 22 ++++++++++++++++++ .../IBPSA_Examples_Tutorial_CDL_System6.txt | 23 +++++++++++++++++++ 10 files changed, 172 insertions(+) create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt new file mode 100644 index 0000000000..21ee36b0a8 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt @@ -0,0 +1,12 @@ +last-generated=2020-02-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "1", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +conBoiRet.TSet=[3.331499938964844e+02, 3.331499938964844e+02] +conBoiRet.TRet=[2.931499938964844e+02, 2.936499938964844e+02, 2.941499938964844e+02, 2.946499938964844e+02, 2.951499938964844e+02, 2.956499938964844e+02, 2.961499938964844e+02, 2.966499938964844e+02, 2.971499938964844e+02, 2.976499938964844e+02, 2.981499938964844e+02, 2.986499938964844e+02, 2.991499938964844e+02, 2.996499938964844e+02, 3.001499938964844e+02, 3.006499938964844e+02, 3.011499938964844e+02, 3.016499938964844e+02, 3.021499938964844e+02, 3.026499938964844e+02, 3.031499938964844e+02, 3.036499938964844e+02, 3.041499938964844e+02, 3.046499938964844e+02, 3.051499938964844e+02, 3.056499938964844e+02, 3.061499938964844e+02, 3.066499938964844e+02, 3.071499938964844e+02, 3.076499938964844e+02, 3.081499938964844e+02, 3.086499938964844e+02, 3.091499938964844e+02, 3.096499938964844e+02, 3.101499938964844e+02, 3.106499938964844e+02, 3.111499938964844e+02, 3.116499938964844e+02, 3.121499938964844e+02, 3.126499938964844e+02, 3.131499938964844e+02, 3.136499938964844e+02, 3.141499938964844e+02, 3.146499938964844e+02, 3.151499938964844e+02, 3.156499938964844e+02, 3.161499938964844e+02, 3.166499938964844e+02, 3.171499938964844e+02, 3.176499938964844e+02, 3.181499938964844e+02, 3.186499938964844e+02, 3.191499938964844e+02, 3.196499938964844e+02, 3.201499938964844e+02, 3.206499938964844e+02, 3.211499938964844e+02, 3.216499938964844e+02, 3.221499938964844e+02, 3.226499938964844e+02, 3.231499938964844e+02, 3.236499938964844e+02, 3.241499938964844e+02, 3.246499938964844e+02, 3.251499938964844e+02, 3.256499938964844e+02, 3.261499938964844e+02, 3.266499938964844e+02, 3.271499938964844e+02, 3.276499938964844e+02, 3.281499938964844e+02, 3.286499938964844e+02, 3.291499938964844e+02, 3.296499938964844e+02, 3.301499938964844e+02, 3.306499938964844e+02, 3.311499938964844e+02, 3.316499938964844e+02, 3.321499938964844e+02, 3.326499938964844e+02, 3.331499938964844e+02, 3.336499938964844e+02, 3.341499938964844e+02, 3.346499938964844e+02, 3.351499938964844e+02, 3.356499938964844e+02, 3.361499938964844e+02, 3.366499938964844e+02, 3.371499938964844e+02, 3.376499938964844e+02, 3.381499938964844e+02, 3.386499938964844e+02, 3.391499938964844e+02, 3.396499938964844e+02, 3.401499938964844e+02, 3.406499938964844e+02, 3.411499938964844e+02, 3.416499938964844e+02, 3.421499938964844e+02, 3.426499938964844e+02, 3.431499938964844e+02] +conBoiRet.yVal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.583335362374783e-02, 7.333334535360336e-02, 1.458333432674408e-01, 2.333333343267441e-01, 3.35833340883255e-01, 4.5333331823349e-01, 5.858333110809326e-01, 7.333333492279053e-01, 8.958333134651184e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt new file mode 100644 index 0000000000..14cf98e3cc --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt @@ -0,0 +1,12 @@ +last-generated=2020-02-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +conEquSta.TBoi=[3.331499938964844e+02, 3.335499877929688e+02, 3.339500122070312e+02, 3.343500061035156e+02, 3.3475e+02, 3.351499938964844e+02, 3.355499877929688e+02, 3.359500122070312e+02, 3.363500061035156e+02, 3.3675e+02, 3.371499938964844e+02, 3.375499877929688e+02, 3.379500122070312e+02, 3.383500061035156e+02, 3.3875e+02, 3.391499938964844e+02, 3.395499877929688e+02, 3.399500122070312e+02, 3.403500061035156e+02, 3.4075e+02, 3.411499938964844e+02, 3.415499877929688e+02, 3.419500122070312e+02, 3.423500061035156e+02, 3.4275e+02, 3.431499938964844e+02, 3.435499877929688e+02, 3.439500122070312e+02, 3.443500061035156e+02, 3.4475e+02, 3.451499938964844e+02, 3.455499877929688e+02, 3.459500122070312e+02, 3.463500061035156e+02, 3.4675e+02, 3.471499938964844e+02, 3.475499877929688e+02, 3.479500122070312e+02, 3.483500061035156e+02, 3.4875e+02, 3.491499938964844e+02, 3.495499877929688e+02, 3.499500122070312e+02, 3.503500061035156e+02, 3.5075e+02, 3.511499938964844e+02, 3.515499877929688e+02, 3.519500122070312e+02, 3.523500061035156e+02, 3.5275e+02, 3.531499938964844e+02, 3.535499877929688e+02, 3.539500122070312e+02, 3.543500061035156e+02, 3.5475e+02, 3.551499938964844e+02, 3.555499877929688e+02, 3.559500122070312e+02, 3.563500061035156e+02, 3.5675e+02, 3.571499938964844e+02, 3.575499877929688e+02, 3.579500122070312e+02, 3.583500061035156e+02, 3.5875e+02, 3.591499938964844e+02, 3.595499877929688e+02, 3.599500122070312e+02, 3.603500061035156e+02, 3.6075e+02, 3.611499938964844e+02, 3.615499877929688e+02, 3.619500122070312e+02, 3.623500061035156e+02, 3.6275e+02, 3.631499938964844e+02, 3.635499877929688e+02, 3.639500122070312e+02, 3.643500061035156e+02, 3.6475e+02, 3.651499938964844e+02, 3.655499877929688e+02, 3.659500122070312e+02, 3.663500061035156e+02, 3.6675e+02, 3.671499938964844e+02, 3.675499877929688e+02, 3.679500122070312e+02, 3.683500061035156e+02, 3.6875e+02, 3.691499938964844e+02, 3.695499877929688e+02, 3.699500122070312e+02, 3.703500061035156e+02, 3.7075e+02, 3.711499938964844e+02, 3.715499877929688e+02, 3.719500122070312e+02, 3.723500061035156e+02, 3.7275e+02, 3.731499938964844e+02] +conEquSta.onSys=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +conEquSta.onPum=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +conEquSta.onBoi=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt new file mode 100644 index 0000000000..15489622af --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt @@ -0,0 +1,12 @@ +last-generated=2020-02-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "1", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +conRadSup.TRoo=[2.971499938964844e+02, 2.971099853515625e+02, 2.970700073242188e+02, 2.970299987792969e+02, 2.96989990234375e+02, 2.969500122070312e+02, 2.969100036621094e+02, 2.968699951171875e+02, 2.968299865722656e+02, 2.967900085449219e+02, 2.9675e+02, 2.967099914550781e+02, 2.966700134277344e+02, 2.966300048828125e+02, 2.965899963378906e+02, 2.965499877929688e+02, 2.96510009765625e+02, 2.964700012207031e+02, 2.964299926757812e+02, 2.963900146484375e+02, 2.963500061035156e+02, 2.963099975585938e+02, 2.962699890136719e+02, 2.962300109863281e+02, 2.961900024414062e+02, 2.961499938964844e+02, 2.961099853515625e+02, 2.960700073242188e+02, 2.960299987792969e+02, 2.95989990234375e+02, 2.959500122070312e+02, 2.959100036621094e+02, 2.958699951171875e+02, 2.958299865722656e+02, 2.957900085449219e+02, 2.9575e+02, 2.957099914550781e+02, 2.956700134277344e+02, 2.956300048828125e+02, 2.955899963378906e+02, 2.955499877929688e+02, 2.95510009765625e+02, 2.954700012207031e+02, 2.954299926757812e+02, 2.953900146484375e+02, 2.953500061035156e+02, 2.953099975585938e+02, 2.952699890136719e+02, 2.952300109863281e+02, 2.951900024414062e+02, 2.951499938964844e+02, 2.951099853515625e+02, 2.950700073242188e+02, 2.950299987792969e+02, 2.94989990234375e+02, 2.949500122070312e+02, 2.949100036621094e+02, 2.948699951171875e+02, 2.948299865722656e+02, 2.947900085449219e+02, 2.9475e+02, 2.947099914550781e+02, 2.946700134277344e+02, 2.946300048828125e+02, 2.945899963378906e+02, 2.945499877929688e+02, 2.94510009765625e+02, 2.944700012207031e+02, 2.944299926757812e+02, 2.943900146484375e+02, 2.943500061035156e+02, 2.943099975585938e+02, 2.942699890136719e+02, 2.942300109863281e+02, 2.941900024414062e+02, 2.941499938964844e+02, 2.941099853515625e+02, 2.940700073242188e+02, 2.940299987792969e+02, 2.93989990234375e+02, 2.939500122070312e+02, 2.939100036621094e+02, 2.938699951171875e+02, 2.938299865722656e+02, 2.937900085449219e+02, 2.9375e+02, 2.937099914550781e+02, 2.936700134277344e+02, 2.936300048828125e+02, 2.935899963378906e+02, 2.935499877929688e+02, 2.93510009765625e+02, 2.934700012207031e+02, 2.934299926757812e+02, 2.933900146484375e+02, 2.933500061035156e+02, 2.933099975585938e+02, 2.932699890136719e+02, 2.932300109863281e+02, 2.931900024414062e+02, 2.931499938964844e+02] +conRadSup.TSup=[3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02] +conRadSup.yVal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.343824088573456e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.219262838363647e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.495950937271118e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.245810151100159e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.496521949768066e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.245894193649292e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.496550559997559e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 7.886499166488647e-01, 1.303928345441818e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.211419925093651e-01, 8.903452754020691e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt new file mode 100644 index 0000000000..305e965fa7 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt @@ -0,0 +1,13 @@ +last-generated=2020-02-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +conSysSta.TRoo=[2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02] +conSysSta.TRooSet=[2.936499938964844e+02, 2.936499938964844e+02] +conSysSta.TOut=[2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02] +conSysSta.TOutLow=[2.891499938964844e+02, 2.891499938964844e+02] +conSysSta.onSys=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt new file mode 100644 index 0000000000..1cfe0ca8dc --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt @@ -0,0 +1,19 @@ +last-generated=2024-09-13 +statistics-initialization= +{ + "nonlinear": "5, 9, 0, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 0, 0", + "nonlinear": "1, 10, 0", + "number of continuous time states": "25", + "numerical Jacobians": "0" +} +time=[1.296e+06, 1.3824e+06] +senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] +boi.T=[2.931499938964844e+02, 3.235456848144531e+02, 3.302677612304688e+02, 3.345385437011719e+02, 3.377018737792969e+02, 3.400711059570312e+02, 3.418246154785156e+02, 3.43099365234375e+02, 3.440057983398438e+02, 3.446341552734375e+02, 3.450574645996094e+02, 3.453338317871094e+02, 3.455127258300781e+02, 3.456378784179688e+02, 3.457569580078125e+02, 3.459273376464844e+02, 3.461693115234375e+02, 3.46459716796875e+02, 3.467494812011719e+02, 3.47017333984375e+02, 3.472599487304688e+02, 3.474747619628906e+02, 3.476561889648438e+02, 3.477958068847656e+02, 3.4789404296875e+02, 3.479646301269531e+02, 3.480312805175781e+02, 3.481113891601562e+02, 3.482064514160156e+02, 3.483145141601562e+02, 3.48431396484375e+02, 3.485502319335938e+02, 3.486645812988281e+02, 3.487763671875e+02, 3.491953735351562e+02, 3.505382385253906e+02, 3.518658447265625e+02, 3.530768737792969e+02, 3.541841125488281e+02, 3.551770629882812e+02, 3.560694580078125e+02, 3.568801879882812e+02, 3.576192016601562e+02, 3.582900085449219e+02, 3.589009094238281e+02, 3.594639587402344e+02, 3.599889831542969e+02, 3.604840698242188e+02, 3.609529724121094e+02, 3.613988342285156e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.632096862792969e+02, 3.637702941894531e+02, 3.643639221191406e+02, 3.649652709960938e+02, 3.655647583007812e+02, 3.661495666503906e+02, 3.667016906738281e+02, 3.671998596191406e+02, 3.676280517578125e+02, 3.679831848144531e+02, 3.682727966308594e+02, 3.685096130371094e+02, 3.687021484375e+02, 3.688519897460938e+02, 3.689580688476562e+02, 3.690074768066406e+02, 3.689551086425781e+02, 3.687868041992188e+02, 3.68546142578125e+02, 3.683146667480469e+02, 3.681323852539062e+02, 3.679927062988281e+02, 3.678861999511719e+02, 3.6713037109375e+02, 3.658734130859375e+02, 3.648491821289062e+02, 3.640643005371094e+02, 3.634662780761719e+02, 3.630252990722656e+02, 3.627292175292969e+02, 3.625504150390625e+02, 3.62445556640625e+02, 3.623630065917969e+02, 3.622667236328125e+02, 3.621480407714844e+02, 3.620196533203125e+02, 3.619066772460938e+02, 3.618231201171875e+02, 3.617662658691406e+02, 3.6172265625e+02, 3.616731872558594e+02, 3.616102905273438e+02, 3.615349426269531e+02, 3.614475708007812e+02, 3.613488464355469e+02, 3.612393798828125e+02, 3.611209106445312e+02, 3.609960327148438e+02] +temSup.T=[2.931499938964844e+02, 3.056086120605469e+02, 3.113561401367188e+02, 3.153233642578125e+02, 3.182890625e+02, 3.205071105957031e+02, 3.221427001953125e+02, 3.233262023925781e+02, 3.241630859375e+02, 3.247395629882812e+02, 3.251250915527344e+02, 3.253751831054688e+02, 3.255378723144531e+02, 3.256560668945312e+02, 3.257808227539062e+02, 3.259664001464844e+02, 3.26222900390625e+02, 3.265184020996094e+02, 3.268041381835938e+02, 3.27066650390625e+02, 3.273036499023438e+02, 3.275118713378906e+02, 3.276850280761719e+02, 3.278150329589844e+02, 3.279053344726562e+02, 3.279723510742188e+02, 3.280408325195312e+02, 3.28124267578125e+02, 3.282225036621094e+02, 3.283329772949219e+02, 3.284511413574219e+02, 3.285694274902344e+02, 3.286827087402344e+02, 3.287948303222656e+02, 3.29435546875e+02, 3.308346557617188e+02, 3.321353454589844e+02, 3.33323486328125e+02, 3.344068298339844e+02, 3.353753967285156e+02, 3.362482604980469e+02, 3.370426330566406e+02, 3.377664184570312e+02, 3.384229431152344e+02, 3.39022216796875e+02, 3.395759582519531e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428024291992188e+02, 3.433203735351562e+02, 3.438912963867188e+02, 3.444885864257812e+02, 3.450904541015625e+02, 3.456882629394531e+02, 3.462680358886719e+02, 3.468106079101562e+02, 3.472947082519531e+02, 3.477068786621094e+02, 3.480466003417969e+02, 3.483233032226562e+02, 3.485499267578125e+02, 3.487330322265625e+02, 3.4887353515625e+02, 3.489696350097656e+02, 3.490020751953125e+02, 3.489236145019531e+02, 3.487330322265625e+02, 3.484853210449219e+02, 3.482633972167969e+02, 3.480914001464844e+02, 3.479599609375e+02, 3.478597412109375e+02, 3.468447875976562e+02, 3.456152648925781e+02, 3.446482238769531e+02, 3.439093322753906e+02, 3.433475646972656e+02, 3.429397583007812e+02, 3.426728210449219e+02, 3.425152282714844e+02, 3.42420654296875e+02, 3.423378601074219e+02, 3.422367553710938e+02, 3.421138916015625e+02, 3.419861755371094e+02, 3.4187890625e+02, 3.418018493652344e+02, 3.417496948242188e+02, 3.417067260742188e+02, 3.416545104980469e+02, 3.415888366699219e+02, 3.415107727050781e+02, 3.414208984375e+02, 3.413197021484375e+02, 3.412080688476562e+02, 3.41087890625e+02, 3.409619750976562e+02] +temRet.T=[2.931499938964844e+02, 3.142822570800781e+02, 3.206342468261719e+02, 3.24792236328125e+02, 3.278826293945312e+02, 3.301961059570312e+02, 3.319061584472656e+02, 3.331472473144531e+02, 3.340280151367188e+02, 3.3463720703125e+02, 3.350465698242188e+02, 3.35313232421875e+02, 3.354861145019531e+02, 3.35608642578125e+02, 3.35729736328125e+02, 3.359056396484375e+02, 3.361529846191406e+02, 3.364453430175781e+02, 3.36733642578125e+02, 3.369995422363281e+02, 3.372401123046875e+02, 3.374525146484375e+02, 3.376309204101562e+02, 3.377670288085938e+02, 3.378623046875e+02, 3.379315490722656e+02, 3.379988403320312e+02, 3.380801696777344e+02, 3.381763916015625e+02, 3.382853698730469e+02, 3.384027099609375e+02, 3.385213623046875e+02, 3.386353149414062e+02, 3.387472229003906e+02, 3.392459716796875e+02, 3.406112365722656e+02, 3.419290161132812e+02, 3.431316223144531e+02, 3.442301330566406e+02, 3.452140808105469e+02, 3.460992736816406e+02, 3.469039916992188e+02, 3.476374206542969e+02, 3.48302978515625e+02, 3.489095764160156e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.532143249511719e+02, 3.537787170410156e+02, 3.543737487792969e+02, 3.549752807617188e+02, 3.555741882324219e+02, 3.561571655273438e+02, 3.567058410644531e+02, 3.571988525390625e+02, 3.576211547851562e+02, 3.579706420898438e+02, 3.582554931640625e+02, 3.584885559082031e+02, 3.586776428222656e+02, 3.588240356445312e+02, 3.589264526367188e+02, 3.589697265625e+02, 3.589078063964844e+02, 3.587312622070312e+02, 3.584878845214844e+02, 3.582598571777344e+02, 3.580813598632812e+02, 3.579447326660156e+02, 3.578405151367188e+02, 3.569900512695312e+02, 3.557423400878906e+02, 3.547391357421875e+02, 3.539712219238281e+02, 3.533865661621094e+02, 3.52957763671875e+02, 3.526724243164062e+02, 3.5250146484375e+02, 3.524004821777344e+02, 3.523179016113281e+02, 3.522198486328125e+02, 3.52099609375e+02, 3.519714050292969e+02, 3.518605346679688e+02, 3.517793579101562e+02, 3.517242431640625e+02, 3.51680908203125e+02, 3.516304321289062e+02, 3.515664978027344e+02, 3.514901733398438e+02, 3.514018859863281e+02, 3.5130224609375e+02, 3.511919860839844e+02, 3.510728759765625e+02, 3.509476013183594e+02] +temRoo.T=[2.931499938964844e+02, 2.848866271972656e+02, 2.869789123535156e+02, 2.894321899414062e+02, 2.913446044921875e+02, 2.927545776367188e+02, 2.937647399902344e+02, 2.944679260253906e+02, 2.9494140625e+02, 2.952493896484375e+02, 2.954407958984375e+02, 2.955587463378906e+02, 2.956434936523438e+02, 2.957352294921875e+02, 2.959083862304688e+02, 2.961827697753906e+02, 2.965125427246094e+02, 2.968211364746094e+02, 2.970805358886719e+02, 2.973132019042969e+02, 2.975180053710938e+02, 2.976884765625e+02, 2.978131103515625e+02, 2.978904724121094e+02, 2.979407348632812e+02, 2.979949951171875e+02, 2.980780029296875e+02, 2.981799926757812e+02, 2.982949523925781e+02, 2.984177551269531e+02, 2.98541015625e+02, 2.986544494628906e+02, 2.987626342773438e+02, 2.988789978027344e+02, 3.010147094726562e+02, 3.024350280761719e+02, 3.035816650390625e+02, 3.046459045410156e+02, 3.05590576171875e+02, 3.064289855957031e+02, 3.071981811523438e+02, 3.079039916992188e+02, 3.085435791015625e+02, 3.091235961914062e+02, 3.09661376953125e+02, 3.101661682128906e+02, 3.106457824707031e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139285888671875e+02, 3.14550048828125e+02, 3.151605529785156e+02, 3.1576318359375e+02, 3.163482971191406e+02, 3.168951416015625e+02, 3.17378662109375e+02, 3.177808532714844e+02, 3.181035461425781e+02, 3.183600769042969e+02, 3.185693664550781e+02, 3.187411499023438e+02, 3.188727111816406e+02, 3.189614562988281e+02, 3.190003662109375e+02, 3.189236145019531e+02, 3.1869873046875e+02, 3.183977355957031e+02, 3.181357727050781e+02, 3.179747009277344e+02, 3.178573608398438e+02, 3.177685546875e+02, 3.177008972167969e+02, 3.152051086425781e+02, 3.142509155273438e+02, 3.135875244140625e+02, 3.130862426757812e+02, 3.127158203125e+02, 3.124877014160156e+02, 3.123734741210938e+02, 3.12321044921875e+02, 3.122685546875e+02, 3.121752624511719e+02, 3.120455322265625e+02, 3.11903564453125e+02, 3.117870483398438e+02, 3.117142028808594e+02, 3.116724853515625e+02, 3.116422729492188e+02, 3.1159716796875e+02, 3.115286254882812e+02, 3.114475708007812e+02, 3.113548889160156e+02, 3.112511596679688e+02, 3.111366882324219e+02, 3.110134887695312e+02, 3.108846435546875e+02, 3.107538452148438e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt new file mode 100644 index 0000000000..1cfe0ca8dc --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt @@ -0,0 +1,19 @@ +last-generated=2024-09-13 +statistics-initialization= +{ + "nonlinear": "5, 9, 0, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 0, 0", + "nonlinear": "1, 10, 0", + "number of continuous time states": "25", + "numerical Jacobians": "0" +} +time=[1.296e+06, 1.3824e+06] +senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] +boi.T=[2.931499938964844e+02, 3.235456848144531e+02, 3.302677612304688e+02, 3.345385437011719e+02, 3.377018737792969e+02, 3.400711059570312e+02, 3.418246154785156e+02, 3.43099365234375e+02, 3.440057983398438e+02, 3.446341552734375e+02, 3.450574645996094e+02, 3.453338317871094e+02, 3.455127258300781e+02, 3.456378784179688e+02, 3.457569580078125e+02, 3.459273376464844e+02, 3.461693115234375e+02, 3.46459716796875e+02, 3.467494812011719e+02, 3.47017333984375e+02, 3.472599487304688e+02, 3.474747619628906e+02, 3.476561889648438e+02, 3.477958068847656e+02, 3.4789404296875e+02, 3.479646301269531e+02, 3.480312805175781e+02, 3.481113891601562e+02, 3.482064514160156e+02, 3.483145141601562e+02, 3.48431396484375e+02, 3.485502319335938e+02, 3.486645812988281e+02, 3.487763671875e+02, 3.491953735351562e+02, 3.505382385253906e+02, 3.518658447265625e+02, 3.530768737792969e+02, 3.541841125488281e+02, 3.551770629882812e+02, 3.560694580078125e+02, 3.568801879882812e+02, 3.576192016601562e+02, 3.582900085449219e+02, 3.589009094238281e+02, 3.594639587402344e+02, 3.599889831542969e+02, 3.604840698242188e+02, 3.609529724121094e+02, 3.613988342285156e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.632096862792969e+02, 3.637702941894531e+02, 3.643639221191406e+02, 3.649652709960938e+02, 3.655647583007812e+02, 3.661495666503906e+02, 3.667016906738281e+02, 3.671998596191406e+02, 3.676280517578125e+02, 3.679831848144531e+02, 3.682727966308594e+02, 3.685096130371094e+02, 3.687021484375e+02, 3.688519897460938e+02, 3.689580688476562e+02, 3.690074768066406e+02, 3.689551086425781e+02, 3.687868041992188e+02, 3.68546142578125e+02, 3.683146667480469e+02, 3.681323852539062e+02, 3.679927062988281e+02, 3.678861999511719e+02, 3.6713037109375e+02, 3.658734130859375e+02, 3.648491821289062e+02, 3.640643005371094e+02, 3.634662780761719e+02, 3.630252990722656e+02, 3.627292175292969e+02, 3.625504150390625e+02, 3.62445556640625e+02, 3.623630065917969e+02, 3.622667236328125e+02, 3.621480407714844e+02, 3.620196533203125e+02, 3.619066772460938e+02, 3.618231201171875e+02, 3.617662658691406e+02, 3.6172265625e+02, 3.616731872558594e+02, 3.616102905273438e+02, 3.615349426269531e+02, 3.614475708007812e+02, 3.613488464355469e+02, 3.612393798828125e+02, 3.611209106445312e+02, 3.609960327148438e+02] +temSup.T=[2.931499938964844e+02, 3.056086120605469e+02, 3.113561401367188e+02, 3.153233642578125e+02, 3.182890625e+02, 3.205071105957031e+02, 3.221427001953125e+02, 3.233262023925781e+02, 3.241630859375e+02, 3.247395629882812e+02, 3.251250915527344e+02, 3.253751831054688e+02, 3.255378723144531e+02, 3.256560668945312e+02, 3.257808227539062e+02, 3.259664001464844e+02, 3.26222900390625e+02, 3.265184020996094e+02, 3.268041381835938e+02, 3.27066650390625e+02, 3.273036499023438e+02, 3.275118713378906e+02, 3.276850280761719e+02, 3.278150329589844e+02, 3.279053344726562e+02, 3.279723510742188e+02, 3.280408325195312e+02, 3.28124267578125e+02, 3.282225036621094e+02, 3.283329772949219e+02, 3.284511413574219e+02, 3.285694274902344e+02, 3.286827087402344e+02, 3.287948303222656e+02, 3.29435546875e+02, 3.308346557617188e+02, 3.321353454589844e+02, 3.33323486328125e+02, 3.344068298339844e+02, 3.353753967285156e+02, 3.362482604980469e+02, 3.370426330566406e+02, 3.377664184570312e+02, 3.384229431152344e+02, 3.39022216796875e+02, 3.395759582519531e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428024291992188e+02, 3.433203735351562e+02, 3.438912963867188e+02, 3.444885864257812e+02, 3.450904541015625e+02, 3.456882629394531e+02, 3.462680358886719e+02, 3.468106079101562e+02, 3.472947082519531e+02, 3.477068786621094e+02, 3.480466003417969e+02, 3.483233032226562e+02, 3.485499267578125e+02, 3.487330322265625e+02, 3.4887353515625e+02, 3.489696350097656e+02, 3.490020751953125e+02, 3.489236145019531e+02, 3.487330322265625e+02, 3.484853210449219e+02, 3.482633972167969e+02, 3.480914001464844e+02, 3.479599609375e+02, 3.478597412109375e+02, 3.468447875976562e+02, 3.456152648925781e+02, 3.446482238769531e+02, 3.439093322753906e+02, 3.433475646972656e+02, 3.429397583007812e+02, 3.426728210449219e+02, 3.425152282714844e+02, 3.42420654296875e+02, 3.423378601074219e+02, 3.422367553710938e+02, 3.421138916015625e+02, 3.419861755371094e+02, 3.4187890625e+02, 3.418018493652344e+02, 3.417496948242188e+02, 3.417067260742188e+02, 3.416545104980469e+02, 3.415888366699219e+02, 3.415107727050781e+02, 3.414208984375e+02, 3.413197021484375e+02, 3.412080688476562e+02, 3.41087890625e+02, 3.409619750976562e+02] +temRet.T=[2.931499938964844e+02, 3.142822570800781e+02, 3.206342468261719e+02, 3.24792236328125e+02, 3.278826293945312e+02, 3.301961059570312e+02, 3.319061584472656e+02, 3.331472473144531e+02, 3.340280151367188e+02, 3.3463720703125e+02, 3.350465698242188e+02, 3.35313232421875e+02, 3.354861145019531e+02, 3.35608642578125e+02, 3.35729736328125e+02, 3.359056396484375e+02, 3.361529846191406e+02, 3.364453430175781e+02, 3.36733642578125e+02, 3.369995422363281e+02, 3.372401123046875e+02, 3.374525146484375e+02, 3.376309204101562e+02, 3.377670288085938e+02, 3.378623046875e+02, 3.379315490722656e+02, 3.379988403320312e+02, 3.380801696777344e+02, 3.381763916015625e+02, 3.382853698730469e+02, 3.384027099609375e+02, 3.385213623046875e+02, 3.386353149414062e+02, 3.387472229003906e+02, 3.392459716796875e+02, 3.406112365722656e+02, 3.419290161132812e+02, 3.431316223144531e+02, 3.442301330566406e+02, 3.452140808105469e+02, 3.460992736816406e+02, 3.469039916992188e+02, 3.476374206542969e+02, 3.48302978515625e+02, 3.489095764160156e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.532143249511719e+02, 3.537787170410156e+02, 3.543737487792969e+02, 3.549752807617188e+02, 3.555741882324219e+02, 3.561571655273438e+02, 3.567058410644531e+02, 3.571988525390625e+02, 3.576211547851562e+02, 3.579706420898438e+02, 3.582554931640625e+02, 3.584885559082031e+02, 3.586776428222656e+02, 3.588240356445312e+02, 3.589264526367188e+02, 3.589697265625e+02, 3.589078063964844e+02, 3.587312622070312e+02, 3.584878845214844e+02, 3.582598571777344e+02, 3.580813598632812e+02, 3.579447326660156e+02, 3.578405151367188e+02, 3.569900512695312e+02, 3.557423400878906e+02, 3.547391357421875e+02, 3.539712219238281e+02, 3.533865661621094e+02, 3.52957763671875e+02, 3.526724243164062e+02, 3.5250146484375e+02, 3.524004821777344e+02, 3.523179016113281e+02, 3.522198486328125e+02, 3.52099609375e+02, 3.519714050292969e+02, 3.518605346679688e+02, 3.517793579101562e+02, 3.517242431640625e+02, 3.51680908203125e+02, 3.516304321289062e+02, 3.515664978027344e+02, 3.514901733398438e+02, 3.514018859863281e+02, 3.5130224609375e+02, 3.511919860839844e+02, 3.510728759765625e+02, 3.509476013183594e+02] +temRoo.T=[2.931499938964844e+02, 2.848866271972656e+02, 2.869789123535156e+02, 2.894321899414062e+02, 2.913446044921875e+02, 2.927545776367188e+02, 2.937647399902344e+02, 2.944679260253906e+02, 2.9494140625e+02, 2.952493896484375e+02, 2.954407958984375e+02, 2.955587463378906e+02, 2.956434936523438e+02, 2.957352294921875e+02, 2.959083862304688e+02, 2.961827697753906e+02, 2.965125427246094e+02, 2.968211364746094e+02, 2.970805358886719e+02, 2.973132019042969e+02, 2.975180053710938e+02, 2.976884765625e+02, 2.978131103515625e+02, 2.978904724121094e+02, 2.979407348632812e+02, 2.979949951171875e+02, 2.980780029296875e+02, 2.981799926757812e+02, 2.982949523925781e+02, 2.984177551269531e+02, 2.98541015625e+02, 2.986544494628906e+02, 2.987626342773438e+02, 2.988789978027344e+02, 3.010147094726562e+02, 3.024350280761719e+02, 3.035816650390625e+02, 3.046459045410156e+02, 3.05590576171875e+02, 3.064289855957031e+02, 3.071981811523438e+02, 3.079039916992188e+02, 3.085435791015625e+02, 3.091235961914062e+02, 3.09661376953125e+02, 3.101661682128906e+02, 3.106457824707031e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139285888671875e+02, 3.14550048828125e+02, 3.151605529785156e+02, 3.1576318359375e+02, 3.163482971191406e+02, 3.168951416015625e+02, 3.17378662109375e+02, 3.177808532714844e+02, 3.181035461425781e+02, 3.183600769042969e+02, 3.185693664550781e+02, 3.187411499023438e+02, 3.188727111816406e+02, 3.189614562988281e+02, 3.190003662109375e+02, 3.189236145019531e+02, 3.1869873046875e+02, 3.183977355957031e+02, 3.181357727050781e+02, 3.179747009277344e+02, 3.178573608398438e+02, 3.177685546875e+02, 3.177008972167969e+02, 3.152051086425781e+02, 3.142509155273438e+02, 3.135875244140625e+02, 3.130862426757812e+02, 3.127158203125e+02, 3.124877014160156e+02, 3.123734741210938e+02, 3.12321044921875e+02, 3.122685546875e+02, 3.121752624511719e+02, 3.120455322265625e+02, 3.11903564453125e+02, 3.117870483398438e+02, 3.117142028808594e+02, 3.116724853515625e+02, 3.116422729492188e+02, 3.1159716796875e+02, 3.115286254882812e+02, 3.114475708007812e+02, 3.113548889160156e+02, 3.112511596679688e+02, 3.111366882324219e+02, 3.110134887695312e+02, 3.108846435546875e+02, 3.107538452148438e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt new file mode 100644 index 0000000000..76334f3afa --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt @@ -0,0 +1,19 @@ +last-generated=2024-09-13 +statistics-initialization= +{ + "nonlinear": "5, 9, 0, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 0, 0", + "nonlinear": "1, 10, 0", + "number of continuous time states": "26", + "numerical Jacobians": "0" +} +time=[1.296e+06, 1.3824e+06] +senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] +boi.T=[2.931499938964844e+02, 3.434833679199219e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.432107238769531e+02, 3.43205078125e+02, 3.434713439941406e+02, 3.442933044433594e+02, 3.448924865722656e+02, 3.452561645507812e+02, 3.454854736328125e+02, 3.456283569335938e+02, 3.457260131835938e+02, 3.458241577148438e+02, 3.45978515625e+02, 3.462084350585938e+02, 3.464895935058594e+02, 3.467725524902344e+02, 3.470345764160156e+02, 3.47273193359375e+02, 3.474848937988281e+02, 3.476638488769531e+02, 3.478019714355469e+02, 3.47898681640625e+02, 3.479682006835938e+02, 3.480339050292969e+02, 3.481134948730469e+02, 3.482081298828125e+02, 3.483157653808594e+02, 3.48432373046875e+02, 3.485509338378906e+02, 3.486650695800781e+02, 3.487767944335938e+02, 3.491956481933594e+02, 3.505384216308594e+02, 3.518659973144531e+02, 3.530770263671875e+02, 3.541842346191406e+02, 3.551771545410156e+02, 3.560695190429688e+02, 3.568802490234375e+02, 3.576192321777344e+02, 3.582900390625e+02, 3.589009094238281e+02, 3.594639892578125e+02, 3.59989013671875e+02, 3.604840698242188e+02, 3.609530029296875e+02, 3.613988647460938e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.632096862792969e+02, 3.637702941894531e+02, 3.643639221191406e+02, 3.649652709960938e+02, 3.655647583007812e+02, 3.661495666503906e+02, 3.667016906738281e+02, 3.671998596191406e+02, 3.676280517578125e+02, 3.679831848144531e+02, 3.682727966308594e+02, 3.685096130371094e+02, 3.687021484375e+02, 3.688519897460938e+02, 3.689580383300781e+02, 3.690074157714844e+02, 3.689550476074219e+02, 3.687867736816406e+02, 3.685461120605469e+02, 3.683146667480469e+02, 3.681323547363281e+02, 3.679927062988281e+02, 3.6788623046875e+02, 3.671304016113281e+02, 3.658734436035156e+02, 3.648491821289062e+02, 3.640643310546875e+02, 3.6346630859375e+02, 3.630252990722656e+02, 3.627292175292969e+02, 3.625504150390625e+02, 3.624454956054688e+02, 3.623629150390625e+02, 3.622666320800781e+02, 3.6214794921875e+02, 3.620196533203125e+02, 3.619066467285156e+02, 3.618231201171875e+02, 3.617662658691406e+02, 3.617226867675781e+02, 3.616732788085938e+02, 3.616103515625e+02, 3.615350036621094e+02, 3.614476318359375e+02, 3.61348876953125e+02, 3.612394714355469e+02, 3.611210632324219e+02, 3.609961853027344e+02] +temSup.T=[2.931499938964844e+02, 3.036293640136719e+02, 3.110102233886719e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.213748168945312e+02, 3.230311279296875e+02, 3.238466491699219e+02, 3.244719848632812e+02, 3.249839172363281e+02, 3.253121337890625e+02, 3.255178833007812e+02, 3.256466979980469e+02, 3.257389831542969e+02, 3.258440551757812e+02, 3.260146179199219e+02, 3.262597045898438e+02, 3.265465393066406e+02, 3.268257751464844e+02, 3.270829467773438e+02, 3.273160705566406e+02, 3.275213928222656e+02, 3.276922607421875e+02, 3.278208312988281e+02, 3.279096984863281e+02, 3.279757080078125e+02, 3.280433044433594e+02, 3.281263122558594e+02, 3.282240600585938e+02, 3.283341674804688e+02, 3.284520568847656e+02, 3.28570068359375e+02, 3.286831665039062e+02, 3.287952270507812e+02, 3.294358215332031e+02, 3.308348693847656e+02, 3.32135498046875e+02, 3.333235778808594e+02, 3.344069213867188e+02, 3.353754577636719e+02, 3.362483215332031e+02, 3.370426940917969e+02, 3.377664489746094e+02, 3.384229736328125e+02, 3.390222473144531e+02, 3.395759887695312e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428023986816406e+02, 3.433203735351562e+02, 3.438912963867188e+02, 3.444885864257812e+02, 3.450904541015625e+02, 3.456882629394531e+02, 3.462680358886719e+02, 3.468106079101562e+02, 3.472947387695312e+02, 3.477068786621094e+02, 3.480466003417969e+02, 3.483233032226562e+02, 3.485499267578125e+02, 3.487330322265625e+02, 3.4887353515625e+02, 3.489696044921875e+02, 3.490020446777344e+02, 3.48923583984375e+02, 3.487329711914062e+02, 3.484852905273438e+02, 3.482633972167969e+02, 3.480913696289062e+02, 3.479599609375e+02, 3.478597717285156e+02, 3.468447875976562e+02, 3.456152648925781e+02, 3.446482238769531e+02, 3.439093322753906e+02, 3.433475952148438e+02, 3.429397277832031e+02, 3.426727905273438e+02, 3.425152282714844e+02, 3.424205627441406e+02, 3.423377380371094e+02, 3.422366333007812e+02, 3.421138305664062e+02, 3.419862060546875e+02, 3.418788757324219e+02, 3.418018493652344e+02, 3.417496948242188e+02, 3.41706787109375e+02, 3.416546020507812e+02, 3.415888977050781e+02, 3.415108337402344e+02, 3.414209289550781e+02, 3.413197631835938e+02, 3.412081604003906e+02, 3.410880126953125e+02, 3.409621276855469e+02] +temRet.T=[2.931499938964844e+02, 3.333218688964844e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.331719970703125e+02, 3.331664428710938e+02, 3.334713745117188e+02, 3.343245849609375e+02, 3.348904418945312e+02, 3.35240966796875e+02, 3.354615783691406e+02, 3.355992431640625e+02, 3.356948547363281e+02, 3.357954406738281e+02, 3.359557189941406e+02, 3.361912536621094e+02, 3.364745788574219e+02, 3.367561950683594e+02, 3.370164489746094e+02, 3.372530517578125e+02, 3.3746240234375e+02, 3.37638427734375e+02, 3.377730407714844e+02, 3.378668212890625e+02, 3.379350280761719e+02, 3.380014038085938e+02, 3.380822448730469e+02, 3.381780395507812e+02, 3.382865600585938e+02, 3.384036560058594e+02, 3.385220336914062e+02, 3.386358032226562e+02, 3.387476196289062e+02, 3.392462463378906e+02, 3.406114501953125e+02, 3.419291687011719e+02, 3.431317443847656e+02, 3.44230224609375e+02, 3.452141723632812e+02, 3.460993347167969e+02, 3.46904052734375e+02, 3.47637451171875e+02, 3.483030090332031e+02, 3.489096069335938e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.532143249511719e+02, 3.537787475585938e+02, 3.543737487792969e+02, 3.549753112792969e+02, 3.555741882324219e+02, 3.561571655273438e+02, 3.567058410644531e+02, 3.571988525390625e+02, 3.576211547851562e+02, 3.579706420898438e+02, 3.582554931640625e+02, 3.584885559082031e+02, 3.586776428222656e+02, 3.588240356445312e+02, 3.589264221191406e+02, 3.589696960449219e+02, 3.589077453613281e+02, 3.587312316894531e+02, 3.584878540039062e+02, 3.582598571777344e+02, 3.580813293457031e+02, 3.579447021484375e+02, 3.57840576171875e+02, 3.569900512695312e+02, 3.557423706054688e+02, 3.547391357421875e+02, 3.539712524414062e+02, 3.533865966796875e+02, 3.52957763671875e+02, 3.526723937988281e+02, 3.5250146484375e+02, 3.52400390625e+02, 3.523177795410156e+02, 3.522197265625e+02, 3.520995178222656e+02, 3.51971435546875e+02, 3.518605041503906e+02, 3.517793579101562e+02, 3.517242431640625e+02, 3.516809387207031e+02, 3.516305236816406e+02, 3.515665893554688e+02, 3.51490234375e+02, 3.514019165039062e+02, 3.513022766113281e+02, 3.511920776367188e+02, 3.510730285644531e+02, 3.5094775390625e+02] +temRoo.T=[2.931499938964844e+02, 2.834371643066406e+02, 2.862301635742188e+02, 2.892975769042969e+02, 2.915568542480469e+02, 2.931440124511719e+02, 2.9422509765625e+02, 2.948786010742188e+02, 2.951877136230469e+02, 2.954170532226562e+02, 2.955670776367188e+02, 2.956549987792969e+02, 2.957168884277344e+02, 2.957911682128906e+02, 2.959510803222656e+02, 2.962154846191406e+02, 2.965373840332031e+02, 2.968403015136719e+02, 2.970947265625e+02, 2.973243408203125e+02, 2.975263977050781e+02, 2.976948547363281e+02, 2.978182067871094e+02, 2.978943176269531e+02, 2.979436950683594e+02, 2.979971923828125e+02, 2.980797424316406e+02, 2.98181396484375e+02, 2.982959594726562e+02, 2.984185791015625e+02, 2.985416259765625e+02, 2.986548767089844e+02, 2.987629699707031e+02, 2.988792419433594e+02, 3.01014892578125e+02, 3.024351501464844e+02, 3.035817565917969e+02, 3.046459655761719e+02, 3.055906372070312e+02, 3.064290466308594e+02, 3.071982421875e+02, 3.079040222167969e+02, 3.085436096191406e+02, 3.091235961914062e+02, 3.096614074707031e+02, 3.101661682128906e+02, 3.106458129882812e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139285888671875e+02, 3.14550048828125e+02, 3.151605834960938e+02, 3.157632141113281e+02, 3.163482971191406e+02, 3.168951416015625e+02, 3.173786926269531e+02, 3.177808532714844e+02, 3.181035461425781e+02, 3.183600769042969e+02, 3.185693664550781e+02, 3.187411499023438e+02, 3.188727111816406e+02, 3.189614562988281e+02, 3.19000244140625e+02, 3.189235534667969e+02, 3.186986999511719e+02, 3.18397705078125e+02, 3.181358337402344e+02, 3.179746704101562e+02, 3.178573608398438e+02, 3.177685546875e+02, 3.177008972167969e+02, 3.152051391601562e+02, 3.142509155273438e+02, 3.135875549316406e+02, 3.130862121582031e+02, 3.127157592773438e+02, 3.124877014160156e+02, 3.123734741210938e+02, 3.12321044921875e+02, 3.12268310546875e+02, 3.121751708984375e+02, 3.120454406738281e+02, 3.119035339355469e+02, 3.117870788574219e+02, 3.117142333984375e+02, 3.116724853515625e+02, 3.116422729492188e+02, 3.115973205566406e+02, 3.115286865234375e+02, 3.114476318359375e+02, 3.113549194335938e+02, 3.112511901855469e+02, 3.111367492675781e+02, 3.110135498046875e+02, 3.108847351074219e+02, 3.107539367675781e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt new file mode 100644 index 0000000000..1288ad2fd5 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt @@ -0,0 +1,21 @@ +last-generated=2024-09-13 +statistics-initialization= +{ + "nonlinear": "5, 9, 0, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 0, 0", + "nonlinear": "1, 10, 0", + "number of continuous time states": "26", + "numerical Jacobians": "0" +} +time=[1.296e+06, 1.3824e+06] +senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] +boi.T=[2.931499938964844e+02, 3.434833679199219e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.432107238769531e+02, 3.43205078125e+02, 3.434713439941406e+02, 3.442933044433594e+02, 3.448924865722656e+02, 3.452561645507812e+02, 3.454854736328125e+02, 3.456283569335938e+02, 3.457260131835938e+02, 3.458241577148438e+02, 3.45978515625e+02, 3.462084350585938e+02, 3.464895935058594e+02, 3.467725524902344e+02, 3.470345764160156e+02, 3.47273193359375e+02, 3.474848937988281e+02, 3.476638488769531e+02, 3.478019714355469e+02, 3.47898681640625e+02, 3.479682006835938e+02, 3.480339050292969e+02, 3.481134948730469e+02, 3.482081298828125e+02, 3.483157653808594e+02, 3.48432373046875e+02, 3.485509338378906e+02, 3.486650695800781e+02, 3.487767944335938e+02, 3.491956481933594e+02, 3.505384216308594e+02, 3.518659973144531e+02, 3.530770263671875e+02, 3.541842346191406e+02, 3.551771545410156e+02, 3.560695190429688e+02, 3.568802490234375e+02, 3.576192321777344e+02, 3.582900390625e+02, 3.589009094238281e+02, 3.594639892578125e+02, 3.59989013671875e+02, 3.604840698242188e+02, 3.609530029296875e+02, 3.613988647460938e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.541706848144531e+02, 3.586401672363281e+02, 3.6102783203125e+02, 3.624544982910156e+02, 3.473058776855469e+02, 3.603316040039062e+02, 3.624865417480469e+02, 3.529296875e+02, 3.610571899414062e+02, 3.631178894042969e+02, 3.585865783691406e+02, 3.62072265625e+02, 3.468697204589844e+02, 3.607023010253906e+02, 3.629743957519531e+02, 3.579193725585938e+02, 3.617729797363281e+02, 3.509577026367188e+02, 3.593564453125e+02, 3.618064575195312e+02, 3.591344604492188e+02, 3.586734008789062e+02, 3.615327758789062e+02, 3.623335266113281e+02, 3.622222595214844e+02, 3.620665588378906e+02, 3.619429931640625e+02, 3.618490905761719e+02, 3.617927551269531e+02, 3.617894287109375e+02, 3.618338317871094e+02, 3.61899169921875e+02, 3.619463195800781e+02, 3.619490356445312e+02, 3.619058532714844e+02, 3.618348999023438e+02, 3.617657775878906e+02, 3.617156677246094e+02, 3.61684326171875e+02, 3.616601257324219e+02, 3.616254577636719e+02, 3.615739440917969e+02, 3.615072326660156e+02, 3.614264526367188e+02, 3.613327026367188e+02, 3.612271423339844e+02, 3.611116333007812e+02, 3.60989013671875e+02] +temSup.T=[2.931499938964844e+02, 3.036293640136719e+02, 3.110102233886719e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.213748168945312e+02, 3.230311279296875e+02, 3.238466491699219e+02, 3.244719848632812e+02, 3.249839172363281e+02, 3.253121337890625e+02, 3.255178833007812e+02, 3.256466979980469e+02, 3.257389831542969e+02, 3.258440551757812e+02, 3.260146179199219e+02, 3.262597045898438e+02, 3.265465393066406e+02, 3.268257751464844e+02, 3.270829467773438e+02, 3.273160705566406e+02, 3.275213928222656e+02, 3.276922607421875e+02, 3.278208312988281e+02, 3.279096984863281e+02, 3.279757080078125e+02, 3.280433044433594e+02, 3.281263122558594e+02, 3.282240600585938e+02, 3.283341674804688e+02, 3.284520568847656e+02, 3.28570068359375e+02, 3.286831665039062e+02, 3.287952270507812e+02, 3.294358215332031e+02, 3.308348693847656e+02, 3.32135498046875e+02, 3.333235778808594e+02, 3.344069213867188e+02, 3.353754577636719e+02, 3.362483215332031e+02, 3.370426940917969e+02, 3.377664489746094e+02, 3.384229736328125e+02, 3.390222473144531e+02, 3.395759887695312e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428023986816406e+02, 3.412862548828125e+02, 3.395494689941406e+02, 3.413731079101562e+02, 3.427290954589844e+02, 3.3701904296875e+02, 3.409632263183594e+02, 3.428541259765625e+02, 3.385643920898438e+02, 3.416318054199219e+02, 3.434749145507812e+02, 3.400550842285156e+02, 3.425283813476562e+02, 3.370928955078125e+02, 3.413815307617188e+02, 3.433495178222656e+02, 3.397550354003906e+02, 3.422109985351562e+02, 3.4031494140625e+02, 3.402499389648438e+02, 3.421600952148438e+02, 3.431968078613281e+02, 3.398429565429688e+02, 3.419109802246094e+02, 3.423342590332031e+02, 3.421798706054688e+02, 3.4202978515625e+02, 3.419132080078125e+02, 3.418257446289062e+02, 3.417798767089844e+02, 3.417883911132812e+02, 3.418408813476562e+02, 3.419064331054688e+02, 3.419457397460938e+02, 3.419378051757812e+02, 3.41885986328125e+02, 3.418122863769531e+02, 3.417462768554688e+02, 3.417007446289062e+02, 3.416725769042969e+02, 3.416478576660156e+02, 3.41609619140625e+02, 3.415546264648438e+02, 3.414846801757812e+02, 3.414009704589844e+02, 3.413045043945312e+02, 3.41196533203125e+02, 3.410791625976562e+02, 3.409553527832031e+02] +temRet.T=[2.931499938964844e+02, 3.333218688964844e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.331719970703125e+02, 3.331664428710938e+02, 3.334713745117188e+02, 3.343245849609375e+02, 3.348904418945312e+02, 3.35240966796875e+02, 3.354615783691406e+02, 3.355992431640625e+02, 3.356948547363281e+02, 3.357954406738281e+02, 3.359557189941406e+02, 3.361912536621094e+02, 3.364745788574219e+02, 3.367561950683594e+02, 3.370164489746094e+02, 3.372530517578125e+02, 3.3746240234375e+02, 3.37638427734375e+02, 3.377730407714844e+02, 3.378668212890625e+02, 3.379350280761719e+02, 3.380014038085938e+02, 3.380822448730469e+02, 3.381780395507812e+02, 3.382865600585938e+02, 3.384036560058594e+02, 3.385220336914062e+02, 3.386358032226562e+02, 3.387476196289062e+02, 3.392462463378906e+02, 3.406114501953125e+02, 3.419291687011719e+02, 3.431317443847656e+02, 3.44230224609375e+02, 3.452141723632812e+02, 3.460993347167969e+02, 3.46904052734375e+02, 3.47637451171875e+02, 3.483030090332031e+02, 3.489096069335938e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.491664733886719e+02, 3.489520568847656e+02, 3.511195068359375e+02, 3.525196533203125e+02, 3.410640869140625e+02, 3.505323486328125e+02, 3.525862731933594e+02, 3.451190185546875e+02, 3.512355041503906e+02, 3.532137756347656e+02, 3.491168823242188e+02, 3.522052917480469e+02, 3.408605041503906e+02, 3.509209594726562e+02, 3.530771179199219e+02, 3.48597900390625e+02, 3.518997802734375e+02, 3.468207702636719e+02, 3.4966064453125e+02, 3.519014282226562e+02, 3.527380065917969e+02, 3.490868225097656e+02, 3.51636962890625e+02, 3.522988586425781e+02, 3.521707763671875e+02, 3.5201708984375e+02, 3.518960876464844e+02, 3.518045349121094e+02, 3.517520141601562e+02, 3.517530517578125e+02, 3.518004760742188e+02, 3.518659362792969e+02, 3.519102478027344e+02, 3.519090576171875e+02, 3.518626708984375e+02, 3.517906799316406e+02, 3.5172265625e+02, 3.516742248535156e+02, 3.516440734863281e+02, 3.516197204589844e+02, 3.51583740234375e+02, 3.515309448242188e+02, 3.514630432128906e+02, 3.513811950683594e+02, 3.512864379882812e+02, 3.511799926757812e+02, 3.510637817382812e+02, 3.509407348632812e+02] +temRoo.T=[2.931499938964844e+02, 2.834371643066406e+02, 2.862301635742188e+02, 2.892975769042969e+02, 2.915568542480469e+02, 2.931440124511719e+02, 2.9422509765625e+02, 2.948786010742188e+02, 2.951877136230469e+02, 2.954170532226562e+02, 2.955670776367188e+02, 2.956549987792969e+02, 2.957168884277344e+02, 2.957911682128906e+02, 2.959510803222656e+02, 2.962154846191406e+02, 2.965373840332031e+02, 2.968403015136719e+02, 2.970947265625e+02, 2.973243408203125e+02, 2.975263977050781e+02, 2.976948547363281e+02, 2.978182067871094e+02, 2.978943176269531e+02, 2.979436950683594e+02, 2.979971923828125e+02, 2.980797424316406e+02, 2.98181396484375e+02, 2.982959594726562e+02, 2.984185791015625e+02, 2.985416259765625e+02, 2.986548767089844e+02, 2.987629699707031e+02, 2.988792419433594e+02, 3.01014892578125e+02, 3.024351501464844e+02, 3.035817565917969e+02, 3.046459655761719e+02, 3.055906372070312e+02, 3.064290466308594e+02, 3.071982421875e+02, 3.079040222167969e+02, 3.085436096191406e+02, 3.091235961914062e+02, 3.096614074707031e+02, 3.101661682128906e+02, 3.106458129882812e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139214172363281e+02, 3.124472351074219e+02, 3.131286315917969e+02, 3.141797180175781e+02, 3.145890502929688e+02, 3.13705322265625e+02, 3.147475891113281e+02, 3.146864929199219e+02, 3.142790222167969e+02, 3.153054809570312e+02, 3.142137451171875e+02, 3.14788330078125e+02, 3.15270751953125e+02, 3.143161010742188e+02, 3.152500305175781e+02, 3.141626281738281e+02, 3.143001403808594e+02, 3.149447021484375e+02, 3.133312683105469e+02, 3.139218139648438e+02, 3.147353210449219e+02, 3.1331591796875e+02, 3.137755737304688e+02, 3.121613159179688e+02, 3.11927001953125e+02, 3.118166198730469e+02, 3.11737060546875e+02, 3.116876220703125e+02, 3.117040405273438e+02, 3.117762145996094e+02, 3.118657836914062e+02, 3.119212951660156e+02, 3.119105834960938e+02, 3.118436889648438e+02, 3.117496948242188e+02, 3.116694641113281e+02, 3.116246643066406e+02, 3.116041870117188e+02, 3.115902099609375e+02, 3.115573425292969e+02, 3.114983520507812e+02, 3.114244689941406e+02, 3.113372802734375e+02, 3.112377014160156e+02, 3.1112646484375e+02, 3.110057067871094e+02, 3.108787536621094e+02, 3.107493591308594e+02] +conBoiRet.yVal=[0e+00, 4.212583005428314e-01, 4.565468430519104e-01, 4.838085770606995e-01, 5.058921575546265e-01, 5.233334898948669e-01, 5.365664958953857e-01, 6.597625017166138e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +conEquSta.onBoi=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt new file mode 100644 index 0000000000..aceb6ad53b --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt @@ -0,0 +1,22 @@ +last-generated=2024-09-19 +statistics-initialization= +{ + "nonlinear": "5, 10, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 0, 0", + "nonlinear": "1, 10, 0", + "number of continuous time states": "26", + "numerical Jacobians": "0" +} +time=[1.296e+06, 1.3824e+06] +senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] +boi.T=[2.931499938964844e+02, 3.434832763671875e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.432107238769531e+02, 3.412689514160156e+02, 3.432171936035156e+02, 3.432071838378906e+02, 3.4320166015625e+02, 3.431986999511719e+02, 3.432062072753906e+02, 3.432010498046875e+02, 3.413011169433594e+02, 3.432116394042969e+02, 3.432052917480469e+02, 3.4327685546875e+02, 3.432153625488281e+02, 3.413323059082031e+02, 3.432182922363281e+02, 3.432119750976562e+02, 3.431321105957031e+02, 3.432158813476562e+02, 3.412737731933594e+02, 3.432198791503906e+02, 3.432103576660156e+02, 3.432146606445312e+02, 3.432135925292969e+02, 3.4314208984375e+02, 3.432171325683594e+02, 3.432020874023438e+02, 3.432201843261719e+02, 3.42871826171875e+02, 3.432225952148438e+02, 3.412811889648438e+02, 3.432481384277344e+02, 3.431516418457031e+02, 3.413154296875e+02, 3.415331420898438e+02, 3.431570129394531e+02, 3.413214416503906e+02, 3.413232421875e+02, 3.4316650390625e+02, 3.413245239257812e+02, 3.413251647949219e+02, 3.433076782226562e+02, 3.413253479003906e+02, 3.432435913085938e+02, 3.413251953125e+02, 3.413246459960938e+02, 3.431742858886719e+02, 3.413232727050781e+02, 3.432348022460938e+02, 3.413182373046875e+02, 3.413131103515625e+02, 3.413131103515625e+02, 3.432421264648438e+02, 3.413114013671875e+02, 3.434130249023438e+02, 3.413118896484375e+02, 3.413118896484375e+02, 3.41317626953125e+02, 3.41317626953125e+02, 3.41317626953125e+02, 3.413144836425781e+02, 3.413144836425781e+02, 3.432393798828125e+02, 3.413183288574219e+02, 3.413183288574219e+02, 3.413230895996094e+02, 3.413230895996094e+02, 3.413209228515625e+02, 3.413209228515625e+02, 3.418636779785156e+02, 3.413165283203125e+02, 3.432117919921875e+02, 3.413403625488281e+02, 3.413269653320312e+02, 3.43216552734375e+02, 3.413267822265625e+02, 3.432596435546875e+02, 3.434873657226562e+02, 3.413261413574219e+02, 3.432266845703125e+02, 3.413264465332031e+02, 3.413274230957031e+02, 3.431798400878906e+02, 3.413275756835938e+02, 3.413270568847656e+02, 3.431701354980469e+02, 3.413266906738281e+02, 3.413622131347656e+02, 3.432836608886719e+02, 3.413270568847656e+02, 3.432550964355469e+02, 3.434814453125e+02, 3.413267517089844e+02, 3.432408752441406e+02, 3.413265075683594e+02, 3.413261413574219e+02, 3.432283325195312e+02] +temSup.T=[2.931499938964844e+02, 3.036293029785156e+02, 3.1101025390625e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.213748168945312e+02, 3.229210205078125e+02, 3.197828063964844e+02, 3.218347473144531e+02, 3.231505737304688e+02, 3.194843444824219e+02, 3.215145263671875e+02, 3.227781982421875e+02, 3.233633117675781e+02, 3.205654602050781e+02, 3.22278564453125e+02, 3.185347595214844e+02, 3.207666625976562e+02, 3.226780090332031e+02, 3.193686828613281e+02, 3.218971862792969e+02, 3.175887756347656e+02, 3.210928344726562e+02, 3.225085754394531e+02, 3.201983032226562e+02, 3.224572448730469e+02, 3.190616760253906e+02, 3.217935180664062e+02, 3.176122741699219e+02, 3.211933898925781e+02, 3.173088073730469e+02, 3.207025756835938e+02, 3.223034973144531e+02, 3.20312255859375e+02, 3.214923706054688e+02, 3.181777648925781e+02, 3.136198120117188e+02, 3.179538879394531e+02, 3.173634643554688e+02, 3.125412902832031e+02, 3.168973693847656e+02, 3.164294128417969e+02, 3.114633178710938e+02, 3.160238952636719e+02, 3.156395874023438e+02, 3.111219482421875e+02, 3.15251220703125e+02, 3.137964477539062e+02, 3.148606567382812e+02, 3.144755554199219e+02, 3.098387451171875e+02, 3.140381774902344e+02, 3.124127807617188e+02, 3.133011169433594e+02, 3.123234252929688e+02, 3.123234252929688e+02, 3.111024780273438e+02, 3.113951416015625e+02, 3.075806579589844e+02, 3.105326843261719e+02, 3.105326843261719e+02, 3.101451416015625e+02, 3.101451416015625e+02, 3.101451416015625e+02, 3.100009155273438e+02, 3.100009155273438e+02, 3.067701416015625e+02, 3.100101318359375e+02, 3.100101318359375e+02, 3.1067626953125e+02, 3.1067626953125e+02, 3.113613586425781e+02, 3.113613586425781e+02, 3.112803649902344e+02, 3.113517150878906e+02, 3.091761779785156e+02, 3.147893676757812e+02, 3.154362182617188e+02, 3.107131958007812e+02, 3.154381713867188e+02, 3.14986083984375e+02, 3.130552673339844e+02, 3.1522998046875e+02, 3.132066040039062e+02, 3.15069091796875e+02, 3.151340637207031e+02, 3.116830139160156e+02, 3.153270568847656e+02, 3.154429626464844e+02, 3.108334045410156e+02, 3.15427001953125e+02, 3.153990173339844e+02, 3.109686889648438e+02, 3.15482177734375e+02, 3.147348937988281e+02, 3.129483337402344e+02, 3.157128601074219e+02, 3.142114868164062e+02, 3.158470458984375e+02, 3.159845886230469e+02, 3.1395166015625e+02] +temRet.T=[2.931499938964844e+02, 3.333218383789062e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.331719970703125e+02, 3.330797729492188e+02, 3.331796875e+02, 3.331683654785156e+02, 3.331630554199219e+02, 3.331756286621094e+02, 3.331673278808594e+02, 3.331625061035156e+02, 3.331213684082031e+02, 3.331729431152344e+02, 3.331667785644531e+02, 3.330426635742188e+02, 3.331762390136719e+02, 3.330877075195312e+02, 3.331846313476562e+02, 3.331731567382812e+02, 3.331069641113281e+02, 3.331767272949219e+02, 3.330840148925781e+02, 3.331806335449219e+02, 3.33171630859375e+02, 3.331859436035156e+02, 3.331747131347656e+02, 3.331281127929688e+02, 3.331780395507812e+02, 3.330380554199219e+02, 3.331809692382812e+02, 3.331681518554688e+02, 3.33183349609375e+02, 3.330904541015625e+02, 3.332095336914062e+02, 3.331208801269531e+02, 3.331210327148438e+02, 3.331462097167969e+02, 3.331207885742188e+02, 3.33127685546875e+02, 3.3313037109375e+02, 3.330989685058594e+02, 3.331325378417969e+02, 3.331344299316406e+02, 3.330813293457031e+02, 3.331361694335938e+02, 3.332266845703125e+02, 3.331374206542969e+02, 3.331385803222656e+02, 3.331060180664062e+02, 3.33139404296875e+02, 3.332242126464844e+02, 3.331390686035156e+02, 3.331380615234375e+02, 3.331380615234375e+02, 3.332298583984375e+02, 3.331373596191406e+02, 3.332115478515625e+02, 3.331369018554688e+02, 3.331369018554688e+02, 3.331404724121094e+02, 3.331404724121094e+02, 3.331404724121094e+02, 3.331390075683594e+02, 3.331390075683594e+02, 3.331656494140625e+02, 3.331409912109375e+02, 3.331409912109375e+02, 3.331437683105469e+02, 3.331437683105469e+02, 3.331425476074219e+02, 3.331425476074219e+02, 3.331925354003906e+02, 3.331404418945312e+02, 3.331940002441406e+02, 3.331416931152344e+02, 3.331355895996094e+02, 3.330783996582031e+02, 3.331355895996094e+02, 3.332304992675781e+02, 3.332329711914062e+02, 3.331363220214844e+02, 3.332164001464844e+02, 3.331370544433594e+02, 3.331370544433594e+02, 3.331669616699219e+02, 3.331362609863281e+02, 3.331356201171875e+02, 3.331059265136719e+02, 3.331356201171875e+02, 3.331392822265625e+02, 3.330787048339844e+02, 3.331354675292969e+02, 3.332292175292969e+02, 3.332362060546875e+02, 3.331343383789062e+02, 3.332232360839844e+02, 3.331337585449219e+02, 3.331330261230469e+02, 3.332156677246094e+02] +temRoo.T=[2.931499938964844e+02, 2.834371948242188e+02, 2.862301330566406e+02, 2.892975463867188e+02, 2.915568542480469e+02, 2.931440124511719e+02, 2.941587219238281e+02, 2.922658386230469e+02, 2.932417602539062e+02, 2.94072265625e+02, 2.921136779785156e+02, 2.928497619628906e+02, 2.936820373535156e+02, 2.934452514648438e+02, 2.924263916015625e+02, 2.93575927734375e+02, 2.927049255371094e+02, 2.928812866210938e+02, 2.941804809570312e+02, 2.924045104980469e+02, 2.937210083007812e+02, 2.923773803710938e+02, 2.93244140625e+02, 2.93449462890625e+02, 2.92740478515625e+02, 2.941199035644531e+02, 2.923981018066406e+02, 2.937544860839844e+02, 2.923780517578125e+02, 2.934642639160156e+02, 2.926152038574219e+02, 2.932439575195312e+02, 2.930661010742188e+02, 2.930980224609375e+02, 2.939833679199219e+02, 2.939597473144531e+02, 2.928506774902344e+02, 2.939415893554688e+02, 2.942293701171875e+02, 2.929274597167969e+02, 2.939508056640625e+02, 2.943716430664062e+02, 2.929440612792969e+02, 2.940947265625e+02, 2.942908325195312e+02, 2.929515380859375e+02, 2.943915710449219e+02, 2.938172302246094e+02, 2.934654235839844e+02, 2.946894226074219e+02, 2.930814208984375e+02, 2.9433154296875e+02, 2.939205017089844e+02, 2.940247802734375e+02, 2.944462280273438e+02, 2.940744323730469e+02, 2.941338195800781e+02, 2.944700317382812e+02, 2.931013793945312e+02, 2.950010375976562e+02, 2.937785339355469e+02, 2.944610595703125e+02, 2.945914001464844e+02, 2.932905883789062e+02, 2.950827941894531e+02, 2.941322937011719e+02, 2.933622131347656e+02, 2.948946533203125e+02, 2.934913024902344e+02, 2.949083251953125e+02, 2.937841186523438e+02, 2.946959838867188e+02, 2.940284118652344e+02, 2.942195129394531e+02, 2.94270751953125e+02, 2.936306762695312e+02, 2.9396240234375e+02, 2.943980102539062e+02, 2.929287414550781e+02, 2.942446899414062e+02, 2.940342407226562e+02, 2.930511169433594e+02, 2.944958190917969e+02, 2.935714111328125e+02, 2.934937438964844e+02, 2.946109924316406e+02, 2.931596984863281e+02, 2.938140563964844e+02, 2.945286254882812e+02, 2.929768981933594e+02, 2.941008911132812e+02, 2.942635498046875e+02, 2.929299926757812e+02, 2.943206176757812e+02, 2.938662109375e+02, 2.930386352539062e+02, 2.944496154785156e+02, 2.935947875976562e+02, 2.931981201171875e+02, 2.94506103515625e+02, 2.934295959472656e+02] +conBoiRet.yVal=[0e+00, 4.212594628334045e-01, 4.565480053424835e-01, 4.838098287582397e-01, 5.058930516242981e-01, 5.233339667320251e-01, 5.236923694610596e-01, 5.114201307296753e-01, 5.269390344619751e-01, 5.375866889953613e-01, 5.091941952705383e-01, 5.244570374488831e-01, 5.345306396484375e-01, 5.361558794975281e-01, 5.172062516212463e-01, 5.304576754570007e-01, 5.046308040618896e-01, 5.186852812767029e-01, 5.250994563102722e-01, 5.083945989608765e-01, 5.273821353912354e-01, 4.959457218647003e-01, 5.211418867111206e-01, 5.086243152618408e-01, 5.144302845001221e-01, 5.318449735641479e-01, 5.061728954315186e-01, 5.265560150146484e-01, 4.959854781627655e-01, 5.218941569328308e-01, 4.948271512985229e-01, 5.181629657745361e-01, 5.102766156196594e-01, 5.152435302734375e-01, 4.907311797142029e-01, 4.999020397663116e-01, 4.709380865097046e-01, 4.793302714824677e-01, 4.872170388698578e-01, 4.647347331047058e-01, 4.73406046628952e-01, 4.782120883464813e-01, 4.590348303318024e-01, 4.694218337535858e-01, 4.735685586929321e-01, 4.590467512607574e-01, 4.665768444538116e-01, 4.718035161495209e-01, 4.60739940404892e-01, 4.640884697437286e-01, 4.502870142459869e-01, 4.588809907436371e-01, 4.636670053005219e-01, 4.519980549812317e-01, 4.530890583992004e-01, 4.444915950298309e-01, 4.563360810279846e-01, 4.393826425075531e-01, 4.436482787132263e-01, 4.376770555973053e-01, 4.282426834106445e-01, 4.411533176898956e-01, 4.342884719371796e-01, 4.274236261844635e-01, 4.373604655265808e-01, 4.294531941413879e-01, 4.348052740097046e-01, 4.357894957065582e-01, 4.293039739131927e-01, 4.430703222751617e-01, 4.38592940568924e-01, 4.473768174648285e-01, 4.420123100280762e-01, 4.530364871025085e-01, 4.41187858581543e-01, 4.460897147655487e-01, 4.652161002159119e-01, 4.719216823577881e-01, 4.554951786994934e-01, 4.672927558422089e-01, 4.791069328784943e-01, 4.731855690479279e-01, 4.67265248298645e-01, 4.682562649250031e-01, 4.624899327754974e-01, 4.683427810668945e-01, 4.59576815366745e-01, 4.651550352573395e-01, 4.713089168071747e-01, 4.555608928203583e-01, 4.665520191192627e-01, 4.725323021411896e-01, 4.576119780540466e-01, 4.680196344852448e-01, 4.775474965572357e-01, 4.748954772949219e-01, 4.701705276966095e-01, 4.743029177188873e-01, 4.654714167118073e-01, 4.724253416061401e-01, 4.726920425891876e-01] +conEquSta.onBoi=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00] +conSysSta.onSys=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt new file mode 100644 index 0000000000..f28e82de20 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt @@ -0,0 +1,23 @@ +last-generated=2024-09-13 +statistics-initialization= +{ + "nonlinear": "5, 10, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 0, 0", + "nonlinear": "1, 10, 0", + "number of continuous time states": "27", + "numerical Jacobians": "0" +} +time=[1.296e+06, 1.3824e+06] +senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] +boi.T=[2.931499938964844e+02, 3.434833679199219e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.528956604003906e+02, 3.576978759765625e+02, 3.526015930175781e+02, 3.602760009765625e+02, 3.509493713378906e+02, 3.608724975585938e+02, 3.475165710449219e+02, 3.572972106933594e+02, 3.452764892578125e+02, 3.555399169921875e+02, 3.449403991699219e+02, 3.5786083984375e+02, 3.474909973144531e+02, 3.617934265136719e+02, 3.517604370117188e+02, 3.456141967773438e+02, 3.582394714355469e+02, 3.485054321289062e+02, 3.604246520996094e+02, 3.540896301269531e+02, 3.455384216308594e+02, 3.605604858398438e+02, 3.511347351074219e+02, 3.440261840820312e+02, 3.601527709960938e+02, 3.515797119140625e+02, 3.449183349609375e+02, 3.620229797363281e+02, 3.54238037109375e+02, 3.535430297851562e+02, 3.526867980957031e+02, 3.512720031738281e+02, 3.514784240722656e+02, 3.523876037597656e+02, 3.536019592285156e+02, 3.549525756835938e+02, 3.563995971679688e+02, 3.579619445800781e+02, 3.596748352050781e+02, 3.617506408691406e+02, 3.60470458984375e+02, 3.559532775878906e+02, 3.508215637207031e+02, 3.44654296875e+02, 3.469327392578125e+02, 3.512892456054688e+02, 3.554247436523438e+02, 3.594942016601562e+02, 3.558909912109375e+02, 3.466330871582031e+02, 3.546285400390625e+02, 3.61640380859375e+02, 3.472928466796875e+02, 3.571298522949219e+02, 3.440164184570312e+02, 3.547879028320312e+02, 3.50660888671875e+02, 3.528243408203125e+02, 3.604035949707031e+02, 3.512106018066406e+02, 3.614145812988281e+02, 3.494896545410156e+02, 3.59525634765625e+02, 3.456096496582031e+02, 3.542845764160156e+02, 3.612555541992188e+02, 3.444588012695312e+02, 3.529975280761719e+02, 3.599310607910156e+02, 3.433215026855469e+02, 3.517929382324219e+02, 3.618186340332031e+02, 3.601310119628906e+02, 3.603203125e+02, 3.617422485351562e+02, 3.611863098144531e+02, 3.574175415039062e+02, 3.532514038085938e+02, 3.489363098144531e+02, 3.44717529296875e+02, 3.452042236328125e+02, 3.477545776367188e+02, 3.501216125488281e+02, 3.523743286132812e+02, 3.544904174804688e+02, 3.565160217285156e+02, 3.58537841796875e+02, 3.606431579589844e+02, 3.6238623046875e+02, 3.589515991210938e+02, 3.558465270996094e+02, 3.530482177734375e+02, 3.505100708007812e+02, 3.4816259765625e+02, 3.459473266601562e+02, 3.432810974121094e+02] +temSup.T=[2.931499938964844e+02, 3.036293640136719e+02, 3.1101025390625e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.181846313476562e+02, 3.185993957519531e+02, 3.186600036621094e+02, 3.189481201171875e+02, 3.189635925292969e+02, 3.192712707519531e+02, 3.194983520507812e+02, 3.193892211914062e+02, 3.19415771484375e+02, 3.19120849609375e+02, 3.185459899902344e+02, 3.183751525878906e+02, 3.185407409667969e+02, 3.180388793945312e+02, 3.17714111328125e+02, 3.173306274414062e+02, 3.176727905273438e+02, 3.180802001953125e+02, 3.177732849121094e+02, 3.1754443359375e+02, 3.1768505859375e+02, 3.176912536621094e+02, 3.175335998535156e+02, 3.1697998046875e+02, 3.172467651367188e+02, 3.172243041992188e+02, 3.168643493652344e+02, 3.170609436035156e+02, 3.167634582519531e+02, 3.124078369140625e+02, 3.115540161132812e+02, 3.104700927734375e+02, 3.09622802734375e+02, 3.090401306152344e+02, 3.084966735839844e+02, 3.080016174316406e+02, 3.075909729003906e+02, 3.073069152832031e+02, 3.071300659179688e+02, 3.070762329101562e+02, 3.0696240234375e+02, 3.068350830078125e+02, 3.065877990722656e+02, 3.060327758789062e+02, 3.05546142578125e+02, 3.04848876953125e+02, 3.040871276855469e+02, 3.036488342285156e+02, 3.034918823242188e+02, 3.028552856445312e+02, 3.018724060058594e+02, 3.015412902832031e+02, 3.011158752441406e+02, 3.004388427734375e+02, 3.002837829589844e+02, 2.999995422363281e+02, 3.00043701171875e+02, 2.999257507324219e+02, 3.000049133300781e+02, 2.998818969726562e+02, 2.999306335449219e+02, 2.9996142578125e+02, 2.999478454589844e+02, 3.005303039550781e+02, 3.008473205566406e+02, 3.015175476074219e+02, 3.016997375488281e+02, 3.014815673828125e+02, 3.01451904296875e+02, 3.016185607910156e+02, 3.015406188964844e+02, 3.041492309570312e+02, 3.055158386230469e+02, 3.062835388183594e+02, 3.067785949707031e+02, 3.0699365234375e+02, 3.070588684082031e+02, 3.070314331054688e+02, 3.069041442871094e+02, 3.067091979980469e+02, 3.067263793945312e+02, 3.067084350585938e+02, 3.066339721679688e+02, 3.064884033203125e+02, 3.063646240234375e+02, 3.063402099609375e+02, 3.064747619628906e+02, 3.068072814941406e+02, 3.071504516601562e+02, 3.074424133300781e+02, 3.077146606445312e+02, 3.07935302734375e+02, 3.080780029296875e+02, 3.081256103515625e+02, 3.080643005371094e+02, 3.080347290039062e+02] +temRet.T=[2.931499938964844e+02, 3.333218994140625e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.439313049316406e+02, 3.521710815429688e+02, 3.435746459960938e+02, 3.540379943847656e+02, 3.419050598144531e+02, 3.516350402832031e+02, 3.381692199707031e+02, 3.480570373535156e+02, 3.359356079101562e+02, 3.463271789550781e+02, 3.358786010742188e+02, 3.488461608886719e+02, 3.382138671875e+02, 3.528662414550781e+02, 3.430753173828125e+02, 3.406753540039062e+02, 3.494378662109375e+02, 3.393665466308594e+02, 3.544672241210938e+02, 3.454693603515625e+02, 3.366733703613281e+02, 3.516876525878906e+02, 3.423803405761719e+02, 3.391623840332031e+02, 3.514603271484375e+02, 3.428921813964844e+02, 3.364239501953125e+02, 3.533380126953125e+02, 3.458009033203125e+02, 3.485299377441406e+02, 3.486251525878906e+02, 3.479062805175781e+02, 3.484880981445312e+02, 3.496084899902344e+02, 3.510238037109375e+02, 3.525453491210938e+02, 3.541170349121094e+02, 3.557326965332031e+02, 3.574421081542969e+02, 3.583822631835938e+02, 3.54431396484375e+02, 3.497737121582031e+02, 3.4457080078125e+02, 3.400477905273438e+02, 3.445541381835938e+02, 3.492832641601562e+02, 3.538783874511719e+02, 3.580769958496094e+02, 3.506819458007812e+02, 3.449400329589844e+02, 3.533544921875e+02, 3.604164428710938e+02, 3.460746459960938e+02, 3.561886291503906e+02, 3.43033935546875e+02, 3.53843994140625e+02, 3.461331176757812e+02, 3.518097534179688e+02, 3.558353271484375e+02, 3.501661682128906e+02, 3.604344177246094e+02, 3.484012756347656e+02, 3.585531311035156e+02, 3.44355224609375e+02, 3.53044189453125e+02, 3.599440002441406e+02, 3.430190734863281e+02, 3.516394958496094e+02, 3.587284851074219e+02, 3.419649047851562e+02, 3.503922729492188e+02, 3.612626953125e+02, 3.587860717773438e+02, 3.584432373046875e+02, 3.585357666015625e+02, 3.551532897949219e+02, 3.512120056152344e+02, 3.469041137695312e+02, 3.425299377441406e+02, 3.397169799804688e+02, 3.424599914550781e+02, 3.451210632324219e+02, 3.476570739746094e+02, 3.501051940917969e+02, 3.523716735839844e+02, 3.544588317871094e+02, 3.564186096191406e+02, 3.583626403808594e+02, 3.563072509765625e+02, 3.5266748046875e+02, 3.493633422851562e+02, 3.464041137695312e+02, 3.437685852050781e+02, 3.413943481445312e+02, 3.393263549804688e+02, 3.402254333496094e+02] +temRoo.T=[2.931499938964844e+02, 2.834371643066406e+02, 2.862301330566406e+02, 2.892975769042969e+02, 2.91556884765625e+02, 2.924832458496094e+02, 2.924545288085938e+02, 2.924683837890625e+02, 2.924432373046875e+02, 2.924492492675781e+02, 2.924227600097656e+02, 2.924105529785156e+02, 2.924169616699219e+02, 2.923835754394531e+02, 2.924335021972656e+02, 2.92436279296875e+02, 2.924851379394531e+02, 2.92466064453125e+02, 2.92510986328125e+02, 2.925418090820312e+02, 2.925221252441406e+02, 2.925343627929688e+02, 2.925024719238281e+02, 2.925279846191406e+02, 2.925511169433594e+02, 2.925020446777344e+02, 2.925323486328125e+02, 2.925522766113281e+02, 2.925442810058594e+02, 2.925641479492188e+02, 2.925733642578125e+02, 2.925527038574219e+02, 2.925766296386719e+02, 2.926077575683594e+02, 2.926939697265625e+02, 2.928887329101562e+02, 2.929942016601562e+02, 2.930628662109375e+02, 2.931092224121094e+02, 2.931529235839844e+02, 2.931947021484375e+02, 2.932321166992188e+02, 2.932615661621094e+02, 2.932836303710938e+02, 2.932965393066406e+02, 2.933004455566406e+02, 2.932983093261719e+02, 2.9329638671875e+02, 2.933058471679688e+02, 2.933336181640625e+02, 2.933860168457031e+02, 2.934620361328125e+02, 2.9352392578125e+02, 2.935338439941406e+02, 2.935364685058594e+02, 2.936015930175781e+02, 2.936659240722656e+02, 2.936662292480469e+02, 2.937183837890625e+02, 2.93729248046875e+02, 2.937367858886719e+02, 2.93751220703125e+02, 2.937371520996094e+02, 2.937605590820312e+02, 2.9374072265625e+02, 2.9376611328125e+02, 2.937378234863281e+02, 2.937599182128906e+02, 2.937034606933594e+02, 2.936749572753906e+02, 2.936654968261719e+02, 2.936250610351562e+02, 2.936240539550781e+02, 2.936634216308594e+02, 2.936337585449219e+02, 2.936203308105469e+02, 2.934090576171875e+02, 2.933837890625e+02, 2.933442687988281e+02, 2.933167724609375e+02, 2.93299072265625e+02, 2.932864074707031e+02, 2.932745056152344e+02, 2.932637939453125e+02, 2.932545471191406e+02, 2.932497253417969e+02, 2.93251953125e+02, 2.932626342773438e+02, 2.932821960449219e+02, 2.933033752441406e+02, 2.933187866210938e+02, 2.933218994140625e+02, 2.933094177246094e+02, 2.932885131835938e+02, 2.932628479003906e+02, 2.932356872558594e+02, 2.932101135253906e+02, 2.931886291503906e+02, 2.931727905273438e+02, 2.931629943847656e+02, 2.931585388183594e+02] +conBoiRet.yVal=[0e+00, 4.212586879730225e-01, 4.565469026565552e-01, 4.838089942932129e-01, 5.058921575546265e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +conRadSup.yVal=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 8.280595541000366e-01, 7.872971296310425e-01, 8.308314681053162e-01, 7.737717032432556e-01, 8.45884382724762e-01, 7.899181246757507e-01, 8.887307047843933e-01, 8.119707107543945e-01, 9.11929726600647e-01, 8.20879340171814e-01, 8.946013450622559e-01, 7.933893203735352e-01, 8.787143230438232e-01, 7.640860676765442e-01, 8.136985301971436e-01, 8.346748352050781e-01, 7.783265709877014e-01, 8.606112599372864e-01, 7.530050873756409e-01, 7.947607636451721e-01, 8.739627599716187e-01, 7.674879431724548e-01, 8.19435715675354e-01, 8.412542939186096e-01, 7.598286271095276e-01, 8.11187207698822e-01, 8.60146701335907e-01, 7.479205131530762e-01, 7.793366312980652e-01, 7.707185745239258e-01, 7.100793719291687e-01, 6.651185154914856e-01, 6.312261819839478e-01, 6.057806611061096e-01, 5.786939859390259e-01, 5.525615811347961e-01, 5.297839641571045e-01, 5.137857794761658e-01, 5.052066445350647e-01, 5.072216391563416e-01, 5.342182517051697e-01, 5.682747364044189e-01, 6.019164323806763e-01, 6.211527585983276e-01, 5.796337723731995e-01, 5.148346424102783e-01, 4.289049804210663e-01, 3.828279078006744e-01, 4.464203715324402e-01, 4.837310612201691e-01, 3.770953714847565e-01, 3.231187760829926e-01, 3.936016857624054e-01, 2.861414849758148e-01, 3.561140298843384e-01, 2.963634729385376e-01, 3.350069522857666e-01, 3.215218186378479e-01, 3.020563423633575e-01, 3.348166346549988e-01, 2.826885282993317e-01, 3.521836698055267e-01, 2.805283963680267e-01, 4.067943096160889e-01, 3.671534657478333e-01, 3.562982380390167e-01, 4.50657069683075e-01, 3.975051045417786e-01, 3.344292342662811e-01, 4.426386952400208e-01, 4.100818932056427e-01, 1.92404180765152e-01, 3.860281109809875e-01, 4.618188738822937e-01, 4.974184334278107e-01, 5.309092998504639e-01, 5.643199682235718e-01, 5.983712077140808e-01, 6.284129619598389e-01, 6.471862196922302e-01, 6.299030184745789e-01, 6.065564751625061e-01, 5.782372355461121e-01, 5.462060570716858e-01, 5.177878141403198e-01, 4.990358650684357e-01, 4.948543012142181e-01, 5.048975348472595e-01, 5.306417942047119e-01, 5.654724836349487e-01, 5.986533761024475e-01, 6.277169585227966e-01, 6.511507034301758e-01, 6.683641076087952e-01, 6.80217981338501e-01, 6.74770712852478e-01] +conEquSta.onBoi=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00] +conSysSta.onSys=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] From de224a41f87b8a634dd3c3ebbcc66662a502def6 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 23:56:52 +0000 Subject: [PATCH 09/15] Added tutorial --- .../Tutorial/CDL/Controls/Validation/BoilerReturn.mos | 5 +++++ .../Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos | 3 +++ .../Tutorial/CDL/Controls/Validation/RadiatorSupply.mos | 3 +++ .../Tutorial/CDL/Controls/Validation/SystemOnOff.mos | 3 +++ .../Scripts/Dymola/Examples/Tutorial/CDL/System1.mos | 2 ++ .../Scripts/Dymola/Examples/Tutorial/CDL/System2.mos | 2 ++ .../Scripts/Dymola/Examples/Tutorial/CDL/System3.mos | 2 ++ .../Scripts/Dymola/Examples/Tutorial/CDL/System4.mos | 4 ++++ .../Scripts/Dymola/Examples/Tutorial/CDL/System5.mos | 5 +++++ .../Scripts/Dymola/Examples/Tutorial/CDL/System6.mos | 5 +++++ 10 files changed, 34 insertions(+) create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos create mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos new file mode 100644 index 0000000000..82ae145a12 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos @@ -0,0 +1,5 @@ +// Script generated by Dymola Wed Feb 19 14:48:31 2020 +// Plot commands +simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.BoilerReturn", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="BoilerReturn"); +createPlot(id=2, position={15, 15, 542, 503}, y={"conBoiRet.TSet", "conBoiRet.TRet"}, range={0.0, 4000.0, 0.0, 80.0}, grid=true, colors={{28,108,200}, {238,46,47}}, displayUnits={"degC", "degC"}); +createPlot(id=2, position={15, 15, 542, 249}, y={"conBoiRet.yVal"}, range={0.0, 4000.0, -1.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos new file mode 100644 index 0000000000..4aac1295ad --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.EquipmentOnOff", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="EquipmentOnOff"); +createPlot(id=2, position={15, 15, 793, 722}, y={"conEquSta.TBoi"}, range={0.0, 4000.0, 50.0, 110.0}, grid=true, colors={{28,108,200}}, displayUnits={"degC"}); +createPlot(id=2, position={15, 15, 793, 359}, y={"conEquSta.onSys", "conEquSta.onPum", "conEquSta.onBoi"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos new file mode 100644 index 0000000000..4695d891e4 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.RadiatorSupply", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="RadiatorSupply"); +createPlot(id=2, position={15, 15, 542, 517}, y={"conRadSup.TRoo", "conRadSup.TSup"}, range={0.0, 4000.0, 0.0, 60.0}, grid=true, colors={{28,108,200}, {238,46,47}}, displayUnits={"degC", "degC"}); +createPlot(id=2, position={15, 15, 542, 256}, y={"conRadSup.yVal"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos new file mode 100644 index 0000000000..4b448c5ebd --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos @@ -0,0 +1,3 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.SystemOnOff", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="SystemOnOff"); +createPlot(id=3, position={75, 75, 758, 583}, y={"conSysSta.TRoo", "conSysSta.TRooSet", "conSysSta.TOut", "conSysSta.TOutLow"}, range={0.0, 4000.0, 10.0, 25.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}, displayUnits={"degC", "degC", "degC", "degC"}); +createPlot(id=3, position={75, 75, 758, 289}, y={"conSysSta.onSys"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos new file mode 100644 index 0000000000..17ad1282fb --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.System1", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem1"); +createPlot(id=1, position={35, 35, 912, 543}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={0.0, 2.0, -20.0, 50.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos new file mode 100644 index 0000000000..d083bd6b4d --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.System2", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem2"); +createPlot(id=1, position={35, 35, 912, 543}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={0.0, 2.0, -20.0, 50.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos new file mode 100644 index 0000000000..f0c4423da1 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.System3", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem3"); +createPlot(id=1, position={35, 35, 912, 543}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={0.0, 2.0, -20.0, 50.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos new file mode 100644 index 0000000000..fb738b6520 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos @@ -0,0 +1,4 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.System4", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem4"); +createPlot(id=2, position={35, 35, 1209, 915}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={15.0, 16.0, -50.0, 100.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC", "degC"}); +createPlot(id=2, position={35, 35, 1209, 303}, y={"conBoiRet.yVal"}, range={15.0, 16.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="h"); +createPlot(id=2, position={35, 35, 1209, 302}, y={"conEquSta.onBoi"}, range={15.0, 16.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="h"); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos new file mode 100644 index 0000000000..f91eb5d105 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.System5", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem5"); +createPlot(id=2, position={35, 35, 1209, 915}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, autoscale=true, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, range2={0.20000000000000004, 0.9000000000000001}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC", "degC"}); +createPlot(id=2, position={35, 35, 1209, 216}, y={"conBoiRet.yVal"}, range={360.0, 384.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="h"); +createPlot(id=2, position={35, 35, 1209, 281}, y={"conEquSta.onBoi", "conSysSta.onSys"}, range={360.0, 384.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}}, timeUnit="h"); + diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos new file mode 100644 index 0000000000..b44644b3dd --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos @@ -0,0 +1,5 @@ +simulateModel("IBPSA.Examples.Tutorial.CDL.System6", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem6"); +createPlot(id=2, position={35, 35, 1209, 915}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={15.0, 16.0, -50.0, 100.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC", "degC"}); +createPlot(id=2, position={35, 35, 1209, 303}, y={"conBoiRet.yVal", "conRadSup.yVal"}, range={360.0, 384.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, timeUnit="h"); +createPlot(id=2, position={35, 35, 1209, 302}, y={"conEquSta.onBoi", "conSysSta.onSys"}, range={360.0, 384.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}}, timeUnit="h"); + From d72353eb5b39956d5cd06450a0c433f39703763e Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Sat, 14 Dec 2024 00:04:09 +0000 Subject: [PATCH 10/15] Added Tutorial --- .../CDL/BaseClasses/PartialOpenLoop.mo | 373 +++ .../Tutorial/CDL/BaseClasses/package.mo | 12 + .../Tutorial/CDL/BaseClasses/package.order | 1 + .../Tutorial/CDL/Controls/BoilerReturn.mo | 87 + .../Tutorial/CDL/Controls/EquipmentOnOff.mo | 99 + .../CDL/Controls/OpenLoopBoilerReturn.mo | 69 + .../CDL/Controls/OpenLoopEquipmentOnOff.mo | 77 + .../CDL/Controls/OpenLoopRadiatorSupply.mo | 96 + .../CDL/Controls/OpenLoopSystemOnOff.mo | 67 + .../Tutorial/CDL/Controls/RadiatorSupply.mo | 158 ++ .../Tutorial/CDL/Controls/SystemOnOff.mo | 129 + .../CDL/Controls/Validation/BoilerReturn.mo | 38 + .../CDL/Controls/Validation/EquipmentOnOff.mo | 46 + .../CDL/Controls/Validation/RadiatorSupply.mo | 45 + .../CDL/Controls/Validation/SystemOnOff.mo | 48 + .../CDL/Controls/Validation/package.mo | 14 + .../CDL/Controls/Validation/package.order | 4 + .../Examples/Tutorial/CDL/Controls/package.mo | 4 + .../Tutorial/CDL/Controls/package.order | 9 + IBPSA/Examples/Tutorial/CDL/System1.mo | 83 + IBPSA/Examples/Tutorial/CDL/System2.mo | 224 ++ IBPSA/Examples/Tutorial/CDL/System3.mo | 189 ++ IBPSA/Examples/Tutorial/CDL/System4.mo | 160 ++ IBPSA/Examples/Tutorial/CDL/System5.mo | 154 ++ IBPSA/Examples/Tutorial/CDL/System6.mo | 160 ++ IBPSA/Examples/Tutorial/CDL/package.mo | 106 + IBPSA/Examples/Tutorial/CDL/package.order | 8 + .../CDL/System1/OpenLoopTemperatures.png | Bin 0 -> 24721 bytes .../CDL/System3/TemperaturesValve.png | Bin 0 -> 25693 bytes .../CDL/System4/TemperaturesControl.png | Bin 0 -> 35011 bytes .../CDL/System5/TemperaturesControl.png | Bin 0 -> 51185 bytes .../CDL/System6/TemperaturesControl.png | Bin 0 -> 49164 bytes .../Examples/Tutorial/CDL/schematics.pdf | Bin 0 -> 18394 bytes .../Examples/Tutorial/CDL/schematics.png | Bin 0 -> 145276 bytes .../Examples/Tutorial/CDL/schematics.svg | 2178 +++++++++++++++++ 35 files changed, 4638 insertions(+) create mode 100644 IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/package.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/package.order create mode 100644 IBPSA/Examples/Tutorial/CDL/System1.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/System2.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/System3.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/System4.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/System5.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/System6.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/package.mo create mode 100644 IBPSA/Examples/Tutorial/CDL/package.order create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System1/OpenLoopTemperatures.png create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System3/TemperaturesValve.png create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System4/TemperaturesControl.png create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System5/TemperaturesControl.png create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System6/TemperaturesControl.png create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.pdf create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.png create mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.svg diff --git a/IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo b/IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo new file mode 100644 index 0000000000..3596e9c1bc --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo @@ -0,0 +1,373 @@ +within IBPSA.Examples.Tutorial.CDL.BaseClasses; +partial model PartialOpenLoop "Partial model with open loop system" + extends Modelica.Icons.Example; + replaceable package MediumA = IBPSA.Media.Air "Medium model for air"; + replaceable package MediumW = IBPSA.Media.Water "Medium model for water"; + + parameter Modelica.Units.SI.HeatFlowRate Q_flow_nominal=20000 + "Nominal heat flow rate of radiator"; + parameter Modelica.Units.SI.Temperature TRadSup_nominal=273.15 + 50 + "Radiator nominal supply water temperature"; + parameter Modelica.Units.SI.Temperature TRadRet_nominal=273.15 + 40 + "Radiator nominal return water temperature"; + parameter Modelica.Units.SI.MassFlowRate mRad_flow_nominal=Q_flow_nominal/ + 4200/(TRadSup_nominal - TRadRet_nominal) + "Radiator nominal mass flow rate"; + + parameter Modelica.Units.SI.Temperature TBoiSup_nominal=273.15 + 70 + "Boiler nominal supply water temperature"; + parameter Modelica.Units.SI.Temperature TBoiRet_min=273.15 + 60 + "Boiler minimum return water temperature"; + parameter Modelica.Units.SI.MassFlowRate mBoi_flow_nominal=Q_flow_nominal/ + 4200/(TBoiSup_nominal - TBoiRet_min) "Boiler nominal mass flow rate"; + + parameter Modelica.Units.SI.MassFlowRate mRadVal_flow_nominal=Q_flow_nominal/ + 4200/(TBoiSup_nominal - TRadRet_nominal) + "Radiator nominal mass flow rate"; + + IBPSA.Fluid.MixingVolumes.MixingVolume vol( + redeclare package Medium = MediumA, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mA_flow_nominal, + V=V) + "Room air volume" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(G=20000/30) + "Thermal conductance with the ambient" + annotation (Placement(transformation(extent={{20,40},{40,60}}))); + parameter Modelica.Units.SI.Volume V=6*10*3 "Room volume"; + parameter Modelica.Units.SI.MassFlowRate mA_flow_nominal=V*1.2*6/3600 + "Nominal mass flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QRooInt_flow=4000 + "Internal heat gains of the room"; + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHea + "Prescribed heat flow" + annotation (Placement(transformation(extent={{20,70},{40,90}}))); + Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heaCap(C=2*V*1.2*1006) + "Heat capacity for furniture and walls" + annotation (Placement(transformation(extent={{60,50},{80,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTab( + extrapolation=IBPSA.Controls.OBC.CDL.Types.Extrapolation.Periodic, + smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + table=[-6, 0; + 8, QRooInt_flow; + 18, 0], + timeScale=3600) "Time table for internal heat gain" + annotation (Placement(transformation(extent={{-20,70},{0,90}}))); + IBPSA.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 rad( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + Q_flow_nominal=Q_flow_nominal, + T_a_nominal=TRadSup_nominal, + T_b_nominal=TRadRet_nominal) "Radiator" + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); + IBPSA.Fluid.Sensors.TemperatureTwoPort temSup(redeclare package Medium = MediumW, + m_flow_nominal=mRad_flow_nominal) "Supply water temperature" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-40}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temRoo( + T(displayUnit="degC")) + "Room temperature" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + origin={-40,30}))); + IBPSA.Fluid.Movers.FlowControlled_m_flow pumRad( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mRad_flow_nominal, + nominalValuesDefineDefaultPressureCurve=true) + "Pump for radiator" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-70}))); + + IBPSA.Fluid.FixedResistances.Junction mix( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal={mRadVal_flow_nominal,-mRad_flow_nominal,mRad_flow_nominal + - mRadVal_flow_nominal}, + dp_nominal={100,-8000,6750}) "Mixer between valve and radiators" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-110}))); + IBPSA.Fluid.FixedResistances.Junction spl( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal={mBoi_flow_nominal,-mRadVal_flow_nominal,-mBoi_flow_nominal}, + dp_nominal={200,-200,-50}) "Splitter of boiler loop bypass" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-190}))); + + IBPSA.Fluid.FixedResistances.Junction spl2( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + dp_nominal={0,0,0}, + m_flow_nominal={mRad_flow_nominal,-mRadVal_flow_nominal,-mRad_flow_nominal + + mRadVal_flow_nominal}) "Flow splitter in return from radiator" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={60,-110}))); + IBPSA.Fluid.FixedResistances.Junction mix2( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + dp_nominal={0,-200,0}, + m_flow_nominal={mRadVal_flow_nominal,-mBoi_flow_nominal,mBoi_flow_nominal}) + "Mixer" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={60,-190}))); + IBPSA.Fluid.FixedResistances.Junction spl4( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mRadVal_flow_nominal*{1,-1,-1}, + dp_nominal=200*{1,-1,-1}) "Splitter for radiator loop valve bypass" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={60,-150}))); + + IBPSA.Fluid.Movers.FlowControlled_m_flow pumBoi( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mBoi_flow_nominal, + nominalValuesDefineDefaultPressureCurve=true) + "Pump for boiler" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-280}))); + + + IBPSA.Fluid.Boilers.BoilerPolynomial boi( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mBoi_flow_nominal, + dp_nominal=2000, + Q_flow_nominal=Q_flow_nominal, + fue=IBPSA.Fluid.Data.Fuels.HeatingOilLowerHeatingValue()) "Boiler" + annotation (Placement(transformation(extent={{20,-320},{0,-300}}))); + + IBPSA.Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear valRad( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mRadVal_flow_nominal, + l={0.01,0.01}, + dpValve_nominal=6000) "Three-way valve for radiator loop" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-150}))); + + IBPSA.Fluid.Sources.Boundary_pT preSou(redeclare package Medium = MediumW, + nPorts=1) + "Source for pressure and to account for thermal expansion of water" + annotation (Placement(transformation(extent={{92,-320},{72,-300}}))); + IBPSA.Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear valBoi( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mBoi_flow_nominal, + l={0.01,0.01}, + dpValve_nominal=6000) "Three-way valve for boiler" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={60,-230}))); + IBPSA.Fluid.Sensors.TemperatureTwoPort temRet( + redeclare package Medium = MediumW, + m_flow_nominal=mBoi_flow_nominal) "Return water temperature" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={60,-280}))); + IBPSA.Fluid.FixedResistances.Junction spl1( + redeclare package Medium = MediumW, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal={mBoi_flow_nominal,-mBoi_flow_nominal,-mBoi_flow_nominal}, + dp_nominal={0,0,-200}) "Splitter" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-50,-230}))); + + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTOut + "Outdoor temperature sensor" + annotation (Placement(transformation(extent={{-318,20},{-298,40}}))); + + BoundaryConditions.WeatherData.ReaderTMY3 weaDat( + filNam=Modelica.Utilities.Files.loadResource("modelica://IBPSA/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos")) + "Weather data reader" + annotation (Placement(transformation(extent={{-380,60},{-360,80}}))); + BoundaryConditions.WeatherData.Bus weaBus "Weather data bus" + annotation (Placement(transformation(extent={{-320,60},{-300,80}}))); + Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut + "Outside temperature" + annotation (Placement(transformation(extent={{-260,60},{-240,80}}))); + +equation + connect(theCon.port_b, vol.heatPort) annotation (Line( + points={{40,50},{50,50},{50,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(preHea.port, vol.heatPort) annotation (Line( + points={{40,80},{50,80},{50,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(heaCap.port, vol.heatPort) annotation (Line( + points={{70,50},{50,50},{50,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(timTab.y[1], preHea.Q_flow) annotation (Line( + points={{2,80},{20,80}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(temSup.port_b, rad.port_a) annotation (Line( + points={{-50,-30},{-50,-10},{-5.55112e-16,-10}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(temRoo.port, vol.heatPort) annotation (Line( + points={{-30,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(rad.heatPortCon, vol.heatPort) annotation (Line( + points={{8,-2.8},{8,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(rad.heatPortRad, vol.heatPort) annotation (Line( + points={{12,-2.8},{12,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(pumRad.port_b, temSup.port_a) annotation (Line( + points={{-50,-60},{-50,-50}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(boi.port_b, pumBoi.port_a) annotation (Line( + points={{-5.55112e-16,-310},{-50,-310},{-50,-290}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(pumBoi.port_b, spl1.port_1) annotation (Line( + points={{-50,-270},{-50,-240}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(spl1.port_2, spl.port_1) annotation (Line( + points={{-50,-220},{-50,-200}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(spl.port_2, valRad.port_1) + annotation (Line( + points={{-50,-180},{-50,-160}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(valRad.port_2, mix.port_1) + annotation (Line( + points={{-50,-140},{-50,-120}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(spl1.port_3, valBoi.port_3) + annotation (Line( + points={{-40,-230},{50,-230}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(valBoi.port_2, temRet.port_a) + annotation (Line( + points={{60,-240},{60,-270}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(temRet.port_b, boi.port_a) annotation (Line( + points={{60,-290},{60,-310},{20,-310}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(boi.port_a, preSou.ports[1]) annotation (Line( + points={{20,-310},{72,-310}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(mix2.port_2, valBoi.port_1) + annotation (Line( + points={{60,-200},{60,-220}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(spl4.port_2, mix2.port_1) annotation (Line( + points={{60,-160},{60,-180}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(spl2.port_2, spl4.port_1) annotation (Line( + points={{60,-120},{60,-140}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(valRad.port_3, spl4.port_3) + annotation (Line( + points={{-40,-150},{50,-150}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(spl.port_3, mix2.port_3) annotation (Line( + points={{-40,-190},{50,-190}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(mix.port_3, spl2.port_3) annotation (Line( + points={{-40,-110},{50,-110}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(mix.port_2, pumRad.port_a) annotation (Line( + points={{-50,-100},{-50,-80}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(rad.port_b, spl2.port_1) annotation (Line( + points={{20,-10},{60,-10},{60,-100}}, + color={0,127,255}, + smooth=Smooth.None)); + + connect(weaDat.weaBus, weaBus) annotation (Line( + points={{-360,70},{-310,70}}, + color={255,204,51}, + thickness=0.5, + smooth=Smooth.None), Text( + textString="%second", + index=1, + extent={{6,3},{6,3}})); + connect(weaBus.TDryBul, TOut.T) annotation (Line( + points={{-310,70},{-262,70}}, + color={255,204,51}, + thickness=0.5, + smooth=Smooth.None), Text( + textString="%first", + index=-1, + extent={{-6,3},{-6,3}})); + connect(TOut.port, theCon.port_a) annotation (Line( + points={{-240,70},{-220,70},{-220,50},{20,50}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(TOut.port, senTOut.port) annotation (Line( + points={{-240,70},{-220,70},{-220,50},{-340,50},{-340,30},{-318,30}}, + color={191,0,0}, + smooth=Smooth.None)); + annotation (Documentation(info=" +

+This partial model implements the HVAC system model and a simple room, which is here modeled +as a first order response. (More detailed room models are available in +IBPSA.ThermalZones, +but for this tutorial it suffices to use this room model.) +The control inputs are not connected as these will be connected in the +tutorials that extend this model. +

+

+For instructions of how to build this model, see + +IBPSA.Examples.Tutorial.Boiler +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), +Diagram( + coordinateSystem( + preserveAspectRatio=false,extent={{-400,-360},{240, 100}}))); +end PartialOpenLoop; diff --git a/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo b/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo new file mode 100644 index 0000000000..9ace9f4d96 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo @@ -0,0 +1,12 @@ +within IBPSA.Examples.Tutorial.CDL; +package BaseClasses "Package that contains the model of the HVAC system and the building load" + extends Modelica.Icons.BasesPackage; + +annotation (preferredView="info", Documentation(info=" +

+This package contains base classes that are used to construct the models in + +IBPSA.Examples.Tutorial.CDL. +

+")); +end BaseClasses; diff --git a/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order b/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order new file mode 100644 index 0000000000..672535aee2 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order @@ -0,0 +1 @@ +PartialOpenLoop diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo b/IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo new file mode 100644 index 0000000000..6abd85c60f --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo @@ -0,0 +1,87 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block BoilerReturn "Control for boiler return" + parameter Real TSet( + final unit="K", + displayUnit="degC") = 333.15 + "Set point for boiler temperature"; + parameter Real k=0.1 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti=120 "Time constant of integrator block"; + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRet( + final unit="K", + displayUnit="degC") + "Return water temperature to boiler" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( + final unit="1") + "Valve control signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant T( + final k=TSet) + "Set point temperature" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPID( + final k=k, + final Ti=Ti, + reverseActing=false) "Controller for valve in boiler loop" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(conPID.y, yVal) + annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); + connect(conPID.u_s, T.y) + annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); + connect(TRet, conPID.u_m) annotation (Line(points={{-120,0},{-80,0},{-80,-50}, + {0,-50},{0,-12}}, color={0,0,127})); + annotation ( + defaultComponentName="conBoiRet", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-32,-30},{34,-86}}, + lineColor={255,255,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Text( + extent={{-88,22},{-40,-18}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TRet"), + Text( + extent={{40,24},{88,-16}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="yVal"), + Polygon( + points={{0,-62},{-12,-80},{14,-80},{0,-62}}, + pattern=LinePattern.None, + smooth=Smooth.None, + fillColor={255,255,0}, + fillPattern=FillPattern.Solid, + lineColor={0,0,0}), + Text( + textColor={0,0,255}, + extent={{-154,104},{146,144}}, + textString="%name")}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Controller that takes as an input the boiler return water temperature TRet +and outputs the valve control signal yVal. +The valve control signal is computed using a PI-controller that tracks a constant +set point of TSet. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end BoilerReturn; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo new file mode 100644 index 0000000000..d6efa70e6e --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo @@ -0,0 +1,99 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block EquipmentOnOff "Controller for equipment on/off control" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TBoi( + final unit="K", + displayUnit="degC") + "Boiler temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput onSys + "System on command" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onPum + "Pump on command" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onBoi + "Boiler on command" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + IBPSA.Controls.OBC.CDL.Logical.And and1 + "And operator to switch boiler on based on temperature and system on command" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Not not1 + "Negation of output signal, because boiler should be off if temperature exceed uHigh" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis hys( + uHigh=273.15 + 90, + uLow=273.15 + 70) "Hysteresis for on/off of boiler" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); +equation + + connect(TBoi, hys.u) + annotation (Line(points={{-120,60},{-62,60}}, color={0,0,127})); + connect(hys.y, not1.u) + annotation (Line(points={{-38,60},{-22,60}}, color={255,0,255})); + connect(onSys, onPum) + annotation (Line(points={{-120,-60},{120,-60}}, color={255,0,255})); + connect(and1.u1, not1.y) annotation (Line(points={{18,0},{10,0},{10,60},{2,60}}, + color={255,0,255})); + connect(and1.u2, onSys) annotation (Line(points={{18,-8},{10,-8},{10,-60},{ + -120,-60}}, color={255,0,255})); + connect(and1.y, onBoi) annotation (Line(points={{42,0},{60,0},{60,60},{120,60}}, + color={255,0,255})); + annotation ( + defaultComponentName="conEquSta", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-90,82},{-42,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TBoi"), + Text( + extent={{38,-38},{86,-78}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onPum"), + Text( + extent={{-92,-40},{-44,-80}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onSys"), + Text( + textColor={0,0,255}, + extent={{-148,104},{152,144}}, + textString="%name"), + Text( + extent={{44,82},{92,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onBoi")}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Controller that takes as an input the boiler water temperature TBoi +and the system on command onSys, and outputs +the on command for the pumps onPum and the boiler onBoi. +

+

+The pump on command is the same as the system on command. +The boiler is switched on if the boiler temperature TBoi falls below +70°C and if onSys=true, and it switches off +if either TBoi exceeds 90°C or if onSys=false. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end EquipmentOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo new file mode 100644 index 0000000000..ab54c74b09 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo @@ -0,0 +1,69 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block OpenLoopBoilerReturn "Open loop controller for boiler return" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRet( + final unit="K", + displayUnit="degC") + "Return water temperature to boiler" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( + final unit="1") + "Valve control signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con(k=1) + "Constant valve control signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(con.y, yVal) + annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); + annotation ( + defaultComponentName="conBoiRet", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-32,-30},{34,-86}}, + lineColor={255,255,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Text( + extent={{-88,22},{-40,-18}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TRet"), + Text( + extent={{40,24},{88,-16}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="yVal"), + Polygon( + points={{0,-62},{-12,-80},{14,-80},{0,-62}}, + pattern=LinePattern.None, + smooth=Smooth.None, + fillColor={255,255,0}, + fillPattern=FillPattern.Solid, + lineColor={0,0,0}), + Text( + textColor={0,0,255}, + extent={{-154,104},{146,144}}, + textString="%name")}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Open loop controller that outputs a constant control signal for the valve +of the boiler return. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end OpenLoopBoilerReturn; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo new file mode 100644 index 0000000000..c317465090 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo @@ -0,0 +1,77 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block OpenLoopEquipmentOnOff + "Open loop controller for equipment on/off control" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TBoi( + final unit="K", + displayUnit="degC") + "Boiler temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput onSys + "System on command" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onPum + "Pump on command" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onBoi + "Boiler on command" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con(k=true) + "Constant control signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + + connect(con.y, onBoi) annotation (Line(points={{12,0},{60,0},{60,60},{120,60}}, + color={255,0,255})); + connect(con.y, onPum) annotation (Line(points={{12,0},{60,0},{60,-60},{120, + -60}}, color={255,0,255})); + annotation ( + defaultComponentName="conEquSta", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-148,104},{152,144}}, + textString="%name"), + Text( + extent={{-94,-40},{-46,-80}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onSys"), + Text( + extent={{36,-38},{84,-78}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onPum"), + Text( + extent={{42,82},{90,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onBoi"), + Text( + extent={{-92,82},{-44,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TBoi")}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Open loop controller that outputs a constant control signal for the system on command. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end OpenLoopEquipmentOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo new file mode 100644 index 0000000000..4b3cc6119b --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo @@ -0,0 +1,96 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block OpenLoopRadiatorSupply + "Open loop controller for mixing valve in radiator loop" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( + final unit="K", + displayUnit="degC") + "Room air temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TSup( + final unit="K", + displayUnit="degC") + "Measured supply water temperature" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( + final unit="1") + "Valve control signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con(k=1) + "Constant valve control signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(con.y, yVal) + annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); + annotation ( + defaultComponentName="conRadSup", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Text( + extent={{-90,82},{-42,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TRoo"), + Text( + extent={{40,24},{88,-16}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="yVal"), + Text( + extent={{-92,-40},{-44,-80}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TOut"), + Text( + textColor={0,0,255}, + extent={{-154,104},{146,144}}, + textString="%name"), + Polygon( + points={{38,0},{-24,36},{-24,-32},{38,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-30,2}, + rotation=360), + Polygon( + points={{38,0},{-24,36},{-24,-32},{38,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={8,-36}, + rotation=90), + Polygon( + points={{38,0},{-24,36},{-24,-32},{38,0}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + origin={8,40}, + rotation=270)}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Open loop controller that outputs a constant control signal for the mixing valve of the radiator loop. +

+", revisions=" +
    +
  • +March 5, 2020, by Michael Wetter:
    +Corrected typo in comments.
    +This is for +Buildings, issue 1810. +
  • +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end OpenLoopRadiatorSupply; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo new file mode 100644 index 0000000000..956bfad989 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo @@ -0,0 +1,67 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block OpenLoopSystemOnOff + "Open loop controller for system on/off" + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TOut( + final unit="K", + displayUnit="degC") + "Outdoor air temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( + final unit="K", + displayUnit="degC") + "Room air temperature" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onSys + "System on command" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con(k=true) + "Constant control signal" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(con.y, onSys) + annotation (Line(points={{12,0},{120,0}}, color={255,0,255})); + annotation ( + defaultComponentName="conSysSta", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Text( + extent={{-90,82},{-42,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TOut"), + Text( + extent={{40,24},{88,-16}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onSys"), + Text( + extent={{-92,-40},{-44,-80}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TRoo"), + Text( + textColor={0,0,255}, + extent={{-152,104},{148,144}}, + textString="%name")}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Open loop controller that outputs a constant control signal for the system on command. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end OpenLoopSystemOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo b/IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo new file mode 100644 index 0000000000..828ef5c59a --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo @@ -0,0 +1,158 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block RadiatorSupply "Controller for mixing valve in radiator loop" + + parameter Real TSupMin( + final unit="K", + displayUnit="degC") = 294.15 + "Minimum supply water temperature"; + parameter Real TSupMax( + final unit="K", + displayUnit="degC") = 323.15 + "Maximum supply water temperature"; + parameter Real TRooMin( + final unit="K", + displayUnit="degC") = 292.15 + "Room air temperature at which supply water temperature is at TSupMax"; + + parameter Real k=0.1 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti=120 "Time constant of integrator block"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( + final unit="K", + displayUnit="degC") + "Room air temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TSup( + final unit="K", + displayUnit="degC") + "Measured supply water temperature" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( + final unit="1") + "Valve control signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.PID conPIDRad( + final k=k, + final Ti=Ti, + final yMax=1, + final yMin=0, + controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI) + "Controller for valve in radiator loop" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Line TSetSup + "Setpoint for supply water temperature" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TMinSup( + final k=TSupMin) + "Minimum heating supply temperature" + annotation (Placement(transformation(extent={{-50,-40},{-30,-20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TMaxSup( + final k=TSupMax) + "Maximum heating supply temperature" + annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TMinRoo( + final k=TRooMin) + "Minimum room air temperature" + annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); +equation + connect(TMinSup.y,TSetSup. x2) annotation (Line(points={{-28,-30},{-20,-30},{ + -20,-4},{-12,-4}}, color={0,0,127})); + connect(TMinSup.y,TSetSup. f2) annotation (Line(points={{-28,-30},{-20,-30},{ + -20,-8},{-12,-8}}, color={0,0,127})); + connect(TMaxSup.y,TSetSup. f1) annotation (Line(points={{-28,30},{-24,30},{ + -24,4},{-12,4}}, color={0,0,127})); + connect(TSetSup.x1,TMinRoo. y) annotation (Line(points={{-12,8},{-20,8},{-20, + 70},{-28,70}}, color={0,0,127})); + connect(conPIDRad.u_s,TSetSup. y) annotation (Line(points={{38,0},{12,0}}, + color={0,0,127})); + connect(TSetSup.u, TRoo) annotation (Line(points={{-12,0},{-70,0},{-70,60},{-120, + 60}}, color={0,0,127})); + connect(TSup, conPIDRad.u_m) + annotation (Line(points={{-120,-60},{50,-60},{50,-12}}, color={0,0,127})); + connect(conPIDRad.y, yVal) + annotation (Line(points={{62,0},{120,0},{120,0}}, color={0,0,127})); + annotation ( + defaultComponentName="conRadSup", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-90,82},{-42,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TRoo"), + Text( + extent={{40,24},{88,-16}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="yVal"), + Text( + extent={{-92,-40},{-44,-80}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TSup"), + Text( + textColor={0,0,255}, + extent={{-154,104},{146,144}}, + textString="%name"), + Polygon( + points={{38,0},{-24,36},{-24,-32},{38,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-30,2}, + rotation=360), + Polygon( + points={{38,0},{-24,36},{-24,-32},{38,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={8,-36}, + rotation=90), + Polygon( + points={{38,0},{-24,36},{-24,-32},{38,0}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + origin={8,40}, + rotation=270)}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Controller that takes as an input the room air temperature TRoo and +the supply water temperature TSup, +and outputs the commanded mixing valve position yVal. +

+

+Based on the room air temperature TRoo, and the user adjustable parameters +for the minimum supply water temperature TSupMin, +the maximum supply water temperature TSupMax +and the room air temperature TRooMin +at which the supply water temperature is at TSupMax, +the controller computes a set point for the supply water temperature. +This set point is then used with the measured supply water temperature TSup +as an input to a PI-controller that computes the commanded valve position yVal. +

+", revisions=" +
    +
  • +March 5, 2020, by Michael Wetter:
    +Corrected typo in comments.
    +This is for +Buildings, issue 1810. +
  • +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end RadiatorSupply; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo new file mode 100644 index 0000000000..5d59323465 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo @@ -0,0 +1,129 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +block SystemOnOff "Controller for system on/off" + parameter Real TRooSet( + final unit="K", + displayUnit="degC") = 293.65 + "Room air temperature set point"; + parameter Real dTRoo( + min=0.5, + final unit="K") = 1 + "Room air temperature dead band"; + parameter Real TOutLow( + final unit="K", + displayUnit="degC") = 289.15 + "Outdoor temperature below which system is allowed to switch on"; + + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TOut( + final unit="K", + displayUnit="degC") + "Outdoor air temperature" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( + final unit="K", + displayUnit="degC") + "Room air temperature" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); + IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onSys + "System on command" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetOut(k=TOutLow + 0.5) + "Set point for outdoor air temperature plus half the dead band" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetRoo(k=TRooSet) + "Set point for room air temperature" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + IBPSA.Controls.OBC.CDL.Logical.And and1 + "And operator to switch boiler on based on temperature and system on command" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub "Inputs different" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis onTOut( + final uLow=-0.5, + final uHigh=0.5) "On/off control based on outside air temperature" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + IBPSA.Controls.OBC.CDL.Reals.Subtract sub1 "Inputs different" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + IBPSA.Controls.OBC.CDL.Reals.Hysteresis onTRoo( + final uLow=-0.5, + final uHigh=0.5) "On/off control based on room air temperature" + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); +equation + connect(and1.y, onSys) + annotation (Line(points={{82,0},{120,0}}, color={255,0,255})); + connect(TSetOut.y, sub.u1) annotation (Line(points={{-58,80},{-50,80},{-50,66}, + {-42,66}}, color={0,0,127})); + connect(TOut, sub.u2) annotation (Line(points={{-120,60},{-60,60},{-60,54},{-42, + 54}}, color={0,0,127})); + connect(sub.y, onTOut.u) + annotation (Line(points={{-18,60},{-2,60}}, color={0,0,127})); + connect(onTOut.y, and1.u1) annotation (Line(points={{22,60},{40,60},{40,0},{58, + 0}}, color={255,0,255})); + connect(TSetRoo.y, sub1.u1) annotation (Line(points={{-58,-30},{-50,-30},{-50, + -54},{-42,-54}}, color={0,0,127})); + connect(TRoo, sub1.u2) annotation (Line(points={{-120,-60},{-60,-60},{-60,-66}, + {-42,-66}}, color={0,0,127})); + connect(sub1.y, onTRoo.u) + annotation (Line(points={{-18,-60},{-2,-60}}, color={0,0,127})); + connect(onTRoo.y, and1.u2) annotation (Line(points={{22,-60},{40,-60},{40,-8}, + {58,-8}}, color={255,0,255})); + annotation ( + defaultComponentName="conSysSta", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-90,82},{-42,42}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TOut"), + Text( + extent={{40,24},{88,-16}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="onSys"), + Text( + extent={{-92,-40},{-44,-80}}, + textColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + textString="TRoo"), + Text( + textColor={0,0,255}, + extent={{-152,104},{148,144}}, + textString="%name")}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Controller that takes as an input the outside air temperature TOut and +the room air temperature TRoo, +and outputs the system on command onSys. +

+

+The system on command is true if both conditions are satisfied: +The outside air temperature is below a limit of TOutLow(=16°C, adjustable) +and the room air temperature is below TRooSet-dTRoo/2, +where TRooSet is the room air temperature setpoint (=20.5°C, adjustable) +and dTRoo is the deadband (=1 Kelvin, adjustable). +Otherwise, the system on command is false. +

+", revisions=" +
    +
  • +December 11, 2023, by Jianjun Hu:
    +Reimplemented on-off control to avoid using the obsolete OnOffController. +This is for +#3595. +
  • +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end SystemOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo new file mode 100644 index 0000000000..394fc0261c --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo @@ -0,0 +1,38 @@ +within IBPSA.Examples.Tutorial.CDL.Controls.Validation; +model BoilerReturn + "Validation model for the return temperature controller of the boiler" + extends Modelica.Icons.Example; + + IBPSA.Examples.Tutorial.CDL.Controls.BoilerReturn conBoiRet + "Controller for boiler return water temperature" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TRet( + height=50, + duration=3600, + offset=293.15) "Return water temperature" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +equation + connect(TRet.y, conBoiRet.TRet) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + annotation ( + Documentation(info=" +

+Validation model for the boiler return water temperature controller. +The input to the controller is a ramp signal of increasing measured return water temperature. +The validation shows that as the temperature crosses the set point, the valve opens. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), +__Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos" + "Simulate and plot"), + experiment( + StopTime=3600, + Tolerance=1e-06)); +end BoilerReturn; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo new file mode 100644 index 0000000000..c7fd1f55ee --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo @@ -0,0 +1,46 @@ +within IBPSA.Examples.Tutorial.CDL.Controls.Validation; +model EquipmentOnOff + "Validation model for the equipment on/off controller" + extends Modelica.Icons.Example; + + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TBoi( + height=40, + duration=3600, + offset=333.15) "Boiler temperature" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Examples.Tutorial.CDL.Controls.EquipmentOnOff + conEquSta "Controller for equipment on/off" + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse onSys( + period=600) + "System on signal" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); +equation + connect(TBoi.y, conEquSta.TBoi) annotation (Line(points={{-38,30},{-24,30},{-24, + 6},{-10,6}}, color={0,0,127})); + connect(onSys.y, conEquSta.onSys) annotation (Line(points={{-38,-10},{-24,-10}, + {-24,-6},{-10,-6}}, color={255,0,255})); + annotation ( + Documentation(info=" +

+Validation model for the equipment on/off controller. +The input to the controller is a ramp signal of increasing measured boiler water temperature, +and a on/off signal for the overall system. +The validation shows that the pumps are on/off based on the overall system, and the boiler is +also on/off based on this system unless the return water temperature exceeds 90°C. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), +__Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos" + "Simulate and plot"), + experiment( + StopTime=3600, + Tolerance=1e-06)); +end EquipmentOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo new file mode 100644 index 0000000000..10680995d0 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo @@ -0,0 +1,45 @@ +within IBPSA.Examples.Tutorial.CDL.Controls.Validation; +model RadiatorSupply + "Validation model for the valve of the radiator supply" + extends Modelica.Icons.Example; + + IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TRoo( + height=-4, + duration=3600, + offset=297.15) "Room air temperature" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + IBPSA.Examples.Tutorial.CDL.Controls.RadiatorSupply + conRadSup "Controller for radiator supply water temperature" + annotation (Placement(transformation(extent={{10,-10},{30,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TSup( + amplitude=20, + freqHz=1/720, + offset=303.15) "Measured supply water temperature" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); +equation + connect(TRoo.y, conRadSup.TRoo) annotation (Line(points={{-38,30},{-20,30},{-20, + 6},{8,6}}, color={0,0,127})); + connect(conRadSup.TSup, TSup.y) annotation (Line(points={{8,-6},{-16,-6},{-16, + -30},{-38,-30}}, color={0,0,127})); + annotation ( + Documentation(info=" +

+Validation model for the boiler return water temperature controller. +The input to the controller is a ramp signal of increasing measured return water temperature. +The validation shows that as the temperature crosses the set point, the valve opens. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), +__Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos" + "Simulate and plot"), + experiment( + StopTime=3600, + Tolerance=1e-06)); +end RadiatorSupply; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo new file mode 100644 index 0000000000..c7fdf61d7e --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo @@ -0,0 +1,48 @@ +within IBPSA.Examples.Tutorial.CDL.Controls.Validation; +model SystemOnOff + "Validation model for the system on/off controller" + extends Modelica.Icons.Example; + + IBPSA.Examples.Tutorial.CDL.Controls.SystemOnOff + conSysSta "Controller for system on/off" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOut( + amplitude=5, + freqHz=1/720, + offset=290.15) "Outside air temperature" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TRoo( + amplitude=4, + freqHz=1/720, + phase=1.5707963267949, + offset=293.15) "Room air temperature" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); +equation + connect(TOut.y, conSysSta.TOut) annotation (Line(points={{-38,20},{-20,20},{-20, + 6},{-2,6}}, color={0,0,127})); + connect(TRoo.y, conSysSta.TRoo) annotation (Line(points={{-38,-20},{-20,-20},{ + -20,-6},{-2,-6}}, color={0,0,127})); + annotation ( + Documentation(info=" +

+Validation model for the system on/off controller. +The input to the controller are time varying signals for the outdoor air temperature +and the room air temperature. +The validation shows that the system is commanded on (onSys=true) if +the outdoor air temperature and the room air temperature are both low. +

+", revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), +__Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos" + "Simulate and plot"), + experiment( + StopTime=3600, + Tolerance=1e-06)); +end SystemOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo new file mode 100644 index 0000000000..fd914ccf61 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo @@ -0,0 +1,14 @@ +within IBPSA.Examples.Tutorial.CDL.Controls; +package Validation + extends Modelica.Icons.ExamplesPackage; + + annotation (Documentation(info=" +

+This package contains models that validate the controls models. +The examples plot various outputs, which have been verified against +analytical solutions or by inspecting their change due to parametric changes. +These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+")); +end Validation; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order new file mode 100644 index 0000000000..4042fc5c1a --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order @@ -0,0 +1,4 @@ +BoilerReturn +EquipmentOnOff +RadiatorSupply +SystemOnOff diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/package.mo b/IBPSA/Examples/Tutorial/CDL/Controls/package.mo new file mode 100644 index 0000000000..b3782b7d8a --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/package.mo @@ -0,0 +1,4 @@ +within IBPSA.Examples.Tutorial.CDL; +package Controls "Package with the controllers used in the tutorial" +extends Modelica.Icons.VariantsPackage; +end Controls; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/package.order b/IBPSA/Examples/Tutorial/CDL/Controls/package.order new file mode 100644 index 0000000000..7af42a30da --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/Controls/package.order @@ -0,0 +1,9 @@ +BoilerReturn +EquipmentOnOff +OpenLoopBoilerReturn +OpenLoopEquipmentOnOff +OpenLoopRadiatorSupply +OpenLoopSystemOnOff +RadiatorSupply +SystemOnOff +Validation diff --git a/IBPSA/Examples/Tutorial/CDL/System1.mo b/IBPSA/Examples/Tutorial/CDL/System1.mo new file mode 100644 index 0000000000..01b6831d82 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/System1.mo @@ -0,0 +1,83 @@ +within IBPSA.Examples.Tutorial.CDL; +model System1 "Open loop model" + extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; + + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y1(k=mRad_flow_nominal) + "Control signal of 1" + annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y2(k=1) + "Control signal of 1" + annotation (Placement(transformation(extent={{100,-210},{120,-190}}))); + + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y3(k=1) + "Constant control signal of 1" + annotation (Placement(transformation(extent={{-120,-260},{-100,-240}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y4(k=1) + "Control signal of 1" + annotation (Placement(transformation(extent={{-120,-160},{-100,-140}}))); + IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y5(k=mBoi_flow_nominal) + "Control signal of 1" + annotation (Placement(transformation(extent={{-120,-290},{-100,-270}}))); +equation + connect(y1.y, pumRad.m_flow_in) + annotation (Line(points={{-98,-70},{-62,-70}}, color={0,0,127})); + connect(y3.y, boi.y) annotation (Line(points={{-98,-250},{32,-250},{32,-302},{ + 22,-302}}, color={0,0,127})); + connect(y2.y, valBoi.y) annotation (Line(points={{122,-200},{130,-200},{130,-230}, + {72,-230}}, color={0,0,127})); + connect(y4.y, valRad.y) + annotation (Line(points={{-98,-150},{-62,-150}}, color={0,0,127})); + connect(y5.y, pumBoi.m_flow_in) annotation (Line(points={{-98,-280},{-80,-280}, + {-80,-280},{-62,-280}}, color={0,0,127})); + annotation (Documentation(info=" +

+This model extends from the open loop partial model + +IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop, +which implements the HVAC system model and a simple room. +In this partial model, the room is modeled +as a first order response. +

+

Implementation

+

+To set control inputs, we instantiated + +IBPSA.Controls.OBC.CDL.Reals.Sources.Constant +and connected them to the pumps, the boiler and the valves. +

+

Exercise

+

+Create a model, such as this model, that extends from + +IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop +and adds constant input signals for the valves, pumps and the boiler. +Valves should be fully open (y=1), the boiler should be operating (y=1) +and the mass flow rates of the pumps should be set to the parameter value of +mRad_flow_nominal and mBoi_flow_nominal. +

+

+Simulate the model for January 15 to 16 and plot the open loop temperatures +as shown below, which corresponds to a start time of 15*24*3600=1296000 seconds and a +stop time of 1382400 seconds. +

+

+\"Open +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos" + "Simulate and plot"), + experiment( + StartTime=1296000, + StopTime=1382400, + Tolerance=1e-06)); +end System1; diff --git a/IBPSA/Examples/Tutorial/CDL/System2.mo b/IBPSA/Examples/Tutorial/CDL/System2.mo new file mode 100644 index 0000000000..02bf449ef4 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/System2.mo @@ -0,0 +1,224 @@ +within IBPSA.Examples.Tutorial.CDL; +model System2 "Open loop model with control architecture implemented" + extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; + + Controls.OpenLoopBoilerReturn conBoiRet + "Controller for boiler return water temperature" + annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); + Controls.OpenLoopSystemOnOff conSysSta + "Controller that switches the system on and off" + annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); + Controls.OpenLoopRadiatorSupply conRadSup + "Controller for the mixing valve for the radiator supply water" + annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); + Controls.OpenLoopEquipmentOnOff conEquSta + "Controller that switches the equipment on and off" + annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( + realTrue=mRad_flow_nominal) + "Type conversion for radiator pump signal" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( + realTrue=mBoi_flow_nominal) + "Type conversion for boiler pump signal" + annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( + realTrue=1) + "Type conversion for boiler signal" + annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); +equation + connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, + {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); + connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, + -216},{-120,-280},{-102,-280}}, color={255,0,255})); + connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, + -70},{-120,-216},{-178,-216}}, color={255,0,255})); + connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, + -250},{-108,-204},{-178,-204}}, color={255,0,255})); + connect(radPumCon.y, pumRad.m_flow_in) + annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); + connect(boiPumCon.y, pumBoi.m_flow_in) + annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); + connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, + -302},{22,-302}}, color={0,0,127})); + connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62, + -150}}, color={0,0,127})); + connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240, + -204},{-240,-302},{-1,-302}}, color={0,0,127})); + connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280, + -44},{-280,30},{-298,30}}, color={0,0,127})); + connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268, + -144},{-268,30},{-50,30}}, color={0,0,127})); + connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268, + -56},{-268,30},{-50,30}}, color={0,0,127})); + connect(temRet.T, conBoiRet.TRet) + annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); + connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140, + -280},{140,-230},{72,-230}}, color={0,0,127})); + connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210, + -40},{-210,-156},{-202,-156}}, color={0,0,127})); + annotation (Documentation(info=" +

+In this step, we added the control architecture. +How the control is partitioned into various subcontrollers depends usually on +the need to avoid communication over the network and on how control is distributed to +different field controllers. Here, we +used the four controllers indicated by the shaded background in the figure of + +IBPSA.Examples.Tutorial.CDL. +One controller switches the overall system on and off, +one switches the boiler on and off, +one tracks the supply water temperature to the room and +one tracks the return water temperature that is fed to the boiler. +

+

Implementation

+

+This model was built as follows: +

+
    +
  1. +

    +First, we determined what functionality should be implemented in which controller, and what the inputs and outputs of the controllers are. +In this example, we used these controllers: +

    +
      +
    • +

      +Boiler return water controller, with input being the return water temperature TRet and output being the valve control signal yVal. +

      +
    • +
    • +

      +Radiator loop temperature controller, with input being the measured supply water temperature TSup, +the measured room air temperature TRoo and output being the valve control signal yVal. +

      +
    • +
    • +

      +System on/off controller, with inputs being the outdoor temperature TOut and the +room air temperature TRoo, and output being the system on/off signal onSys. +Note that how inputs and outputs are named can simplify usability. For example, we called the output onSys +so that a value of true is clearly understood as the system being on. If we had called it +y, then it would not have been clear what a value of true means. +

      +
    • +
    • +

      +Equipment controller, with inputs being the system on/off command and the boiler temperature, +and outputs being +the pump on/off signal onPum and the boiler on/off signal onBoi. +

      +
    • +
    +
  2. +
  3. +

    +To organize our code, we created package that we called Controls. +

    +
  4. +
  5. +

    +Next, we added the open loop controller for the boiler return water temperature. +This controller is implemented in + +IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopBoilerReturn. +To implement it, we created a Modelica block, and added an input, using a + +IBPSA.Controls.OBC.CDL.Interfaces.RealInput, called it TRet +for the measured return water temperature, and a + +IBPSA.Controls.OBC.CDL.Interfaces.RealOutput +for the valve control signal, which we called yVal. +

    +

    +To output the valve control signal, which we set for now to a constant value of 1, +we used an instance of + +IBPSA.Controls.OBC.CDL.Reals.Sources.Constant, +set its parameter to 1, and connected it to the output. +

    +

    +At this stage, because the control is open loop, we leave the input of the controller unconnected. +

    +

    +Looking at the Modelica file shows that we also added documentation in an info section, +a defaultComponentName, as well as graphical elements so that it is easily distinguishable +in a schematic diagram. +We also added the unit and displayUnit attributes. +

    +

    +In the next step of this tutorial, we will provide an actual implementation of the controller. +To better distinguish the open loop controller from the closed loop controller, we +color the icon of open loop controllers grey, and will change this color to white when we implement the actual control logic. +

    +
  6. +
  7. +

    +We did a similar process to add the other three open loop controllers. As before, we added all +inputs and outputs, and set the outputs to a constant. +

    +
  8. +
  9. +

    +Lastly, we instantiated these four controllers in the system model. +Because the pumps and the boiler take as a control input a real-valued signal, we used + +IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal to convert between the boolean-valued signal +and the real-valued inputs of these components. Whether this conversion is part of the +controller or done outside the controller is an individual design decision. +

    +
  10. +
+

Exercise

+

+Create a model, such as this model. +To do so, +

+
    +
  1. +

    +Copy + +IBPSA.Examples.Tutorial.CDL.System1. +

    +
  2. +
  3. +

    +Implement all four open loop controllers. +

    +
  4. +
  5. +

    +Delete the constant control inputs, instantiate the open loop controllers, +convert the signal as needed from Boolean to Real, +and connect the control inputs and outputs. +

    +
  6. +
+

+Simulate the system to verify that you get the response shown below. +As we have not changed any of the control logic, simulating the system should give the same +response as for + +IBPSA.Examples.Tutorial.CDL.System1. +

+

+\"Open +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos" + "Simulate and plot"), + experiment( + StartTime=1296000, + StopTime=1382400, + Tolerance=1e-06)); +end System2; diff --git a/IBPSA/Examples/Tutorial/CDL/System3.mo b/IBPSA/Examples/Tutorial/CDL/System3.mo new file mode 100644 index 0000000000..099ba9315e --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/System3.mo @@ -0,0 +1,189 @@ +within IBPSA.Examples.Tutorial.CDL; +model System3 "Open loop model with boiler return temperature control" + extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; + + Controls.BoilerReturn conBoiRet + "Controller for boiler return water temperature" + annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); + Controls.OpenLoopSystemOnOff conSysSta + "Controller that switches the system on and off" + annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); + Controls.OpenLoopRadiatorSupply conRadSup + "Controller for the mixing valve for the radiator supply water" + annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); + Controls.OpenLoopEquipmentOnOff conEquSta + "Controller that switches the equipment on and off" + annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( + realTrue=mRad_flow_nominal) + "Type conversion for radiator pump signal" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( + realTrue=mBoi_flow_nominal) + "Type conversion for boiler pump signal" + annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( + realTrue=1) + "Type conversion for boiler signal" + annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); +equation + connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, + {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); + connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, + -216},{-120,-280},{-102,-280}}, color={255,0,255})); + connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, + -70},{-120,-216},{-178,-216}}, color={255,0,255})); + connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, + -250},{-108,-204},{-178,-204}}, color={255,0,255})); + connect(radPumCon.y, pumRad.m_flow_in) + annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); + connect(boiPumCon.y, pumBoi.m_flow_in) + annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); + connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, + -302},{22,-302}}, color={0,0,127})); + connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62, + -150}}, color={0,0,127})); + connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, + {-240,-302},{-1,-302}}, color={0,0,127})); + connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, + {-280,30},{-298,30}}, color={0,0,127})); + connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268, + -144},{-268,30},{-50,30}}, + color={0,0,127})); + connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, + {-268,30},{-50,30}}, color={0,0,127})); + connect(temRet.T, conBoiRet.TRet) + annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); + connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, + {140,-230},{72,-230}}, color={0,0,127})); + + connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210, + -40},{-210,-156},{-202,-156}}, color={0,0,127})); + annotation (Documentation(info=" +

+In this step, we added the controller for the boiler return water temperature. +

+

Implementation

+

+This model was built as follows: +

+
    +
  1. +

    +First, we copied the controller + +IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopBoilerReturn +to create the block + +IBPSA.Examples.Tutorial.CDL.Controls.BoilerReturn. +

    +
  2. +
  3. +

    +In this new block, we used a constant output signal + +IBPSA.Controls.OBC.CDL.Reals.Sources.Constant +and a PID controller + +IBPSA.Controls.OBC.CDL.Reals.PID, +which we configured as a PI-controller. +

    +

    +We set the controller logic to reverse action. That is because the tracking +error is conventionally computed as the difference between the set point value +and the sensed value. In our example, if the return temperature is lower than the set point, +i.e., if the tracking error is positive, the valve control signal must tend toward zero, +i.e., the valve bypass port must open. +That means that the unbounded control signal must tend toward negative values so +that the bounded output signal tends toward its minimum value. Binding a positive +tracking error to a negative unbounded control signal or to the minimum value +of the output signal requires a reverse action logic. +

    +

    +Additionally we set the proportional gain to 0.1 as then, in absence of the integral action, +a control error of 10 Kelvin changes the control output by 1. +We set the time constant to 120 seconds, which is about the time it takes to open +and close a valve. +These values give typically good closed loop performance. +

    +

    +As the control error is in Kelvin, which is typically of the order of 1 +to 10, there is no need to normalize the control input. (If pressure were used, it would make sense +to divide the measured signal and the set point so that the control error is usually of the order of one, +which makes tuning easier.) +

    +
  4. +
  5. +

    +To allow this controller to be tuned, we exposed at the top-level the parameters +for the set point temperature and the control gains. +

    +
  6. +
  7. +

    +While the controller + +IBPSA.Examples.Tutorial.CDL.Controls.BoilerReturn +is very simple, for demonstration purposes we also implemented a validation model for this controller. +This is done in + +IBPSA.Examples.Tutorial.CDL.Controls.Validation.BoilerReturn. +Such validation models help detect implementation errors which may be difficult to diagnose once the controller +is used as part of a larger system model. In our experience, implementing small scale validation tests leads to better +code and overall faster development as errors are detected early on when they can be corrected quickly. +For more information about how to implement a validation model, see the +Modelica Buildings Library User Guide. +

    +
  8. +
+

Exercise

+

+Create a model, such as this model. +To do so, +

+
    +
  1. +

    +Copy + +IBPSA.Examples.Tutorial.CDL.System2. +

    +
  2. +
  3. +

    +Implement the controller for the boiler return water temperature. +

    +

    +Make a small unit test to verify that the controller is implemented correctly. +

    +
  4. +
  5. +

    +Use this new controller instead of the open loop controller conBoiRet. +

    +
  6. +
+

+Simulate the system to verify that the valve is controlled to maintain a return water temperature +of at least 60°C as shown below. +

+

+\"Open +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos" + "Simulate and plot"), + experiment( + StartTime=1296000, + StopTime=1382400, + Tolerance=1e-06)); +end System3; diff --git a/IBPSA/Examples/Tutorial/CDL/System4.mo b/IBPSA/Examples/Tutorial/CDL/System4.mo new file mode 100644 index 0000000000..8d09d69375 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/System4.mo @@ -0,0 +1,160 @@ +within IBPSA.Examples.Tutorial.CDL; +model System4 "Open loop model with equipment on/off control" + extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; + + Controls.BoilerReturn conBoiRet + "Controller for boiler return water temperature" + annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); + Controls.OpenLoopSystemOnOff conSysSta + "Controller that switches the system on and off" + annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); + Controls.OpenLoopRadiatorSupply conRadSup + "Controller for the mixing valve for the radiator supply water" + annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); + Controls.EquipmentOnOff conEquSta + "Controller that switches the equipment on and off" + annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( + realTrue=mRad_flow_nominal) + "Type conversion for radiator pump signal" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( + realTrue=mBoi_flow_nominal) + "Type conversion for boiler pump signal" + annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( + realTrue=1) + "Type conversion for boiler signal" + annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); +equation + connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, + {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); + connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, + -216},{-120,-280},{-102,-280}}, color={255,0,255})); + connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, + -70},{-120,-216},{-178,-216}}, color={255,0,255})); + connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, + -250},{-108,-204},{-178,-204}}, color={255,0,255})); + connect(radPumCon.y, pumRad.m_flow_in) + annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); + connect(boiPumCon.y, pumBoi.m_flow_in) + annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); + connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, + -302},{22,-302}}, color={0,0,127})); + connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62, + -150}}, color={0,0,127})); + connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, + {-240,-302},{-1,-302}}, color={0,0,127})); + connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, + {-280,30},{-298,30}}, color={0,0,127})); + connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268, + -144},{-268,30},{-50,30}}, + color={0,0,127})); + connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, + {-268,30},{-50,30}}, color={0,0,127})); + connect(temRet.T, conBoiRet.TRet) + annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); + connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, + {140,-230},{72,-230}}, color={0,0,127})); + + connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210, + -40},{-210,-156},{-202,-156}}, color={0,0,127})); + annotation (Documentation(info=" +

+In this step, we added the controller for the boiler on/off control. +

+

Implementation

+

+This model was built as follows: +

+
    +
  1. +

    +First, we copied the controller + +IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopEquipmentOnOff +to create the block + +IBPSA.Examples.Tutorial.CDL.Controls.EquipmentOnOff. +

    +
  2. +
  3. +

    +In this new block, we used a hysteresis block + +IBPSA.Controls.OBC.CDL.Reals.Hysteresis to switch the boiler, +and negated its output because the boiler needs to be off if the temperature exceeds the +value uHigh of this hysteresis. +We also used an instance of + +IBPSA.Controls.OBC.CDL.Logical.And +to switch the boiler on only if the system control signal is on. +Otherwise, the boiler would be kept warm in summer. +(Note that in the simulations, the boiler has no heat loss to the ambient and, hence, if +the boiler and its circulation pump are switched off, its temperature remains constant. +To model heat losses to the ambient, the heat port boi.heatPort +would need to be connected to a model that simulates heat conduction to ambient conditions.) +

    +
  4. +
  5. +

    +We also implemented the open loop validation + +IBPSA.Examples.Tutorial.CDL.Controls.Validation.EquipmentOnOff +to ensure that the controller is implemented correctly. +

    +
  6. +
+

Exercise

+

+Create a model, such as this model. +To do so, +

+
    +
  1. +

    +Copy + +IBPSA.Examples.Tutorial.CDL.System3. +

    +
  2. +
  3. +

    +Implement the controller for the equipment on/off control. +

    +

    +Make a small unit test to verify that the controller is implemented correctly. +

    +
  4. +
  5. +

    +Use this new controller instead of the open loop controller conEquSta. +

    +
  6. +
+

+Simulate the system to verify that the valve is controlled to maintain a return water temperature +of at least 60°C, and that the boiler is switched off when the temperature exceeds 90°C +and switched on again if it reaches 70°C as shown below. +

+

+\"Temperatures +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-400,-360},{240, 100}})), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos" + "Simulate and plot"), + experiment( + StartTime=1296000, + StopTime=1382400, + Tolerance=1e-06)); +end System4; diff --git a/IBPSA/Examples/Tutorial/CDL/System5.mo b/IBPSA/Examples/Tutorial/CDL/System5.mo new file mode 100644 index 0000000000..263d55c062 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/System5.mo @@ -0,0 +1,154 @@ +within IBPSA.Examples.Tutorial.CDL; +model System5 "Open loop model with system on/off control" + extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; + + Controls.BoilerReturn conBoiRet + "Controller for boiler return water temperature" + annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); + Controls.SystemOnOff conSysSta + "Controller that switches the system on and off" + annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); + Controls.OpenLoopRadiatorSupply conRadSup + "Controller for the mixing valve for the radiator supply water" + annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); + Controls.EquipmentOnOff conEquSta + "Controller that switches the equipment on and off" + annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( + realTrue=mRad_flow_nominal) + "Type conversion for radiator pump signal" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( + realTrue=mBoi_flow_nominal) + "Type conversion for boiler pump signal" + annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( + realTrue=1) + "Type conversion for boiler signal" + annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); +equation + connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, + {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); + connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, + -216},{-120,-280},{-102,-280}}, color={255,0,255})); + connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, + -70},{-120,-216},{-178,-216}}, color={255,0,255})); + connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, + -250},{-108,-204},{-178,-204}}, color={255,0,255})); + connect(radPumCon.y, pumRad.m_flow_in) + annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); + connect(boiPumCon.y, pumBoi.m_flow_in) + annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); + connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, + -302},{22,-302}}, color={0,0,127})); + connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62,-150}}, + color={0,0,127})); + connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, + {-240,-302},{-1,-302}}, color={0,0,127})); + connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, + {-280,30},{-297,30}}, color={0,0,127})); + connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268,-144}, + {-268,30},{-51,30}}, color={0,0,127})); + connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, + {-268,30},{-51,30}}, color={0,0,127})); + connect(temRet.T, conBoiRet.TRet) + annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); + connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, + {140,-230},{72,-230}}, color={0,0,127})); + + connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210,-40}, + {-210,-156},{-202,-156}}, color={0,0,127})); + annotation (Documentation(info=" +

+In this step, we added the controller for the system on/off control. +

+

Implementation

+

+This model was built as follows: +

+
    +
  1. +

    +First, we copied the controller + +IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopSystemOnOff +to create the block + +IBPSA.Examples.Tutorial.CDL.Controls.SystemOnOff. +

    +
  2. +
  3. +

    +In this new block, we implemented the on/off control by using both + +IBPSA.Controls.OBC.CDL.Reals.Subtract +and + +IBPSA.Controls.OBC.CDL.Reals.Hysteresis to determine +whether the system should be on, which is the case if both, the outside air temperature and +the room air temperature are below a limit. If either is above this limit, plus a deadband, +the system is off. +

    +
  4. +
  5. +

    +We also implemented the open loop validation + +IBPSA.Examples.Tutorial.CDL.Controls.Validation.SystemOnOff +to ensure that the controller is implemented correctly. +

    +
  6. +
+

Exercise

+

+Create a model, such as this model. +To do so, +

+
    +
  1. +

    +Copy + +IBPSA.Examples.Tutorial.CDL.System4. +

    +
  2. +
  3. +

    +Implement the controller for the system on/off control. +

    +

    +Make a small unit test to verify that the controller is implemented correctly. +

    +
  4. +
  5. +

    +Use this new controller instead of the open loop controller conSysSta. +

    +
  6. +
+

+Simulate the system to verify that the system is switched off if the room +temperature exceeeds its set point plus half the dead band. +This should yield a plot similar to the one below. +

+

+\"Temperatures +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-400,-360},{240, 100}})), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos" + "Simulate and plot"), + experiment( + StartTime=1296000, + StopTime=1382400, + Tolerance=1e-06)); +end System5; diff --git a/IBPSA/Examples/Tutorial/CDL/System6.mo b/IBPSA/Examples/Tutorial/CDL/System6.mo new file mode 100644 index 0000000000..4a03f9aeb3 --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/System6.mo @@ -0,0 +1,160 @@ +within IBPSA.Examples.Tutorial.CDL; +model System6 "Closed loop model with all controls implemented" + extends + IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; + + Controls.BoilerReturn conBoiRet + "Controller for boiler return water temperature" + annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); + Controls.SystemOnOff conSysSta + "Controller that switches the system on and off" + annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); + Controls.RadiatorSupply conRadSup + "Controller for the mixing valve for the radiator supply water" + annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); + Controls.EquipmentOnOff conEquSta + "Controller that switches the equipment on and off" + annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( + realTrue=mRad_flow_nominal) + "Type conversion for radiator pump signal" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( + realTrue=mBoi_flow_nominal) + "Type conversion for boiler pump signal" + annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); + IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( + realTrue=1) + "Type conversion for boiler signal" + annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); +equation + connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, + {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); + connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, + -216},{-120,-280},{-102,-280}}, color={255,0,255})); + connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, + -70},{-120,-216},{-178,-216}}, color={255,0,255})); + connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, + -250},{-108,-204},{-178,-204}}, color={255,0,255})); + connect(radPumCon.y, pumRad.m_flow_in) + annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); + connect(boiPumCon.y, pumBoi.m_flow_in) + annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); + connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, + -302},{22,-302}}, color={0,0,127})); + connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62,-150}}, + color={0,0,127})); + connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, + {-240,-302},{-1,-302}}, color={0,0,127})); + connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, + {-280,30},{-298,30}}, color={0,0,127})); + connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268,-144}, + {-268,30},{-50,30}}, color={0,0,127})); + connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, + {-268,30},{-50,30}}, color={0,0,127})); + connect(temRet.T, conBoiRet.TRet) + annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); + connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, + {140,-230},{72,-230}}, color={0,0,127})); + + connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210,-40}, + {-210,-156},{-202,-156}}, color={0,0,127})); + annotation (Documentation(info=" +

+In this step, we added the last controller, which is controlling the mixing valve for the +radiator supply water temperature. +

+

Implementation

+

+This model was built as follows: +

+
    +
  1. +

    +First, we copied the controller + +IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopRadiatorSupply +to create the block + +IBPSA.Examples.Tutorial.CDL.Controls.RadiatorSupply. +

    +
  2. +
  3. +

    +In this new block, we used + +IBPSA.Controls.OBC.CDL.Reals.Line to compute the set point for the supply water temperature +based on the room air temperature. This set point is then used in a PI controller + +IBPSA.Controls.OBC.CDL.Reals.PID to modulate the mixing valve position +in order to track the supply water temperature set point. +

    +
  4. +
  5. +

    +To allow configuring the temperatures and the control gains, we exposed the main parameters of the controller, +see +IBPSA.Examples.Tutorial.CDL.Controls.RadiatorSupply. +

    +
  6. +
  7. +

    +We also implemented the open loop validation + +IBPSA.Examples.Tutorial.CDL.Controls.Validation.RadiatorSupply +to ensure that the controller is implemented correctly. +

    +
  8. +
+

Exercise

+

+Create a model, such as this model. +To do so, +

+
    +
  1. +

    +Copy + +IBPSA.Examples.Tutorial.CDL.System5. +

    +
  2. +
  3. +

    +Implement the controller for the radiator supply water temperature control. +

    +

    +Make a small unit test to verify that the controller is implemented correctly. +

    +
  4. +
  5. +

    +Use this new controller instead of the open loop controller conRadSup. +

    +
  6. +
+

+Simulate the system to verify that the mixing valve conRadSup is modulated and +the room air temperature temRoo.T is well tracked. +

+

+\"Temperatures +

+", +revisions=" +
    +
  • +February 18, 2020, by Michael Wetter:
    +First implementation. +
  • +
+"), + Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-400,-360},{240, 100}})), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos" + "Simulate and plot"), + experiment( + StartTime=1296000, + StopTime=1382400, + Tolerance=1e-06)); +end System6; diff --git a/IBPSA/Examples/Tutorial/CDL/package.mo b/IBPSA/Examples/Tutorial/CDL/package.mo new file mode 100644 index 0000000000..833f66b57e --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/package.mo @@ -0,0 +1,106 @@ +within IBPSA.Examples.Tutorial; +package CDL "Package with examples for how to implement a control sequence using CDL" + extends Modelica.Icons.ExamplesPackage; + +annotation (preferredView="info", Documentation(info=" +

+This package contains examples with step-by-step instructions for how to +implement control sequences using the Control Description Language (CDL). +The CDL is described at +obc.lbl.gov and elementary building blocks are +available at + +IBPSA.Controls.OBC.CDL. +

+

+The example starts with an open-loop model of a boiler, a simple room and a radiator. +In subsequent steps, controllers are added, starting with open loop control and then closed loop control. +The tutorial also demonstrates how to add open loop validation tests for the controllers. +At the end, you should be able to implement, document and test your own controllers. +

+

+The figure below shows the system architecture and the control charts. +

+

+\"image\" +

+

+The controls intent is as follows: +

+
    +
  1. +

    +The overall system shall be switched on if the outdoor temperature is below +16°C and, in addition, the room temperature is below +20°C. +It shall be switched off if either the outdoor temperature is above +17°C or the room temperature is above +21°C. +

    +
  2. +
  3. +

    +The boiler shall have on/off control that regulates its temperature +between 70°C and 90°C. +

    +
  4. +
  5. +

    +The three-way valve at the boiler return shall be modulated with a PI controller +to track a return water temperature of 60°C. +

    +
  6. +
  7. +

    +The heating water supply temperature to the room shall be regulated with a PI controller +to be 50°C if the room temperature is 19°C, +and 21°C if the room temperature is 21°C. +

    +
  8. +
+

+To explain the implementation of the controllers for this model, the model has been created in +the stages described below. +

+
    +
  1. +In + +IBPSA.Examples.Tutorial.CDL.System1 +we connected constant control signals to the open loop model that is the starting point for this tutorial. +
  2. +
  3. +In + +IBPSA.Examples.Tutorial.CDL.System2 +we implemented four distinct controllers, which are all open loop but have the correct control input and output connectors. +These controllers will be refined in the next steps. +This determines the control architecture. +
  4. +
  5. +In + +IBPSA.Examples.Tutorial.CDL.System3 +we implemented the controller that regulates the return water temperature to its setpoint. +
  6. +
  7. +In + +IBPSA.Examples.Tutorial.CDL.System4 +we implemented the controller that switches the boiler on and off. +
  8. +
  9. +In + +IBPSA.Examples.Tutorial.CDL.System5 +we implemented the controller that switches the whole system on and off. +
  10. +
  11. +In + +IBPSA.Examples.Tutorial.CDL.System6 +we implemented the controller that tracks the room temperature set point. +
  12. +
+")); +end CDL; diff --git a/IBPSA/Examples/Tutorial/CDL/package.order b/IBPSA/Examples/Tutorial/CDL/package.order new file mode 100644 index 0000000000..b0e50dfcff --- /dev/null +++ b/IBPSA/Examples/Tutorial/CDL/package.order @@ -0,0 +1,8 @@ +System1 +System2 +System3 +System4 +System5 +System6 +Controls +BaseClasses diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/System1/OpenLoopTemperatures.png b/IBPSA/Resources/Images/Examples/Tutorial/CDL/System1/OpenLoopTemperatures.png new file mode 100644 index 0000000000000000000000000000000000000000..77f0bb5a067a3c4f9231722a5bd8b561439cb4fc GIT binary patch literal 24721 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 literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/System4/TemperaturesControl.png b/IBPSA/Resources/Images/Examples/Tutorial/CDL/System4/TemperaturesControl.png new file mode 100644 index 0000000000000000000000000000000000000000..a68058ca4d34cd1e6624401d5133c202e78208c3 GIT binary patch literal 35011 zcmdqJ2{e}PyEgnZD3MYTp-h=cB9bXWMIrMLN*OYi44M6k1{#zhAyejgmbpa8Q05^+ z2_;j8$ow96zyE)Kdw=iV`~AMP_FC_LUu%W%+|PYq*Et;LaUSP&Urpr{6$JwYiA170 zb6Q@VMA}?LB5m>~--w?GpM95uFWau2*1JI>?WiLDZ3yPu!AK&pkj}`R`gQcBmR#BGpB zd0l$Nf4=c#=EkwU%y^dRHS%FN?O{erbTAyJNwH{)qVHx-{%ds9P3C|I{M0U z)pb8##^+mU9jnU=IvE!hn6gx{(I9q&^jcm?znIi@Fjy)7O5N_px81qs&v-P<2CMG3ynV`{ zOu?$IuAXrA`OMp$G7eMyQrz6%-`w81JU_8K5^g7V^5nOs7Y60-F1Mep&D0B8g+xAi zB4pDeA|oTi%*=dMY1c8nKn=3Mg+w0zo|w{B(ZU@_1Ny_otw>&XTZXUvudBcr3;$r@Y}Jl);ho}QjZ ztvY)1t)7_;;uYn~lM<{|ULcpMrE00yy65ajtpF9ZfWWMTf=%qP7^&G zoSb*=-Zdzu9<%@X`OOw8hCIu5CE<9JYQIfecSw4!{7yG0E)WaxVaTxZ8gK% zh}rfABn-T|ellKtVxYnc4wNP4Y`)I)lSQLunU^X3`7$e|(I2J2%>DH&CAL!pq8fX=bR- z=2O8$^UE4KWB2O|lZID|^BVE)7BNpB1}~J=+f6B{sAwl^mN-ut6+2vgd_c_Js?Zt9*!*`jmHd_RC#nJWJidv7Mw72QIw5=#u}A zN%(xdSozhLtA`~d+^X*Fnx39!SA1~o+O>Orem{Eh$EGUQjWUhO!o}>I#yT3`yt#zk zx6F5isXck}Bs)8sia{j6NW!Wk&9<-D_wHSDGqXqgggLRv$B*mBtCw9XQjL@pzxMg{ z$C#7K&kns<=sxcFwZ8i9 zA>+b$_bj$0JV~;>^Z=)&o)nMva?E%c-?b@<9Xle0&6_%ny;f&G$ZXxZRnV|_?uB#z zbGXrSVe^d}H}dLa@Ef+$?%th)r%5;${^)>I@u|lL@BwdzYs9T}n*18;wEO+@3k-94 zd8$HY<>y;OIj>*sIuy2dmHQ=VtR&8Z=|M~T?jO$JA#a;DN>kp>eEc542 zQrfoTjkj*uvW1N7A+yZdkM`8Jcc>&BzJEmQniwC4b-^M60|RRw?9<4&P=siL_)t?_ z&Exp+5Q$W*>#&)>L5X3$$bML9^b51siV$83H%e;%aeoh20p6UQ{iN%UrWX?D!bDsa z`kdR>FHqCd(}#wK^GTIhcOPMux3o-2FzwD4YDwoI!sH4sOy%mw=)d&SA3b(w!8Lqm&NA4c>Dy7}h%gaku^+Q@3|0qv#<_T9N z{bXc|?-spxGIZLqo%>2%G{}jV-l!o*jz7I>?lwQJ_fqj8g8$LRwYBA`OP4N%WrTJb zx!F|v(T3R^bDgu8SUoH(tU;cQjPgq++-juZd6>ELRKI}Fu^S@~9_43^_?Mr}_KoKo zn+bzgwkE2!TmE``cc($VN&daR{LDV3I8XK_>*bETy8czf z;3zMz5_vYFX}*5h&1ngY@pf7iw!ykBTUeH^(c}H5M+n(0w`n zZt9HG<;8~@TB+^G2M-y=w9V4f`r$T5#XM}fb4;iD%izq6OiXb8k<5xU{hm;{dv~Z9 zcN~!X{VmEXQsnB>VLz=%X}4!)=GPn?Xyk6Xx++N+)IH@eyl^2>(k0gAQYyk%z9mf6 zxVolh9jiIknaM0}e??QX4Hv@A>s%BvEOuyK>4VR)Rw2jq_Vv-~s@9)(qV)F~$ex}4 zS|cPR1V5hW%#3>WOh-9=a!?xX@PLPv> zJbE>Xv>$7&?10CXTpA`=8h<`fn(A9t`geYzG=A>zf0bA@Ci67>UF z0qqpc0GVX4ll&b?40_pgOu<$bh15QVJ%hrfV3$};S@1F?{;HD8U z0eCE%JVk5=$~}hP2LnV@{LHt^?{PTU#2;%v{Jv)=*2HsVx+X7AgjGJ6S1T_n1zG6I zmADBb`2{%`0ME54-t)0O^A6o7&*HsRGyOIj>(U!0krpFeZvjIR*~-^;eW9p48kDv$|BzTDfz9wu@X4`VARC^)Lf z|F!1vv$BIyQhlG7(gPO@Q)rHH;6_t*GW*+8b$qES*4Nx{@A=_R*W%;iNJ-HYRnye1Vs2_O37cS=Ze6gkS@*`P>7J5yau#&B3ykuPGPVeosd7^G`Oa^N5;`ZeixkQm%6g174jeTFT_jIi||pVhrj>obBz8ly4`I9N78xvf~DI zk~Qz{WX@2Fxs{msEmY`ovBT(04YOAej|S(lW5?iq#ZfWTYytx5NY*f$qc`^7>%aj{V2)d3mzx7fY&=Uq@KQYxb4j(H>o2n_5SZ zjH^(MIF^m5JK0wvas2qw;-Z40qO|*OHCJ9(HXB70uI}HzU%-cZqZqkR^*5aahtU>1 z*+T!{VVZf^J#uY-f4>9oMp8rc>0cL56e75n6c?+69%f}>dEMMRJyaJ6 zk5a#T;^xhpi7GEvR#t!la&vPFZ9auWMjqI`+vH~sY*!~;|LCPkp8}gtJ7Bg7{(B!Y z%Sa;=V86IjB7WC#MV-z)YS({(e7gA*GZ`6Ka{CWoN;=W2E%L3k%7SGFeY##_H zatQzQ&!6<-_HpCG$;ruZZL_cM9*WuYT)96(6}Q^YlkeOZB{T5pQ_1<4iU1#;x3^H) z+uM7tuP#J+E?s>e#A8=FeTO<0Tj;-6fI-am0?Rd;)9oo*g?0n|2wzBu4KE}XuZej6Ojx&HMX&_QR?`OAPMryenlB5ho_&ZsaHqx_4hL~XO8w}(e_NePf|+}s?8a!A#?cgR7%UjMZT&@ZGZe06nIC)3CSca6N-U*c>BThK^2o2-%eD8U!o znUC$OeCeW)Ptj~i2yGjqGWVZwhL#qY3~=Y__(&Zti_Ae=;4T{ zfgmiXmm}Ykx}S;3b8Ye46ZTW@s;b;^MfhsXqy2%!Ouja@S4iGe=V>2K%Nc`8MFMD`+0Bp8pT{@{i!FMF6r}E=FZ88!K)dN|Dm|y@) z&()=njE&U*h_p0C!Q?Y<_llAg@RFh}E^g=jn_v)1BEFKumyinZVShz|_~Ol^w~P47 za!PwM@wJx76!`d$e?8pqI+hMJTgz!wWN-STE!oJ(2;S`f=uwB~57d~ucI`qzXFX89 zni%EjI@Tc|y!Q_Y!YQl0@(k6#U0<=5=rlklg8MO-nW3ypZvh-SVI_bMmXR-{J(gg6 z1hAl{&bnOl2x$oU;nPSu194w8+AS?)y8Z|}FlIZrlS`C-wn;TYOCC4|E-tQoeZyq+ zc$A*C0|OQ6@k-AGjU(Z+Ii~e;a&kV@a8b*T(QiTo41fq5%eN5MjHX|rT~CCC^p!ZT zPkF8Lg%iYpc~ive*C%jARv)GKAD;@R@P=NizjRou5G;JCarXgcPS>yRlf3zJu-d=f zGG8xsD{(c2=FHzRh&j9EE|k0L?WK#~5TB8e5yq2m)wx&hAP2`b*4=ydOiWBzwI#*4 z6d*YuG%rjIWa?(eiYUaZKQDFtbCoA#ZZWlfWT#bC>Etw%)MSOL`}>W^pFDla=JU#F zLLW#XuQeJK9yJ?qcOWgLyE97I_W6^XTwHL7z80-g`uu%&dbVH8_uXbGO!MdalQws< zdwS9e4$Ioy$rk$8`x0T2U56)aG_nE$0+N!F5Iib=br{eI8byfO^uTd}uo_*@8b@7OZ+5KWhu~)+@EzfeO7&^ipX=#_r-u~3K zYESk_Cu>*rzFF3zN3Al>RlUSc(Z+ngS07x7bKj z#6_+ZXKovM@NtPYevfmil8M!U>;e7Po$%vlO^g_{Y)S_RW zE~t2zrJAfANom-vzpW}uWTrA-*wgSzBSY)Ozi9V5RnLlA3@wFOFz(Hw;pq1u?UmQw z?9DdjE0bvZL`jWhB5+)J(BYEtWO1Q+%wE<964yTnhK&fE{6L-Rwu?+O{LAF@F;T^Z z&~K%|7GhSf-|=YrE`4l{zBKh>kaq8H`#w{?d>X5ZukW^5TPKNntX+STg9WByHH#qrLCTdE>JLJu87Uw>E(x`8K+b`2ThQUG7P4Si6y1%ia4TUBeWavQVOhfby$ zQX~nkD4tCARVrGTmhn*Y%k;lQHPX4q!rdh&!p?6&B{|6Ajx)3OnJ2V=#VR^i<(wXG z4onjr+on83q0!2<)n5PVakFDqUYEoYc=o28&h2UEHAoB|(iJYeT7Z`g*7|wtJ&(ye zi&u_xU2e>ObJ*2s3(Qj1Ou|Y`ffTr<)$#yCcUl6MTJjcC8Xnb>$4$Ry@^tiEozLdU zgdXzTbeJcH&076V$z7^nkFVxNmLEB>tGJcL+^0h^M2z3QBcn~u^w}pV^5Zry44sx% zB2UHW3mYa0zg;__wwW;FkSo`?!VzvddbgT3=5O#-zgQCuqYgf__5I=5>euQg(w~Z+ zqsdKDv(}N6vEKZ8B!D(OXyk-#NuSzMgn!p$&jy7DYclDN*xo9t_G-<#p7u)OsR%%85PN za-hSm+d!5805kn$JzUngWa)7u#PxADAA0F0wl57$jC(cI~=)VJJ0Q`g{J)GAYLgE=__>qqZMw zDUQzRO>bmuJER)*G2Yx44`90`gT^(@-t*y@kq^w%)1Ne#sQFBKGopfZALV7%=N}~> zNWS#=vhCq$d0gudl}6mHjeCp5w4Ez?G?!ZDE54`Z>iLT#l?@6qFRTFe$=v{NFaABP&qYpc*Ik|#aZ)q z?!ys|unbX!utq^;Mm_U>Y1K`;(>}g8bcs5WCVT!PC_J(7XMu+dTSG-i^}_9pAhYOTGHB z$0SkS%_F$yf!HRUFpJ<>Hja&=chksej*`6-xbZHsGN&n2KI1Ui>K+#JkoPT*PMUox zNH9p^96G&VaXv-Xv^6cOyeqk}P2#r8EpCzq3!gq+_c^umL80k2XPtZDDQ~a6kBxiH zU90z!?7291*rk{sXR;~QHl3Gj)VHxou znjWXm`)|`7>g`j!v4ccoa7DrDAX!Z8et`$$R|0MM%<~gtIxa9qa~!*Ec zmQlVSoc>qcUj?s>PCU`!`zhS-X1nmD?lLZr#e1dt7MPEdeHh_D{r zO~9m=0ayXlVs38BAOR=4bHO_tM-z!r)LIwhtS>b>h+xBxTDE;`=mlw6TU)!lFr_R^ zv&YxZ%i$FP3OiKewNnKQZ)?@p)g^;WFf%i=u&}5P5y&(wDY*FN7SJIokuv;dZEX#> zSPGn%*%}_l_s$)n0fRSeq479QZ`WVS<8zbRq1auXa!>j_Hp?_h&o6V~fAKY5*oL=J z8){EF|Mr&4L(l4sk{(MAsP%DIAjrdmmX145f)^|G>k0P4*l%YO4e-A zeXl&2mrs>)Rz;8^G=hsE$^wd6*Uwn2FNUe2UOwKg+)OX2PL``%ev<@Qu=&foVw z%qo{Z$7BOAt(Zv_`2-KDV~1ifII;x^n))AeQ)vpsn5;HwgXsZ!DyA0JnGc1U2=QxR1VxK9lYjiVLG zH~&WH2Bo^wzKa2FdBlsW_W;?W3kf>a2#hnT|2Q6y+-Np9l{iiKP@_BZrw_4Z^Ja3Q zgsnHqMD4B)#mqxF@RabtD_<^?$AMXU0NMuz2E57QwVn?b7bdn0*9*O(!R5TAQ4oboy4a)m>Bul- z1cQpQj=0$7%|ZN&73ajj6``?MRaJ#L%WW(;>g<>R|M}P|0?bn}n)Sz00C5rzkX7rau#X48uxe-_wYo)+maiqK%9~k4 z*x>fcF;UVi3*X*zaq=W@@zF4TQ2 zSq+Ek$b#JY7f74G8=3k zFn*1Aq_6=u&EHfT%5^@q-DTP3Y)aO*$%NF+H)A$RoZqlIt#I-ZPY5ka+~?upsp~6P zH*jidmZJrSP%I#qzNS2LpA=0qyD+-puy?hLmD!qHqFT~9vGC>CH-l~^CVJE1cI8DL z%LQw*ZZ0lQXdlLfb>7B9x$JWiy*Pamjrur;0q^$>)m@t<$UgbqzkhzL=D1gS|E-pk z2K&BGxoU!}+#9($HGOqHU;2&?oC}w}tHK6S)*-)Nd}vTQ)CEN=^NKtn~MQ0|x$lk?iF zKvJs9bPI?>GPy!Crh^#13gQQha^A%^8z*E>fr4KBe0%33Ch@0FpYGnZE2eGGZzsx< zO*92=A6tGw8It-^SG%{u%L}~>=n&>B&EdjK3=FQne_o2;t8KE9&hf2h54X!2e~&^N6h>BUcp*j^u$&;P4#<#V*$l4=sph;M#5?Q zdw*Gpy8kBcSl%fXb!8pggdcl#&LDbrkuqMOiD%Fqt&3bjXS3!Zqcb`U-rgkKd0ule zxo*)$uS=EmLnm={DjLSy`UpcP=CQhBS6i-pe*G7^^jayJbqx)rpuUN=_I_Ye^s$algTa6c^3R z$nDMQuT~vE4ETQXOBy%N`B-_ZT#8nzncurh25B)R4L5zM?1zN#2VKXjCvDh$YTv(K zg608&5eQK1AwD59I3#UtLQ2`-JbKu7#Z$Y9hQF+iNLn{Ea*VH|ArHp&vA@5>&7Ysa zv%(jXFMd@BHMk%s^ntC8`ugm_4IhDtK zm%tePbTfVq;_oDR#JA*w7z4Ygk=l-2YT5fL`P5sSe(M&~U@ zKmO(ZcX-4u{+OEbLdz6XTYH+GhO=5*Lt0y`KM6T%+)jB&?3L!5KSU#UWf0SChW-0J zMq4;MM%;gX{_9q~uPD!r-ITQ^>IJLHE^Zt*R&ejj_kDTZt^6{}$7ARgxM zeiR~4?ODE1lSuJx3^y8L>nkpek5ycKd3rx7S|%s<7aP+?lHb9=YEeU%hFf}k;^IY6 zCn$=VbSbi5+IV;iL8{O4oW*TG!zV}^F)v1 z-1lafWv;_{!mfVyM^?#@ypOW*F<61l5;kif-?`Hc!Vh`*D!54O%a<=+ybv&?BSl}- zrvLdgFp%~tLKQpWw>_xseZpq^1_k^F56Y7_qmhVA3K+;CBGT3pzv09#bBBf!*6(jN zkyyO0D7^d!+B>y#H0J+}_WVP(khB|r?~uA|a-gtu6Dj%xZ@#|GD1&tu+W1hQEPZ~n z>D-YBcrJQQ!otFQ+G*V9nz=*{9J}_~L1Cl!==OficUg3b^KP-$Fl-tr^Z;@$8oe}b z=EjqNHhtp607yhFcjd|ziyV``rZSY`UB5mQJF62Xl(v}a{0C6IMy;jPX?DUm>fzd6 z=6{#{^iQ)0TCu;VqVniD-v&}2GRlQgtcFOfpJK8>;bghTGK3QeRzm1#kbeQW*<4Jb zVMitZbkhdXiI@P|hw4Db4Gj%#ZJLdCyue9s+S|2+NwlQxFW0ZB$+5un$Z}%OqtoC+ zy>;gSH1DYijYArUR5S>joSZ@qQE@BMtlTeM={vm2wpJ#&x|^k<8nyj3_6Y`uUAg!xcTbfUT~@tBuO6Q4YVqk5U9?>%5<^br7_j=-zMMxiqlhA5A80%Uy&|~UQy8XW|O-5Cj!29 zct!Sy4%P@Rbg1Mo^7 zIWmLn-?CkfJXlHVGuzyAST9PKJ1AYy4`V;|=!%&cN;n4yFJZ!zJ9j>Q^r*kw!wn)N zG+{cD&a+R%aT&ITK6w&T=SMa#gjzFo;%=PiTea{@X$7LG0%z62W0D#V|0%N`w0D^O zX@&#^cbdJ452RfmhODMyWyXKx5|9uyP$M6rj8R*l?{LOW3tCZV=)~Xy(1fncr$j_B z32OmBkVu>-(8&VOaC39BI>34GU|XiK7ldy;v$)UZH*dalWnYFoDDz)p2Vvn<7~QCaJ2Z*tW!- zQCDxdMMin+)-9ww4xej|jxR)Q^mTQ+&G-DnDtj$d)DQ;RE+3bT^k#1gV1QvljjY}l?!_&)ZKMw`?rPei6T4kQH$QsKv zz5T@U{ZCPbp8QYWD&VCt0R#Sj^fHNO`gdBLnq2^~`*-h-l_Hd9DUyeb%U3F&VH1h& zH;fy;wmAREE=t-XWpx~?4#kHI?Xe2}+xBoqNPG17q;8=926YJJI1+C2Y4cUAC-2ls zlS9ep`K2CRw%FKM^!a;HR1-oO&!tgVVT;C2X6c6Izx@3Cjx6$S*djC%t@gRUNp?d) zW$5in=K+sr3%8@6Kfk@vTDkxBE$Tsd4a5sGv$Iy{vjROLjn29iEe6V+QPBTuXzAD3 zfX9O2-5vY$xDw*x$XPj6Bga2~j()BiBj;Nx2#v)W_!&W?(qkxT(9J&^E;@l49r{NP zM1CJ?0_MX2)YQ~ahTut1STHa$jtvi+4mxh6m_U=4P%VO*y3&e%`Q*ezAMk4g>ftOS_NpCZ)}jNEwCqT>qUO{ofO3jPCF>F zXcZ68^!D~b>liP^!NFlVJy?yTw};H*EGc!S^0pkvoom;AR{PW4zIE%!kt49<8)!eH z6&=K@r8I9}e~|2G5H%yCg!}Jna81@KC?4{omatLr&V{cPMeX|eeU5pqyqdd)h$nXs zt!0Q)@bnP8K#eVfE@-;8%*~(C;NswpB5zVick1824};tkl^Ex$n>f^fBgv5WY-0^M zWT=0U{cj2OOdVGk53bniF0zAJI&D>GLs}r)Rdc>rF+)y1Xpg@jJewmc}O zU0q#61dYpIE27&AS`UgSzR{S%!ou6P-@^BOsqq++H%88`udPBJ!{fuPlhKQ1#|?V@ z`l039x%sdP;=@)dh9GBm1;{WzPL=fIoyl2?ou@LMxBL<7#VbGap+==AcMo+AkIs>3 zN!QowZ<2P|_> ztF!R&0+sdCqf`F9`Q_|^HOM9G?CfNqvBDN(XUCwkX?p+u{U>R8ZpVT{Q$zxbEE z>VdV3;RcaPEu1`IliL>e)2M4`sJ=K(csSl`3aSj`B2qdvYJH!OJ447_snt;zu7>SYFL_V;N(#yvXot2fA63TY1RPE*j{{1ND`G~zLv{q5(KtXYp&?>^Y_wCyk#)B#Xe%n#5Rcz);gnKW_ zVOSqFE@X0pz(ai%C8ZWgKB|wMD}iKby>K!6A8kAnJT1eWpuig?X8%t8$PP?&bl=9t z_!@b9ULiRkrCl-K4F=5>`R?c}spBl}d9v&U(vM-x4oJ`eKcK}b#b^R#24VLJD~nq# z0tFDpWBNYGWjI)8#;C^jZ@>6=p-R2PYyj)Y`Kf_*WZE-35kH|NY~1E8TWm4m0kKz05PlaQ7YC_5=TyVqGZgNlCi?i37ZxDu zUVP(z?g3?VsDLLHglK&u3~GvF=cicZK7M9}(sW-3IFFFF9>fykdVf6#^sHd>@& zPQnkBLWiyVLe1tZPYiJZD1!3ev}HR13ltUK!EP`tfM$$f+Cd)r^*s+ij*O4n?#@GyzB#-8AjJ|S~ih|xlbxO;aCdOXJq71eF$l0;{HW2qMV^b zSU9q+TfryBAyH!uOkG`z_jPXPX8M0n#ycjOHcLlP#Bdlm?u{EaW<`OtL=R5M%BE{a zNjMX@I5IL4l&?|Fl{!R%xY3RP8qFW>w&CC&0pAPg8>onH{zj3$==p_faS9Nx7utfF z)c4^5spIG$*3{Ir_<~Y6MvOvI_&=L4Wu&s^Bm>X}A>NHVo7P%2uRK^b_YU4C1LkgZ>yErlqHUh1L!#lkh9mAV{_m zoL*}Wb{GKxp*(!gGbI1SP~%M(mviuBSWtqo0O`c8nqQD5h4$i=V2h+!t0bmMg)!@fpj}`$ zVB`vTGlDKJFswC7P%tiFkY&P-T5c9pnFTDhYle-6pSK67Xnat*MbAJ3ewFw3Sh~XRz zA0Z3@Gr6MuOh@+&HvowF!vfLP4Y2IZn>XreK@7~&?yu^gF;%Iiwou>JYrHqN;&4IhJC6Lmduilx^b6 zc?feLt0*iv1?fm?ZGRqCiyq@bcuLp#adF^ND0~lKn+T;o2BP#Zbk`>sarjatU?cRi z=+fAln-^k!>C~y3xjBc~ASx1f3LzWQ^~J8*q7j6(L)a*T6co@D+jLz}Fmt2v_rXE? z?;m5}IBDoA1B)U*Cu8aieJkUeS_eraSM}s}OXW^frb5Bt;ckf56hNpcnrGH^UP!rh zynTBahC~cWTpNKF8M1qfm6V~jzC%Yr;`aQGCdz9QL{1TzM5qb0E;*pi7flA3;0@*# z5I9#O2`J>~=y=rN49Ppz$5R0u@maL2kOVkZ2@Yrf4MjyoCAx4C+ukmw;0+`{>I|YU z10Mg6pZymU#D8Dye<=PwC2+Sck2dJ+U#av(Pk{E0Pf?}f5 zrwOKHMK!O<+YVDOZAEPl*BzOhjKmn-fYqKod!Pr0?VZ#7Lz(Jv2pE$5ZUJSWd2K*G zjZ14|71SNs{qEG)Wn z;s;HU?8oHpVf+@e5mu_iv;tJ?xDlP4gUsl4kZ3d_C{AvG;(7sdHfxc`t`8CuF7QT- z)Kr`a!E~Ab?M49u0U}HES>T?jUF}s*chSU6%!Mas?Si5e_t|H zj#<7O=w?$8GQ&pyR>L=n4YcJF)J*jEOWS#A64a9sKiPdwLjWvg4j746Bc#4bmm^V^ zVJ0Wy*mb$O-TA*47q_vZY7uLs$=6?PRh4nMd9!rsM=Ga2H!gK?wbrk?323I@W1$Z? z3R6;tMMbsKwUt}n>c?RgG==+TLJ8NmDa z4M_;Xm}7P%((Fta0u`!4N1F@8LMC0@o-*8yZk4>i!0&{I*6(3iD7@w|bB9uY5%{UR zyd3!g^I_{z|M?)RvS7qfD{U+UBthVbFyFZc+Sr>iH&nZJyUjkDT;jD--|jbg~U zCodU@TJ9buEP+^uhK6A4L3}!gjvq&y?ZAl8(gm;3;9%N)`*?ilg-m=zOwq~Q!+ADT zetW}_-7cs0Qm_+*D*0MfRe;uArc_52JiVY>E|C|u}GpP zADVo{R-hOGAa7`F#0VtFhAAkD?%u5doen1kutqA66OYfRfSaVW|3LqYk`?7T#oB(D2volFlcm> zu`+AFUy8iNq>~Rd`om!B{rkJ*F1)(NI^}1FSuFDFsK4^{UxbH$0s_Fy zl$EwQlCs=AAQk1EaLv)t(M611V^;KU@scDlSf<24!AM7!sGSPK_n`)>uUO85r}lO< z*={LB%(}%TCN7M&p8ByfFE`f!(-0sxT3cHQf*tyFq@vR|04A}gdAf2(TAoT(~CFfm?1(NjAG413jQcd&T3kTavO97=uZpnL?9J{sk;+n1Qr0? zI?O7fbTvDkfkqAk1C|Mzf6tzRU)UuFP@v#8 z0*^r6v$TK0skk=@(Fonn-_teBa4^gPO#vvD!D@PhH8U>gkv|CuL4^{rFr2d-?TVuU zZ2OkrLa1pluTL$9ss2;*Pf*o}OM94_JKQP)w=P$<-cT zLfcis@kiX^U$W-}BZ!exW8BX8xHYRhLU7>Ir+HE5h@lTiyGC1sXg zzU*O1jJx=ea!iESR>^%F45O}qjsZP)6JgEk;=69n(q zuk1eGTjFth264(%zSP(xC7Kv#PbQJNvb8lA^LfmkzrVm*G4IPJFh}@9XU4DT=}{0( zLDum0^veXHf8u;4eVa)f(%(M@_8@wMU&9p3S7z$(-Me?h^!?c==`zqsXpce%;szcF zr-5MnZln3j0Q9?ZWDtf z2!KW_2XYwafUIvLCnu0OWxQ9G0G+Oy{dMpluLFb`^o?iBc$ zmaZO5{!w8?zf}67<7J6r-s7>rGI-zz$)uqnDMJeeFm8O1PZ1bBMp$b!7Wi|Z)3%jHTI+@O)nQrz!dsV zFb0Hb*ByIk0{j`ew=UvGs~Ie-20^h)T+jUdH*99kmBpgx-*w$Zy}Q_M9W{7^#tk<%kbYbS=&1jYs5z=%pTO zu&L5~B&YCWdwPoF)+UxC-`eju6wm)>+ z?7au4cWA&cXNvv4Y8Z4R2~f`1T#~iXi!Vq!PyE+v#>Qr`AS=2c?fr-R;fZ8UD>azi zJ&4r*FZz7rEcP5+TX$*3Mj*bewSMB4fnI=SEsb>WpaH@Z!;Txs`q>{#=73ehArS(Z zggmKMsEN<4Q`K`O5R}JC)cUN~Ofe9)H`5;fny)T~Z%01^y%Hn5utvAJ@4H-h_xgKG zjX=8B@S=DodCAKts*?k8tbBg0mI5C7;cclIm1V|qf0Ql%Ui4vllX*t&5|qQEPVGw{ zm&exiWtP7VDcXoD*ysh?S=AT%lI5EQ_v9$r=)EjRt1HYO{#1FZCx=(2Go&yLBW5HP zCGDZ0_sM~%Wlv=M+dUI^dC_mv%-eBn9U%l|@*q=Aq_-BX|H$%MDKR+LIUd)0a)5!nZix$;x z#7H1_G$DB+#s2fNy+2tJq-@vf@FXPpI=>+bE?8jniNHU0$Qz`wsSiXa!Cfq_K{kw2 zHq2DYjxYKVPpXhhE8y>hf!&2NK~C6H)xL0o<8=X+cCR;rx4t{uq4uC5y5~#^B0c=LO=KgegYO5osJ;iw?SckoVN`|Zl0=)F%P+;I_5k$01 z?tQJQGYv5s_h4U3crAJj>AxxYnY7_H z!sw0aveR_abh9If1L3?&hZS)V!hZg1KQAi#%1&jjTdn?yAIDn%E3V(|I8^(DM}s)* zfdkF0inXx{!ca>yu&yj6SE|R0zeT!%k-bjTxs$yv9cg-ic>}-)Ms)D}00AQQ-D=S(j>SjFQaYTqok#DWZb{5)HbUbGYB>=I zl^|jU@@*W8h2iBWXg6dquYNxzMzn&&1|m9r@zWuCW@1SAU&7+L?#)e*`TzV(`Gx>2_W$!Q z{`DXIhu;g`m0J4#5+{Q+_U3@*>JpL$iSgC89AybMKR!M_A7{*=LjXBv!^*gUU72IO zKw(>omKE?eWURH-ect1X=sROHd>XCDE4HQ6?-<$be9(Gka-PM(CeRh2bzcT{9z~-E zTpF^Uh?|!9QB8S_SwrZPv69VtPhXt*;`Z1na3h(56Q?ig`;{&+xt!cHf884HI>YLd z1z$XMz-8zTqb(RVkMA*eL3S@1hDR;Msd1lDWW5C3jl(!@VkkgZ46L@e&ta1)qH)c| z2yuwZ_z0?FR71=H0h2{j;s(4#RdTxOvFF@N>Pi$68K}m?ZHtppLxaz@LInUt z1r&nM>X$dmbRn-1#*dX!=s~Fv77_w6-peZlVft925(S7|$wUE={bPEeLDWr?C?3(g zRD673zkfB(3S*EXL=q!5kS+#LE^p`#Zanj)>Qo7ykS#n=4sq$g&Ch=|2!IXp9M7%+ zxjoWCv?0D(UH)giHwp#Wgdv>9Vwze4i)pxySzmAcM>0oC)#a-< z2N=+-G8!q|Hl!+kgeT&&g&2<-%TR3`_4T>$&FDns+YNZ4CvY8mT(ynU7bj)l*rGpe z;K45-CQgzQ?cVI$Lub^pwj4F5fo-As-6=JvHpo(Ijra`p3d)<@3g-aO$)cDEKwW$P zE<`D~-AM5pX5^Qk@C34iX6G_AUvlIq(uoS5Qm~YG=#ih1C+08Q{Nf8!k#O>;MqyuB zx0<UM&a8Rl!su zag-6ZlTJWiB$S4mrQAyW80a#jl@3(Z#OXKsC_d45c|Y{FVdfwYQ1{m`tBg?yX|M#3 zU#x*V`-&qpb~1{N=hPpv>MQ>B^09O=eD3lo9MAS0twktDR(1J9EX485Sm_c}=hT(h z(39jc>x&-(SNGI>gpS~avfE}oHMDH27+G($D4$L%F~IN|_CyDRCI+@erqH+4>?b%# ztV|jlI>!_ZpD!|A6bGA#BPo)xF`#Ok`(3`_6qjJ-l1+Lct7ljve*Sa!0=jV+i3B(` zkUoMgKf`IbsqwHxK@5EsICEHbu|;z%C>O{E(xIDyJNQ2c&^aTk-C&4}2W#~F_QDy8 zEiu%y@IMR!UYhkiJRvpzfVoBAN0z#?M)5^jI}_Xqox-5g2>qm-B|*Vh&*Zg?=W za2@pY7tqaO5fHF}>k=()^ec^^xwz~WiCf29;^_ku$XX+ym<{qQp6Cv&qh)uOT02b_ zGK50B#fMO#m*`^M*LW1L{$eGLTIFUQ9_71=r+Te5jz>c7#}P(1a;oD_{8a!Cr>;bj zJXA8Cg9R_NXdaC9Kg0mdgXDq7a}B9+pL;}$#z5Yop$M6zI|N0$*SCNUKd-Nkil!B` zvda-AXj`f_Q zpmER(r2*8phaXDMcU^ui0n_}r`4e;kLWjA$0FB?w(pR}-oikIABMmYo@^AYMRt5==&J>B4JqApPgfqn&pMh6u<3ZVr3-#mXTFDWF0kSXYm^(}9Qb76!h_PDh5*@@B_8h+9!UtdWe_r{!WX2T?rN00L})gHQtRtyf*#VD`I@pVt1V?1()=n9g(q6CufB?zyd@RTJ;2M3w%gC zP}Q`1llZrT27Y@5T+v@fyyWNdq1Az#a{S#ay;;R+{l92U_sm#+uCXZ9ho4-q$rrlOIX z1cx~`-E6BK9WAkVhLsg90V%06RHV-t3Hu|MI2?Zp?Whx&cX{G`V6-UEb?~zOCV7Tp zZS-jg=C2$e+re4NSAc;Li$39er$L`HFwT?Y;Ipm*YT&2FuA~2>y>kz%IbZ+&+Jmv2 zMx=5`2P4NErp6(aSdNJ@LP~{{2l$+BTXgYHq6 zX~MEXJy++)<*8V~h>u!wCJS{$F@+tGlm>}EZ4~N(T9S6;#iLrW{M=HuJp#rc^md4X z(fc~1I_#yYJGJ`KRhg9Cw;d^KtZ#Y9#rU6H;4HO+;W-01$x-vx^G3=oN1^waZ)&=s z;8G!v8sUyDse+jK>Y@GZzFQj)%J?P=w|~Tv`R^@C=3N2lM0Gc4DDK*rzCw30X@NEH z;eqfRgwrA?Tzn}06mAhIYu@sB{yOmU{*pCKEIeH45>CN*Fg86HizvNU#F>z|{%ZSN zse%%lMDl+hXJUtVkl>4xTM5E7y}lm+VC;t$N*7JcnIOr{Z`aN!81AZeyzTk}GChDl zz2bl&(tBZkSnPUpGg~G*P9vcHw$dHib>$7MJ`WpsB4%3yX^aw`?Rb5tpM9{n)Z=k( zc`x^5zdqwue)`3k88ahJm}+Z;;Z^vPNbDqLa@LhyMAR7vP7L6+M2Z4Z@KDl(;l5sUg};*;V#Ktq3TId@Fx*N!Svt%=UaW7?(~|Fkyea-(XrxgeA@2WM>sXb zSB8QnBUb2MCm@Pw{CG3Vn{1~diHnl?*+Jb*WGZtIA-}v@;7axal8la56M~}FCnMC< z^nZ5+7CM!x^_iWIUF~-bL5e!XkB}CH&avBfPDi@+f_+V|*(0I1#M}xVNIvn8Vany@ z)k0N0WJ)}N3~7p~w=ek-ymvG*@@A+H5!k2Z+OwD&7Ca2*VDfFpb=i^s-K2Ap@Vg&d z>e5LAq58!?53J8rTLoZQN8*HV zuX}nvpZ52`AxxgFMzMoJiJ)G`KrXEB! z5`L4P-STKwUnDadiQp(Zw&eft5Td4t6139+0Hux+Ny-ZFKLvNpUSz&Giu7A z@d*&|DDMLifK(xY*p&!(MLI?QImYsb90HHUqC!b@Jd9?R8nH)M$qOSqI&Fe^US?%? z4W!R{Z?F57LT4NM{a%=+A}Re-4eUu9D_{>`=aFi*SVlW)F;X)1#8iY{-Ez9A*-nH%$#}-;ZSJuRq&TTz%|Vb_ z%-&xlQ}?&BTC^n!zW=ubseeb{`!~JjvQY`WvcH8 zfuh9RYH#Hp;PPPbHK&;@&FONWFRHWU;51C3f8`)L2R*;k_WS9uVeQXB+TE#{#X!Zy zNLZ{LjeeQ>GGrZ~%%K}Dv4bb?5p=^%_8u9I%*h#^3S40q0P(leQ4V^4TGPq1UbmVy ztc#0FXUGB`wZW6MBDKglJ|%&JH}bd3e7)fMz)fS8o^x9;hVFvgY`M{wU-Q+V2nc7< z2mM1%0C|zJ_@u%(T$Iw(Mf?j#MlX0V{qT+P$?K?w4cecK6y$+`%bLX4pNO@Plr>bV zAyaghoS9F|vpY=FZ|9_Qj)e#*6Zu!sB;Dm8JxNf|4rb54wzK<&Z7tQNI4kq_pN_pa z^<(PGoxMELAqKPR95Vx)fhU}@EeHvUh#%w%4n+gCksv9o(m(!6rP#um3WTf+Y3BXk zceujqBj@}C*1bSJW1uML(a86_$*p9%PjC6A4+%k^Di2zSL!ugr3c!ShK(uGBFw#$S zF3%5xabfb$tH4@27+^DWs+(5fN#qONzfiwXb6q4~)zHi*`T0VW6PhVZO=PWta&5hD zLi_bHVGo1<3aYX6i)WyZ#M>9q{{lA8fES2G{kEk9E)Ck~y!;E)ROGdEC@7QGm%EhT zy-IgFb+hl+#miMb?Y%gh+~+q77135tu1n?E>3g zk+VRWx0IoVQ1omERGI+nm4{5PztsiMG{nH85@^O?5tlh!fE&??3czEvo+vigz8ZpR z6gIGIh5RQ^kfD(85)K_Y1lWtWx%Sp^0hfKOBkO3w^#DejvG?6OHeR?e&|>c__eL$d z@D#-vl~o=^dmjxWECLdNuv?zRzp!>b@hd*LA~vIg1(~h@jKVPw8DyXlCTiuN%7}S$ z52zPnIYUJoclN9?077_OZuJFIfN(qk!e0#j`gi6xNc2LSOd31x+suByPokGesn~(d z0o^cB$9Jbc$p*}q-=d-nl$bK;Tcz!%3sgu}4 zVnRHf1a)JifzZQFdXkM9@*}vA(ZWuYA9B9}VxR-6IKAUTg0B%~()F_)7H(<>tPGf7 zZxno)1f8L>2wVT#j^{%j)7Xjjy}_$cyfR0l_0?)zE5svUaU2y;EjUGd-SFYg?q1>u zK)YnzB~yQ^#3S{3H>L80PiY@*dCis}^bsIc_B5ZO1WtV9y%f$1`ho@?-@S?k&d9eS z)ej82FUI{UYTt0H3ipC^)D3Ne{L4P?GyBwax#?!>@GZSUFaAqxvx4KTDr%gZV7=>D zm=M~D2M3NT4_Lim!7r8;#vjOen|c25abm}EQlfru3tc4_f-o$a=Xw;w5Dd>7HsWU| zN5|o@0)JgGX{TmlQg$KwFY)b-v$m<(ZGD^_>xctP<(8oKVrC^a@6{U1FL~ou|YEP>>$}%aR_64%3B&vXboeN<;ZOXA==(I2X`UpWayL z`=qh19EQDS>2*+6**4WoyhFFw9os1QA`(bRAGfq7UQnZ&w88WN#rf6frBKuumZ&Y(KJ@do- zB}IIV&j(7id5zVe%F8HHc<*^7C&>kbNCky8??|n%Im$T(tLYgO*V73fKyb)p<OxPo|kPYgJ%RSnAkL2lRbc^M5IVx zh-0?jg^4;kXW=!dy;^DAhY||K7Yc&eqlp4Q)Rzc(P#La)!-D#`O8=X66IBg#UdVL9 z-zuaZ>~;jBzElc=aG73 z5Gn+IL9e5nnG0y#V&vhbbjHAF8$LtswCYQEZ=}-UL<3So*M?0oiFPzf zkukwSNC^(p(X-c89iqQ(A-ozTfKa>|PnzTf&gWqpWS=;p=d?f%Z-nJFlynb?ci*kp ze(WLFCcVt*XIMLIhWXhQx_g3piX>C;qalDLRAubp-48V>#ZgSYD^9`@TENJh0G*=& zI^V1`(kP|k0mFRxtRs76o1*>jvt{b5{=|`;uyTJ<;)v3M!&`dwa(Qq;ZoBfp$laP5 zewq1;DJjN7KBmN%51?hYJp40;=sh&Cw8{1qH_50iz>3Tbh2a7v}8+%Y#1e5D=z6yP1$Ksv*Gzy6=1_a5c|;yHJJOd0R`%V3N{a9bO4@ zz_|7WP>E)-3H{At-`jPEmkxX%=-tv)l9p#ur*J9{HB+=E?CjWUFx?~fi=$?*UcF2D z>MO2;GxU7pJN3i;A<^q1x137x_`x}|&LdOBDtciOBq_UNGrhlTo%57}0wQxfghFs_ zyJk!6s4FYp(ffF4eoa!JIxHw5cBjcqk2)34fXe8h6RjRRIKO4Bt7hN04&N>w(U*J! z?i-Kwy@c=idXA~^vHpp+m=jI%0S_I{pQm1AJZnx?*6+lA7nip*_B?N{rs-NzkwV@Aqy)eu zAiV~%uBki^#$y9fV>GL!x6Xkm5VOf_h6!z(fc>Id1jZ9+4j_zbBv(JrNFNikDI@6u z_x!pFhNFz;1k&!7Ki1^$0q0cVHh(IhqM&Dt9k2b6uYx;+O@#_d-17(DiUz~T z`z~;uW|X+nPY}8^IiTDkEkv^V7eeJ$v%xiN^N#kBMUpl8DO*8+-$@ z!nH-!K{&=A;0EEI7$&ZNqV*G%BpOi=*u*VT`I~CnBn8b{@#?8VJm0osv7DT_LSUrf1|1JDoSxU5Egy4%j>2_k1aWt2Ghff z9YQ8WIUj(lM(#KFj|TNUYJnF3A7BoUZd}7AvTgx&KiX8KJDMH!d(`ZG*MQ`COPB-~ z5f{O{Dza8MA;Ad1c2f3|PRxk=RB(MK(8N`eF~2=7sU(pB6Htr_CcVSW_GUKLS*!sc z6EbuEYdS2`vYcrN0~@Z!e%gf8Ks%V^E3Vfg?=!u?)hCW;iiKd7UW#s;totQMCj0Rd*4AsnRG`-vyPO&;$D)S@(-VLt8jRR?JqFyc6)QIxaXk`a6O zuy=vA^U&g|II;nK=?f!Mub`L9A_WbD)w>M{xa3@k3M4Gq;rq7g;dIY5(Df0VjldW{d zjT;xZkD@EK$WD-crp{ZJ+cIVlHOJZBsOKZG3l#0ta1pNLL~2R_)d9M!jWJ1u z4=T!G?co0{xxW8ra&@2Z1D}5J;^@a47Ym+E=}s(HkFh65gqxk;`(=vv!)zQy!a%As zh~Xvyu_0q9SuD78ucU@#eH`A5OKyzGqkA;At!LetucDJ;DLn~Z73x;b3RRETfLC*; zZG@XB^}361){dRS6uB}9-v2Umb%T^@XP&FP;M?Y~0n0Q;31X+P74`cFlsuS%=$#uzj< zE!$SMw9$UY%l#5XS*k=kp;Y>RO0NZ(?xa1H7yRa5|KT6{Z1F|^@tp8Og%$0n(cGvdruy{__Dg;=wKxrWjl*4x4V4+;Lu`^fXL|^n=E4o^n8^yYB=tQ zwbXb*$ME_dRpK6{x%&owL#5^@O2x1j0rZscpjdTvoxpos%jHG`h035YWMoY12dAt&kU9_kc*y3ZR( z^xvHHVlsUnQ~&`G1!08?1XAA%(z(?ncrtrrthN&zL79$w$g6 zGoxrOJC>HgA5QlUN8|w0ybowDQuE0@8Vl6BM&TKEohUC_OD$jMdA)rK(te6FNW(;K z=mW|VFnengz(heo*3xAbOL}s4NPixJAMs3lX!YNevtkgkU8cCaADMzveK4#-p)3Id7}1=3OH&VGrXJiSI(kPCL*!~iYxgF_z1y>kfLe7I??$J zeE)bJXU^-LR0w^L&Ik@UG_(IWKC?F~&CR;XGH$_JD=iap>BOM&fgjNYcy0*O>a_q4 z)b~qA^KCssynL8POl___8Ro>Xe6y#=Bh66qSIx74z@+ynJW?0`BWh_R8 z=*Q{j$>~daZ1B-~koc!$NIX3~p%2>AXNWhIk51n}KI|PnEGiRI3yTEY4A|L1!AIv0 zCJMXz)6~cj{Te&9Lu0@EaxJ@26l-v!xYyaDMxkVam*GICM#Qj2MUag+7U@kP_%x&W z{6b-UVAZMFA(fUPvua8e9X|1OT`JK^UFp_K6)PTb!z6bfZ{jj860ygoJUXliuus{i zKasnHN{B?>zq*}qf+nRqpgL&W0)9Ax9+J&S_h0%orXP$QaHmJ7Q1%5Xqo_sng&EI7 zA!>eIsJ(F5(2yNvgw*MXT>&SEy<#RsQ z_Gb<$ywm->PsEoz?;%__iUdq1ea6PYKDiK`TgKbd{9eGZ5QaryW{X!SROH|PLs>b# z*TFk1V=d?KzJ|Z9XLp{KO?hM-saA|?^Qvq=6AmxToY22+D!I{+y)V4j^tNAS$ubt5 zW*XuLBfqp(HUrluzQ>PS^NlsM8If;_M?~i{zGST*9NxOYX}UKfndCSr%F zizjD)#@SwnGw1W;s`L(_tbm73#2WDI{D@&u6TXYt)R`yzPr{aMA<%|woH26wIQ~w% zZIi=a0~?R%R(cZWydn5sAI`X+0K?|Jsfs*SvNeAZmsI=0#B%_mejg-zPV9thS7|dl zMIaXJ^Fi&=yD0Ugb4+K?T)JJ$1dZ387 zLbS(TBUb4jcT_ZVNWKtTcGw-nIg)h5%mF8MWI_HOCH5u3e;L#}QE}oEPhKot@u?2~ zb*_;3Tb5=Yx|lo((drR$^Yw)sTZ9Y@As>n?Pa4$i);}eBs0@cArsmfa?yL4ZjUqcf zpskUX>~fzSk+7a&HPItYZ=2Y8SOMQ_A$Q>|g?|7C0}MGodg2B?r*sYF z5AQ^@{J{1DWa~L){1uI#;`AT|++PV?3|TI@eD7G96jfp}RFRlgB&tG(F~_eEL=6et zLq)k#{M_Rl0lr;OK~PQLQEt2Rfu(Xj;k8`4hMj0Z=%;1r{_8R;5c$O5deP(^JZVgm zls94?(DN({0^v`2$%J`S!cA`CYPLz=Tk?CHb5&^cl& zdf*KEs2llCY*<>p^D%G1%v;>q8A}HM6~}do2uOTGx0f?spA^n~L_B-?uzz^qWR8A5 zH0xMKje~xvH(gGMv?`wx_jxRdkQEkhPGZZ9XnVS=@AQE(+M(YVX(-|i0wKIYI%!iP zHJ29@km{%~H)F9gpmvaaVqx?E^8g{*8wGUBsA!;&6Rl?gI{C}k+l^Jox^hs)Ymu%D z=uPraXi%GhN1?iF&w@xmMH)}RLtuK%~#yj4+j^GNuGG~+K`wrB0vcz$=L z^yHx)HX%nd1`QuLH~9Unnc?Bx&h|SLIiinC`S+%~&dm&$h3hyDi0m?2#muFAhOE2l zAcuk9_8T^{tIdYOq0ynX&7W5JKYDXAHgA2+Lz|6?g8BzG)yV9$7IqFM{uh7WQRm4S z%u+xW^soDj8`sxOpMud<`cT>s14Cy2mL9}~ChFDR1b<(vZnxB%5=zm^$(^`ZrTXn# zhZ?l+1qB7mmoJZBnKZt69T5|hG%Zl>yK-eQ+-SMgJ@x{|am?5|zsZ08e5#(_lI6=) z)Ab}rFH-WfPRBNsUst^S{rxv@-u%rsq6@Na+EygTrtmtbV0wRss3tR zZ^OgGzVQ7NB}?t>jHgW-ynk+SQBm47#iK`$$bB{|SDGzYaO&~zNCV7cj0P#3{xb1? zG6E%cD@)6RhYzcEooQ;C&8!8g^XMZ-)ciNOx@u@>FbM9-7=()pUXbp%BPw+z^iHEe z@8{=UKc0K8iPLdq!W+YR!82GK-kNb(1lyIf& z4;FG#>dJ*VGnJ5(ibhC9MFscN@C(r|T@NPVXU&>*HOI)npzzTnH%Oxui}x+Ex3L+V zbXGEP)pM(^J8ty)G~%sE$86y=_OZPkT%x|s1Ph7>IaDGi80GJ=_bZ~3iOpz~qV7+bfS5di}#f&|HuML-(_$w(FvkgVhkDu^P2AUS8rIY$K%B}&do zKr%=UO~c&}{QrN>y>sf!ojG%>Zq0OkRbL~`+wc2?z1LoQt>>ML^t}^==LsZ6}h+_k5vW5VfjE-4w$cM8<6;;PO5 z%+5B=H#Kl}adtISMEczGndR(SEiTRoF%n#kY_|GP&q{n3ZVz6rC!SOd?7zj3(z?m+ zzs)+KO}hWi`0lyG`|tWri67W|_l4{KKOb{XTAD9is2evY+Z^(sb)L*0Xo}$DeDPZ} z-*iBg)3E&)wM~DFL0jTfmzGO@d;|rH=1OV=yf44Hs>XEXO7(b=`6HMZh0oH|v>ELBO_Oa8g%sNorB-{5G7Wx3-w7;ytz#77jNeMutq+W>Y>pI2 zwVLTP_&fYnwbHpA*3rKs)tWwY-PzTX-Pv)nF(QXYgS4EF zrwp3(6>OGE#fg9L;xg$yq~Iez*I(TB@##&?vTjQicq~pBW&{59ehcSxt@c|!qGzu? zV4daHaM{_MctdxEle5FfPFmV~abwhn%Fk<{)TXbKhTA*cE{xlZi;gl^zqx6>8%E*7 z=_}&r{Jfad3JxilM&rA4^?fe=+`tX((#Qx%lQY$_k;X3O!=@H_U%w(_9KmlVcjLwl z_~sBz+mXWoELwvzi@o_qM&G?Cc`YYDUXuzXO;m~%drw~XKmU&Uaa^H$M!PydR! z8_H{y0z(-*9TiRvoJO4w;IV(PRBr#a+lFEDtsigI zk8(;pOhlgKvb!U3|3112;dR@sKVfEh&Ukx)#cyXB)C$s?t>77w{rySHx0mX9ZU06W z824Nbs!vc%RkBN8pH9t$J#&MPPmQJQ@2e8)IR;^2x8$#Ga1sn>tR;J?6<8AyM>CMu9-BkcH(LVO`)9TObQRop2TjSsDY;{#m ze|vXUHT#J>jqUJ(j&wC;SZpg>UsOvh4X~}>KTugM{uaw*3*$0Lfn{v_Dy4A9S&cb} zamXmsY^Y+ouP~Etp=&nGtRmTAzW83cT4CqV&KfthfIWws17nWcXgB#de5W6?hSG$R zf&=07y%%S0)Gkf7#D#Jg_?1}ABZYJvWDPEGC+!VmxSCJJZ!xf88ZXRxdVJEqWdU z>m_=3dqOBhB{vZ+``MeCF9m)z-IW;yJ3sukg@0gRBJ8_l>$%>@rAVhW6|329Sy+9% z*0aIlUgu)qF$@=f*O(Wpixn(RM7adg)zsEflxT{GyrMH$7%XQ{Oi}P1Uz=>X>$d{C zU?#$5Q1;1_C%%1dRlbKDrhlex7lsiz8pA#}94srgUzv=l_8^&oXY1VFTwdLrh)NZ4 zC+yA9ecxMPl6vIC`Db5T5Aa(2@zQGujv*1;5N1?L`@3~Y_j(tRMwMLVVt0;XeWb(u zZCFB5u)R7fckyN&NwRlgWV&1r5Ugan;3Z)<%hh^Q?@ccD(>0jBG_#MvW~_BC7eTerV89VpAL-dcTX}#;%Zhe6uO`F<|V%v`*FIN zw-Ub=CYz}#paU`YjrR6}<`ua5cZgd8GYN@_=l#40j-Ip)B(om!tlS=Ffw;%cp8LzX zbRjC&cJaw*=|aV_${=HA*^~Qhu)O{#n!TvhSIE_C^ct=8aR@Z)&ieZC>4QlA9#-P& z$&S>Z78u4We0+VmO|T%#J73T)tPi;iWtPM(YF@Ql5L^Cwlon#;LItiVcNW&j_vkyX zy{0=-sjfea2JFUv4^3Lg`ngsq>J3(d{%9)lB{%q(-mLQO>5m5kIPP( zenh#$`uXha?C-EOwtGn~s4draIz`32+L?j8;TsS@_S~UJ-+$R>JkOww82jC27pK*n z^XdA-^DsATuw)F?i=Kbom@6FeN>NNb4=a(4S-ogj#cZU?{SDn{ZnNOBk(TJF5g7*K zM$R7hI4m`@LbXfNA$`zcK|nECPVD&c<0VsxVI2BR7qCGUFQZWKTAK@7aOQyDNJvVy z!T0jl!@8VUZQLMJR=+gWT3EG{B$wbBFB!z7?l6~sIKu`e6)WdXNVd&DvCIDW3nr72 z1(uD{`usq?`MAW1^Bnhy$Z!6tXQ`aMZS7}SeS$kltI~OE?9;=QZXF-@xE}99NSqz1 z$`4`4+aWOV*Bf=DB=qF!GhVrJmwUkS6Wvsxn(1O_iw%CYD;4rk$#hC8fBo;@zb&WR zZ;X$P*>y!O~FJZ~ldh7N6 zeH#Rh3lU87Zm z{2D_!QCO_(J%qu?kTP$3q??vZU26=#Enm5_m0Gd+hiVmqJRl*TNV`9j&BHdW@mMzE z>Is)(0{UE9bt*37Bv_U+Fqrx;x%C8|54&nQE{d(r52(F(@#1jc_(`SV#xCccVvEnJ z`G(`0m=(Y(<7(I0+2u`o^AG2svnnARaJdic~Pa% zRAaz)^h0mCgH6o%Y=1HP5Zn6Efqv`R?ig60XGHNXN;G}3Me580=JiZlTQixE#T=k*Z-*wMVs+eP}NX=yh(%?8yW^gq4d zClAn4DwG2|H8o|wHTBu*_qXGjwXpG0TjK5+?e5@1d0xaqdgLGZ@lXgqrm}zlN7mz) z&Ai04+$BuXgSMk5boKQeb_M~apbdkv6zmFR9~uG3)PFedUW6?Oxn6OiDWbY%?CtYD zlR|^>x`3?_4_f|uz)k+);c0fDD=mBNUw3f7{~En1kR=jS>ZFUQ5=F!Dmlavza_`wk5B}o)=#Cb9WdT z7YLl|&2IzfS;qWY$ZFcZwY9Y!AfjU0BU!8I_LlrE%~W?H3VXcYA4oKG8YSVU0F{#l zTVwhlWGgH#E}m!C^MZhux-?!t14yX__QnbnPZEA|a&qm7QhRF*k`L^^aKWv~D{v$C zVN+i+lZP=32n|hvVVsHc5tQ>dNv)7?s0gcFiq>hx7vTP9h$X22{s3R4bU})disV;; zL6V2T2?z`fG&|yhbEbi5;k92$3gtG-pwM!Zg(TJLMaj-jI~F&PS-Fz}xg*79VUX8+ z>}{fSL<+!Xh8s7qejM6WhtTww+po3?toO&YeSSC-psWcvCzi%}Lpw^BhUd93fWcA# z3aOjR6Ma1qS(}x+I3aB7QCi37Z{I{$r`ql<|7nyjG#%hDAG@z%Hy(h}HJWZFjS`MY ztx^jrj%Od0GBwjn=Sw63h$zCcQvl%E%wmZU8330+I?iXmg#A`(g?41|xb-0IbM}ih z6pERe<&NW~gJnI-jy&*ai4Q_zAxcc|;1+_uW#V1B&j(Vq zpUza4PEVzaOF}|IGVF~=tv0p1XTA_1;{zC#8LnLuSJraMM~DXMvZ?ND9R$N+y~LqF zbRO;$))6CiYkRqw({bbZ32I)2E8<>Rd9*Owyr;##as@Cbw!$__Q_0nv!mkf?EsoZ9 zq^Yo{Kgt$?1@y^s%2`CqX*B?WJQUd>%}+yqg<4M$#`t4lvgo@r64KI2sY>a2Pk){< z=`WH+Pz`=uX_tRE1psidm>I~0`-AVHnyx6MNJ=;qBnR$`NZ5=BTx`MHwXR#1c)!J>o8c_$uK z{BNjCf4w?Pv;qOi2<=ixH_NpmV?Da^nR_59)eIA5)(m3d$N9raw|}%hmD?JC^LO=;k_aj#FsZ3|OJi zXTLT}xwIt9n(D(eTb&Kbr^PKq_U-wrl7TCZXNkYKBuEA+IXXHPg&iPzZX9>C_6!Ci zde-#u$$t<+&qHYT-x*go(C@$Ne#43gGI$kS@;bQp#?|B)@MP%qn5ydk?Z>FnVCL_> zA(q8&t#;(3F2NuX0YIaNECL^oyeQ!Zu!0$jf?~X6?q|AWScs8U zu-g-0;~M~MyUYSp0}Pb>?TVtiN&@+;BAKjr#T1G z2I86+lrzHV3?SwsMqt_f!F;XHh1G?kLQo9Q zw}YLy2cV&RMw4vVo)iOl2xcwwTPwAaVv@|)wSxV*eDpFzmK^X)VZ7wJa~$2;NB1zmmAEgJx9>@3oSoA1!TdoWY=xPId^D`)5(d59S z<>ch709Z`{>~25&@+ch^rDh@LGDOiqeV*#LxfIH-?|tUX86c7}S=aY>(M8K+aW~hX zPDqiB6Wx(1*iqkw=0q!vX;)f|u{03+P;N%Zg}}SjqyCH6dA1&67rTnf46ZCLxr zOYk`>!-bq`g;9MJO5zu_=-p$zWCG85q2&z&aLxckX{$!De1 z-)Ns3F+G$vYF_NWeu{!j^tOtgUSf(uvfP-x^@)Rclh>JB_&Ld>J~4ZO0H-X6T~Ud?yZDmhwT}nijl8G6q}GxeqDnA}ry${yV|SR>e;(w(|fKC~h4k~K$CFyFrrp|>6}VB)h< zf*%l+n`tUd&s4wIe=IIm{l$s6%XjuSB5Xm}l_X9tGM?@2%~&C6^8a`Xhf|8bAh6h* zGtB>@sGjuX&wY_tSPZxO8}~01VIQ za2t|q0!PE!cOR?t9OYZ{QM3}>az4( znB^Uk=&Y>mwVUu%BVU89+F>niQxa{Jv+nPH(vzvdEOVfJSE!kJ_%kLhCT&Hgu@ z@85qKjin`!Wm>o-*njcsM)rUoYyS5#fR%^yBhGGx7oPaKc9qoGxbWMuRuX9kZK}^p zYNzZR5~aYodAO(UVy%V>(^(#h4KmlwoAd~gm2Da~x4RmB@64G1tHxYUtsW+?bVAMjWqoE| z&rS5dT|GY3PA|0B%g%SV$DfEvyjDZw!WFXTxXZwk7_(?9@MzKI~jI#lYMJz_u8i{=HA6iQmm_+ zDQ$IIuMO_X_Nfj8%5)gqn^b;89YffjMmTf1cn3EQfguoxGZF zzHXvZq59PW#Fb=RxbM@vckv^Aw#FgqESAS733ATr3-+iK23VpiIf)*2T3Uhmkz>KF)$97THvGrkkhD9Vh3C`!((Q{vw*}EOKqqDuxR&4|s%( z|CD2`i^g`MX*2Mrr|qjx=eVbAS5=kVe^#k6E+N-ncIPx_J^CAAXLuOVPR?cqXWhc* z+|^euu*dX=vr*mXpEdnNeIPjE64iL0T1M%t6E^p*oOeWw?qCVgXuJhVb&tuQA;WMX zmn3{?r0K@okH&efp3`SkR6GJ=5hRY4@EyTF zCI}OvPuJg`TjKcg(>C2Umv=Vjb;lk59+UTkIcdaS=^~fmGc~8R{TmTMIpDBR4v9So zAmh9WDgesyYkfdIbs_i`bNA>8Dy|1mKAzMuYP|CHpiKB}fwwv44#|_z$yH8$DX5LVGsIql-t&$B&!+gytP!@INB8LnOxV^YmS$U6T?4Iz_e*(0ds@`@Aw zyilQW{mrZ{bZYp}2yu?5eOeOl_CP`O+<}X7Ap*NS`Q@3k>^GVwOiR~FLms=8ESnkq zA>w1#p}T&`E9WOL`W%*%GQj2C9Ma*lp8W-!3!)ML#$sDhYZe~Ks3lhH@R3K-qQ?$L z7ZI)T2Xo8h7%BN@US#ysf4W&(p7}D=p|6ZPXx#=^6^Ii#cjU{BgSXeot#|V59T=yX zjf+{NiMR;WG!>}z)=D$yi0pUs;^u`5*7f@u8XnX%QjrFhyeEQZRxh)ab-~YQDJDLk z#Lt{dsO)XVkHv$^DJyT0aDvV1CmHhSNIr)uWhuzU#)fh)V_t+ZY z54yLc`{8AvZ1+);+}F#(e=APFFZDm_0XEoKO5%AE<#5F-=PS^BsR)*%)-05cz6*<9 zUc^vKGB7hY8QB4LM~xpK=x6E}GxJi5@4PFZIHLIcSyAPE)@oz?i{&F^^%nYcLi$zs@b}jM(f0w%>G$c= z>RO)}BOqD*bNLSIrii}V)DwdBA?;@g40R?e!!H#%2r!zvB>6>luk%<83UtRObd?3H z-zHYvZ|R77HvOJd10TauF((7UiF^(u_l)Pb!dFv`VfQZ;Ke8_QpGQ(j<=WZYIBuRS5x~%!Atg4rd-L z+%ZYmv9D72)~|k;uY8@{*HuX{C7CtXtns;L?!BtgBNuZPZd_z!;mO<~b&7VqCW0n1 zDf~Mak)5cc+q!Gp{#D$&6LZ`)5O={!5*FBw4b9lQ*_fY}%U=xe= zs|vOK855zIxBO;aObo1fz;l?DuLf3ZO*3A-dKDG)zI2G%@XLGFav2eLz+FWByZS}t zVNXwwUpyfhL$G1(et4D&@Kr8aFgS=gmVUqNp#pvHh2*xmyD#3w2UJ#_n>N3@SugBs zTXuj^bZJ~-q=bW4VWP2LC|Fw$_qgCwL&VW5b44Co!H4AwaYNP}Mu~!aA%t;=OV%i} zy)`+vP_`_6_1d*igI948f=;S_z?1!O^!Y%^{{5^ta7XgcMQD3Ta8#k#T(_AQY9M(> z$Fk9R3bJGZ8;oo282(R_=}1}gr?aL?QDHq!z7APtVyDKNGdVZa$R8)j2-GfByb+N# zP0|dK-gv&y?yz#Zc>cNbOPw_V7Sh@Qkw)J|oa}e4%S3scY(iR$@?OWCpXwL7^;ILTqYQ?Qea2x`19l92~Wv z<0Bx7yP$97|M6qAX1Tq4shwZZO%lv0Cy~WS^7-`|8AsOR;}lX#&7Oo;8Chg+&MwI0 zJX!Oqv{L!nbt`-NOk=Efr4akyU;}+=o=UG{%9Or46=ySKu8~&Zoj+_pa7V0T7pPB6 za0M;Ts@#qvf&nJSUXbZjZ-)g6>LPogC00iWQD_%{fS30DNu= zbOm68DGnFZV1e3zxU$T|A{*;=zpYJdNWI2{xz6gu9(&j0q`}H$OUk3{Sm&Kh{mfbHZBr*#dd)edDu2m|XJYNl!mRPicmrbBmdZ&BIItIK~t5~zl(ErQ|!p<3z>BcTBz z10<>Xo?;>)m{Y_sf=H49Ic>mxCfz+l85$-hDA`1jghig(_zctQ6QHwto~3g^*Je^T z=suAR2J`h6nK;rEm5jWh+E!gJnaOCY+*xH|@A!J8g(nF>>sxW_4?VLqRA=rV5ME&? z6Gu&VAUu|g1|XL}*S-3IRo1yXNTlVc?R5-u?5eyr#HEPUmV2}}P>XmKxU3`~@{*uo zp_j5>*bBSCg%BMM92)36a-26tjz-OF1Cel^)6l=bY$yY`u+Zd_AJ8U{-*p9%8!?5CPfAFU~IYIN;L^aBFj+w=EK%=;-7_FzZN`zpgO1&%_BIVj~mB z%E5r<+b!z>+dWl05!nXGab|S`LOH0j=;tZMA2)dJGaS~psNvJlIz_P_KSJUngSuq! z6hM=rP8$Od7W65?A5U`Mmr=Upb5?X8+Vi>7d6_f9q6FS54SEqCIgema;3axoo|`o& z9_S?e)I%4!2wp1=&>A2~22+ou}KX}^`Nmp9Ml#_oOGb>M-AEKB){Uqe(#MyWTlS}M4IR6x-^z$;O#s^^oqF0SaGAp1& z&E7J*+_}E}>t19Fsd!)p6nigpjK1_m@Vuxp?%4nMTh_$tr1ti9nY{h0V`^NJSq(u1 zk;pKiH?cPQXB-GPY2Xf*&8k^1sOZfvE#<^EDs^bvXt;Oi+|y8^34_|!y-YndGBw6| z2jfZ&(F&2zihLMR%Js)TQx5objH@yE_0eKY3S-lmgCyT*AJQlYAvyEaIqTN)%cN+M zupR%?brqolTp#B~fBze)9~uv3``m%e=_|sWtt%m%kx$ZO+3}}tu;5(aQW8+UOKGoSwe!}^!i8ssOYIGr z3Aem>eAz_E37ZH78#=H0Wj3b}np4a%7jAl#Xr}fJlRs0V!&Nw0b;-A195RLyjVf)M zyf}-SigDd1EX2$v-Pj>%y*QxxQyhAkYPXEmK&M&3zij|4iQqi>1+XJ*>`Kd`< z6rCBdy~cWKxqS_C3pGgOu;&-Zbh*Gs1B8f938rfJxcyYwa$MP zBdHg-?FyUgQ*J3GO>_0Vd0w&LmNPFyvo1WeJeN@#eakPxYJxf}YoiDqsByBXquGLs*Cj8)!Tr0wKdK8Je)W4%9Q>YT50rdW}(VznY| zr(o0{J#g|AW&2wv3RLs2lIBqr^cSc7H}vwsxRyryC!>Y;&YEKtv_;Y^|Dl;?a9qTcKTL zL2ZvzfnYqCj=y22)a<&y=bOZ#7#00JfZvOg!jsS&lyj5W+w>Q?tCF64!M}fEeMICR|MZ2T zir$U%(tg~hC)QTDrM)^!FS6gS83ukLSmfCLHyyllPSMNF-1?s%K6XT#^x!{#*>KT| zLGM)v_4vu?{=WTya_Bv4%DE-(k59<=FMf;@zC0yM*z**s+A)|%?(lnyqjD92`=5XG z5(wfew(t;H()p)n-ai_pQ0vvE#ceIu3x)M4QD83S?KPBK)jdys+*W?{*zX_hh_sC7 zxurrcX|7i>VxFJeYc+{-ioBmB{qZ7&>xt8;OQS6O6qiNm37+B(bBBGLxOSO(k21RK zS4k_p`Rk2v6v4cTrZ2Vm7@1U%oBjG#IjvDWy|cXQ#gygE?9HvmoGNbb>!L4ISCTvm z61@2LB}VCe;KU;ijWg$^oNiUWYi@kT%jLdWQ+(&Kv$SJm(P<=^{$d^zT0<&DYmLG9 z*8V*3P_sik&BoZ_cpNKu22H`iW2d_nRU3I)lA`6Zv5r{O#sd08?|v z;x7D#uB$!ZjQ~KgAjV1pD2B8)kTWmLCmz7aq;cT-SQw^r3aUkfF@%Z-hV9m;by zg>(j$+{qLTY5$NAN>1*85C8W9`X$lWncKPRD!;pV&f*d4j_PVuQnqx^ZvBR!f=X@q z)8e;HXGR%53$g2F}St>R}AVmkz%?(v*0UB!qR0F#1 zvrT^vU~c|yp1me=9sU4Oc}M?yMGeOFA{iOiX%4hXd0@KVg6cd8h7S=@gXIn#h=`&U zR0rya*rpA0G3Ai?U9((5qA*C=CPwH1hUsAHWMf5-pSZvy1JXuf8+lmo)^BcC;GdWp z>0N;fW3|wkh-9=aIiwuZL$^IqSi`z`O;LRn~MN?+?hJ z0!wDYn0$Bda^4BfRl)ZkTV3=i_;RIp3x$)5Ij6-hJ)J$~Mz|$oqS$@sM}XD{u6KQw zYV8XA7V`y|VA-!JS=C!Tnj<0Ox`|qc^L=`_(XTKr;CFD(Vmp`P5U6b0ps*KI-C#cs zvmO#dzju8`eik(Td#~t?i~p5w_x?rx7j;?oL-v2CXA|Z(Vv1?7C{|CT+2_Qwh_n?* zS&8Gm)T%Qp$N1a}-R}=U@AiM7Wpw+Fd;QA(!~75Q`v39t-*rXX7RW9~J;PxoFfT{> zF{EZdZ9k{McyeElBnYP5&p!WgOLF~RqyL|OZZF=$_x;bfT5flPYBLSCy<$&mi45 z^v(^J#(sjZ{E@FN?>=El}n{{h&JTU<}oSUpx@DNTaUlqw%7K>~NqR zhzC|@x*iJcY{VhCRm5!zaUd?c{xpVh>U<|gZDc>B60%wt)BuJ;8H!3l{E9rHB#>wb z3UZNdNzCEm=OeEM?Pr*v2CJJG1+_*#Xbm$#;$_d|UqtiWK@z^T07TGMxi1T0>rkUH|4jxhVry8v)#G?q=Wu zggKBOAywtoO_vPJR(*r zZmJbD*#7-`^aEsCDaYyA!nV-%~8+4hZyFyRLQ?su^47~W^2qXf6g zn(73U!*A$xK-mD7*KekQ%Y)X+j_DzYUwOIHG)lRKiVwOvrClJ}Sl*lQpa7i%TFjbd z&-k|{xS5cdg~Tsryow?<&PGn}Ej+ zaEO5OA@=8|>x^7nofEv2l$5|f`Z8B;FS*u9OG?VWCug#(XDYM}M5`L)Q*B6@iQRLV zKrxS`rB@|2LwRg^bc3d#Khc3WZ+OtdUAHjKAfubHgbo7*5B2(&mjr$XclDOwPWKpSJfG2#K72vhSCe6!l#CvL8PAt( zQ0b6SQKf?HUI9w&-1(x>lgJZO*VM$E)ekb=Y1r0CGCyWs%nxt3&G%%ii?y^@vA}J7 zq65-nz{p|!(E5d(UX1hgT+N`*8j$rT6w`Y7rg_*vP-t#jaF8O-vS z)ykx-08A~CtaceiW@AoiihVc?lHq7ruqp6hXgdhvX4#pvD%8O*gnU52(>Vst#H+iq zGE_m7nnVN^Km{ZV|8U{9+`D)0BtY#0rT$1sXlBC-zo=wl&%?v zjub^C!vXo|Y%#eLa8Z8o&`Ozt;a7$Qn*V%61iT*I><)y&8;AJFKW;lXu|ue0>CP6` zM50=dErB?7CO#zh3LgRG%NtF*aWX(i7JS#o5B7iIuL>7% zP?Ar4Agit(4#8~_%MR>xDtH@akn-_0iQu{C#h)KW1;!tY$}&<3 z2tr}sU&XdUT<`~%4^oKD^%b%#wMGC$eg^s;B=WR^VKIUj1oTs0yyVcge&F~@aPy@C zZL6QamlBUXi^ngxbb+eS)a2*^(z=F6U!u@Ne%TbcMa}~lEz)_*00siqf!AS-zQyj7 zK@eKyK@dUf3~AcHIFbzGI`f^%tQ|4}>aGKL;DUJXwP@tV3w*Coh4#_otESz=F%J z18U*SbY-p=4}b_Z85#r|+aa}}f(G_p!f&GS=0c`*IL`}_)`UD#VOwCQ_Xj@y3mx>>K{^MMXRV zpn*qjCh%42OVwgFu6Ad;jt$L(!8AGQeLrX_8F;e=w2=V)JRE&)!HhQIB}+!Xe?W>+ z1!%PeuxM$5m&@PM;JZJIblu@&ahDrlm&G;eK?9szIoqPg~pM)X&yp84zL6%n5Kk^1~RaDHzR` zD?a?OFru~s-ydO~3$D+srKDyoscOPAXdrLL;N4biF-BX#?KTLckz)$fv-V88Nbml4 z_zn~}v0qGR!Mx@KhL?RwIO_Kx6*cgAL3_3hq*@NVsq#A{)Mmc_Hj{dhjMLUi3uF?r zJDHe6mqD~;)BnO_Le+GtRiOvS+exr`w15$B!lIPcdE<_c&`uEo7my*hE+hrskQWC5 ztt_-Lo1%mkR3ZZc5?~Tjz%=FgZX})H*yqQ!2X`teD2Xsl6tj=Mn82j;7QKi=?y`kj z-w(PjL+u1^Gb|EugE)6arQ*e?II0mKaWXzv`#g3~wD)u(a#Z{Y(dV#Vc?RJ+1)3YZ zr8b%R1=Y~Ly)@OzIsEU$*U*)*o=wWoC}p^PTLsKrZQ$GB0G}*UOB#aZDPFS8Aquv` zfZard=Z6nSXPpP#W<0ntJ3)b4#(WfWiUw4lEuhnAU_fs+2H(0{IA9$HOPdMo9M~u@hdPcAI^*Ud9qw3yejj>4NZssBE0h5e z`=kdUZ1yWH_e|y(UAJFR6ZtbJ)@AN*R`{t1++0e23J?|?b#V?Em{WpK-1!Ks1tW(h zn3a-1QTI=IIy@s%tNVpV5S=o(7Y#FFxU;?4o2}!4x@yS63#Avd&T{$X^-fg(0%xEV zK&fVHW%U>CaC;_@CZv!V2Slm}bHU&kXbzcL0*r!fBL~DciW&jT8mf%S843WSj2GaJ zk)sp(Ofv<2rfpPaWij9iN`>MJ8GO3D-a<$-1p7(}U@f{EpfUC1(5)jC0IadO(+3qV z9T+a8x4^ZT4!GtYHVNdLtl0QXG*3prBl@php-*Ie^P&bX_f6Hj`%sk1L2PYaLaV5& z=!K3Gj67;uAPM8N*6vmiavGKI?%-fP1IA|6zvz-$g<0-H`ir9f-=T3-C_?@AU$vq? z&bAqHQf3ZH{jn2|=2EV7P_w2L7tz?(9IK<8<1xM7frG&^Atg6N!s~Gcfq}_B7PT$TVBkqK<7vQf>eS zlS}n1>qhvzJdU}6Qe_mTYnb4YzTT{a9JAct|D^@Me0c)e4h7gv0xm4jeE^`>h5TAD z@pkE@dX48%gZ9>~k%%vYkc;vS+P*KW@`3XdN|Q%j7l8=iEP6l!BXtKsBIq4KGP%(& z1;dwh2vtL_uL18qfQ61AJ{{`Nz%q%*vzk$Ysh2=n_%Yvm$fz>|0I(ej7sX0vC)7h4 za$NqPtfJo(-U4=)j?WKiJ2JJjpbyyv-}A~4$x>F3S`|#7U{G!aK%WUsq~LiL42Ir$ zpR}3>t5^qc5y&%Z0I3IoOG_|sK}M1-ffdE+vf~K-X<4uZDnW@wHwDgu^Q@0u(TW2o z@d&vGpbLpoaKh)$M-^Pe#osvZ;)aZ-S`$jZ!-#%?gx+WilMO)mDC_Nj_%%`2&yn^L z5I+3r24MEj3)t_aV1Q)yflQCGgu!3d2{l0)ICo?gDt9Z8ffIEp{o>)J8nePd5}7Alo2kB6OvGoE0se zafS+|(He9;q<0%o@%t82;jEFFrPYrFApf$tZNu<7cQ^o=M5PzwTXV2mrD*BG${hoC z7#4>+pqw~>*UzAPoLF~5tD+3qd7zY=aF_+?o>&J2N6p!wDKu;`eWs;S5RcknV1`u! zKYfaWmM6j(@W897;b3)11}~%iTz*&C!DN`UX{d1s?Mh(;R`y4Lbh_=c50s9d!8vL$ z_QSUXPDaRw6(K0G7WxI1!%SDHAki+*AmpyMS}&p0>~r& zGrPtPt%D5>wOB~zi|r}b%a_u=M$_MSeK#vfcjwf-k5a<1uF>Ace$f}73R6=aRL*?s z?Ww7+Ak1|-_+nD^wNo-5BYx1x9PJ5UI`!n^p@Z7k>7B3Guxmuvl2rSj>lP;`K2F=u z;1$gj@hdo`YPNsLI*I>D(cJvk!6WtmI(X#&(2qHGf-Fxrx97r+V!A4FX|=-H3g|$D z&$wU#2kQ($W3I5BmCr(G`+@#g9(21zYl+V?G|N)}C8vU$qy&iN$Qd|U;}KVw6x6)T z?Oe59lySg>m*zY`3qkm}LNA0!Jt_!>05fi2OKcZoe~*rmQBo%VgVJAGW>mlC0Jv2# zLtP~%CZ@O8LchZ4KDb0fA#^69Jq<1nPcJXafsR+hYomo5tWQ0dnCLZ+H&ae|D~1z@^hledFAHyMf-ijo2<#6bD2KzJV~ zjC0<_+cZY-Df{~RmVjvT{lGrsDOSTF;Lii&0X=fJJQFcL->}NIeO?& z5*R|DYQ7;Sl+g;lM(|KcpfHf3Ui|wx?CCyBm;^CV(MOtylg30pz2fz19E3`76Oj(m zz?<#aTYwDz!AgvqgTpd9lVsx%F@gvKWK*^TZx(K@)`vEzQLhaqBOj_lRK-BKs0d+C z8k{~!=bg6~?_uRYMle?oHP~mM10TW<^1!dH0`QoGD1CAcY@CASE3K05gI(?I3Y$1w z>XRDJHC-Y6$|p_xsjJ8%3$xhXo-A**vu%fM1>f#$8y-llPYax(gLV_tJ;q#DuV3f8 zNef04lmP$*NjW<^qhk&b>i}vSzBH)K7_f2xF|TSwDe*vf6N932<|w~FLa2v~rWMGkm`Ir&!fc*x)hkhBF( zk?@DM&JFp*J@x_$IR$9+;|dUW2)G3cXdX3|EG_fa<_C-_S#1iy@!FfYXt}whJJ*wY zk6o|fm&?vFEvoQaS6LH*s*rf_Kmk6Fo(Y^^jQsrS$Vd$1RdIO^0R}i0B^Ge>3Zvi0=)Qo_t{WkfwP7m!Kn&A!r2<|-V1S^a*@09 z6*$vTpfU;yK_U_h=j4ECa<(3XW*@+wdJgzKPUz&EfX~A>jMh+SRP4FlP6xo z!^4h7kVs+ku?8m|tp^NG0s|*2D(dDm<`)$e^$(jX(l?`n7hpie%rlqhj_N(1Ut6)|-{v&GM}(Ip5aP9oR= z@%J+-Hg$D%ZvZ?2)}$366YL+^$xt*P7<%HwsjqBsj)XrQgzO&eO(eMHn=gXiFSTDh zzsmp$8%n^t-Tmdyp2gsaun};Qd(L7gWDuthEG@FXo2Q2f3@|}Wf9KAfO;h$vtv2MC zMy^V;O1zS`w)WclU@!@?HJil8$CDZe<$V5YGFYZU!vELxnsj&)Qe891Cwf)e?-`Jt zQZ#`A<^*9K7`iQB5b`q5($Z!^eQF5ILy6^-A38Zl&8$5C{_5U?$ei=?dZn9F9S*R_ zV;n5%sDrzW$6vkCEPEe#O~bx|bcvvyD?*L88B&rC9z3W301TJefY3cUrYmDLhafim ztCTiUQ$glhJB{u6+6mm~1#v^&-7p~+XWxP$=+Pi7i<%R7iX9reF<VzPW z4|pGOIS>g8!EJ=IM%)BCyQl)crUu|z0y%u4cK0l6-n-|105Uh*AZK7v{an2SVJQlA zx4|bCTTA2c0M0pqq7b+fNH>ik?AM#46NV8WlMK~_Uxp7GoVMZ%RHnWb!lZ~U zfq5gmK&JQ+@H)Mqpr#)>UCiCh?HL%0Pgc?t!5zYxIBHO4Sw0K1h$!3G+(ZqNt=Zh> zmBLEA6x_P<{rmSLXCQd00nz^+tsboTu~0~4*Rb|WKd+sSYR^v8||3fMAK7>WHsL#&txl zz-ET>Q#gAKEZ0ytQ{7@C4D|H&M$DBzSl!VfQ9x)SD%$CrG&G=)zZBJ}sA7lDa6JBk z0WQ_1CY0ei7RkZUSxUG{vx-e|;78lx%M{@N3#=SeV(6$CF)^_l%*@h2ZnvOL7}SKw zFNdQ>$RL+_-pA7*(mA85*gGod@_qcg-ho3A6s}8$%K!jDXA<1f`96u- zaZr0fn$CE#Ahfq0xN|7E!-x*qzJq^5hZK}7H}NS#Ic5{2^9}%J3J@RDgXN`y8^Z)P zL3?2Di_|SC62UmjsaAv;O6#+}!Sz5ikqo3IItvXMuuCQPW4R141T2Tht#h3TKn$W|*-jxDTDlpWqUcGA1(Ulyq?lYNZ-ZS31iu}uYuDijxZ{)>1`d6V7 z_;0`6qaomuk16-WLh$ZC{Fp>(DMsrPST@iJQ?SMTDl03|AvH-!^Z@`>zF32d1UYum z89ZAn2I%lWSy@@b?yMNGfW0Tj1pBboxdTbN=QW2utEZ=@9AJ;{-qfkEM)$f45Sk+A zm^Dh`K^poD(jY7>B|xLdAmHxd0agx80EPLs5BEj@)1VE>^|{UIiYKU93G7Ea8{ zV#T(iFq=r*-^ZPR2@RavzeCrMB0Ya1 zvJZ*uj!I8D9Av-vxL^>G9eVF@X9*ZwxUkQ z$S8?ei%Mtw)7+lfdV+%o+hfIufKV11Du5h8NJuCL$p%i%VsdeDNmt25{qR+T1`>^X ze~D4L;$Y=l#R-g=1v-r~>3zSBGk@EhPGwz-n7eQ_as9Di5aL=G9gcff&teu1(KkjdC;%^;e zVq%hlSf9U34GCpq!xqxMBn*EC3^TH_KLdCG#7zL7HBeOW`a%jrtpp5g&9`s#*REX~ zvVve2W~2g?8K+*uIpkAmSla*georGr!=OL<-?9-3ubC1b!4O(=cVLUB*K=`NF-ubb%r*mJ^Gm2b(1sb)U z{kY4bZT|Bj%=93EAza8mc%`$wXH_>0pUwM=spOnNIMn707Bko`23)KgNaLX;z>tEJw5;>P zbuzmMnc~ZNKX%8)ZD00TjUSIxy!23;^cto<^#ddA>)B6rRs2Ui`|fFmmsh^G7`k0L zAXKo>KgpA8*jzp*l&DW?Q_5W`q;8`%ArKHx=U7D0Aalh&wcvaEa~sN`&qcRK94yL68_bE*{?b$f*YVi!8TqBA33)E%GNF*G6FSqg zIG+v^jTXTPuKv{;*%!U~g?;Dc|F8Dm1gz$L{Tp7`w!JeCsmQQd5v2$zDRxM!l+rv2 zO*E<`m1MJJO0h&JWk@uwB#o=_lkYadEWD!|NH;H*Lkk@8C=eF zIqh1l_4|E)-|u~Yru)vD4DIF)vtYS_-rg_54!;YIPt56mZe3QAczoc|^`*h0{YAf; z?OO0KuX3H<(Zxs2(l}FI;r_kokqMml@vspr(ZA?iy~uu6q2yR8&=~rxqFI@<;bP*$ z&eR0W>Y3YJeLpz$*c4wI%rZ)kPkVj7X$7ZR;&*@7o@VRd)Ttc7^UUNAX~h+NN3EWW zv1(0B=?sEXzBXn<<5eq*I*xmK64$}u*U(??>|PePEqqp(gRAgIdAof{TqQ+|K0Bq5 zbw97L^wW0gS@&Lc>W13xKbSEK^8=Ma4EodG=3H`%tm4LXw)J*QaSW>Pmg^i0s&Xv- zQhmekp4>H|M}eMR<|8V%DpU-oHRc_xu?_yZ)k4}eqtD7A%cOH{N3EA@Czsn>b*)d# z$}h14?_@B!1sO9Be)|1FQ>tuI+?2@q6R-*Bc`XjUv~Ij+MIK*K-ju|LgAb0&?cj5e zJ{xm$u%c$^`--Z!CzL-YcYU>KtZ!bH-Cz zvFB**TG-K%5&GrPRQ_l0+6Q-U9kTR0{H4L}Lw3ZaC*S6qS}A>YdvYe#f5g)@uIUkX zM@MyySHT?P>A~EVajA)Er>@IO6-P)e%p1P^ge|owN2hq7lYN$WK}pL?)0?>5;SHX@ zzK>WanqjB!mbaqAU(xlaeb44SYitv^vo5mANFfn6_`CKSUbziSWR!hA*>pUy^F(5K zC!cQhglF=PU$j1b%)j)h<|^<&&RcQ)EC-v zEx#qZY@X>s_u|&fig3kecC8V;1xNmPZ(COpmELLmI+43A)~$Y3IlrfXRY^E^f#eQ& z%>zF9PuF0)RWC@N@L`f`wWm{)Z~D1`$@S;^E?vHJG4JahhMxL@<#~tr+=G+5k~)4} ztZ#38G%mritW|XZvwHd#H?v%$!(PO)++vHZ%=4h_s*h*eoa9U>Y?qwlUcMFHa zr1rGW#v)dOw-rpItF0Ua=VAB1H%)QOF`MMYr*k@1H`Q&mYdxECBbjrayF*2!Pi>-O zqx4zsjc*DK=5?0Rdgt?cv84tm?MhC`c#^7@?8MYAIBN3pa@_Q@?sX~e&oOqm zeDB+<+t=PA8B+Z^ado>>*?ZMr?r4a^$*?>4eQM(Rxj!eb{>AabTt`>mMb4#(zQGSC zTP4*$sESt9I@l(;CH^tk!u~SLEh>XqlGdbKNAZ{k?+ZxxqI{PLI5~S;AIc zJ^43cv>f~jK6{XCXooHaLNUhkh~*YEk9?Rx5J6svO+{`4g3yw>JJA==x2v;rA2ky_1yj?Sp-Kx6JHQiJcjVWu4J3a*?4Ou6w>Fa~X%j+5{#`3NwyfQ|WSi zuBEOae|O5P^Y=_AJ~c>BG2Pmj>lZ6`c+j)Cy=R;(6x9M#+!>6kg)=#UJ9qZy41Jh5 z$e49mE@r4+d`Ft}g11vpuOas@jJS1xCWN4o*b-iQ0k^qCb?@?MUwbJc&j@veg0mBv z2zw55{ukNu&+|8^bF#nGxm9~Tt1lRg4()AkrpDyPMz39f)Joy<<>%+W3mTiEsEMfc zU#6uEOeN5MG1?D+55=ILyFn-$Xsj*w9?QtI4nCOI6Ka@eS?ZGWHFK)oTeqJw1Ewn_ zze1z)=wS0sbkJ&OPS~NulpxcTJjPG5vK&&*gSpsASVP6#u8D38#$j27`?II^38^eM z{rdVBhuR4aoOvt9q3;oumWD$Rs6OIlXAsFYaGwq6m0>ahf6J3x<(6^bNPt}@E+3pN)u+0Bd-sc!uK&Js zE4wW_?D%e=?@z;txdPVm!;UV*EoctD`!?imyrNFQ{^iG?O%G2wyy$OzouSh-rDSE; zNoNTPlE2Y75d=ph@(A4$O68(8P4Zq%B*W00ei1!NV

0k6?r%Yc!A6yLDtVVy?=uddy!s!Eh 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 D^{%Ns literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/System6/TemperaturesControl.png b/IBPSA/Resources/Images/Examples/Tutorial/CDL/System6/TemperaturesControl.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5569b2b0b74b9c44cfb3d3a290799ba7c082e7 GIT binary patch literal 49164 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 literal 0 HcmV?d00001 diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.pdf b/IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0a9ca939762cb97207ad30ee72087f2ec6b7d653 GIT binary patch literal 18394 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

yl;1BM2GAqX$^zCDbPghMTZ;{U zK8~iG(jSZu0+BxB*EX;$86gYM_qa3Xun>zsm8**)+c>opC4CK(z>w8QyU7q9)7`4| z8mH=`>!YgNiCpj{NT>c&VJKL$q>;jPA!SkULC<#ajMMrVhw|YjlY%EpNLN@!)g}DHz6nKh`|G{*#^oCiCw?3luS2Npddp%uE?eQFuvj5XXowWI3-jG zmYJ=!Ef~GV20gF>JVQYzgPcFq3->J%NPdXi*l$%%>E%n%k!^y(bbf)e( zS2D)7ZsNH3xXEEE^nTOB;SUQZu4;>O-cBl%$z>nc{*H0~9{IJbS=TT;IE>K?=Y4^zvfpvOrsQAuft>k z{ig7Q_0&EcCL2NnVUR8R_|vn|rlR%|vZ7YD-20;RkC%UK*A)LXY9ba~I8 z{uAcC$s0F1S4Ns4XksM4NXKSr!>&rid?2NfoX7+35d4Nab{r9&qUWQwWLKn9Ey61# zyA`ipa?OS?cA6^QoO`qYi>P5d&A#jHr+@#QKEBF;&d#uuQJKG+Z;2lCnhx*{;2mA0@9TLvJqBIY9jG}Gu-;ggTz%-_OgOYf*8D;@Bk4r|u@DA~PNvsjTvYlj%>>9^V- z*IB0(_)<{noLjpB4{@WsQxJOXMFJ4LIeH40zrFjTE0<;lkDi<0aP;lEPGGrZC@bi?~*R4&XS#^®28R9>e{j67 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PI   + + +   +   +   +   + + + + + + + +  Tout + + Boiler   + + + + + + 19°C + 50°C + 21°C + 21°C +  TRoo +  Tsup +  y +  y +  y +  Tsup + + + + + + + + + + + + 20°C  + 21°C  + 1  + 0  + + + + + + +  TRoo + + + + + + + + + + + + + + + + 16°C  + 17°C  + 1  + 0  + + + + + + +  Tout + + + +  TRoo + + + + +  TB + + + + + + + + + 70°C  + 90°C  + 1  + 0  + + + + + + + + + + + + + + + +  TBoi + + + + + + + + + 60°C + + + + + + + + + + + PI   + + + + + + + + + + + + + + + + + + Expansionvessel   + ANDgate + on/off + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Supply temperaturecontroller + System on/offcontroller + Boiler on/offcontroller + Return temperaturecontroller + + + From 3c227ca1ad27c869c4122e82fd6713513b85cef6 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 16:09:27 -0800 Subject: [PATCH 11/15] Updated package.order --- IBPSA/Examples/Tutorial/package.order | 1 + 1 file changed, 1 insertion(+) diff --git a/IBPSA/Examples/Tutorial/package.order b/IBPSA/Examples/Tutorial/package.order index 6e0ff92568..053bc3d015 100644 --- a/IBPSA/Examples/Tutorial/package.order +++ b/IBPSA/Examples/Tutorial/package.order @@ -1 +1,2 @@ +CDL SimpleHouse From fbdd2845f7b467d1635122d8f5a932394d2e9b02 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Sat, 14 Dec 2024 00:12:44 +0000 Subject: [PATCH 12/15] Removed Boiler tutorial as the Boiler in not in IBPSA --- .../CDL/BaseClasses/PartialOpenLoop.mo | 373 --- .../Tutorial/CDL/BaseClasses/package.mo | 12 - .../Tutorial/CDL/BaseClasses/package.order | 1 - .../Tutorial/CDL/Controls/BoilerReturn.mo | 87 - .../Tutorial/CDL/Controls/EquipmentOnOff.mo | 99 - .../CDL/Controls/OpenLoopBoilerReturn.mo | 69 - .../CDL/Controls/OpenLoopEquipmentOnOff.mo | 77 - .../CDL/Controls/OpenLoopRadiatorSupply.mo | 96 - .../CDL/Controls/OpenLoopSystemOnOff.mo | 67 - .../Tutorial/CDL/Controls/RadiatorSupply.mo | 158 -- .../Tutorial/CDL/Controls/SystemOnOff.mo | 129 - .../CDL/Controls/Validation/BoilerReturn.mo | 38 - .../CDL/Controls/Validation/EquipmentOnOff.mo | 46 - .../CDL/Controls/Validation/RadiatorSupply.mo | 45 - .../CDL/Controls/Validation/SystemOnOff.mo | 48 - .../CDL/Controls/Validation/package.mo | 14 - .../CDL/Controls/Validation/package.order | 4 - .../Examples/Tutorial/CDL/Controls/package.mo | 4 - .../Tutorial/CDL/Controls/package.order | 9 - IBPSA/Examples/Tutorial/CDL/System1.mo | 83 - IBPSA/Examples/Tutorial/CDL/System2.mo | 224 -- IBPSA/Examples/Tutorial/CDL/System3.mo | 189 -- IBPSA/Examples/Tutorial/CDL/System4.mo | 160 -- IBPSA/Examples/Tutorial/CDL/System5.mo | 154 -- IBPSA/Examples/Tutorial/CDL/System6.mo | 160 -- IBPSA/Examples/Tutorial/CDL/package.mo | 106 - IBPSA/Examples/Tutorial/CDL/package.order | 8 - IBPSA/Examples/Tutorial/package.order | 1 - .../CDL/System1/OpenLoopTemperatures.png | Bin 24721 -> 0 bytes .../CDL/System3/TemperaturesValve.png | Bin 25693 -> 0 bytes .../CDL/System4/TemperaturesControl.png | Bin 35011 -> 0 bytes .../CDL/System5/TemperaturesControl.png | Bin 51185 -> 0 bytes .../CDL/System6/TemperaturesControl.png | Bin 49164 -> 0 bytes .../Examples/Tutorial/CDL/schematics.pdf | Bin 18394 -> 0 bytes .../Examples/Tutorial/CDL/schematics.png | Bin 145276 -> 0 bytes .../Examples/Tutorial/CDL/schematics.svg | 2178 ----------------- ...l_CDL_Controls_Validation_BoilerReturn.txt | 12 - ...CDL_Controls_Validation_EquipmentOnOff.txt | 12 - ...CDL_Controls_Validation_RadiatorSupply.txt | 12 - ...al_CDL_Controls_Validation_SystemOnOff.txt | 13 - .../IBPSA_Examples_Tutorial_CDL_System1.txt | 19 - .../IBPSA_Examples_Tutorial_CDL_System2.txt | 19 - .../IBPSA_Examples_Tutorial_CDL_System3.txt | 19 - .../IBPSA_Examples_Tutorial_CDL_System4.txt | 21 - .../IBPSA_Examples_Tutorial_CDL_System5.txt | 22 - .../IBPSA_Examples_Tutorial_CDL_System6.txt | 23 - .../CDL/Controls/Validation/BoilerReturn.mos | 5 - .../Controls/Validation/EquipmentOnOff.mos | 3 - .../Controls/Validation/RadiatorSupply.mos | 3 - .../CDL/Controls/Validation/SystemOnOff.mos | 3 - .../Dymola/Examples/Tutorial/CDL/System1.mos | 2 - .../Dymola/Examples/Tutorial/CDL/System2.mos | 2 - .../Dymola/Examples/Tutorial/CDL/System3.mos | 2 - .../Dymola/Examples/Tutorial/CDL/System4.mos | 4 - .../Dymola/Examples/Tutorial/CDL/System5.mos | 5 - .../Dymola/Examples/Tutorial/CDL/System6.mos | 5 - 56 files changed, 4845 deletions(-) delete mode 100644 IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/package.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/Controls/package.order delete mode 100644 IBPSA/Examples/Tutorial/CDL/System1.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/System2.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/System3.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/System4.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/System5.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/System6.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/package.mo delete mode 100644 IBPSA/Examples/Tutorial/CDL/package.order delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System1/OpenLoopTemperatures.png delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System3/TemperaturesValve.png delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System4/TemperaturesControl.png delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System5/TemperaturesControl.png delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/System6/TemperaturesControl.png delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.pdf delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.png delete mode 100644 IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.svg delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt delete mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos delete mode 100644 IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos diff --git a/IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo b/IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo deleted file mode 100644 index 3596e9c1bc..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/BaseClasses/PartialOpenLoop.mo +++ /dev/null @@ -1,373 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.BaseClasses; -partial model PartialOpenLoop "Partial model with open loop system" - extends Modelica.Icons.Example; - replaceable package MediumA = IBPSA.Media.Air "Medium model for air"; - replaceable package MediumW = IBPSA.Media.Water "Medium model for water"; - - parameter Modelica.Units.SI.HeatFlowRate Q_flow_nominal=20000 - "Nominal heat flow rate of radiator"; - parameter Modelica.Units.SI.Temperature TRadSup_nominal=273.15 + 50 - "Radiator nominal supply water temperature"; - parameter Modelica.Units.SI.Temperature TRadRet_nominal=273.15 + 40 - "Radiator nominal return water temperature"; - parameter Modelica.Units.SI.MassFlowRate mRad_flow_nominal=Q_flow_nominal/ - 4200/(TRadSup_nominal - TRadRet_nominal) - "Radiator nominal mass flow rate"; - - parameter Modelica.Units.SI.Temperature TBoiSup_nominal=273.15 + 70 - "Boiler nominal supply water temperature"; - parameter Modelica.Units.SI.Temperature TBoiRet_min=273.15 + 60 - "Boiler minimum return water temperature"; - parameter Modelica.Units.SI.MassFlowRate mBoi_flow_nominal=Q_flow_nominal/ - 4200/(TBoiSup_nominal - TBoiRet_min) "Boiler nominal mass flow rate"; - - parameter Modelica.Units.SI.MassFlowRate mRadVal_flow_nominal=Q_flow_nominal/ - 4200/(TBoiSup_nominal - TRadRet_nominal) - "Radiator nominal mass flow rate"; - - IBPSA.Fluid.MixingVolumes.MixingVolume vol( - redeclare package Medium = MediumA, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mA_flow_nominal, - V=V) - "Room air volume" - annotation (Placement(transformation(extent={{60,20},{80,40}}))); - Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(G=20000/30) - "Thermal conductance with the ambient" - annotation (Placement(transformation(extent={{20,40},{40,60}}))); - parameter Modelica.Units.SI.Volume V=6*10*3 "Room volume"; - parameter Modelica.Units.SI.MassFlowRate mA_flow_nominal=V*1.2*6/3600 - "Nominal mass flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QRooInt_flow=4000 - "Internal heat gains of the room"; - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHea - "Prescribed heat flow" - annotation (Placement(transformation(extent={{20,70},{40,90}}))); - Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heaCap(C=2*V*1.2*1006) - "Heat capacity for furniture and walls" - annotation (Placement(transformation(extent={{60,50},{80,70}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.TimeTable timTab( - extrapolation=IBPSA.Controls.OBC.CDL.Types.Extrapolation.Periodic, - smoothness=IBPSA.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - table=[-6, 0; - 8, QRooInt_flow; - 18, 0], - timeScale=3600) "Time table for internal heat gain" - annotation (Placement(transformation(extent={{-20,70},{0,90}}))); - IBPSA.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 rad( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - Q_flow_nominal=Q_flow_nominal, - T_a_nominal=TRadSup_nominal, - T_b_nominal=TRadRet_nominal) "Radiator" - annotation (Placement(transformation(extent={{0,-20},{20,0}}))); - IBPSA.Fluid.Sensors.TemperatureTwoPort temSup(redeclare package Medium = MediumW, - m_flow_nominal=mRad_flow_nominal) "Supply water temperature" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-40}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temRoo( - T(displayUnit="degC")) - "Room temperature" annotation (Placement(transformation( - extent={{10,-10},{-10,10}}, - origin={-40,30}))); - IBPSA.Fluid.Movers.FlowControlled_m_flow pumRad( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mRad_flow_nominal, - nominalValuesDefineDefaultPressureCurve=true) - "Pump for radiator" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-70}))); - - IBPSA.Fluid.FixedResistances.Junction mix( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal={mRadVal_flow_nominal,-mRad_flow_nominal,mRad_flow_nominal - - mRadVal_flow_nominal}, - dp_nominal={100,-8000,6750}) "Mixer between valve and radiators" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-110}))); - IBPSA.Fluid.FixedResistances.Junction spl( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal={mBoi_flow_nominal,-mRadVal_flow_nominal,-mBoi_flow_nominal}, - dp_nominal={200,-200,-50}) "Splitter of boiler loop bypass" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-190}))); - - IBPSA.Fluid.FixedResistances.Junction spl2( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - dp_nominal={0,0,0}, - m_flow_nominal={mRad_flow_nominal,-mRadVal_flow_nominal,-mRad_flow_nominal - + mRadVal_flow_nominal}) "Flow splitter in return from radiator" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=270, - origin={60,-110}))); - IBPSA.Fluid.FixedResistances.Junction mix2( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - dp_nominal={0,-200,0}, - m_flow_nominal={mRadVal_flow_nominal,-mBoi_flow_nominal,mBoi_flow_nominal}) - "Mixer" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=270, - origin={60,-190}))); - IBPSA.Fluid.FixedResistances.Junction spl4( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mRadVal_flow_nominal*{1,-1,-1}, - dp_nominal=200*{1,-1,-1}) "Splitter for radiator loop valve bypass" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=270, - origin={60,-150}))); - - IBPSA.Fluid.Movers.FlowControlled_m_flow pumBoi( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mBoi_flow_nominal, - nominalValuesDefineDefaultPressureCurve=true) - "Pump for boiler" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-280}))); - - - IBPSA.Fluid.Boilers.BoilerPolynomial boi( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mBoi_flow_nominal, - dp_nominal=2000, - Q_flow_nominal=Q_flow_nominal, - fue=IBPSA.Fluid.Data.Fuels.HeatingOilLowerHeatingValue()) "Boiler" - annotation (Placement(transformation(extent={{20,-320},{0,-300}}))); - - IBPSA.Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear valRad( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mRadVal_flow_nominal, - l={0.01,0.01}, - dpValve_nominal=6000) "Three-way valve for radiator loop" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-150}))); - - IBPSA.Fluid.Sources.Boundary_pT preSou(redeclare package Medium = MediumW, - nPorts=1) - "Source for pressure and to account for thermal expansion of water" - annotation (Placement(transformation(extent={{92,-320},{72,-300}}))); - IBPSA.Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear valBoi( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mBoi_flow_nominal, - l={0.01,0.01}, - dpValve_nominal=6000) "Three-way valve for boiler" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=270, - origin={60,-230}))); - IBPSA.Fluid.Sensors.TemperatureTwoPort temRet( - redeclare package Medium = MediumW, - m_flow_nominal=mBoi_flow_nominal) "Return water temperature" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=270, - origin={60,-280}))); - IBPSA.Fluid.FixedResistances.Junction spl1( - redeclare package Medium = MediumW, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal={mBoi_flow_nominal,-mBoi_flow_nominal,-mBoi_flow_nominal}, - dp_nominal={0,0,-200}) "Splitter" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-50,-230}))); - - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTOut - "Outdoor temperature sensor" - annotation (Placement(transformation(extent={{-318,20},{-298,40}}))); - - BoundaryConditions.WeatherData.ReaderTMY3 weaDat( - filNam=Modelica.Utilities.Files.loadResource("modelica://IBPSA/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos")) - "Weather data reader" - annotation (Placement(transformation(extent={{-380,60},{-360,80}}))); - BoundaryConditions.WeatherData.Bus weaBus "Weather data bus" - annotation (Placement(transformation(extent={{-320,60},{-300,80}}))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut - "Outside temperature" - annotation (Placement(transformation(extent={{-260,60},{-240,80}}))); - -equation - connect(theCon.port_b, vol.heatPort) annotation (Line( - points={{40,50},{50,50},{50,30},{60,30}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(preHea.port, vol.heatPort) annotation (Line( - points={{40,80},{50,80},{50,30},{60,30}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(heaCap.port, vol.heatPort) annotation (Line( - points={{70,50},{50,50},{50,30},{60,30}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(timTab.y[1], preHea.Q_flow) annotation (Line( - points={{2,80},{20,80}}, - color={0,0,127}, - smooth=Smooth.None)); - connect(temSup.port_b, rad.port_a) annotation (Line( - points={{-50,-30},{-50,-10},{-5.55112e-16,-10}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(temRoo.port, vol.heatPort) annotation (Line( - points={{-30,30},{60,30}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(rad.heatPortCon, vol.heatPort) annotation (Line( - points={{8,-2.8},{8,30},{60,30}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(rad.heatPortRad, vol.heatPort) annotation (Line( - points={{12,-2.8},{12,30},{60,30}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(pumRad.port_b, temSup.port_a) annotation (Line( - points={{-50,-60},{-50,-50}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(boi.port_b, pumBoi.port_a) annotation (Line( - points={{-5.55112e-16,-310},{-50,-310},{-50,-290}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(pumBoi.port_b, spl1.port_1) annotation (Line( - points={{-50,-270},{-50,-240}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(spl1.port_2, spl.port_1) annotation (Line( - points={{-50,-220},{-50,-200}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(spl.port_2, valRad.port_1) - annotation (Line( - points={{-50,-180},{-50,-160}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(valRad.port_2, mix.port_1) - annotation (Line( - points={{-50,-140},{-50,-120}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(spl1.port_3, valBoi.port_3) - annotation (Line( - points={{-40,-230},{50,-230}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(valBoi.port_2, temRet.port_a) - annotation (Line( - points={{60,-240},{60,-270}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(temRet.port_b, boi.port_a) annotation (Line( - points={{60,-290},{60,-310},{20,-310}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(boi.port_a, preSou.ports[1]) annotation (Line( - points={{20,-310},{72,-310}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(mix2.port_2, valBoi.port_1) - annotation (Line( - points={{60,-200},{60,-220}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(spl4.port_2, mix2.port_1) annotation (Line( - points={{60,-160},{60,-180}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(spl2.port_2, spl4.port_1) annotation (Line( - points={{60,-120},{60,-140}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(valRad.port_3, spl4.port_3) - annotation (Line( - points={{-40,-150},{50,-150}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(spl.port_3, mix2.port_3) annotation (Line( - points={{-40,-190},{50,-190}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(mix.port_3, spl2.port_3) annotation (Line( - points={{-40,-110},{50,-110}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(mix.port_2, pumRad.port_a) annotation (Line( - points={{-50,-100},{-50,-80}}, - color={0,127,255}, - smooth=Smooth.None)); - connect(rad.port_b, spl2.port_1) annotation (Line( - points={{20,-10},{60,-10},{60,-100}}, - color={0,127,255}, - smooth=Smooth.None)); - - connect(weaDat.weaBus, weaBus) annotation (Line( - points={{-360,70},{-310,70}}, - color={255,204,51}, - thickness=0.5, - smooth=Smooth.None), Text( - textString="%second", - index=1, - extent={{6,3},{6,3}})); - connect(weaBus.TDryBul, TOut.T) annotation (Line( - points={{-310,70},{-262,70}}, - color={255,204,51}, - thickness=0.5, - smooth=Smooth.None), Text( - textString="%first", - index=-1, - extent={{-6,3},{-6,3}})); - connect(TOut.port, theCon.port_a) annotation (Line( - points={{-240,70},{-220,70},{-220,50},{20,50}}, - color={191,0,0}, - smooth=Smooth.None)); - connect(TOut.port, senTOut.port) annotation (Line( - points={{-240,70},{-220,70},{-220,50},{-340,50},{-340,30},{-318,30}}, - color={191,0,0}, - smooth=Smooth.None)); - annotation (Documentation(info=" -

-This partial model implements the HVAC system model and a simple room, which is here modeled -as a first order response. (More detailed room models are available in -IBPSA.ThermalZones, -but for this tutorial it suffices to use this room model.) -The control inputs are not connected as these will be connected in the -tutorials that extend this model. -

-

-For instructions of how to build this model, see - -IBPSA.Examples.Tutorial.Boiler -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), -Diagram( - coordinateSystem( - preserveAspectRatio=false,extent={{-400,-360},{240, 100}}))); -end PartialOpenLoop; diff --git a/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo b/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo deleted file mode 100644 index 9ace9f4d96..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.mo +++ /dev/null @@ -1,12 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -package BaseClasses "Package that contains the model of the HVAC system and the building load" - extends Modelica.Icons.BasesPackage; - -annotation (preferredView="info", Documentation(info=" -

-This package contains base classes that are used to construct the models in - -IBPSA.Examples.Tutorial.CDL. -

-")); -end BaseClasses; diff --git a/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order b/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order deleted file mode 100644 index 672535aee2..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/BaseClasses/package.order +++ /dev/null @@ -1 +0,0 @@ -PartialOpenLoop diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo b/IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo deleted file mode 100644 index 6abd85c60f..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/BoilerReturn.mo +++ /dev/null @@ -1,87 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block BoilerReturn "Control for boiler return" - parameter Real TSet( - final unit="K", - displayUnit="degC") = 333.15 - "Set point for boiler temperature"; - parameter Real k=0.1 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti=120 "Time constant of integrator block"; - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRet( - final unit="K", - displayUnit="degC") - "Return water temperature to boiler" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( - final unit="1") - "Valve control signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant T( - final k=TSet) - "Set point temperature" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - IBPSA.Controls.OBC.CDL.Reals.PID conPID( - final k=k, - final Ti=Ti, - reverseActing=false) "Controller for valve in boiler loop" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); -equation - connect(conPID.y, yVal) - annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - connect(conPID.u_s, T.y) - annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(TRet, conPID.u_m) annotation (Line(points={{-120,0},{-80,0},{-80,-50}, - {0,-50},{0,-12}}, color={0,0,127})); - annotation ( - defaultComponentName="conBoiRet", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-32,-30},{34,-86}}, - lineColor={255,255,255}, - pattern=LinePattern.None, - fillColor={95,95,95}, - fillPattern=FillPattern.Solid), - Text( - extent={{-88,22},{-40,-18}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TRet"), - Text( - extent={{40,24},{88,-16}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="yVal"), - Polygon( - points={{0,-62},{-12,-80},{14,-80},{0,-62}}, - pattern=LinePattern.None, - smooth=Smooth.None, - fillColor={255,255,0}, - fillPattern=FillPattern.Solid, - lineColor={0,0,0}), - Text( - textColor={0,0,255}, - extent={{-154,104},{146,144}}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Controller that takes as an input the boiler return water temperature TRet -and outputs the valve control signal yVal. -The valve control signal is computed using a PI-controller that tracks a constant -set point of TSet. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end BoilerReturn; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo deleted file mode 100644 index d6efa70e6e..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/EquipmentOnOff.mo +++ /dev/null @@ -1,99 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block EquipmentOnOff "Controller for equipment on/off control" - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TBoi( - final unit="K", - displayUnit="degC") - "Boiler temperature" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput onSys - "System on command" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onPum - "Pump on command" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onBoi - "Boiler on command" - annotation (Placement(transformation(extent={{100,40},{140,80}}))); - IBPSA.Controls.OBC.CDL.Logical.And and1 - "And operator to switch boiler on based on temperature and system on command" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - IBPSA.Controls.OBC.CDL.Logical.Not not1 - "Negation of output signal, because boiler should be off if temperature exceed uHigh" - annotation (Placement(transformation(extent={{-20,50},{0,70}}))); - IBPSA.Controls.OBC.CDL.Reals.Hysteresis hys( - uHigh=273.15 + 90, - uLow=273.15 + 70) "Hysteresis for on/off of boiler" - annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); -equation - - connect(TBoi, hys.u) - annotation (Line(points={{-120,60},{-62,60}}, color={0,0,127})); - connect(hys.y, not1.u) - annotation (Line(points={{-38,60},{-22,60}}, color={255,0,255})); - connect(onSys, onPum) - annotation (Line(points={{-120,-60},{120,-60}}, color={255,0,255})); - connect(and1.u1, not1.y) annotation (Line(points={{18,0},{10,0},{10,60},{2,60}}, - color={255,0,255})); - connect(and1.u2, onSys) annotation (Line(points={{18,-8},{10,-8},{10,-60},{ - -120,-60}}, color={255,0,255})); - connect(and1.y, onBoi) annotation (Line(points={{42,0},{60,0},{60,60},{120,60}}, - color={255,0,255})); - annotation ( - defaultComponentName="conEquSta", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-90,82},{-42,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TBoi"), - Text( - extent={{38,-38},{86,-78}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onPum"), - Text( - extent={{-92,-40},{-44,-80}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onSys"), - Text( - textColor={0,0,255}, - extent={{-148,104},{152,144}}, - textString="%name"), - Text( - extent={{44,82},{92,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onBoi")}), - Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Controller that takes as an input the boiler water temperature TBoi -and the system on command onSys, and outputs -the on command for the pumps onPum and the boiler onBoi. -

-

-The pump on command is the same as the system on command. -The boiler is switched on if the boiler temperature TBoi falls below -70°C and if onSys=true, and it switches off -if either TBoi exceeds 90°C or if onSys=false. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end EquipmentOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo deleted file mode 100644 index ab54c74b09..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopBoilerReturn.mo +++ /dev/null @@ -1,69 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block OpenLoopBoilerReturn "Open loop controller for boiler return" - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRet( - final unit="K", - displayUnit="degC") - "Return water temperature to boiler" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( - final unit="1") - "Valve control signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con(k=1) - "Constant valve control signal" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); -equation - connect(con.y, yVal) - annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - annotation ( - defaultComponentName="conBoiRet", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={215,215,215}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-32,-30},{34,-86}}, - lineColor={255,255,255}, - pattern=LinePattern.None, - fillColor={95,95,95}, - fillPattern=FillPattern.Solid), - Text( - extent={{-88,22},{-40,-18}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TRet"), - Text( - extent={{40,24},{88,-16}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="yVal"), - Polygon( - points={{0,-62},{-12,-80},{14,-80},{0,-62}}, - pattern=LinePattern.None, - smooth=Smooth.None, - fillColor={255,255,0}, - fillPattern=FillPattern.Solid, - lineColor={0,0,0}), - Text( - textColor={0,0,255}, - extent={{-154,104},{146,144}}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Open loop controller that outputs a constant control signal for the valve -of the boiler return. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end OpenLoopBoilerReturn; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo deleted file mode 100644 index c317465090..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopEquipmentOnOff.mo +++ /dev/null @@ -1,77 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block OpenLoopEquipmentOnOff - "Open loop controller for equipment on/off control" - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TBoi( - final unit="K", - displayUnit="degC") - "Boiler temperature" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanInput onSys - "System on command" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onPum - "Pump on command" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onBoi - "Boiler on command" - annotation (Placement(transformation(extent={{100,40},{140,80}}))); - IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con(k=true) - "Constant control signal" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); -equation - - connect(con.y, onBoi) annotation (Line(points={{12,0},{60,0},{60,60},{120,60}}, - color={255,0,255})); - connect(con.y, onPum) annotation (Line(points={{12,0},{60,0},{60,-60},{120, - -60}}, color={255,0,255})); - annotation ( - defaultComponentName="conEquSta", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={215,215,215}, - fillPattern=FillPattern.Solid), - Text( - textColor={0,0,255}, - extent={{-148,104},{152,144}}, - textString="%name"), - Text( - extent={{-94,-40},{-46,-80}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onSys"), - Text( - extent={{36,-38},{84,-78}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onPum"), - Text( - extent={{42,82},{90,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onBoi"), - Text( - extent={{-92,82},{-44,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TBoi")}), - Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Open loop controller that outputs a constant control signal for the system on command. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end OpenLoopEquipmentOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo deleted file mode 100644 index 4b3cc6119b..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopRadiatorSupply.mo +++ /dev/null @@ -1,96 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block OpenLoopRadiatorSupply - "Open loop controller for mixing valve in radiator loop" - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( - final unit="K", - displayUnit="degC") - "Room air temperature" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TSup( - final unit="K", - displayUnit="degC") - "Measured supply water temperature" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( - final unit="1") - "Valve control signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant con(k=1) - "Constant valve control signal" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); -equation - connect(con.y, yVal) - annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - annotation ( - defaultComponentName="conRadSup", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={215,215,215}, - fillPattern=FillPattern.Solid), - Text( - extent={{-90,82},{-42,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TRoo"), - Text( - extent={{40,24},{88,-16}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="yVal"), - Text( - extent={{-92,-40},{-44,-80}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TOut"), - Text( - textColor={0,0,255}, - extent={{-154,104},{146,144}}, - textString="%name"), - Polygon( - points={{38,0},{-24,36},{-24,-32},{38,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid, - origin={-30,2}, - rotation=360), - Polygon( - points={{38,0},{-24,36},{-24,-32},{38,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid, - origin={8,-36}, - rotation=90), - Polygon( - points={{38,0},{-24,36},{-24,-32},{38,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid, - origin={8,40}, - rotation=270)}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Open loop controller that outputs a constant control signal for the mixing valve of the radiator loop. -

-", revisions=" -
    -
  • -March 5, 2020, by Michael Wetter:
    -Corrected typo in comments.
    -This is for -Buildings, issue 1810. -
  • -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end OpenLoopRadiatorSupply; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo deleted file mode 100644 index 956bfad989..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/OpenLoopSystemOnOff.mo +++ /dev/null @@ -1,67 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block OpenLoopSystemOnOff - "Open loop controller for system on/off" - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TOut( - final unit="K", - displayUnit="degC") - "Outdoor air temperature" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( - final unit="K", - displayUnit="degC") - "Room air temperature" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onSys - "System on command" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - IBPSA.Controls.OBC.CDL.Logical.Sources.Constant con(k=true) - "Constant control signal" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); -equation - connect(con.y, onSys) - annotation (Line(points={{12,0},{120,0}}, color={255,0,255})); - annotation ( - defaultComponentName="conSysSta", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={215,215,215}, - fillPattern=FillPattern.Solid), - Text( - extent={{-90,82},{-42,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TOut"), - Text( - extent={{40,24},{88,-16}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onSys"), - Text( - extent={{-92,-40},{-44,-80}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TRoo"), - Text( - textColor={0,0,255}, - extent={{-152,104},{148,144}}, - textString="%name")}), - Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Open loop controller that outputs a constant control signal for the system on command. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end OpenLoopSystemOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo b/IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo deleted file mode 100644 index 828ef5c59a..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/RadiatorSupply.mo +++ /dev/null @@ -1,158 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block RadiatorSupply "Controller for mixing valve in radiator loop" - - parameter Real TSupMin( - final unit="K", - displayUnit="degC") = 294.15 - "Minimum supply water temperature"; - parameter Real TSupMax( - final unit="K", - displayUnit="degC") = 323.15 - "Maximum supply water temperature"; - parameter Real TRooMin( - final unit="K", - displayUnit="degC") = 292.15 - "Room air temperature at which supply water temperature is at TSupMax"; - - parameter Real k=0.1 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti=120 "Time constant of integrator block"; - - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( - final unit="K", - displayUnit="degC") - "Room air temperature" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TSup( - final unit="K", - displayUnit="degC") - "Measured supply water temperature" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealOutput yVal( - final unit="1") - "Valve control signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - IBPSA.Controls.OBC.CDL.Reals.PID conPIDRad( - final k=k, - final Ti=Ti, - final yMax=1, - final yMin=0, - controllerType=IBPSA.Controls.OBC.CDL.Types.SimpleController.PI) - "Controller for valve in radiator loop" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - IBPSA.Controls.OBC.CDL.Reals.Line TSetSup - "Setpoint for supply water temperature" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TMinSup( - final k=TSupMin) - "Minimum heating supply temperature" - annotation (Placement(transformation(extent={{-50,-40},{-30,-20}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TMaxSup( - final k=TSupMax) - "Maximum heating supply temperature" - annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TMinRoo( - final k=TRooMin) - "Minimum room air temperature" - annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); -equation - connect(TMinSup.y,TSetSup. x2) annotation (Line(points={{-28,-30},{-20,-30},{ - -20,-4},{-12,-4}}, color={0,0,127})); - connect(TMinSup.y,TSetSup. f2) annotation (Line(points={{-28,-30},{-20,-30},{ - -20,-8},{-12,-8}}, color={0,0,127})); - connect(TMaxSup.y,TSetSup. f1) annotation (Line(points={{-28,30},{-24,30},{ - -24,4},{-12,4}}, color={0,0,127})); - connect(TSetSup.x1,TMinRoo. y) annotation (Line(points={{-12,8},{-20,8},{-20, - 70},{-28,70}}, color={0,0,127})); - connect(conPIDRad.u_s,TSetSup. y) annotation (Line(points={{38,0},{12,0}}, - color={0,0,127})); - connect(TSetSup.u, TRoo) annotation (Line(points={{-12,0},{-70,0},{-70,60},{-120, - 60}}, color={0,0,127})); - connect(TSup, conPIDRad.u_m) - annotation (Line(points={{-120,-60},{50,-60},{50,-12}}, color={0,0,127})); - connect(conPIDRad.y, yVal) - annotation (Line(points={{62,0},{120,0},{120,0}}, color={0,0,127})); - annotation ( - defaultComponentName="conRadSup", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-90,82},{-42,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TRoo"), - Text( - extent={{40,24},{88,-16}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="yVal"), - Text( - extent={{-92,-40},{-44,-80}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TSup"), - Text( - textColor={0,0,255}, - extent={{-154,104},{146,144}}, - textString="%name"), - Polygon( - points={{38,0},{-24,36},{-24,-32},{38,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid, - origin={-30,2}, - rotation=360), - Polygon( - points={{38,0},{-24,36},{-24,-32},{38,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid, - origin={8,-36}, - rotation=90), - Polygon( - points={{38,0},{-24,36},{-24,-32},{38,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid, - origin={8,40}, - rotation=270)}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Controller that takes as an input the room air temperature TRoo and -the supply water temperature TSup, -and outputs the commanded mixing valve position yVal. -

-

-Based on the room air temperature TRoo, and the user adjustable parameters -for the minimum supply water temperature TSupMin, -the maximum supply water temperature TSupMax -and the room air temperature TRooMin -at which the supply water temperature is at TSupMax, -the controller computes a set point for the supply water temperature. -This set point is then used with the measured supply water temperature TSup -as an input to a PI-controller that computes the commanded valve position yVal. -

-", revisions=" -
    -
  • -March 5, 2020, by Michael Wetter:
    -Corrected typo in comments.
    -This is for -Buildings, issue 1810. -
  • -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end RadiatorSupply; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo deleted file mode 100644 index 5d59323465..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/SystemOnOff.mo +++ /dev/null @@ -1,129 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -block SystemOnOff "Controller for system on/off" - parameter Real TRooSet( - final unit="K", - displayUnit="degC") = 293.65 - "Room air temperature set point"; - parameter Real dTRoo( - min=0.5, - final unit="K") = 1 - "Room air temperature dead band"; - parameter Real TOutLow( - final unit="K", - displayUnit="degC") = 289.15 - "Outdoor temperature below which system is allowed to switch on"; - - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TOut( - final unit="K", - displayUnit="degC") - "Outdoor air temperature" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - IBPSA.Controls.OBC.CDL.Interfaces.RealInput TRoo( - final unit="K", - displayUnit="degC") - "Room air temperature" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); - IBPSA.Controls.OBC.CDL.Interfaces.BooleanOutput onSys - "System on command" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetOut(k=TOutLow + 0.5) - "Set point for outdoor air temperature plus half the dead band" - annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant TSetRoo(k=TRooSet) - "Set point for room air temperature" - annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); - IBPSA.Controls.OBC.CDL.Logical.And and1 - "And operator to switch boiler on based on temperature and system on command" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - IBPSA.Controls.OBC.CDL.Reals.Subtract sub "Inputs different" - annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); - IBPSA.Controls.OBC.CDL.Reals.Hysteresis onTOut( - final uLow=-0.5, - final uHigh=0.5) "On/off control based on outside air temperature" - annotation (Placement(transformation(extent={{0,50},{20,70}}))); - IBPSA.Controls.OBC.CDL.Reals.Subtract sub1 "Inputs different" - annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - IBPSA.Controls.OBC.CDL.Reals.Hysteresis onTRoo( - final uLow=-0.5, - final uHigh=0.5) "On/off control based on room air temperature" - annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); -equation - connect(and1.y, onSys) - annotation (Line(points={{82,0},{120,0}}, color={255,0,255})); - connect(TSetOut.y, sub.u1) annotation (Line(points={{-58,80},{-50,80},{-50,66}, - {-42,66}}, color={0,0,127})); - connect(TOut, sub.u2) annotation (Line(points={{-120,60},{-60,60},{-60,54},{-42, - 54}}, color={0,0,127})); - connect(sub.y, onTOut.u) - annotation (Line(points={{-18,60},{-2,60}}, color={0,0,127})); - connect(onTOut.y, and1.u1) annotation (Line(points={{22,60},{40,60},{40,0},{58, - 0}}, color={255,0,255})); - connect(TSetRoo.y, sub1.u1) annotation (Line(points={{-58,-30},{-50,-30},{-50, - -54},{-42,-54}}, color={0,0,127})); - connect(TRoo, sub1.u2) annotation (Line(points={{-120,-60},{-60,-60},{-60,-66}, - {-42,-66}}, color={0,0,127})); - connect(sub1.y, onTRoo.u) - annotation (Line(points={{-18,-60},{-2,-60}}, color={0,0,127})); - connect(onTRoo.y, and1.u2) annotation (Line(points={{22,-60},{40,-60},{40,-8}, - {58,-8}}, color={255,0,255})); - annotation ( - defaultComponentName="conSysSta", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-90,82},{-42,42}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TOut"), - Text( - extent={{40,24},{88,-16}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="onSys"), - Text( - extent={{-92,-40},{-44,-80}}, - textColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.None, - textString="TRoo"), - Text( - textColor={0,0,255}, - extent={{-152,104},{148,144}}, - textString="%name")}), - Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

-Controller that takes as an input the outside air temperature TOut and -the room air temperature TRoo, -and outputs the system on command onSys. -

-

-The system on command is true if both conditions are satisfied: -The outside air temperature is below a limit of TOutLow(=16°C, adjustable) -and the room air temperature is below TRooSet-dTRoo/2, -where TRooSet is the room air temperature setpoint (=20.5°C, adjustable) -and dTRoo is the deadband (=1 Kelvin, adjustable). -Otherwise, the system on command is false. -

-", revisions=" -
    -
  • -December 11, 2023, by Jianjun Hu:
    -Reimplemented on-off control to avoid using the obsolete OnOffController. -This is for -#3595. -
  • -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-")); -end SystemOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo deleted file mode 100644 index 394fc0261c..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mo +++ /dev/null @@ -1,38 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls.Validation; -model BoilerReturn - "Validation model for the return temperature controller of the boiler" - extends Modelica.Icons.Example; - - IBPSA.Examples.Tutorial.CDL.Controls.BoilerReturn conBoiRet - "Controller for boiler return water temperature" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TRet( - height=50, - duration=3600, - offset=293.15) "Return water temperature" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); -equation - connect(TRet.y, conBoiRet.TRet) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - annotation ( - Documentation(info=" -

-Validation model for the boiler return water temperature controller. -The input to the controller is a ramp signal of increasing measured return water temperature. -The validation shows that as the temperature crosses the set point, the valve opens. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), -__Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos" - "Simulate and plot"), - experiment( - StopTime=3600, - Tolerance=1e-06)); -end BoilerReturn; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo deleted file mode 100644 index c7fd1f55ee..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mo +++ /dev/null @@ -1,46 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls.Validation; -model EquipmentOnOff - "Validation model for the equipment on/off controller" - extends Modelica.Icons.Example; - - IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TBoi( - height=40, - duration=3600, - offset=333.15) "Boiler temperature" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - IBPSA.Examples.Tutorial.CDL.Controls.EquipmentOnOff - conEquSta "Controller for equipment on/off" - annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - IBPSA.Controls.OBC.CDL.Logical.Sources.Pulse onSys( - period=600) - "System on signal" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); -equation - connect(TBoi.y, conEquSta.TBoi) annotation (Line(points={{-38,30},{-24,30},{-24, - 6},{-10,6}}, color={0,0,127})); - connect(onSys.y, conEquSta.onSys) annotation (Line(points={{-38,-10},{-24,-10}, - {-24,-6},{-10,-6}}, color={255,0,255})); - annotation ( - Documentation(info=" -

-Validation model for the equipment on/off controller. -The input to the controller is a ramp signal of increasing measured boiler water temperature, -and a on/off signal for the overall system. -The validation shows that the pumps are on/off based on the overall system, and the boiler is -also on/off based on this system unless the return water temperature exceeds 90°C. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), -__Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos" - "Simulate and plot"), - experiment( - StopTime=3600, - Tolerance=1e-06)); -end EquipmentOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo deleted file mode 100644 index 10680995d0..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mo +++ /dev/null @@ -1,45 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls.Validation; -model RadiatorSupply - "Validation model for the valve of the radiator supply" - extends Modelica.Icons.Example; - - IBPSA.Controls.OBC.CDL.Reals.Sources.Ramp TRoo( - height=-4, - duration=3600, - offset=297.15) "Room air temperature" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - IBPSA.Examples.Tutorial.CDL.Controls.RadiatorSupply - conRadSup "Controller for radiator supply water temperature" - annotation (Placement(transformation(extent={{10,-10},{30,10}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TSup( - amplitude=20, - freqHz=1/720, - offset=303.15) "Measured supply water temperature" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); -equation - connect(TRoo.y, conRadSup.TRoo) annotation (Line(points={{-38,30},{-20,30},{-20, - 6},{8,6}}, color={0,0,127})); - connect(conRadSup.TSup, TSup.y) annotation (Line(points={{8,-6},{-16,-6},{-16, - -30},{-38,-30}}, color={0,0,127})); - annotation ( - Documentation(info=" -

-Validation model for the boiler return water temperature controller. -The input to the controller is a ramp signal of increasing measured return water temperature. -The validation shows that as the temperature crosses the set point, the valve opens. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), -__Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos" - "Simulate and plot"), - experiment( - StopTime=3600, - Tolerance=1e-06)); -end RadiatorSupply; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo deleted file mode 100644 index c7fdf61d7e..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mo +++ /dev/null @@ -1,48 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls.Validation; -model SystemOnOff - "Validation model for the system on/off controller" - extends Modelica.Icons.Example; - - IBPSA.Examples.Tutorial.CDL.Controls.SystemOnOff - conSysSta "Controller for system on/off" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TOut( - amplitude=5, - freqHz=1/720, - offset=290.15) "Outside air temperature" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Sin TRoo( - amplitude=4, - freqHz=1/720, - phase=1.5707963267949, - offset=293.15) "Room air temperature" - annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); -equation - connect(TOut.y, conSysSta.TOut) annotation (Line(points={{-38,20},{-20,20},{-20, - 6},{-2,6}}, color={0,0,127})); - connect(TRoo.y, conSysSta.TRoo) annotation (Line(points={{-38,-20},{-20,-20},{ - -20,-6},{-2,-6}}, color={0,0,127})); - annotation ( - Documentation(info=" -

-Validation model for the system on/off controller. -The input to the controller are time varying signals for the outdoor air temperature -and the room air temperature. -The validation shows that the system is commanded on (onSys=true) if -the outdoor air temperature and the room air temperature are both low. -

-", revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), -__Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos" - "Simulate and plot"), - experiment( - StopTime=3600, - Tolerance=1e-06)); -end SystemOnOff; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo deleted file mode 100644 index fd914ccf61..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.mo +++ /dev/null @@ -1,14 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL.Controls; -package Validation - extends Modelica.Icons.ExamplesPackage; - - annotation (Documentation(info=" -

-This package contains models that validate the controls models. -The examples plot various outputs, which have been verified against -analytical solutions or by inspecting their change due to parametric changes. -These model outputs are stored as reference data to -allow continuous validation whenever models in the library change. -

-")); -end Validation; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order b/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order deleted file mode 100644 index 4042fc5c1a..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/Validation/package.order +++ /dev/null @@ -1,4 +0,0 @@ -BoilerReturn -EquipmentOnOff -RadiatorSupply -SystemOnOff diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/package.mo b/IBPSA/Examples/Tutorial/CDL/Controls/package.mo deleted file mode 100644 index b3782b7d8a..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/package.mo +++ /dev/null @@ -1,4 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -package Controls "Package with the controllers used in the tutorial" -extends Modelica.Icons.VariantsPackage; -end Controls; diff --git a/IBPSA/Examples/Tutorial/CDL/Controls/package.order b/IBPSA/Examples/Tutorial/CDL/Controls/package.order deleted file mode 100644 index 7af42a30da..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/Controls/package.order +++ /dev/null @@ -1,9 +0,0 @@ -BoilerReturn -EquipmentOnOff -OpenLoopBoilerReturn -OpenLoopEquipmentOnOff -OpenLoopRadiatorSupply -OpenLoopSystemOnOff -RadiatorSupply -SystemOnOff -Validation diff --git a/IBPSA/Examples/Tutorial/CDL/System1.mo b/IBPSA/Examples/Tutorial/CDL/System1.mo deleted file mode 100644 index 01b6831d82..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/System1.mo +++ /dev/null @@ -1,83 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -model System1 "Open loop model" - extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; - - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y1(k=mRad_flow_nominal) - "Control signal of 1" - annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); - - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y2(k=1) - "Control signal of 1" - annotation (Placement(transformation(extent={{100,-210},{120,-190}}))); - - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y3(k=1) - "Constant control signal of 1" - annotation (Placement(transformation(extent={{-120,-260},{-100,-240}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y4(k=1) - "Control signal of 1" - annotation (Placement(transformation(extent={{-120,-160},{-100,-140}}))); - IBPSA.Controls.OBC.CDL.Reals.Sources.Constant y5(k=mBoi_flow_nominal) - "Control signal of 1" - annotation (Placement(transformation(extent={{-120,-290},{-100,-270}}))); -equation - connect(y1.y, pumRad.m_flow_in) - annotation (Line(points={{-98,-70},{-62,-70}}, color={0,0,127})); - connect(y3.y, boi.y) annotation (Line(points={{-98,-250},{32,-250},{32,-302},{ - 22,-302}}, color={0,0,127})); - connect(y2.y, valBoi.y) annotation (Line(points={{122,-200},{130,-200},{130,-230}, - {72,-230}}, color={0,0,127})); - connect(y4.y, valRad.y) - annotation (Line(points={{-98,-150},{-62,-150}}, color={0,0,127})); - connect(y5.y, pumBoi.m_flow_in) annotation (Line(points={{-98,-280},{-80,-280}, - {-80,-280},{-62,-280}}, color={0,0,127})); - annotation (Documentation(info=" -

-This model extends from the open loop partial model - -IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop, -which implements the HVAC system model and a simple room. -In this partial model, the room is modeled -as a first order response. -

-

Implementation

-

-To set control inputs, we instantiated - -IBPSA.Controls.OBC.CDL.Reals.Sources.Constant -and connected them to the pumps, the boiler and the valves. -

-

Exercise

-

-Create a model, such as this model, that extends from - -IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop -and adds constant input signals for the valves, pumps and the boiler. -Valves should be fully open (y=1), the boiler should be operating (y=1) -and the mass flow rates of the pumps should be set to the parameter value of -mRad_flow_nominal and mBoi_flow_nominal. -

-

-Simulate the model for January 15 to 16 and plot the open loop temperatures -as shown below, which corresponds to a start time of 15*24*3600=1296000 seconds and a -stop time of 1382400 seconds. -

-

-\"Open -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos" - "Simulate and plot"), - experiment( - StartTime=1296000, - StopTime=1382400, - Tolerance=1e-06)); -end System1; diff --git a/IBPSA/Examples/Tutorial/CDL/System2.mo b/IBPSA/Examples/Tutorial/CDL/System2.mo deleted file mode 100644 index 02bf449ef4..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/System2.mo +++ /dev/null @@ -1,224 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -model System2 "Open loop model with control architecture implemented" - extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; - - Controls.OpenLoopBoilerReturn conBoiRet - "Controller for boiler return water temperature" - annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); - Controls.OpenLoopSystemOnOff conSysSta - "Controller that switches the system on and off" - annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); - Controls.OpenLoopRadiatorSupply conRadSup - "Controller for the mixing valve for the radiator supply water" - annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); - Controls.OpenLoopEquipmentOnOff conEquSta - "Controller that switches the equipment on and off" - annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( - realTrue=mRad_flow_nominal) - "Type conversion for radiator pump signal" - annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( - realTrue=mBoi_flow_nominal) - "Type conversion for boiler pump signal" - annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( - realTrue=1) - "Type conversion for boiler signal" - annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); -equation - connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, - {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); - connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, - -216},{-120,-280},{-102,-280}}, color={255,0,255})); - connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, - -70},{-120,-216},{-178,-216}}, color={255,0,255})); - connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, - -250},{-108,-204},{-178,-204}}, color={255,0,255})); - connect(radPumCon.y, pumRad.m_flow_in) - annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); - connect(boiPumCon.y, pumBoi.m_flow_in) - annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); - connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, - -302},{22,-302}}, color={0,0,127})); - connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62, - -150}}, color={0,0,127})); - connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240, - -204},{-240,-302},{-1,-302}}, color={0,0,127})); - connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280, - -44},{-280,30},{-298,30}}, color={0,0,127})); - connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268, - -144},{-268,30},{-50,30}}, color={0,0,127})); - connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268, - -56},{-268,30},{-50,30}}, color={0,0,127})); - connect(temRet.T, conBoiRet.TRet) - annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); - connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140, - -280},{140,-230},{72,-230}}, color={0,0,127})); - connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210, - -40},{-210,-156},{-202,-156}}, color={0,0,127})); - annotation (Documentation(info=" -

-In this step, we added the control architecture. -How the control is partitioned into various subcontrollers depends usually on -the need to avoid communication over the network and on how control is distributed to -different field controllers. Here, we -used the four controllers indicated by the shaded background in the figure of - -IBPSA.Examples.Tutorial.CDL. -One controller switches the overall system on and off, -one switches the boiler on and off, -one tracks the supply water temperature to the room and -one tracks the return water temperature that is fed to the boiler. -

-

Implementation

-

-This model was built as follows: -

-
    -
  1. -

    -First, we determined what functionality should be implemented in which controller, and what the inputs and outputs of the controllers are. -In this example, we used these controllers: -

    -
      -
    • -

      -Boiler return water controller, with input being the return water temperature TRet and output being the valve control signal yVal. -

      -
    • -
    • -

      -Radiator loop temperature controller, with input being the measured supply water temperature TSup, -the measured room air temperature TRoo and output being the valve control signal yVal. -

      -
    • -
    • -

      -System on/off controller, with inputs being the outdoor temperature TOut and the -room air temperature TRoo, and output being the system on/off signal onSys. -Note that how inputs and outputs are named can simplify usability. For example, we called the output onSys -so that a value of true is clearly understood as the system being on. If we had called it -y, then it would not have been clear what a value of true means. -

      -
    • -
    • -

      -Equipment controller, with inputs being the system on/off command and the boiler temperature, -and outputs being -the pump on/off signal onPum and the boiler on/off signal onBoi. -

      -
    • -
    -
  2. -
  3. -

    -To organize our code, we created package that we called Controls. -

    -
  4. -
  5. -

    -Next, we added the open loop controller for the boiler return water temperature. -This controller is implemented in - -IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopBoilerReturn. -To implement it, we created a Modelica block, and added an input, using a - -IBPSA.Controls.OBC.CDL.Interfaces.RealInput, called it TRet -for the measured return water temperature, and a - -IBPSA.Controls.OBC.CDL.Interfaces.RealOutput -for the valve control signal, which we called yVal. -

    -

    -To output the valve control signal, which we set for now to a constant value of 1, -we used an instance of - -IBPSA.Controls.OBC.CDL.Reals.Sources.Constant, -set its parameter to 1, and connected it to the output. -

    -

    -At this stage, because the control is open loop, we leave the input of the controller unconnected. -

    -

    -Looking at the Modelica file shows that we also added documentation in an info section, -a defaultComponentName, as well as graphical elements so that it is easily distinguishable -in a schematic diagram. -We also added the unit and displayUnit attributes. -

    -

    -In the next step of this tutorial, we will provide an actual implementation of the controller. -To better distinguish the open loop controller from the closed loop controller, we -color the icon of open loop controllers grey, and will change this color to white when we implement the actual control logic. -

    -
  6. -
  7. -

    -We did a similar process to add the other three open loop controllers. As before, we added all -inputs and outputs, and set the outputs to a constant. -

    -
  8. -
  9. -

    -Lastly, we instantiated these four controllers in the system model. -Because the pumps and the boiler take as a control input a real-valued signal, we used - -IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal to convert between the boolean-valued signal -and the real-valued inputs of these components. Whether this conversion is part of the -controller or done outside the controller is an individual design decision. -

    -
  10. -
-

Exercise

-

-Create a model, such as this model. -To do so, -

-
    -
  1. -

    -Copy - -IBPSA.Examples.Tutorial.CDL.System1. -

    -
  2. -
  3. -

    -Implement all four open loop controllers. -

    -
  4. -
  5. -

    -Delete the constant control inputs, instantiate the open loop controllers, -convert the signal as needed from Boolean to Real, -and connect the control inputs and outputs. -

    -
  6. -
-

-Simulate the system to verify that you get the response shown below. -As we have not changed any of the control logic, simulating the system should give the same -response as for - -IBPSA.Examples.Tutorial.CDL.System1. -

-

-\"Open -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos" - "Simulate and plot"), - experiment( - StartTime=1296000, - StopTime=1382400, - Tolerance=1e-06)); -end System2; diff --git a/IBPSA/Examples/Tutorial/CDL/System3.mo b/IBPSA/Examples/Tutorial/CDL/System3.mo deleted file mode 100644 index 099ba9315e..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/System3.mo +++ /dev/null @@ -1,189 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -model System3 "Open loop model with boiler return temperature control" - extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; - - Controls.BoilerReturn conBoiRet - "Controller for boiler return water temperature" - annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); - Controls.OpenLoopSystemOnOff conSysSta - "Controller that switches the system on and off" - annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); - Controls.OpenLoopRadiatorSupply conRadSup - "Controller for the mixing valve for the radiator supply water" - annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); - Controls.OpenLoopEquipmentOnOff conEquSta - "Controller that switches the equipment on and off" - annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( - realTrue=mRad_flow_nominal) - "Type conversion for radiator pump signal" - annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( - realTrue=mBoi_flow_nominal) - "Type conversion for boiler pump signal" - annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( - realTrue=1) - "Type conversion for boiler signal" - annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); -equation - connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, - {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); - connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, - -216},{-120,-280},{-102,-280}}, color={255,0,255})); - connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, - -70},{-120,-216},{-178,-216}}, color={255,0,255})); - connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, - -250},{-108,-204},{-178,-204}}, color={255,0,255})); - connect(radPumCon.y, pumRad.m_flow_in) - annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); - connect(boiPumCon.y, pumBoi.m_flow_in) - annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); - connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, - -302},{22,-302}}, color={0,0,127})); - connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62, - -150}}, color={0,0,127})); - connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, - {-240,-302},{-1,-302}}, color={0,0,127})); - connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, - {-280,30},{-298,30}}, color={0,0,127})); - connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268, - -144},{-268,30},{-50,30}}, - color={0,0,127})); - connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, - {-268,30},{-50,30}}, color={0,0,127})); - connect(temRet.T, conBoiRet.TRet) - annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); - connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, - {140,-230},{72,-230}}, color={0,0,127})); - - connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210, - -40},{-210,-156},{-202,-156}}, color={0,0,127})); - annotation (Documentation(info=" -

-In this step, we added the controller for the boiler return water temperature. -

-

Implementation

-

-This model was built as follows: -

-
    -
  1. -

    -First, we copied the controller - -IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopBoilerReturn -to create the block - -IBPSA.Examples.Tutorial.CDL.Controls.BoilerReturn. -

    -
  2. -
  3. -

    -In this new block, we used a constant output signal - -IBPSA.Controls.OBC.CDL.Reals.Sources.Constant -and a PID controller - -IBPSA.Controls.OBC.CDL.Reals.PID, -which we configured as a PI-controller. -

    -

    -We set the controller logic to reverse action. That is because the tracking -error is conventionally computed as the difference between the set point value -and the sensed value. In our example, if the return temperature is lower than the set point, -i.e., if the tracking error is positive, the valve control signal must tend toward zero, -i.e., the valve bypass port must open. -That means that the unbounded control signal must tend toward negative values so -that the bounded output signal tends toward its minimum value. Binding a positive -tracking error to a negative unbounded control signal or to the minimum value -of the output signal requires a reverse action logic. -

    -

    -Additionally we set the proportional gain to 0.1 as then, in absence of the integral action, -a control error of 10 Kelvin changes the control output by 1. -We set the time constant to 120 seconds, which is about the time it takes to open -and close a valve. -These values give typically good closed loop performance. -

    -

    -As the control error is in Kelvin, which is typically of the order of 1 -to 10, there is no need to normalize the control input. (If pressure were used, it would make sense -to divide the measured signal and the set point so that the control error is usually of the order of one, -which makes tuning easier.) -

    -
  4. -
  5. -

    -To allow this controller to be tuned, we exposed at the top-level the parameters -for the set point temperature and the control gains. -

    -
  6. -
  7. -

    -While the controller - -IBPSA.Examples.Tutorial.CDL.Controls.BoilerReturn -is very simple, for demonstration purposes we also implemented a validation model for this controller. -This is done in - -IBPSA.Examples.Tutorial.CDL.Controls.Validation.BoilerReturn. -Such validation models help detect implementation errors which may be difficult to diagnose once the controller -is used as part of a larger system model. In our experience, implementing small scale validation tests leads to better -code and overall faster development as errors are detected early on when they can be corrected quickly. -For more information about how to implement a validation model, see the -Modelica Buildings Library User Guide. -

    -
  8. -
-

Exercise

-

-Create a model, such as this model. -To do so, -

-
    -
  1. -

    -Copy - -IBPSA.Examples.Tutorial.CDL.System2. -

    -
  2. -
  3. -

    -Implement the controller for the boiler return water temperature. -

    -

    -Make a small unit test to verify that the controller is implemented correctly. -

    -
  4. -
  5. -

    -Use this new controller instead of the open loop controller conBoiRet. -

    -
  6. -
-

-Simulate the system to verify that the valve is controlled to maintain a return water temperature -of at least 60°C as shown below. -

-

-\"Open -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos" - "Simulate and plot"), - experiment( - StartTime=1296000, - StopTime=1382400, - Tolerance=1e-06)); -end System3; diff --git a/IBPSA/Examples/Tutorial/CDL/System4.mo b/IBPSA/Examples/Tutorial/CDL/System4.mo deleted file mode 100644 index 8d09d69375..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/System4.mo +++ /dev/null @@ -1,160 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -model System4 "Open loop model with equipment on/off control" - extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; - - Controls.BoilerReturn conBoiRet - "Controller for boiler return water temperature" - annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); - Controls.OpenLoopSystemOnOff conSysSta - "Controller that switches the system on and off" - annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); - Controls.OpenLoopRadiatorSupply conRadSup - "Controller for the mixing valve for the radiator supply water" - annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); - Controls.EquipmentOnOff conEquSta - "Controller that switches the equipment on and off" - annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( - realTrue=mRad_flow_nominal) - "Type conversion for radiator pump signal" - annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( - realTrue=mBoi_flow_nominal) - "Type conversion for boiler pump signal" - annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( - realTrue=1) - "Type conversion for boiler signal" - annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); -equation - connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, - {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); - connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, - -216},{-120,-280},{-102,-280}}, color={255,0,255})); - connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, - -70},{-120,-216},{-178,-216}}, color={255,0,255})); - connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, - -250},{-108,-204},{-178,-204}}, color={255,0,255})); - connect(radPumCon.y, pumRad.m_flow_in) - annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); - connect(boiPumCon.y, pumBoi.m_flow_in) - annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); - connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, - -302},{22,-302}}, color={0,0,127})); - connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62, - -150}}, color={0,0,127})); - connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, - {-240,-302},{-1,-302}}, color={0,0,127})); - connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, - {-280,30},{-298,30}}, color={0,0,127})); - connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268, - -144},{-268,30},{-50,30}}, - color={0,0,127})); - connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, - {-268,30},{-50,30}}, color={0,0,127})); - connect(temRet.T, conBoiRet.TRet) - annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); - connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, - {140,-230},{72,-230}}, color={0,0,127})); - - connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210, - -40},{-210,-156},{-202,-156}}, color={0,0,127})); - annotation (Documentation(info=" -

-In this step, we added the controller for the boiler on/off control. -

-

Implementation

-

-This model was built as follows: -

-
    -
  1. -

    -First, we copied the controller - -IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopEquipmentOnOff -to create the block - -IBPSA.Examples.Tutorial.CDL.Controls.EquipmentOnOff. -

    -
  2. -
  3. -

    -In this new block, we used a hysteresis block - -IBPSA.Controls.OBC.CDL.Reals.Hysteresis to switch the boiler, -and negated its output because the boiler needs to be off if the temperature exceeds the -value uHigh of this hysteresis. -We also used an instance of - -IBPSA.Controls.OBC.CDL.Logical.And -to switch the boiler on only if the system control signal is on. -Otherwise, the boiler would be kept warm in summer. -(Note that in the simulations, the boiler has no heat loss to the ambient and, hence, if -the boiler and its circulation pump are switched off, its temperature remains constant. -To model heat losses to the ambient, the heat port boi.heatPort -would need to be connected to a model that simulates heat conduction to ambient conditions.) -

    -
  4. -
  5. -

    -We also implemented the open loop validation - -IBPSA.Examples.Tutorial.CDL.Controls.Validation.EquipmentOnOff -to ensure that the controller is implemented correctly. -

    -
  6. -
-

Exercise

-

-Create a model, such as this model. -To do so, -

-
    -
  1. -

    -Copy - -IBPSA.Examples.Tutorial.CDL.System3. -

    -
  2. -
  3. -

    -Implement the controller for the equipment on/off control. -

    -

    -Make a small unit test to verify that the controller is implemented correctly. -

    -
  4. -
  5. -

    -Use this new controller instead of the open loop controller conEquSta. -

    -
  6. -
-

-Simulate the system to verify that the valve is controlled to maintain a return water temperature -of at least 60°C, and that the boiler is switched off when the temperature exceeds 90°C -and switched on again if it reaches 70°C as shown below. -

-

-\"Temperatures -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), - Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-400,-360},{240, 100}})), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos" - "Simulate and plot"), - experiment( - StartTime=1296000, - StopTime=1382400, - Tolerance=1e-06)); -end System4; diff --git a/IBPSA/Examples/Tutorial/CDL/System5.mo b/IBPSA/Examples/Tutorial/CDL/System5.mo deleted file mode 100644 index 263d55c062..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/System5.mo +++ /dev/null @@ -1,154 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -model System5 "Open loop model with system on/off control" - extends IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; - - Controls.BoilerReturn conBoiRet - "Controller for boiler return water temperature" - annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); - Controls.SystemOnOff conSysSta - "Controller that switches the system on and off" - annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); - Controls.OpenLoopRadiatorSupply conRadSup - "Controller for the mixing valve for the radiator supply water" - annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); - Controls.EquipmentOnOff conEquSta - "Controller that switches the equipment on and off" - annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( - realTrue=mRad_flow_nominal) - "Type conversion for radiator pump signal" - annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( - realTrue=mBoi_flow_nominal) - "Type conversion for boiler pump signal" - annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( - realTrue=1) - "Type conversion for boiler signal" - annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); -equation - connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, - {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); - connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, - -216},{-120,-280},{-102,-280}}, color={255,0,255})); - connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, - -70},{-120,-216},{-178,-216}}, color={255,0,255})); - connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, - -250},{-108,-204},{-178,-204}}, color={255,0,255})); - connect(radPumCon.y, pumRad.m_flow_in) - annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); - connect(boiPumCon.y, pumBoi.m_flow_in) - annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); - connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, - -302},{22,-302}}, color={0,0,127})); - connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62,-150}}, - color={0,0,127})); - connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, - {-240,-302},{-1,-302}}, color={0,0,127})); - connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, - {-280,30},{-297,30}}, color={0,0,127})); - connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268,-144}, - {-268,30},{-51,30}}, color={0,0,127})); - connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, - {-268,30},{-51,30}}, color={0,0,127})); - connect(temRet.T, conBoiRet.TRet) - annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); - connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, - {140,-230},{72,-230}}, color={0,0,127})); - - connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210,-40}, - {-210,-156},{-202,-156}}, color={0,0,127})); - annotation (Documentation(info=" -

-In this step, we added the controller for the system on/off control. -

-

Implementation

-

-This model was built as follows: -

-
    -
  1. -

    -First, we copied the controller - -IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopSystemOnOff -to create the block - -IBPSA.Examples.Tutorial.CDL.Controls.SystemOnOff. -

    -
  2. -
  3. -

    -In this new block, we implemented the on/off control by using both - -IBPSA.Controls.OBC.CDL.Reals.Subtract -and - -IBPSA.Controls.OBC.CDL.Reals.Hysteresis to determine -whether the system should be on, which is the case if both, the outside air temperature and -the room air temperature are below a limit. If either is above this limit, plus a deadband, -the system is off. -

    -
  4. -
  5. -

    -We also implemented the open loop validation - -IBPSA.Examples.Tutorial.CDL.Controls.Validation.SystemOnOff -to ensure that the controller is implemented correctly. -

    -
  6. -
-

Exercise

-

-Create a model, such as this model. -To do so, -

-
    -
  1. -

    -Copy - -IBPSA.Examples.Tutorial.CDL.System4. -

    -
  2. -
  3. -

    -Implement the controller for the system on/off control. -

    -

    -Make a small unit test to verify that the controller is implemented correctly. -

    -
  4. -
  5. -

    -Use this new controller instead of the open loop controller conSysSta. -

    -
  6. -
-

-Simulate the system to verify that the system is switched off if the room -temperature exceeeds its set point plus half the dead band. -This should yield a plot similar to the one below. -

-

-\"Temperatures -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), - Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-400,-360},{240, 100}})), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos" - "Simulate and plot"), - experiment( - StartTime=1296000, - StopTime=1382400, - Tolerance=1e-06)); -end System5; diff --git a/IBPSA/Examples/Tutorial/CDL/System6.mo b/IBPSA/Examples/Tutorial/CDL/System6.mo deleted file mode 100644 index 4a03f9aeb3..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/System6.mo +++ /dev/null @@ -1,160 +0,0 @@ -within IBPSA.Examples.Tutorial.CDL; -model System6 "Closed loop model with all controls implemented" - extends - IBPSA.Examples.Tutorial.CDL.BaseClasses.PartialOpenLoop; - - Controls.BoilerReturn conBoiRet - "Controller for boiler return water temperature" - annotation (Placement(transformation(extent={{100,-290},{120,-270}}))); - Controls.SystemOnOff conSysSta - "Controller that switches the system on and off" - annotation (Placement(transformation(extent={{-260,-60},{-240,-40}}))); - Controls.RadiatorSupply conRadSup - "Controller for the mixing valve for the radiator supply water" - annotation (Placement(transformation(extent={{-200,-160},{-180,-140}}))); - Controls.EquipmentOnOff conEquSta - "Controller that switches the equipment on and off" - annotation (Placement(transformation(extent={{-200,-220},{-180,-200}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal radPumCon( - realTrue=mRad_flow_nominal) - "Type conversion for radiator pump signal" - annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiPumCon( - realTrue=mBoi_flow_nominal) - "Type conversion for boiler pump signal" - annotation (Placement(transformation(extent={{-100,-290},{-80,-270}}))); - IBPSA.Controls.OBC.CDL.Conversions.BooleanToReal boiSigCon( - realTrue=1) - "Type conversion for boiler signal" - annotation (Placement(transformation(extent={{-100,-260},{-80,-240}}))); -equation - connect(conSysSta.onSys, conEquSta.onSys) annotation (Line(points={{-238,-50}, - {-220,-50},{-220,-216},{-202,-216}}, color={255,0,255})); - connect(conEquSta.onPum, boiPumCon.u) annotation (Line(points={{-178,-216},{-120, - -216},{-120,-280},{-102,-280}}, color={255,0,255})); - connect(radPumCon.u, conEquSta.onPum) annotation (Line(points={{-102,-70},{-120, - -70},{-120,-216},{-178,-216}}, color={255,0,255})); - connect(boiSigCon.u, conEquSta.onBoi) annotation (Line(points={{-102,-250},{-108, - -250},{-108,-204},{-178,-204}}, color={255,0,255})); - connect(radPumCon.y, pumRad.m_flow_in) - annotation (Line(points={{-78,-70},{-62,-70}}, color={0,0,127})); - connect(boiPumCon.y, pumBoi.m_flow_in) - annotation (Line(points={{-78,-280},{-62,-280}}, color={0,0,127})); - connect(boiSigCon.y, boi.y) annotation (Line(points={{-78,-250},{34,-250},{34, - -302},{22,-302}}, color={0,0,127})); - connect(conRadSup.yVal, valRad.y) annotation (Line(points={{-178,-150},{-62,-150}}, - color={0,0,127})); - connect(conEquSta.TBoi, boi.T) annotation (Line(points={{-202,-204},{-240,-204}, - {-240,-302},{-1,-302}}, color={0,0,127})); - connect(conSysSta.TOut, senTOut.T) annotation (Line(points={{-262,-44},{-280,-44}, - {-280,30},{-298,30}}, color={0,0,127})); - connect(conRadSup.TRoo, temRoo.T) annotation (Line(points={{-202,-144},{-268,-144}, - {-268,30},{-50,30}}, color={0,0,127})); - connect(conSysSta.TRoo, temRoo.T) annotation (Line(points={{-262,-56},{-268,-56}, - {-268,30},{-50,30}}, color={0,0,127})); - connect(temRet.T, conBoiRet.TRet) - annotation (Line(points={{71,-280},{98,-280}}, color={0,0,127})); - connect(conBoiRet.yVal, valBoi.y) annotation (Line(points={{122,-280},{140,-280}, - {140,-230},{72,-230}}, color={0,0,127})); - - connect(temSup.T, conRadSup.TSup) annotation (Line(points={{-61,-40},{-210,-40}, - {-210,-156},{-202,-156}}, color={0,0,127})); - annotation (Documentation(info=" -

-In this step, we added the last controller, which is controlling the mixing valve for the -radiator supply water temperature. -

-

Implementation

-

-This model was built as follows: -

-
    -
  1. -

    -First, we copied the controller - -IBPSA.Examples.Tutorial.CDL.Controls.OpenLoopRadiatorSupply -to create the block - -IBPSA.Examples.Tutorial.CDL.Controls.RadiatorSupply. -

    -
  2. -
  3. -

    -In this new block, we used - -IBPSA.Controls.OBC.CDL.Reals.Line to compute the set point for the supply water temperature -based on the room air temperature. This set point is then used in a PI controller - -IBPSA.Controls.OBC.CDL.Reals.PID to modulate the mixing valve position -in order to track the supply water temperature set point. -

    -
  4. -
  5. -

    -To allow configuring the temperatures and the control gains, we exposed the main parameters of the controller, -see -IBPSA.Examples.Tutorial.CDL.Controls.RadiatorSupply. -

    -
  6. -
  7. -

    -We also implemented the open loop validation - -IBPSA.Examples.Tutorial.CDL.Controls.Validation.RadiatorSupply -to ensure that the controller is implemented correctly. -

    -
  8. -
-

Exercise

-

-Create a model, such as this model. -To do so, -

-
    -
  1. -

    -Copy - -IBPSA.Examples.Tutorial.CDL.System5. -

    -
  2. -
  3. -

    -Implement the controller for the radiator supply water temperature control. -

    -

    -Make a small unit test to verify that the controller is implemented correctly. -

    -
  4. -
  5. -

    -Use this new controller instead of the open loop controller conRadSup. -

    -
  6. -
-

-Simulate the system to verify that the mixing valve conRadSup is modulated and -the room air temperature temRoo.T is well tracked. -

-

-\"Temperatures -

-", -revisions=" -
    -
  • -February 18, 2020, by Michael Wetter:
    -First implementation. -
  • -
-"), - Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-400,-360},{240, 100}})), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos" - "Simulate and plot"), - experiment( - StartTime=1296000, - StopTime=1382400, - Tolerance=1e-06)); -end System6; diff --git a/IBPSA/Examples/Tutorial/CDL/package.mo b/IBPSA/Examples/Tutorial/CDL/package.mo deleted file mode 100644 index 833f66b57e..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/package.mo +++ /dev/null @@ -1,106 +0,0 @@ -within IBPSA.Examples.Tutorial; -package CDL "Package with examples for how to implement a control sequence using CDL" - extends Modelica.Icons.ExamplesPackage; - -annotation (preferredView="info", Documentation(info=" -

-This package contains examples with step-by-step instructions for how to -implement control sequences using the Control Description Language (CDL). -The CDL is described at -obc.lbl.gov and elementary building blocks are -available at - -IBPSA.Controls.OBC.CDL. -

-

-The example starts with an open-loop model of a boiler, a simple room and a radiator. -In subsequent steps, controllers are added, starting with open loop control and then closed loop control. -The tutorial also demonstrates how to add open loop validation tests for the controllers. -At the end, you should be able to implement, document and test your own controllers. -

-

-The figure below shows the system architecture and the control charts. -

-

-\"image\" -

-

-The controls intent is as follows: -

-
    -
  1. -

    -The overall system shall be switched on if the outdoor temperature is below -16°C and, in addition, the room temperature is below -20°C. -It shall be switched off if either the outdoor temperature is above -17°C or the room temperature is above -21°C. -

    -
  2. -
  3. -

    -The boiler shall have on/off control that regulates its temperature -between 70°C and 90°C. -

    -
  4. -
  5. -

    -The three-way valve at the boiler return shall be modulated with a PI controller -to track a return water temperature of 60°C. -

    -
  6. -
  7. -

    -The heating water supply temperature to the room shall be regulated with a PI controller -to be 50°C if the room temperature is 19°C, -and 21°C if the room temperature is 21°C. -

    -
  8. -
-

-To explain the implementation of the controllers for this model, the model has been created in -the stages described below. -

-
    -
  1. -In - -IBPSA.Examples.Tutorial.CDL.System1 -we connected constant control signals to the open loop model that is the starting point for this tutorial. -
  2. -
  3. -In - -IBPSA.Examples.Tutorial.CDL.System2 -we implemented four distinct controllers, which are all open loop but have the correct control input and output connectors. -These controllers will be refined in the next steps. -This determines the control architecture. -
  4. -
  5. -In - -IBPSA.Examples.Tutorial.CDL.System3 -we implemented the controller that regulates the return water temperature to its setpoint. -
  6. -
  7. -In - -IBPSA.Examples.Tutorial.CDL.System4 -we implemented the controller that switches the boiler on and off. -
  8. -
  9. -In - -IBPSA.Examples.Tutorial.CDL.System5 -we implemented the controller that switches the whole system on and off. -
  10. -
  11. -In - -IBPSA.Examples.Tutorial.CDL.System6 -we implemented the controller that tracks the room temperature set point. -
  12. -
-")); -end CDL; diff --git a/IBPSA/Examples/Tutorial/CDL/package.order b/IBPSA/Examples/Tutorial/CDL/package.order deleted file mode 100644 index b0e50dfcff..0000000000 --- a/IBPSA/Examples/Tutorial/CDL/package.order +++ /dev/null @@ -1,8 +0,0 @@ -System1 -System2 -System3 -System4 -System5 -System6 -Controls -BaseClasses diff --git a/IBPSA/Examples/Tutorial/package.order b/IBPSA/Examples/Tutorial/package.order index 053bc3d015..6e0ff92568 100644 --- a/IBPSA/Examples/Tutorial/package.order +++ b/IBPSA/Examples/Tutorial/package.order @@ -1,2 +1 @@ -CDL SimpleHouse diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/System1/OpenLoopTemperatures.png b/IBPSA/Resources/Images/Examples/Tutorial/CDL/System1/OpenLoopTemperatures.png deleted file mode 100644 index 77f0bb5a067a3c4f9231722a5bd8b561439cb4fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24721 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 diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/System4/TemperaturesControl.png b/IBPSA/Resources/Images/Examples/Tutorial/CDL/System4/TemperaturesControl.png deleted file mode 100644 index a68058ca4d34cd1e6624401d5133c202e78208c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35011 zcmdqJ2{e}PyEgnZD3MYTp-h=cB9bXWMIrMLN*OYi44M6k1{#zhAyejgmbpa8Q05^+ z2_;j8$ow96zyE)Kdw=iV`~AMP_FC_LUu%W%+|PYq*Et;LaUSP&Urpr{6$JwYiA170 zb6Q@VMA}?LB5m>~--w?GpM95uFWau2*1JI>?WiLDZ3yPu!AK&pkj}`R`gQcBmR#BGpB zd0l$Nf4=c#=EkwU%y^dRHS%FN?O{erbTAyJNwH{)qVHx-{%ds9P3C|I{M0U z)pb8##^+mU9jnU=IvE!hn6gx{(I9q&^jcm?znIi@Fjy)7O5N_px81qs&v-P<2CMG3ynV`{ zOu?$IuAXrA`OMp$G7eMyQrz6%-`w81JU_8K5^g7V^5nOs7Y60-F1Mep&D0B8g+xAi zB4pDeA|oTi%*=dMY1c8nKn=3Mg+w0zo|w{B(ZU@_1Ny_otw>&XTZXUvudBcr3;$r@Y}Jl);ho}QjZ ztvY)1t)7_;;uYn~lM<{|ULcpMrE00yy65ajtpF9ZfWWMTf=%qP7^&G zoSb*=-Zdzu9<%@X`OOw8hCIu5CE<9JYQIfecSw4!{7yG0E)WaxVaTxZ8gK% zh}rfABn-T|ellKtVxYnc4wNP4Y`)I)lSQLunU^X3`7$e|(I2J2%>DH&CAL!pq8fX=bR- z=2O8$^UE4KWB2O|lZID|^BVE)7BNpB1}~J=+f6B{sAwl^mN-ut6+2vgd_c_Js?Zt9*!*`jmHd_RC#nJWJidv7Mw72QIw5=#u}A zN%(xdSozhLtA`~d+^X*Fnx39!SA1~o+O>Orem{Eh$EGUQjWUhO!o}>I#yT3`yt#zk zx6F5isXck}Bs)8sia{j6NW!Wk&9<-D_wHSDGqXqgggLRv$B*mBtCw9XQjL@pzxMg{ z$C#7K&kns<=sxcFwZ8i9 zA>+b$_bj$0JV~;>^Z=)&o)nMva?E%c-?b@<9Xle0&6_%ny;f&G$ZXxZRnV|_?uB#z zbGXrSVe^d}H}dLa@Ef+$?%th)r%5;${^)>I@u|lL@BwdzYs9T}n*18;wEO+@3k-94 zd8$HY<>y;OIj>*sIuy2dmHQ=VtR&8Z=|M~T?jO$JA#a;DN>kp>eEc542 zQrfoTjkj*uvW1N7A+yZdkM`8Jcc>&BzJEmQniwC4b-^M60|RRw?9<4&P=siL_)t?_ z&Exp+5Q$W*>#&)>L5X3$$bML9^b51siV$83H%e;%aeoh20p6UQ{iN%UrWX?D!bDsa z`kdR>FHqCd(}#wK^GTIhcOPMux3o-2FzwD4YDwoI!sH4sOy%mw=)d&SA3b(w!8Lqm&NA4c>Dy7}h%gaku^+Q@3|0qv#<_T9N z{bXc|?-spxGIZLqo%>2%G{}jV-l!o*jz7I>?lwQJ_fqj8g8$LRwYBA`OP4N%WrTJb zx!F|v(T3R^bDgu8SUoH(tU;cQjPgq++-juZd6>ELRKI}Fu^S@~9_43^_?Mr}_KoKo zn+bzgwkE2!TmE``cc($VN&daR{LDV3I8XK_>*bETy8czf z;3zMz5_vYFX}*5h&1ngY@pf7iw!ykBTUeH^(c}H5M+n(0w`n zZt9HG<;8~@TB+^G2M-y=w9V4f`r$T5#XM}fb4;iD%izq6OiXb8k<5xU{hm;{dv~Z9 zcN~!X{VmEXQsnB>VLz=%X}4!)=GPn?Xyk6Xx++N+)IH@eyl^2>(k0gAQYyk%z9mf6 zxVolh9jiIknaM0}e??QX4Hv@A>s%BvEOuyK>4VR)Rw2jq_Vv-~s@9)(qV)F~$ex}4 zS|cPR1V5hW%#3>WOh-9=a!?xX@PLPv> zJbE>Xv>$7&?10CXTpA`=8h<`fn(A9t`geYzG=A>zf0bA@Ci67>UF z0qqpc0GVX4ll&b?40_pgOu<$bh15QVJ%hrfV3$};S@1F?{;HD8U z0eCE%JVk5=$~}hP2LnV@{LHt^?{PTU#2;%v{Jv)=*2HsVx+X7AgjGJ6S1T_n1zG6I zmADBb`2{%`0ME54-t)0O^A6o7&*HsRGyOIj>(U!0krpFeZvjIR*~-^;eW9p48kDv$|BzTDfz9wu@X4`VARC^)Lf z|F!1vv$BIyQhlG7(gPO@Q)rHH;6_t*GW*+8b$qES*4Nx{@A=_R*W%;iNJ-HYRnye1Vs2_O37cS=Ze6gkS@*`P>7J5yau#&B3ykuPGPVeosd7^G`Oa^N5;`ZeixkQm%6g174jeTFT_jIi||pVhrj>obBz8ly4`I9N78xvf~DI zk~Qz{WX@2Fxs{msEmY`ovBT(04YOAej|S(lW5?iq#ZfWTYytx5NY*f$qc`^7>%aj{V2)d3mzx7fY&=Uq@KQYxb4j(H>o2n_5SZ zjH^(MIF^m5JK0wvas2qw;-Z40qO|*OHCJ9(HXB70uI}HzU%-cZqZqkR^*5aahtU>1 z*+T!{VVZf^J#uY-f4>9oMp8rc>0cL56e75n6c?+69%f}>dEMMRJyaJ6 zk5a#T;^xhpi7GEvR#t!la&vPFZ9auWMjqI`+vH~sY*!~;|LCPkp8}gtJ7Bg7{(B!Y z%Sa;=V86IjB7WC#MV-z)YS({(e7gA*GZ`6Ka{CWoN;=W2E%L3k%7SGFeY##_H zatQzQ&!6<-_HpCG$;ruZZL_cM9*WuYT)96(6}Q^YlkeOZB{T5pQ_1<4iU1#;x3^H) z+uM7tuP#J+E?s>e#A8=FeTO<0Tj;-6fI-am0?Rd;)9oo*g?0n|2wzBu4KE}XuZej6Ojx&HMX&_QR?`OAPMryenlB5ho_&ZsaHqx_4hL~XO8w}(e_NePf|+}s?8a!A#?cgR7%UjMZT&@ZGZe06nIC)3CSca6N-U*c>BThK^2o2-%eD8U!o znUC$OeCeW)Ptj~i2yGjqGWVZwhL#qY3~=Y__(&Zti_Ae=;4T{ zfgmiXmm}Ykx}S;3b8Ye46ZTW@s;b;^MfhsXqy2%!Ouja@S4iGe=V>2K%Nc`8MFMD`+0Bp8pT{@{i!FMF6r}E=FZ88!K)dN|Dm|y@) z&()=njE&U*h_p0C!Q?Y<_llAg@RFh}E^g=jn_v)1BEFKumyinZVShz|_~Ol^w~P47 za!PwM@wJx76!`d$e?8pqI+hMJTgz!wWN-STE!oJ(2;S`f=uwB~57d~ucI`qzXFX89 zni%EjI@Tc|y!Q_Y!YQl0@(k6#U0<=5=rlklg8MO-nW3ypZvh-SVI_bMmXR-{J(gg6 z1hAl{&bnOl2x$oU;nPSu194w8+AS?)y8Z|}FlIZrlS`C-wn;TYOCC4|E-tQoeZyq+ zc$A*C0|OQ6@k-AGjU(Z+Ii~e;a&kV@a8b*T(QiTo41fq5%eN5MjHX|rT~CCC^p!ZT zPkF8Lg%iYpc~ive*C%jARv)GKAD;@R@P=NizjRou5G;JCarXgcPS>yRlf3zJu-d=f zGG8xsD{(c2=FHzRh&j9EE|k0L?WK#~5TB8e5yq2m)wx&hAP2`b*4=ydOiWBzwI#*4 z6d*YuG%rjIWa?(eiYUaZKQDFtbCoA#ZZWlfWT#bC>Etw%)MSOL`}>W^pFDla=JU#F zLLW#XuQeJK9yJ?qcOWgLyE97I_W6^XTwHL7z80-g`uu%&dbVH8_uXbGO!MdalQws< zdwS9e4$Ioy$rk$8`x0T2U56)aG_nE$0+N!F5Iib=br{eI8byfO^uTd}uo_*@8b@7OZ+5KWhu~)+@EzfeO7&^ipX=#_r-u~3K zYESk_Cu>*rzFF3zN3Al>RlUSc(Z+ngS07x7bKj z#6_+ZXKovM@NtPYevfmil8M!U>;e7Po$%vlO^g_{Y)S_RW zE~t2zrJAfANom-vzpW}uWTrA-*wgSzBSY)Ozi9V5RnLlA3@wFOFz(Hw;pq1u?UmQw z?9DdjE0bvZL`jWhB5+)J(BYEtWO1Q+%wE<964yTnhK&fE{6L-Rwu?+O{LAF@F;T^Z z&~K%|7GhSf-|=YrE`4l{zBKh>kaq8H`#w{?d>X5ZukW^5TPKNntX+STg9WByHH#qrLCTdE>JLJu87Uw>E(x`8K+b`2ThQUG7P4Si6y1%ia4TUBeWavQVOhfby$ zQX~nkD4tCARVrGTmhn*Y%k;lQHPX4q!rdh&!p?6&B{|6Ajx)3OnJ2V=#VR^i<(wXG z4onjr+on83q0!2<)n5PVakFDqUYEoYc=o28&h2UEHAoB|(iJYeT7Z`g*7|wtJ&(ye zi&u_xU2e>ObJ*2s3(Qj1Ou|Y`ffTr<)$#yCcUl6MTJjcC8Xnb>$4$Ry@^tiEozLdU zgdXzTbeJcH&076V$z7^nkFVxNmLEB>tGJcL+^0h^M2z3QBcn~u^w}pV^5Zry44sx% zB2UHW3mYa0zg;__wwW;FkSo`?!VzvddbgT3=5O#-zgQCuqYgf__5I=5>euQg(w~Z+ zqsdKDv(}N6vEKZ8B!D(OXyk-#NuSzMgn!p$&jy7DYclDN*xo9t_G-<#p7u)OsR%%85PN za-hSm+d!5805kn$JzUngWa)7u#PxADAA0F0wl57$jC(cI~=)VJJ0Q`g{J)GAYLgE=__>qqZMw zDUQzRO>bmuJER)*G2Yx44`90`gT^(@-t*y@kq^w%)1Ne#sQFBKGopfZALV7%=N}~> zNWS#=vhCq$d0gudl}6mHjeCp5w4Ez?G?!ZDE54`Z>iLT#l?@6qFRTFe$=v{NFaABP&qYpc*Ik|#aZ)q z?!ys|unbX!utq^;Mm_U>Y1K`;(>}g8bcs5WCVT!PC_J(7XMu+dTSG-i^}_9pAhYOTGHB z$0SkS%_F$yf!HRUFpJ<>Hja&=chksej*`6-xbZHsGN&n2KI1Ui>K+#JkoPT*PMUox zNH9p^96G&VaXv-Xv^6cOyeqk}P2#r8EpCzq3!gq+_c^umL80k2XPtZDDQ~a6kBxiH zU90z!?7291*rk{sXR;~QHl3Gj)VHxou znjWXm`)|`7>g`j!v4ccoa7DrDAX!Z8et`$$R|0MM%<~gtIxa9qa~!*Ec zmQlVSoc>qcUj?s>PCU`!`zhS-X1nmD?lLZr#e1dt7MPEdeHh_D{r zO~9m=0ayXlVs38BAOR=4bHO_tM-z!r)LIwhtS>b>h+xBxTDE;`=mlw6TU)!lFr_R^ zv&YxZ%i$FP3OiKewNnKQZ)?@p)g^;WFf%i=u&}5P5y&(wDY*FN7SJIokuv;dZEX#> zSPGn%*%}_l_s$)n0fRSeq479QZ`WVS<8zbRq1auXa!>j_Hp?_h&o6V~fAKY5*oL=J z8){EF|Mr&4L(l4sk{(MAsP%DIAjrdmmX145f)^|G>k0P4*l%YO4e-A zeXl&2mrs>)Rz;8^G=hsE$^wd6*Uwn2FNUe2UOwKg+)OX2PL``%ev<@Qu=&foVw z%qo{Z$7BOAt(Zv_`2-KDV~1ifII;x^n))AeQ)vpsn5;HwgXsZ!DyA0JnGc1U2=QxR1VxK9lYjiVLG zH~&WH2Bo^wzKa2FdBlsW_W;?W3kf>a2#hnT|2Q6y+-Np9l{iiKP@_BZrw_4Z^Ja3Q zgsnHqMD4B)#mqxF@RabtD_<^?$AMXU0NMuz2E57QwVn?b7bdn0*9*O(!R5TAQ4oboy4a)m>Bul- z1cQpQj=0$7%|ZN&73ajj6``?MRaJ#L%WW(;>g<>R|M}P|0?bn}n)Sz00C5rzkX7rau#X48uxe-_wYo)+maiqK%9~k4 z*x>fcF;UVi3*X*zaq=W@@zF4TQ2 zSq+Ek$b#JY7f74G8=3k zFn*1Aq_6=u&EHfT%5^@q-DTP3Y)aO*$%NF+H)A$RoZqlIt#I-ZPY5ka+~?upsp~6P zH*jidmZJrSP%I#qzNS2LpA=0qyD+-puy?hLmD!qHqFT~9vGC>CH-l~^CVJE1cI8DL z%LQw*ZZ0lQXdlLfb>7B9x$JWiy*Pamjrur;0q^$>)m@t<$UgbqzkhzL=D1gS|E-pk z2K&BGxoU!}+#9($HGOqHU;2&?oC}w}tHK6S)*-)Nd}vTQ)CEN=^NKtn~MQ0|x$lk?iF zKvJs9bPI?>GPy!Crh^#13gQQha^A%^8z*E>fr4KBe0%33Ch@0FpYGnZE2eGGZzsx< zO*92=A6tGw8It-^SG%{u%L}~>=n&>B&EdjK3=FQne_o2;t8KE9&hf2h54X!2e~&^N6h>BUcp*j^u$&;P4#<#V*$l4=sph;M#5?Q zdw*Gpy8kBcSl%fXb!8pggdcl#&LDbrkuqMOiD%Fqt&3bjXS3!Zqcb`U-rgkKd0ule zxo*)$uS=EmLnm={DjLSy`UpcP=CQhBS6i-pe*G7^^jayJbqx)rpuUN=_I_Ye^s$algTa6c^3R z$nDMQuT~vE4ETQXOBy%N`B-_ZT#8nzncurh25B)R4L5zM?1zN#2VKXjCvDh$YTv(K zg608&5eQK1AwD59I3#UtLQ2`-JbKu7#Z$Y9hQF+iNLn{Ea*VH|ArHp&vA@5>&7Ysa zv%(jXFMd@BHMk%s^ntC8`ugm_4IhDtK zm%tePbTfVq;_oDR#JA*w7z4Ygk=l-2YT5fL`P5sSe(M&~U@ zKmO(ZcX-4u{+OEbLdz6XTYH+GhO=5*Lt0y`KM6T%+)jB&?3L!5KSU#UWf0SChW-0J zMq4;MM%;gX{_9q~uPD!r-ITQ^>IJLHE^Zt*R&ejj_kDTZt^6{}$7ARgxM zeiR~4?ODE1lSuJx3^y8L>nkpek5ycKd3rx7S|%s<7aP+?lHb9=YEeU%hFf}k;^IY6 zCn$=VbSbi5+IV;iL8{O4oW*TG!zV}^F)v1 z-1lafWv;_{!mfVyM^?#@ypOW*F<61l5;kif-?`Hc!Vh`*D!54O%a<=+ybv&?BSl}- zrvLdgFp%~tLKQpWw>_xseZpq^1_k^F56Y7_qmhVA3K+;CBGT3pzv09#bBBf!*6(jN zkyyO0D7^d!+B>y#H0J+}_WVP(khB|r?~uA|a-gtu6Dj%xZ@#|GD1&tu+W1hQEPZ~n z>D-YBcrJQQ!otFQ+G*V9nz=*{9J}_~L1Cl!==OficUg3b^KP-$Fl-tr^Z;@$8oe}b z=EjqNHhtp607yhFcjd|ziyV``rZSY`UB5mQJF62Xl(v}a{0C6IMy;jPX?DUm>fzd6 z=6{#{^iQ)0TCu;VqVniD-v&}2GRlQgtcFOfpJK8>;bghTGK3QeRzm1#kbeQW*<4Jb zVMitZbkhdXiI@P|hw4Db4Gj%#ZJLdCyue9s+S|2+NwlQxFW0ZB$+5un$Z}%OqtoC+ zy>;gSH1DYijYArUR5S>joSZ@qQE@BMtlTeM={vm2wpJ#&x|^k<8nyj3_6Y`uUAg!xcTbfUT~@tBuO6Q4YVqk5U9?>%5<^br7_j=-zMMxiqlhA5A80%Uy&|~UQy8XW|O-5Cj!29 zct!Sy4%P@Rbg1Mo^7 zIWmLn-?CkfJXlHVGuzyAST9PKJ1AYy4`V;|=!%&cN;n4yFJZ!zJ9j>Q^r*kw!wn)N zG+{cD&a+R%aT&ITK6w&T=SMa#gjzFo;%=PiTea{@X$7LG0%z62W0D#V|0%N`w0D^O zX@&#^cbdJ452RfmhODMyWyXKx5|9uyP$M6rj8R*l?{LOW3tCZV=)~Xy(1fncr$j_B z32OmBkVu>-(8&VOaC39BI>34GU|XiK7ldy;v$)UZH*dalWnYFoDDz)p2Vvn<7~QCaJ2Z*tW!- zQCDxdMMin+)-9ww4xej|jxR)Q^mTQ+&G-DnDtj$d)DQ;RE+3bT^k#1gV1QvljjY}l?!_&)ZKMw`?rPei6T4kQH$QsKv zz5T@U{ZCPbp8QYWD&VCt0R#Sj^fHNO`gdBLnq2^~`*-h-l_Hd9DUyeb%U3F&VH1h& zH;fy;wmAREE=t-XWpx~?4#kHI?Xe2}+xBoqNPG17q;8=926YJJI1+C2Y4cUAC-2ls zlS9ep`K2CRw%FKM^!a;HR1-oO&!tgVVT;C2X6c6Izx@3Cjx6$S*djC%t@gRUNp?d) zW$5in=K+sr3%8@6Kfk@vTDkxBE$Tsd4a5sGv$Iy{vjROLjn29iEe6V+QPBTuXzAD3 zfX9O2-5vY$xDw*x$XPj6Bga2~j()BiBj;Nx2#v)W_!&W?(qkxT(9J&^E;@l49r{NP zM1CJ?0_MX2)YQ~ahTut1STHa$jtvi+4mxh6m_U=4P%VO*y3&e%`Q*ezAMk4g>ftOS_NpCZ)}jNEwCqT>qUO{ofO3jPCF>F zXcZ68^!D~b>liP^!NFlVJy?yTw};H*EGc!S^0pkvoom;AR{PW4zIE%!kt49<8)!eH z6&=K@r8I9}e~|2G5H%yCg!}Jna81@KC?4{omatLr&V{cPMeX|eeU5pqyqdd)h$nXs zt!0Q)@bnP8K#eVfE@-;8%*~(C;NswpB5zVick1824};tkl^Ex$n>f^fBgv5WY-0^M zWT=0U{cj2OOdVGk53bniF0zAJI&D>GLs}r)Rdc>rF+)y1Xpg@jJewmc}O zU0q#61dYpIE27&AS`UgSzR{S%!ou6P-@^BOsqq++H%88`udPBJ!{fuPlhKQ1#|?V@ z`l039x%sdP;=@)dh9GBm1;{WzPL=fIoyl2?ou@LMxBL<7#VbGap+==AcMo+AkIs>3 zN!QowZ<2P|_> ztF!R&0+sdCqf`F9`Q_|^HOM9G?CfNqvBDN(XUCwkX?p+u{U>R8ZpVT{Q$zxbEE z>VdV3;RcaPEu1`IliL>e)2M4`sJ=K(csSl`3aSj`B2qdvYJH!OJ447_snt;zu7>SYFL_V;N(#yvXot2fA63TY1RPE*j{{1ND`G~zLv{q5(KtXYp&?>^Y_wCyk#)B#Xe%n#5Rcz);gnKW_ zVOSqFE@X0pz(ai%C8ZWgKB|wMD}iKby>K!6A8kAnJT1eWpuig?X8%t8$PP?&bl=9t z_!@b9ULiRkrCl-K4F=5>`R?c}spBl}d9v&U(vM-x4oJ`eKcK}b#b^R#24VLJD~nq# z0tFDpWBNYGWjI)8#;C^jZ@>6=p-R2PYyj)Y`Kf_*WZE-35kH|NY~1E8TWm4m0kKz05PlaQ7YC_5=TyVqGZgNlCi?i37ZxDu zUVP(z?g3?VsDLLHglK&u3~GvF=cicZK7M9}(sW-3IFFFF9>fykdVf6#^sHd>@& zPQnkBLWiyVLe1tZPYiJZD1!3ev}HR13ltUK!EP`tfM$$f+Cd)r^*s+ij*O4n?#@GyzB#-8AjJ|S~ih|xlbxO;aCdOXJq71eF$l0;{HW2qMV^b zSU9q+TfryBAyH!uOkG`z_jPXPX8M0n#ycjOHcLlP#Bdlm?u{EaW<`OtL=R5M%BE{a zNjMX@I5IL4l&?|Fl{!R%xY3RP8qFW>w&CC&0pAPg8>onH{zj3$==p_faS9Nx7utfF z)c4^5spIG$*3{Ir_<~Y6MvOvI_&=L4Wu&s^Bm>X}A>NHVo7P%2uRK^b_YU4C1LkgZ>yErlqHUh1L!#lkh9mAV{_m zoL*}Wb{GKxp*(!gGbI1SP~%M(mviuBSWtqo0O`c8nqQD5h4$i=V2h+!t0bmMg)!@fpj}`$ zVB`vTGlDKJFswC7P%tiFkY&P-T5c9pnFTDhYle-6pSK67Xnat*MbAJ3ewFw3Sh~XRz zA0Z3@Gr6MuOh@+&HvowF!vfLP4Y2IZn>XreK@7~&?yu^gF;%Iiwou>JYrHqN;&4IhJC6Lmduilx^b6 zc?feLt0*iv1?fm?ZGRqCiyq@bcuLp#adF^ND0~lKn+T;o2BP#Zbk`>sarjatU?cRi z=+fAln-^k!>C~y3xjBc~ASx1f3LzWQ^~J8*q7j6(L)a*T6co@D+jLz}Fmt2v_rXE? z?;m5}IBDoA1B)U*Cu8aieJkUeS_eraSM}s}OXW^frb5Bt;ckf56hNpcnrGH^UP!rh zynTBahC~cWTpNKF8M1qfm6V~jzC%Yr;`aQGCdz9QL{1TzM5qb0E;*pi7flA3;0@*# z5I9#O2`J>~=y=rN49Ppz$5R0u@maL2kOVkZ2@Yrf4MjyoCAx4C+ukmw;0+`{>I|YU z10Mg6pZymU#D8Dye<=PwC2+Sck2dJ+U#av(Pk{E0Pf?}f5 zrwOKHMK!O<+YVDOZAEPl*BzOhjKmn-fYqKod!Pr0?VZ#7Lz(Jv2pE$5ZUJSWd2K*G zjZ14|71SNs{qEG)Wn z;s;HU?8oHpVf+@e5mu_iv;tJ?xDlP4gUsl4kZ3d_C{AvG;(7sdHfxc`t`8CuF7QT- z)Kr`a!E~Ab?M49u0U}HES>T?jUF}s*chSU6%!Mas?Si5e_t|H zj#<7O=w?$8GQ&pyR>L=n4YcJF)J*jEOWS#A64a9sKiPdwLjWvg4j746Bc#4bmm^V^ zVJ0Wy*mb$O-TA*47q_vZY7uLs$=6?PRh4nMd9!rsM=Ga2H!gK?wbrk?323I@W1$Z? z3R6;tMMbsKwUt}n>c?RgG==+TLJ8NmDa z4M_;Xm}7P%((Fta0u`!4N1F@8LMC0@o-*8yZk4>i!0&{I*6(3iD7@w|bB9uY5%{UR zyd3!g^I_{z|M?)RvS7qfD{U+UBthVbFyFZc+Sr>iH&nZJyUjkDT;jD--|jbg~U zCodU@TJ9buEP+^uhK6A4L3}!gjvq&y?ZAl8(gm;3;9%N)`*?ilg-m=zOwq~Q!+ADT zetW}_-7cs0Qm_+*D*0MfRe;uArc_52JiVY>E|C|u}GpP zADVo{R-hOGAa7`F#0VtFhAAkD?%u5doen1kutqA66OYfRfSaVW|3LqYk`?7T#oB(D2volFlcm> zu`+AFUy8iNq>~Rd`om!B{rkJ*F1)(NI^}1FSuFDFsK4^{UxbH$0s_Fy zl$EwQlCs=AAQk1EaLv)t(M611V^;KU@scDlSf<24!AM7!sGSPK_n`)>uUO85r}lO< z*={LB%(}%TCN7M&p8ByfFE`f!(-0sxT3cHQf*tyFq@vR|04A}gdAf2(TAoT(~CFfm?1(NjAG413jQcd&T3kTavO97=uZpnL?9J{sk;+n1Qr0? zI?O7fbTvDkfkqAk1C|Mzf6tzRU)UuFP@v#8 z0*^r6v$TK0skk=@(Fonn-_teBa4^gPO#vvD!D@PhH8U>gkv|CuL4^{rFr2d-?TVuU zZ2OkrLa1pluTL$9ss2;*Pf*o}OM94_JKQP)w=P$<-cT zLfcis@kiX^U$W-}BZ!exW8BX8xHYRhLU7>Ir+HE5h@lTiyGC1sXg zzU*O1jJx=ea!iESR>^%F45O}qjsZP)6JgEk;=69n(q zuk1eGTjFth264(%zSP(xC7Kv#PbQJNvb8lA^LfmkzrVm*G4IPJFh}@9XU4DT=}{0( zLDum0^veXHf8u;4eVa)f(%(M@_8@wMU&9p3S7z$(-Me?h^!?c==`zqsXpce%;szcF zr-5MnZln3j0Q9?ZWDtf z2!KW_2XYwafUIvLCnu0OWxQ9G0G+Oy{dMpluLFb`^o?iBc$ zmaZO5{!w8?zf}67<7J6r-s7>rGI-zz$)uqnDMJeeFm8O1PZ1bBMp$b!7Wi|Z)3%jHTI+@O)nQrz!dsV zFb0Hb*ByIk0{j`ew=UvGs~Ie-20^h)T+jUdH*99kmBpgx-*w$Zy}Q_M9W{7^#tk<%kbYbS=&1jYs5z=%pTO zu&L5~B&YCWdwPoF)+UxC-`eju6wm)>+ z?7au4cWA&cXNvv4Y8Z4R2~f`1T#~iXi!Vq!PyE+v#>Qr`AS=2c?fr-R;fZ8UD>azi zJ&4r*FZz7rEcP5+TX$*3Mj*bewSMB4fnI=SEsb>WpaH@Z!;Txs`q>{#=73ehArS(Z zggmKMsEN<4Q`K`O5R}JC)cUN~Ofe9)H`5;fny)T~Z%01^y%Hn5utvAJ@4H-h_xgKG zjX=8B@S=DodCAKts*?k8tbBg0mI5C7;cclIm1V|qf0Ql%Ui4vllX*t&5|qQEPVGw{ zm&exiWtP7VDcXoD*ysh?S=AT%lI5EQ_v9$r=)EjRt1HYO{#1FZCx=(2Go&yLBW5HP zCGDZ0_sM~%Wlv=M+dUI^dC_mv%-eBn9U%l|@*q=Aq_-BX|H$%MDKR+LIUd)0a)5!nZix$;x z#7H1_G$DB+#s2fNy+2tJq-@vf@FXPpI=>+bE?8jniNHU0$Qz`wsSiXa!Cfq_K{kw2 zHq2DYjxYKVPpXhhE8y>hf!&2NK~C6H)xL0o<8=X+cCR;rx4t{uq4uC5y5~#^B0c=LO=KgegYO5osJ;iw?SckoVN`|Zl0=)F%P+;I_5k$01 z?tQJQGYv5s_h4U3crAJj>AxxYnY7_H z!sw0aveR_abh9If1L3?&hZS)V!hZg1KQAi#%1&jjTdn?yAIDn%E3V(|I8^(DM}s)* zfdkF0inXx{!ca>yu&yj6SE|R0zeT!%k-bjTxs$yv9cg-ic>}-)Ms)D}00AQQ-D=S(j>SjFQaYTqok#DWZb{5)HbUbGYB>=I zl^|jU@@*W8h2iBWXg6dquYNxzMzn&&1|m9r@zWuCW@1SAU&7+L?#)e*`TzV(`Gx>2_W$!Q z{`DXIhu;g`m0J4#5+{Q+_U3@*>JpL$iSgC89AybMKR!M_A7{*=LjXBv!^*gUU72IO zKw(>omKE?eWURH-ect1X=sROHd>XCDE4HQ6?-<$be9(Gka-PM(CeRh2bzcT{9z~-E zTpF^Uh?|!9QB8S_SwrZPv69VtPhXt*;`Z1na3h(56Q?ig`;{&+xt!cHf884HI>YLd z1z$XMz-8zTqb(RVkMA*eL3S@1hDR;Msd1lDWW5C3jl(!@VkkgZ46L@e&ta1)qH)c| z2yuwZ_z0?FR71=H0h2{j;s(4#RdTxOvFF@N>Pi$68K}m?ZHtppLxaz@LInUt z1r&nM>X$dmbRn-1#*dX!=s~Fv77_w6-peZlVft925(S7|$wUE={bPEeLDWr?C?3(g zRD673zkfB(3S*EXL=q!5kS+#LE^p`#Zanj)>Qo7ykS#n=4sq$g&Ch=|2!IXp9M7%+ zxjoWCv?0D(UH)giHwp#Wgdv>9Vwze4i)pxySzmAcM>0oC)#a-< z2N=+-G8!q|Hl!+kgeT&&g&2<-%TR3`_4T>$&FDns+YNZ4CvY8mT(ynU7bj)l*rGpe z;K45-CQgzQ?cVI$Lub^pwj4F5fo-As-6=JvHpo(Ijra`p3d)<@3g-aO$)cDEKwW$P zE<`D~-AM5pX5^Qk@C34iX6G_AUvlIq(uoS5Qm~YG=#ih1C+08Q{Nf8!k#O>;MqyuB zx0<UM&a8Rl!su zag-6ZlTJWiB$S4mrQAyW80a#jl@3(Z#OXKsC_d45c|Y{FVdfwYQ1{m`tBg?yX|M#3 zU#x*V`-&qpb~1{N=hPpv>MQ>B^09O=eD3lo9MAS0twktDR(1J9EX485Sm_c}=hT(h z(39jc>x&-(SNGI>gpS~avfE}oHMDH27+G($D4$L%F~IN|_CyDRCI+@erqH+4>?b%# ztV|jlI>!_ZpD!|A6bGA#BPo)xF`#Ok`(3`_6qjJ-l1+Lct7ljve*Sa!0=jV+i3B(` zkUoMgKf`IbsqwHxK@5EsICEHbu|;z%C>O{E(xIDyJNQ2c&^aTk-C&4}2W#~F_QDy8 zEiu%y@IMR!UYhkiJRvpzfVoBAN0z#?M)5^jI}_Xqox-5g2>qm-B|*Vh&*Zg?=W za2@pY7tqaO5fHF}>k=()^ec^^xwz~WiCf29;^_ku$XX+ym<{qQp6Cv&qh)uOT02b_ zGK50B#fMO#m*`^M*LW1L{$eGLTIFUQ9_71=r+Te5jz>c7#}P(1a;oD_{8a!Cr>;bj zJXA8Cg9R_NXdaC9Kg0mdgXDq7a}B9+pL;}$#z5Yop$M6zI|N0$*SCNUKd-Nkil!B` zvda-AXj`f_Q zpmER(r2*8phaXDMcU^ui0n_}r`4e;kLWjA$0FB?w(pR}-oikIABMmYo@^AYMRt5==&J>B4JqApPgfqn&pMh6u<3ZVr3-#mXTFDWF0kSXYm^(}9Qb76!h_PDh5*@@B_8h+9!UtdWe_r{!WX2T?rN00L})gHQtRtyf*#VD`I@pVt1V?1()=n9g(q6CufB?zyd@RTJ;2M3w%gC zP}Q`1llZrT27Y@5T+v@fyyWNdq1Az#a{S#ay;;R+{l92U_sm#+uCXZ9ho4-q$rrlOIX z1cx~`-E6BK9WAkVhLsg90V%06RHV-t3Hu|MI2?Zp?Whx&cX{G`V6-UEb?~zOCV7Tp zZS-jg=C2$e+re4NSAc;Li$39er$L`HFwT?Y;Ipm*YT&2FuA~2>y>kz%IbZ+&+Jmv2 zMx=5`2P4NErp6(aSdNJ@LP~{{2l$+BTXgYHq6 zX~MEXJy++)<*8V~h>u!wCJS{$F@+tGlm>}EZ4~N(T9S6;#iLrW{M=HuJp#rc^md4X z(fc~1I_#yYJGJ`KRhg9Cw;d^KtZ#Y9#rU6H;4HO+;W-01$x-vx^G3=oN1^waZ)&=s z;8G!v8sUyDse+jK>Y@GZzFQj)%J?P=w|~Tv`R^@C=3N2lM0Gc4DDK*rzCw30X@NEH z;eqfRgwrA?Tzn}06mAhIYu@sB{yOmU{*pCKEIeH45>CN*Fg86HizvNU#F>z|{%ZSN zse%%lMDl+hXJUtVkl>4xTM5E7y}lm+VC;t$N*7JcnIOr{Z`aN!81AZeyzTk}GChDl zz2bl&(tBZkSnPUpGg~G*P9vcHw$dHib>$7MJ`WpsB4%3yX^aw`?Rb5tpM9{n)Z=k( zc`x^5zdqwue)`3k88ahJm}+Z;;Z^vPNbDqLa@LhyMAR7vP7L6+M2Z4Z@KDl(;l5sUg};*;V#Ktq3TId@Fx*N!Svt%=UaW7?(~|Fkyea-(XrxgeA@2WM>sXb zSB8QnBUb2MCm@Pw{CG3Vn{1~diHnl?*+Jb*WGZtIA-}v@;7axal8la56M~}FCnMC< z^nZ5+7CM!x^_iWIUF~-bL5e!XkB}CH&avBfPDi@+f_+V|*(0I1#M}xVNIvn8Vany@ z)k0N0WJ)}N3~7p~w=ek-ymvG*@@A+H5!k2Z+OwD&7Ca2*VDfFpb=i^s-K2Ap@Vg&d z>e5LAq58!?53J8rTLoZQN8*HV zuX}nvpZ52`AxxgFMzMoJiJ)G`KrXEB! z5`L4P-STKwUnDadiQp(Zw&eft5Td4t6139+0Hux+Ny-ZFKLvNpUSz&Giu7A z@d*&|DDMLifK(xY*p&!(MLI?QImYsb90HHUqC!b@Jd9?R8nH)M$qOSqI&Fe^US?%? z4W!R{Z?F57LT4NM{a%=+A}Re-4eUu9D_{>`=aFi*SVlW)F;X)1#8iY{-Ez9A*-nH%$#}-;ZSJuRq&TTz%|Vb_ z%-&xlQ}?&BTC^n!zW=ubseeb{`!~JjvQY`WvcH8 zfuh9RYH#Hp;PPPbHK&;@&FONWFRHWU;51C3f8`)L2R*;k_WS9uVeQXB+TE#{#X!Zy zNLZ{LjeeQ>GGrZ~%%K}Dv4bb?5p=^%_8u9I%*h#^3S40q0P(leQ4V^4TGPq1UbmVy ztc#0FXUGB`wZW6MBDKglJ|%&JH}bd3e7)fMz)fS8o^x9;hVFvgY`M{wU-Q+V2nc7< z2mM1%0C|zJ_@u%(T$Iw(Mf?j#MlX0V{qT+P$?K?w4cecK6y$+`%bLX4pNO@Plr>bV zAyaghoS9F|vpY=FZ|9_Qj)e#*6Zu!sB;Dm8JxNf|4rb54wzK<&Z7tQNI4kq_pN_pa z^<(PGoxMELAqKPR95Vx)fhU}@EeHvUh#%w%4n+gCksv9o(m(!6rP#um3WTf+Y3BXk zceujqBj@}C*1bSJW1uML(a86_$*p9%PjC6A4+%k^Di2zSL!ugr3c!ShK(uGBFw#$S zF3%5xabfb$tH4@27+^DWs+(5fN#qONzfiwXb6q4~)zHi*`T0VW6PhVZO=PWta&5hD zLi_bHVGo1<3aYX6i)WyZ#M>9q{{lA8fES2G{kEk9E)Ck~y!;E)ROGdEC@7QGm%EhT zy-IgFb+hl+#miMb?Y%gh+~+q77135tu1n?E>3g zk+VRWx0IoVQ1omERGI+nm4{5PztsiMG{nH85@^O?5tlh!fE&??3czEvo+vigz8ZpR z6gIGIh5RQ^kfD(85)K_Y1lWtWx%Sp^0hfKOBkO3w^#DejvG?6OHeR?e&|>c__eL$d z@D#-vl~o=^dmjxWECLdNuv?zRzp!>b@hd*LA~vIg1(~h@jKVPw8DyXlCTiuN%7}S$ z52zPnIYUJoclN9?077_OZuJFIfN(qk!e0#j`gi6xNc2LSOd31x+suByPokGesn~(d z0o^cB$9Jbc$p*}q-=d-nl$bK;Tcz!%3sgu}4 zVnRHf1a)JifzZQFdXkM9@*}vA(ZWuYA9B9}VxR-6IKAUTg0B%~()F_)7H(<>tPGf7 zZxno)1f8L>2wVT#j^{%j)7Xjjy}_$cyfR0l_0?)zE5svUaU2y;EjUGd-SFYg?q1>u zK)YnzB~yQ^#3S{3H>L80PiY@*dCis}^bsIc_B5ZO1WtV9y%f$1`ho@?-@S?k&d9eS z)ej82FUI{UYTt0H3ipC^)D3Ne{L4P?GyBwax#?!>@GZSUFaAqxvx4KTDr%gZV7=>D zm=M~D2M3NT4_Lim!7r8;#vjOen|c25abm}EQlfru3tc4_f-o$a=Xw;w5Dd>7HsWU| zN5|o@0)JgGX{TmlQg$KwFY)b-v$m<(ZGD^_>xctP<(8oKVrC^a@6{U1FL~ou|YEP>>$}%aR_64%3B&vXboeN<;ZOXA==(I2X`UpWayL z`=qh19EQDS>2*+6**4WoyhFFw9os1QA`(bRAGfq7UQnZ&w88WN#rf6frBKuumZ&Y(KJ@do- zB}IIV&j(7id5zVe%F8HHc<*^7C&>kbNCky8??|n%Im$T(tLYgO*V73fKyb)p<OxPo|kPYgJ%RSnAkL2lRbc^M5IVx zh-0?jg^4;kXW=!dy;^DAhY||K7Yc&eqlp4Q)Rzc(P#La)!-D#`O8=X66IBg#UdVL9 z-zuaZ>~;jBzElc=aG73 z5Gn+IL9e5nnG0y#V&vhbbjHAF8$LtswCYQEZ=}-UL<3So*M?0oiFPzf zkukwSNC^(p(X-c89iqQ(A-ozTfKa>|PnzTf&gWqpWS=;p=d?f%Z-nJFlynb?ci*kp ze(WLFCcVt*XIMLIhWXhQx_g3piX>C;qalDLRAubp-48V>#ZgSYD^9`@TENJh0G*=& zI^V1`(kP|k0mFRxtRs76o1*>jvt{b5{=|`;uyTJ<;)v3M!&`dwa(Qq;ZoBfp$laP5 zewq1;DJjN7KBmN%51?hYJp40;=sh&Cw8{1qH_50iz>3Tbh2a7v}8+%Y#1e5D=z6yP1$Ksv*Gzy6=1_a5c|;yHJJOd0R`%V3N{a9bO4@ zz_|7WP>E)-3H{At-`jPEmkxX%=-tv)l9p#ur*J9{HB+=E?CjWUFx?~fi=$?*UcF2D z>MO2;GxU7pJN3i;A<^q1x137x_`x}|&LdOBDtciOBq_UNGrhlTo%57}0wQxfghFs_ zyJk!6s4FYp(ffF4eoa!JIxHw5cBjcqk2)34fXe8h6RjRRIKO4Bt7hN04&N>w(U*J! z?i-Kwy@c=idXA~^vHpp+m=jI%0S_I{pQm1AJZnx?*6+lA7nip*_B?N{rs-NzkwV@Aqy)eu zAiV~%uBki^#$y9fV>GL!x6Xkm5VOf_h6!z(fc>Id1jZ9+4j_zbBv(JrNFNikDI@6u z_x!pFhNFz;1k&!7Ki1^$0q0cVHh(IhqM&Dt9k2b6uYx;+O@#_d-17(DiUz~T z`z~;uW|X+nPY}8^IiTDkEkv^V7eeJ$v%xiN^N#kBMUpl8DO*8+-$@ z!nH-!K{&=A;0EEI7$&ZNqV*G%BpOi=*u*VT`I~CnBn8b{@#?8VJm0osv7DT_LSUrf1|1JDoSxU5Egy4%j>2_k1aWt2Ghff z9YQ8WIUj(lM(#KFj|TNUYJnF3A7BoUZd}7AvTgx&KiX8KJDMH!d(`ZG*MQ`COPB-~ z5f{O{Dza8MA;Ad1c2f3|PRxk=RB(MK(8N`eF~2=7sU(pB6Htr_CcVSW_GUKLS*!sc z6EbuEYdS2`vYcrN0~@Z!e%gf8Ks%V^E3Vfg?=!u?)hCW;iiKd7UW#s;totQMCj0Rd*4AsnRG`-vyPO&;$D)S@(-VLt8jRR?JqFyc6)QIxaXk`a6O zuy=vA^U&g|II;nK=?f!Mub`L9A_WbD)w>M{xa3@k3M4Gq;rq7g;dIY5(Df0VjldW{d zjT;xZkD@EK$WD-crp{ZJ+cIVlHOJZBsOKZG3l#0ta1pNLL~2R_)d9M!jWJ1u z4=T!G?co0{xxW8ra&@2Z1D}5J;^@a47Ym+E=}s(HkFh65gqxk;`(=vv!)zQy!a%As zh~Xvyu_0q9SuD78ucU@#eH`A5OKyzGqkA;At!LetucDJ;DLn~Z73x;b3RRETfLC*; zZG@XB^}361){dRS6uB}9-v2Umb%T^@XP&FP;M?Y~0n0Q;31X+P74`cFlsuS%=$#uzj< zE!$SMw9$UY%l#5XS*k=kp;Y>RO0NZ(?xa1H7yRa5|KT6{Z1F|^@tp8Og%$0n(cGvdruy{__Dg;=wKxrWjl*4x4V4+;Lu`^fXL|^n=E4o^n8^yYB=tQ zwbXb*$ME_dRpK6{x%&owL#5^@O2x1j0rZscpjdTvoxpos%jHG`h035YWMoY12dAt&kU9_kc*y3ZR( z^xvHHVlsUnQ~&`G1!08?1XAA%(z(?ncrtrrthN&zL79$w$g6 zGoxrOJC>HgA5QlUN8|w0ybowDQuE0@8Vl6BM&TKEohUC_OD$jMdA)rK(te6FNW(;K z=mW|VFnengz(heo*3xAbOL}s4NPixJAMs3lX!YNevtkgkU8cCaADMzveK4#-p)3Id7}1=3OH&VGrXJiSI(kPCL*!~iYxgF_z1y>kfLe7I??$J zeE)bJXU^-LR0w^L&Ik@UG_(IWKC?F~&CR;XGH$_JD=iap>BOM&fgjNYcy0*O>a_q4 z)b~qA^KCssynL8POl___8Ro>Xe6y#=Bh66qSIx74z@+ynJW?0`BWh_R8 z=*Q{j$>~daZ1B-~koc!$NIX3~p%2>AXNWhIk51n}KI|PnEGiRI3yTEY4A|L1!AIv0 zCJMXz)6~cj{Te&9Lu0@EaxJ@26l-v!xYyaDMxkVam*GICM#Qj2MUag+7U@kP_%x&W z{6b-UVAZMFA(fUPvua8e9X|1OT`JK^UFp_K6)PTb!z6bfZ{jj860ygoJUXliuus{i zKasnHN{B?>zq*}qf+nRqpgL&W0)9Ax9+J&S_h0%orXP$QaHmJ7Q1%5Xqo_sng&EI7 zA!>eIsJ(F5(2yNvgw*MXT>&SEy<#RsQ z_Gb<$ywm->PsEoz?;%__iUdq1ea6PYKDiK`TgKbd{9eGZ5QaryW{X!SROH|PLs>b# z*TFk1V=d?KzJ|Z9XLp{KO?hM-saA|?^Qvq=6AmxToY22+D!I{+y)V4j^tNAS$ubt5 zW*XuLBfqp(HUrluzQ>PS^NlsM8If;_M?~i{zGST*9NxOYX}UKfndCSr%F zizjD)#@SwnGw1W;s`L(_tbm73#2WDI{D@&u6TXYt)R`yzPr{aMA<%|woH26wIQ~w% zZIi=a0~?R%R(cZWydn5sAI`X+0K?|Jsfs*SvNeAZmsI=0#B%_mejg-zPV9thS7|dl zMIaXJ^Fi&=yD0Ugb4+K?T)JJ$1dZ387 zLbS(TBUb4jcT_ZVNWKtTcGw-nIg)h5%mF8MWI_HOCH5u3e;L#}QE}oEPhKot@u?2~ zb*_;3Tb5=Yx|lo((drR$^Yw)sTZ9Y@As>n?Pa4$i);}eBs0@cArsmfa?yL4ZjUqcf zpskUX>~fzSk+7a&HPItYZ=2Y8SOMQ_A$Q>|g?|7C0}MGodg2B?r*sYF z5AQ^@{J{1DWa~L){1uI#;`AT|++PV?3|TI@eD7G96jfp}RFRlgB&tG(F~_eEL=6et zLq)k#{M_Rl0lr;OK~PQLQEt2Rfu(Xj;k8`4hMj0Z=%;1r{_8R;5c$O5deP(^JZVgm zls94?(DN({0^v`2$%J`S!cA`CYPLz=Tk?CHb5&^cl& zdf*KEs2llCY*<>p^D%G1%v;>q8A}HM6~}do2uOTGx0f?spA^n~L_B-?uzz^qWR8A5 zH0xMKje~xvH(gGMv?`wx_jxRdkQEkhPGZZ9XnVS=@AQE(+M(YVX(-|i0wKIYI%!iP zHJ29@km{%~H)F9gpmvaaVqx?E^8g{*8wGUBsA!;&6Rl?gI{C}k+l^Jox^hs)Ymu%D z=uPraXi%GhN1?iF&w@xmMH)}RLtuK%~#yj4+j^GNuGG~+K`wrB0vcz$=L z^yHx)HX%nd1`QuLH~9Unnc?Bx&h|SLIiinC`S+%~&dm&$h3hyDi0m?2#muFAhOE2l zAcuk9_8T^{tIdYOq0ynX&7W5JKYDXAHgA2+Lz|6?g8BzG)yV9$7IqFM{uh7WQRm4S z%u+xW^soDj8`sxOpMud<`cT>s14Cy2mL9}~ChFDR1b<(vZnxB%5=zm^$(^`ZrTXn# zhZ?l+1qB7mmoJZBnKZt69T5|hG%Zl>yK-eQ+-SMgJ@x{|am?5|zsZ08e5#(_lI6=) z)Ab}rFH-WfPRBNsUst^S{rxv@-u%rsq6@Na+EygTrtmtbV0wRss3tR zZ^OgGzVQ7NB}?t>jHgW-ynk+SQBm47#iK`$$bB{|SDGzYaO&~zNCV7cj0P#3{xb1? zG6E%cD@)6RhYzcEooQ;C&8!8g^XMZ-)ciNOx@u@>FbM9-7=()pUXbp%BPw+z^iHEe z@8{=UKc0K8iPLdq!W+YR!82GK-kNb(1lyIf& z4;FG#>dJ*VGnJ5(ibhC9MFscN@C(r|T@NPVXU&>*HOI)npzzTnH%Oxui}x+Ex3L+V zbXGEP)pM(^J8ty)G~%sE$86y=_OZPkT%x|s1Ph7>IaDGi80GJ=_bZ~3iOpz~qV7+bfS5di}#f&|HuML-(_$w(FvkgVhkDu^P2AUS8rIY$K%B}&do zKr%=UO~c&}{QrN>y>sf!ojG%>Zq0OkRbL~`+wc2?z1LoQt>>ML^t}^==LsZ6}h+_k5vW5VfjE-4w$cM8<6;;PO5 z%+5B=H#Kl}adtISMEczGndR(SEiTRoF%n#kY_|GP&q{n3ZVz6rC!SOd?7zj3(z?m+ zzs)+KO}hWi`0lyG`|tWri67W|_l4{KKOb{XTAD9is2evY+Z^(sb)L*0Xo}$DeDPZ} z-*iBg)3E&)wM~DFL0jTfmzGO@d;|rH=1OV=yf44Hs>XEXO7(b=`6HMZh0oH|v>ELBO_Oa8g%sNorB-{5G7Wx3-w7;ytz#77jNeMutq+W>Y>pI2 zwVLTP_&fYnwbHpA*3rKs)tWwY-PzTX-Pv)nF(QXYgS4EF zrwp3(6>OGE#fg9L;xg$yq~Iez*I(TB@##&?vTjQicq~pBW&{59ehcSxt@c|!qGzu? zV4daHaM{_MctdxEle5FfPFmV~abwhn%Fk<{)TXbKhTA*cE{xlZi;gl^zqx6>8%E*7 z=_}&r{Jfad3JxilM&rA4^?fe=+`tX((#Qx%lQY$_k;X3O!=@H_U%w(_9KmlVcjLwl z_~sBz+mXWoELwvzi@o_qM&G?Cc`YYDUXuzXO;m~%drw~XKmU&Uaa^H$M!PydR! z8_H{y0z(-*9TiRvoJO4w;IV(PRBr#a+lFEDtsigI zk8(;pOhlgKvb!U3|3112;dR@sKVfEh&Ukx)#cyXB)C$s?t>77w{rySHx0mX9ZU06W z824Nbs!vc%RkBN8pH9t$J#&MPPmQJQ@2e8)IR;^2x8$#Ga1sn>tR;J?6<8AyM>CMu9-BkcH(LVO`)9TObQRop2TjSsDY;{#m ze|vXUHT#J>jqUJ(j&wC;SZpg>UsOvh4X~}>KTugM{uaw*3*$0Lfn{v_Dy4A9S&cb} zamXmsY^Y+ouP~Etp=&nGtRmTAzW83cT4CqV&KfthfIWws17nWcXgB#de5W6?hSG$R zf&=07y%%S0)Gkf7#D#Jg_?1}ABZYJvWDPEGC+!VmxSCJJZ!xf88ZXRxdVJEqWdU z>m_=3dqOBhB{vZ+``MeCF9m)z-IW;yJ3sukg@0gRBJ8_l>$%>@rAVhW6|329Sy+9% z*0aIlUgu)qF$@=f*O(Wpixn(RM7adg)zsEflxT{GyrMH$7%XQ{Oi}P1Uz=>X>$d{C zU?#$5Q1;1_C%%1dRlbKDrhlex7lsiz8pA#}94srgUzv=l_8^&oXY1VFTwdLrh)NZ4 zC+yA9ecxMPl6vIC`Db5T5Aa(2@zQGujv*1;5N1?L`@3~Y_j(tRMwMLVVt0;XeWb(u zZCFB5u)R7fckyN&NwRlgWV&1r5Ugan;3Z)<%hh^Q?@ccD(>0jBG_#MvW~_BC7eTerV89VpAL-dcTX}#;%Zhe6uO`F<|V%v`*FIN zw-Ub=CYz}#paU`YjrR6}<`ua5cZgd8GYN@_=l#40j-Ip)B(om!tlS=Ffw;%cp8LzX zbRjC&cJaw*=|aV_${=HA*^~Qhu)O{#n!TvhSIE_C^ct=8aR@Z)&ieZC>4QlA9#-P& z$&S>Z78u4We0+VmO|T%#J73T)tPi;iWtPM(YF@Ql5L^Cwlon#;LItiVcNW&j_vkyX zy{0=-sjfea2JFUv4^3Lg`ngsq>J3(d{%9)lB{%q(-mLQO>5m5kIPP( zenh#$`uXha?C-EOwtGn~s4draIz`32+L?j8;TsS@_S~UJ-+$R>JkOww82jC27pK*n z^XdA-^DsATuw)F?i=Kbom@6FeN>NNb4=a(4S-ogj#cZU?{SDn{ZnNOBk(TJF5g7*K zM$R7hI4m`@LbXfNA$`zcK|nECPVD&c<0VsxVI2BR7qCGUFQZWKTAK@7aOQyDNJvVy z!T0jl!@8VUZQLMJR=+gWT3EG{B$wbBFB!z7?l6~sIKu`e6)WdXNVd&DvCIDW3nr72 z1(uD{`usq?`MAW1^Bnhy$Z!6tXQ`aMZS7}SeS$kltI~OE?9;=QZXF-@xE}99NSqz1 z$`4`4+aWOV*Bf=DB=qF!GhVrJmwUkS6Wvsxn(1O_iw%CYD;4rk$#hC8fBo;@zb&WR zZ;X$P*>y!O~FJZ~ldh7N6 zeH#Rh3lU87Zm z{2D_!QCO_(J%qu?kTP$3q??vZU26=#Enm5_m0Gd+hiVmqJRl*TNV`9j&BHdW@mMzE z>Is)(0{UE9bt*37Bv_U+Fqrx;x%C8|54&nQE{d(r52(F(@#1jc_(`SV#xCccVvEnJ z`G(`0m=(Y(<7(I0+2u`o^AG2svnnARaJdic~Pa% zRAaz)^h0mCgH6o%Y=1HP5Zn6Efqv`R?ig60XGHNXN;G}3Me580=JiZlTQixE#T=k*Z-*wMVs+eP}NX=yh(%?8yW^gq4d zClAn4DwG2|H8o|wHTBu*_qXGjwXpG0TjK5+?e5@1d0xaqdgLGZ@lXgqrm}zlN7mz) z&Ai04+$BuXgSMk5boKQeb_M~apbdkv6zmFR9~uG3)PFedUW6?Oxn6OiDWbY%?CtYD zlR|^>x`3?_4_f|uz)k+);c0fDD=mBNUw3f7{~En1kR=jS>ZFUQ5=F!Dmlavza_`wk5B}o)=#Cb9WdT z7YLl|&2IzfS;qWY$ZFcZwY9Y!AfjU0BU!8I_LlrE%~W?H3VXcYA4oKG8YSVU0F{#l zTVwhlWGgH#E}m!C^MZhux-?!t14yX__QnbnPZEA|a&qm7QhRF*k`L^^aKWv~D{v$C zVN+i+lZP=32n|hvVVsHc5tQ>dNv)7?s0gcFiq>hx7vTP9h$X22{s3R4bU})disV;; zL6V2T2?z`fG&|yhbEbi5;k92$3gtG-pwM!Zg(TJLMaj-jI~F&PS-Fz}xg*79VUX8+ z>}{fSL<+!Xh8s7qejM6WhtTww+po3?toO&YeSSC-psWcvCzi%}Lpw^BhUd93fWcA# z3aOjR6Ma1qS(}x+I3aB7QCi37Z{I{$r`ql<|7nyjG#%hDAG@z%Hy(h}HJWZFjS`MY ztx^jrj%Od0GBwjn=Sw63h$zCcQvl%E%wmZU8330+I?iXmg#A`(g?41|xb-0IbM}ih z6pERe<&NW~gJnI-jy&*ai4Q_zAxcc|;1+_uW#V1B&j(Vq zpUza4PEVzaOF}|IGVF~=tv0p1XTA_1;{zC#8LnLuSJraMM~DXMvZ?ND9R$N+y~LqF zbRO;$))6CiYkRqw({bbZ32I)2E8<>Rd9*Owyr;##as@Cbw!$__Q_0nv!mkf?EsoZ9 zq^Yo{Kgt$?1@y^s%2`CqX*B?WJQUd>%}+yqg<4M$#`t4lvgo@r64KI2sY>a2Pk){< z=`WH+Pz`=uX_tRE1psidm>I~0`-AVHnyx6MNJ=;qBnR$`NZ5=BTx`MHwXR#1c)!J>o8c_$uK z{BNjCf4w?Pv;qOi2<=ixH_NpmV?Da^nR_59)eIA5)(m3d$N9raw|}%hmD?JC^LO=;k_aj#FsZ3|OJi zXTLT}xwIt9n(D(eTb&Kbr^PKq_U-wrl7TCZXNkYKBuEA+IXXHPg&iPzZX9>C_6!Ci zde-#u$$t<+&qHYT-x*go(C@$Ne#43gGI$kS@;bQp#?|B)@MP%qn5ydk?Z>FnVCL_> zA(q8&t#;(3F2NuX0YIaNECL^oyeQ!Zu!0$jf?~X6?q|AWScs8U zu-g-0;~M~MyUYSp0}Pb>?TVtiN&@+;BAKjr#T1G z2I86+lrzHV3?SwsMqt_f!F;XHh1G?kLQo9Q zw}YLy2cV&RMw4vVo)iOl2xcwwTPwAaVv@|)wSxV*eDpFzmK^X)VZ7wJa~$2;NB1zmmAEgJx9>@3oSoA1!TdoWY=xPId^D`)5(d59S z<>ch709Z`{>~25&@+ch^rDh@LGDOiqeV*#LxfIH-?|tUX86c7}S=aY>(M8K+aW~hX zPDqiB6Wx(1*iqkw=0q!vX;)f|u{03+P;N%Zg}}SjqyCH6dA1&67rTnf46ZCLxr zOYk`>!-bq`g;9MJO5zu_=-p$zWCG85q2&z&aLxckX{$!De1 z-)Ns3F+G$vYF_NWeu{!j^tOtgUSf(uvfP-x^@)Rclh>JB_&Ld>J~4ZO0H-X6T~Ud?yZDmhwT}nijl8G6q}GxeqDnA}ry${yV|SR>e;(w(|fKC~h4k~K$CFyFrrp|>6}VB)h< zf*%l+n`tUd&s4wIe=IIm{l$s6%XjuSB5Xm}l_X9tGM?@2%~&C6^8a`Xhf|8bAh6h* zGtB>@sGjuX&wY_tSPZxO8}~01VIQ za2t|q0!PE!cOR?t9OYZ{QM3}>az4( znB^Uk=&Y>mwVUu%BVU89+F>niQxa{Jv+nPH(vzvdEOVfJSE!kJ_%kLhCT&Hgu@ z@85qKjin`!Wm>o-*njcsM)rUoYyS5#fR%^yBhGGx7oPaKc9qoGxbWMuRuX9kZK}^p zYNzZR5~aYodAO(UVy%V>(^(#h4KmlwoAd~gm2Da~x4RmB@64G1tHxYUtsW+?bVAMjWqoE| z&rS5dT|GY3PA|0B%g%SV$DfEvyjDZw!WFXTxXZwk7_(?9@MzKI~jI#lYMJz_u8i{=HA6iQmm_+ zDQ$IIuMO_X_Nfj8%5)gqn^b;89YffjMmTf1cn3EQfguoxGZF zzHXvZq59PW#Fb=RxbM@vckv^Aw#FgqESAS733ATr3-+iK23VpiIf)*2T3Uhmkz>KF)$97THvGrkkhD9Vh3C`!((Q{vw*}EOKqqDuxR&4|s%( z|CD2`i^g`MX*2Mrr|qjx=eVbAS5=kVe^#k6E+N-ncIPx_J^CAAXLuOVPR?cqXWhc* z+|^euu*dX=vr*mXpEdnNeIPjE64iL0T1M%t6E^p*oOeWw?qCVgXuJhVb&tuQA;WMX zmn3{?r0K@okH&efp3`SkR6GJ=5hRY4@EyTF zCI}OvPuJg`TjKcg(>C2Umv=Vjb;lk59+UTkIcdaS=^~fmGc~8R{TmTMIpDBR4v9So zAmh9WDgesyYkfdIbs_i`bNA>8Dy|1mKAzMuYP|CHpiKB}fwwv44#|_z$yH8$DX5LVGsIql-t&$B&!+gytP!@INB8LnOxV^YmS$U6T?4Iz_e*(0ds@`@Aw zyilQW{mrZ{bZYp}2yu?5eOeOl_CP`O+<}X7Ap*NS`Q@3k>^GVwOiR~FLms=8ESnkq zA>w1#p}T&`E9WOL`W%*%GQj2C9Ma*lp8W-!3!)ML#$sDhYZe~Ks3lhH@R3K-qQ?$L z7ZI)T2Xo8h7%BN@US#ysf4W&(p7}D=p|6ZPXx#=^6^Ii#cjU{BgSXeot#|V59T=yX zjf+{NiMR;WG!>}z)=D$yi0pUs;^u`5*7f@u8XnX%QjrFhyeEQZRxh)ab-~YQDJDLk z#Lt{dsO)XVkHv$^DJyT0aDvV1CmHhSNIr)uWhuzU#)fh)V_t+ZY z54yLc`{8AvZ1+);+}F#(e=APFFZDm_0XEoKO5%AE<#5F-=PS^BsR)*%)-05cz6*<9 zUc^vKGB7hY8QB4LM~xpK=x6E}GxJi5@4PFZIHLIcSyAPE)@oz?i{&F^^%nYcLi$zs@b}jM(f0w%>G$c= z>RO)}BOqD*bNLSIrii}V)DwdBA?;@g40R?e!!H#%2r!zvB>6>luk%<83UtRObd?3H z-zHYvZ|R77HvOJd10TauF((7UiF^(u_l)Pb!dFv`VfQZ;Ke8_QpGQ(j<=WZYIBuRS5x~%!Atg4rd-L z+%ZYmv9D72)~|k;uY8@{*HuX{C7CtXtns;L?!BtgBNuZPZd_z!;mO<~b&7VqCW0n1 zDf~Mak)5cc+q!Gp{#D$&6LZ`)5O={!5*FBw4b9lQ*_fY}%U=xe= zs|vOK855zIxBO;aObo1fz;l?DuLf3ZO*3A-dKDG)zI2G%@XLGFav2eLz+FWByZS}t zVNXwwUpyfhL$G1(et4D&@Kr8aFgS=gmVUqNp#pvHh2*xmyD#3w2UJ#_n>N3@SugBs zTXuj^bZJ~-q=bW4VWP2LC|Fw$_qgCwL&VW5b44Co!H4AwaYNP}Mu~!aA%t;=OV%i} zy)`+vP_`_6_1d*igI948f=;S_z?1!O^!Y%^{{5^ta7XgcMQD3Ta8#k#T(_AQY9M(> z$Fk9R3bJGZ8;oo282(R_=}1}gr?aL?QDHq!z7APtVyDKNGdVZa$R8)j2-GfByb+N# zP0|dK-gv&y?yz#Zc>cNbOPw_V7Sh@Qkw)J|oa}e4%S3scY(iR$@?OWCpXwL7^;ILTqYQ?Qea2x`19l92~Wv z<0Bx7yP$97|M6qAX1Tq4shwZZO%lv0Cy~WS^7-`|8AsOR;}lX#&7Oo;8Chg+&MwI0 zJX!Oqv{L!nbt`-NOk=Efr4akyU;}+=o=UG{%9Or46=ySKu8~&Zoj+_pa7V0T7pPB6 za0M;Ts@#qvf&nJSUXbZjZ-)g6>LPogC00iWQD_%{fS30DNu= zbOm68DGnFZV1e3zxU$T|A{*;=zpYJdNWI2{xz6gu9(&j0q`}H$OUk3{Sm&Kh{mfbHZBr*#dd)edDu2m|XJYNl!mRPicmrbBmdZ&BIItIK~t5~zl(ErQ|!p<3z>BcTBz z10<>Xo?;>)m{Y_sf=H49Ic>mxCfz+l85$-hDA`1jghig(_zctQ6QHwto~3g^*Je^T z=suAR2J`h6nK;rEm5jWh+E!gJnaOCY+*xH|@A!J8g(nF>>sxW_4?VLqRA=rV5ME&? z6Gu&VAUu|g1|XL}*S-3IRo1yXNTlVc?R5-u?5eyr#HEPUmV2}}P>XmKxU3`~@{*uo zp_j5>*bBSCg%BMM92)36a-26tjz-OF1Cel^)6l=bY$yY`u+Zd_AJ8U{-*p9%8!?5CPfAFU~IYIN;L^aBFj+w=EK%=;-7_FzZN`zpgO1&%_BIVj~mB z%E5r<+b!z>+dWl05!nXGab|S`LOH0j=;tZMA2)dJGaS~psNvJlIz_P_KSJUngSuq! z6hM=rP8$Od7W65?A5U`Mmr=Upb5?X8+Vi>7d6_f9q6FS54SEqCIgema;3axoo|`o& z9_S?e)I%4!2wp1=&>A2~22+ou}KX}^`Nmp9Ml#_oOGb>M-AEKB){Uqe(#MyWTlS}M4IR6x-^z$;O#s^^oqF0SaGAp1& z&E7J*+_}E}>t19Fsd!)p6nigpjK1_m@Vuxp?%4nMTh_$tr1ti9nY{h0V`^NJSq(u1 zk;pKiH?cPQXB-GPY2Xf*&8k^1sOZfvE#<^EDs^bvXt;Oi+|y8^34_|!y-YndGBw6| z2jfZ&(F&2zihLMR%Js)TQx5objH@yE_0eKY3S-lmgCyT*AJQlYAvyEaIqTN)%cN+M zupR%?brqolTp#B~fBze)9~uv3``m%e=_|sWtt%m%kx$ZO+3}}tu;5(aQW8+UOKGoSwe!}^!i8ssOYIGr z3Aem>eAz_E37ZH78#=H0Wj3b}np4a%7jAl#Xr}fJlRs0V!&Nw0b;-A195RLyjVf)M zyf}-SigDd1EX2$v-Pj>%y*QxxQyhAkYPXEmK&M&3zij|4iQqi>1+XJ*>`Kd`< z6rCBdy~cWKxqS_C3pGgOu;&-Zbh*Gs1B8f938rfJxcyYwa$MP zBdHg-?FyUgQ*J3GO>_0Vd0w&LmNPFyvo1WeJeN@#eakPxYJxf}YoiDqsByBXquGLs*Cj8)!Tr0wKdK8Je)W4%9Q>YT50rdW}(VznY| zr(o0{J#g|AW&2wv3RLs2lIBqr^cSc7H}vwsxRyryC!>Y;&YEKtv_;Y^|Dl;?a9qTcKTL zL2ZvzfnYqCj=y22)a<&y=bOZ#7#00JfZvOg!jsS&lyj5W+w>Q?tCF64!M}fEeMICR|MZ2T zir$U%(tg~hC)QTDrM)^!FS6gS83ukLSmfCLHyyllPSMNF-1?s%K6XT#^x!{#*>KT| zLGM)v_4vu?{=WTya_Bv4%DE-(k59<=FMf;@zC0yM*z**s+A)|%?(lnyqjD92`=5XG z5(wfew(t;H()p)n-ai_pQ0vvE#ceIu3x)M4QD83S?KPBK)jdys+*W?{*zX_hh_sC7 zxurrcX|7i>VxFJeYc+{-ioBmB{qZ7&>xt8;OQS6O6qiNm37+B(bBBGLxOSO(k21RK zS4k_p`Rk2v6v4cTrZ2Vm7@1U%oBjG#IjvDWy|cXQ#gygE?9HvmoGNbb>!L4ISCTvm z61@2LB}VCe;KU;ijWg$^oNiUWYi@kT%jLdWQ+(&Kv$SJm(P<=^{$d^zT0<&DYmLG9 z*8V*3P_sik&BoZ_cpNKu22H`iW2d_nRU3I)lA`6Zv5r{O#sd08?|v z;x7D#uB$!ZjQ~KgAjV1pD2B8)kTWmLCmz7aq;cT-SQw^r3aUkfF@%Z-hV9m;by zg>(j$+{qLTY5$NAN>1*85C8W9`X$lWncKPRD!;pV&f*d4j_PVuQnqx^ZvBR!f=X@q z)8e;HXGR%53$g2F}St>R}AVmkz%?(v*0UB!qR0F#1 zvrT^vU~c|yp1me=9sU4Oc}M?yMGeOFA{iOiX%4hXd0@KVg6cd8h7S=@gXIn#h=`&U zR0rya*rpA0G3Ai?U9((5qA*C=CPwH1hUsAHWMf5-pSZvy1JXuf8+lmo)^BcC;GdWp z>0N;fW3|wkh-9=aIiwuZL$^IqSi`z`O;LRn~MN?+?hJ z0!wDYn0$Bda^4BfRl)ZkTV3=i_;RIp3x$)5Ij6-hJ)J$~Mz|$oqS$@sM}XD{u6KQw zYV8XA7V`y|VA-!JS=C!Tnj<0Ox`|qc^L=`_(XTKr;CFD(Vmp`P5U6b0ps*KI-C#cs zvmO#dzju8`eik(Td#~t?i~p5w_x?rx7j;?oL-v2CXA|Z(Vv1?7C{|CT+2_Qwh_n?* zS&8Gm)T%Qp$N1a}-R}=U@AiM7Wpw+Fd;QA(!~75Q`v39t-*rXX7RW9~J;PxoFfT{> zF{EZdZ9k{McyeElBnYP5&p!WgOLF~RqyL|OZZF=$_x;bfT5flPYBLSCy<$&mi45 z^v(^J#(sjZ{E@FN?>=El}n{{h&JTU<}oSUpx@DNTaUlqw%7K>~NqR zhzC|@x*iJcY{VhCRm5!zaUd?c{xpVh>U<|gZDc>B60%wt)BuJ;8H!3l{E9rHB#>wb z3UZNdNzCEm=OeEM?Pr*v2CJJG1+_*#Xbm$#;$_d|UqtiWK@z^T07TGMxi1T0>rkUH|4jxhVry8v)#G?q=Wu zggKBOAywtoO_vPJR(*r zZmJbD*#7-`^aEsCDaYyA!nV-%~8+4hZyFyRLQ?su^47~W^2qXf6g zn(73U!*A$xK-mD7*KekQ%Y)X+j_DzYUwOIHG)lRKiVwOvrClJ}Sl*lQpa7i%TFjbd z&-k|{xS5cdg~Tsryow?<&PGn}Ej+ zaEO5OA@=8|>x^7nofEv2l$5|f`Z8B;FS*u9OG?VWCug#(XDYM}M5`L)Q*B6@iQRLV zKrxS`rB@|2LwRg^bc3d#Khc3WZ+OtdUAHjKAfubHgbo7*5B2(&mjr$XclDOwPWKpSJfG2#K72vhSCe6!l#CvL8PAt( zQ0b6SQKf?HUI9w&-1(x>lgJZO*VM$E)ekb=Y1r0CGCyWs%nxt3&G%%ii?y^@vA}J7 zq65-nz{p|!(E5d(UX1hgT+N`*8j$rT6w`Y7rg_*vP-t#jaF8O-vS z)ykx-08A~CtaceiW@AoiihVc?lHq7ruqp6hXgdhvX4#pvD%8O*gnU52(>Vst#H+iq zGE_m7nnVN^Km{ZV|8U{9+`D)0BtY#0rT$1sXlBC-zo=wl&%?v zjub^C!vXo|Y%#eLa8Z8o&`Ozt;a7$Qn*V%61iT*I><)y&8;AJFKW;lXu|ue0>CP6` zM50=dErB?7CO#zh3LgRG%NtF*aWX(i7JS#o5B7iIuL>7% zP?Ar4Agit(4#8~_%MR>xDtH@akn-_0iQu{C#h)KW1;!tY$}&<3 z2tr}sU&XdUT<`~%4^oKD^%b%#wMGC$eg^s;B=WR^VKIUj1oTs0yyVcge&F~@aPy@C zZL6QamlBUXi^ngxbb+eS)a2*^(z=F6U!u@Ne%TbcMa}~lEz)_*00siqf!AS-zQyj7 zK@eKyK@dUf3~AcHIFbzGI`f^%tQ|4}>aGKL;DUJXwP@tV3w*Coh4#_otESz=F%J z18U*SbY-p=4}b_Z85#r|+aa}}f(G_p!f&GS=0c`*IL`}_)`UD#VOwCQ_Xj@y3mx>>K{^MMXRV zpn*qjCh%42OVwgFu6Ad;jt$L(!8AGQeLrX_8F;e=w2=V)JRE&)!HhQIB}+!Xe?W>+ z1!%PeuxM$5m&@PM;JZJIblu@&ahDrlm&G;eK?9szIoqPg~pM)X&yp84zL6%n5Kk^1~RaDHzR` zD?a?OFru~s-ydO~3$D+srKDyoscOPAXdrLL;N4biF-BX#?KTLckz)$fv-V88Nbml4 z_zn~}v0qGR!Mx@KhL?RwIO_Kx6*cgAL3_3hq*@NVsq#A{)Mmc_Hj{dhjMLUi3uF?r zJDHe6mqD~;)BnO_Le+GtRiOvS+exr`w15$B!lIPcdE<_c&`uEo7my*hE+hrskQWC5 ztt_-Lo1%mkR3ZZc5?~Tjz%=FgZX})H*yqQ!2X`teD2Xsl6tj=Mn82j;7QKi=?y`kj z-w(PjL+u1^Gb|EugE)6arQ*e?II0mKaWXzv`#g3~wD)u(a#Z{Y(dV#Vc?RJ+1)3YZ zr8b%R1=Y~Ly)@OzIsEU$*U*)*o=wWoC}p^PTLsKrZQ$GB0G}*UOB#aZDPFS8Aquv` zfZard=Z6nSXPpP#W<0ntJ3)b4#(WfWiUw4lEuhnAU_fs+2H(0{IA9$HOPdMo9M~u@hdPcAI^*Ud9qw3yejj>4NZssBE0h5e z`=kdUZ1yWH_e|y(UAJFR6ZtbJ)@AN*R`{t1++0e23J?|?b#V?Em{WpK-1!Ks1tW(h zn3a-1QTI=IIy@s%tNVpV5S=o(7Y#FFxU;?4o2}!4x@yS63#Avd&T{$X^-fg(0%xEV zK&fVHW%U>CaC;_@CZv!V2Slm}bHU&kXbzcL0*r!fBL~DciW&jT8mf%S843WSj2GaJ zk)sp(Ofv<2rfpPaWij9iN`>MJ8GO3D-a<$-1p7(}U@f{EpfUC1(5)jC0IadO(+3qV z9T+a8x4^ZT4!GtYHVNdLtl0QXG*3prBl@php-*Ie^P&bX_f6Hj`%sk1L2PYaLaV5& z=!K3Gj67;uAPM8N*6vmiavGKI?%-fP1IA|6zvz-$g<0-H`ir9f-=T3-C_?@AU$vq? z&bAqHQf3ZH{jn2|=2EV7P_w2L7tz?(9IK<8<1xM7frG&^Atg6N!s~Gcfq}_B7PT$TVBkqK<7vQf>eS zlS}n1>qhvzJdU}6Qe_mTYnb4YzTT{a9JAct|D^@Me0c)e4h7gv0xm4jeE^`>h5TAD z@pkE@dX48%gZ9>~k%%vYkc;vS+P*KW@`3XdN|Q%j7l8=iEP6l!BXtKsBIq4KGP%(& z1;dwh2vtL_uL18qfQ61AJ{{`Nz%q%*vzk$Ysh2=n_%Yvm$fz>|0I(ej7sX0vC)7h4 za$NqPtfJo(-U4=)j?WKiJ2JJjpbyyv-}A~4$x>F3S`|#7U{G!aK%WUsq~LiL42Ir$ zpR}3>t5^qc5y&%Z0I3IoOG_|sK}M1-ffdE+vf~K-X<4uZDnW@wHwDgu^Q@0u(TW2o z@d&vGpbLpoaKh)$M-^Pe#osvZ;)aZ-S`$jZ!-#%?gx+WilMO)mDC_Nj_%%`2&yn^L z5I+3r24MEj3)t_aV1Q)yflQCGgu!3d2{l0)ICo?gDt9Z8ffIEp{o>)J8nePd5}7Alo2kB6OvGoE0se zafS+|(He9;q<0%o@%t82;jEFFrPYrFApf$tZNu<7cQ^o=M5PzwTXV2mrD*BG${hoC z7#4>+pqw~>*UzAPoLF~5tD+3qd7zY=aF_+?o>&J2N6p!wDKu;`eWs;S5RcknV1`u! zKYfaWmM6j(@W897;b3)11}~%iTz*&C!DN`UX{d1s?Mh(;R`y4Lbh_=c50s9d!8vL$ z_QSUXPDaRw6(K0G7WxI1!%SDHAki+*AmpyMS}&p0>~r& zGrPtPt%D5>wOB~zi|r}b%a_u=M$_MSeK#vfcjwf-k5a<1uF>Ace$f}73R6=aRL*?s z?Ww7+Ak1|-_+nD^wNo-5BYx1x9PJ5UI`!n^p@Z7k>7B3Guxmuvl2rSj>lP;`K2F=u z;1$gj@hdo`YPNsLI*I>D(cJvk!6WtmI(X#&(2qHGf-Fxrx97r+V!A4FX|=-H3g|$D z&$wU#2kQ($W3I5BmCr(G`+@#g9(21zYl+V?G|N)}C8vU$qy&iN$Qd|U;}KVw6x6)T z?Oe59lySg>m*zY`3qkm}LNA0!Jt_!>05fi2OKcZoe~*rmQBo%VgVJAGW>mlC0Jv2# zLtP~%CZ@O8LchZ4KDb0fA#^69Jq<1nPcJXafsR+hYomo5tWQ0dnCLZ+H&ae|D~1z@^hledFAHyMf-ijo2<#6bD2KzJV~ zjC0<_+cZY-Df{~RmVjvT{lGrsDOSTF;Lii&0X=fJJQFcL->}NIeO?& z5*R|DYQ7;Sl+g;lM(|KcpfHf3Ui|wx?CCyBm;^CV(MOtylg30pz2fz19E3`76Oj(m zz?<#aTYwDz!AgvqgTpd9lVsx%F@gvKWK*^TZx(K@)`vEzQLhaqBOj_lRK-BKs0d+C z8k{~!=bg6~?_uRYMle?oHP~mM10TW<^1!dH0`QoGD1CAcY@CASE3K05gI(?I3Y$1w z>XRDJHC-Y6$|p_xsjJ8%3$xhXo-A**vu%fM1>f#$8y-llPYax(gLV_tJ;q#DuV3f8 zNef04lmP$*NjW<^qhk&b>i}vSzBH)K7_f2xF|TSwDe*vf6N932<|w~FLa2v~rWMGkm`Ir&!fc*x)hkhBF( zk?@DM&JFp*J@x_$IR$9+;|dUW2)G3cXdX3|EG_fa<_C-_S#1iy@!FfYXt}whJJ*wY zk6o|fm&?vFEvoQaS6LH*s*rf_Kmk6Fo(Y^^jQsrS$Vd$1RdIO^0R}i0B^Ge>3Zvi0=)Qo_t{WkfwP7m!Kn&A!r2<|-V1S^a*@09 z6*$vTpfU;yK_U_h=j4ECa<(3XW*@+wdJgzKPUz&EfX~A>jMh+SRP4FlP6xo z!^4h7kVs+ku?8m|tp^NG0s|*2D(dDm<`)$e^$(jX(l?`n7hpie%rlqhj_N(1Ut6)|-{v&GM}(Ip5aP9oR= z@%J+-Hg$D%ZvZ?2)}$366YL+^$xt*P7<%HwsjqBsj)XrQgzO&eO(eMHn=gXiFSTDh zzsmp$8%n^t-Tmdyp2gsaun};Qd(L7gWDuthEG@FXo2Q2f3@|}Wf9KAfO;h$vtv2MC zMy^V;O1zS`w)WclU@!@?HJil8$CDZe<$V5YGFYZU!vELxnsj&)Qe891Cwf)e?-`Jt zQZ#`A<^*9K7`iQB5b`q5($Z!^eQF5ILy6^-A38Zl&8$5C{_5U?$ei=?dZn9F9S*R_ zV;n5%sDrzW$6vkCEPEe#O~bx|bcvvyD?*L88B&rC9z3W301TJefY3cUrYmDLhafim ztCTiUQ$glhJB{u6+6mm~1#v^&-7p~+XWxP$=+Pi7i<%R7iX9reF<VzPW z4|pGOIS>g8!EJ=IM%)BCyQl)crUu|z0y%u4cK0l6-n-|105Uh*AZK7v{an2SVJQlA zx4|bCTTA2c0M0pqq7b+fNH>ik?AM#46NV8WlMK~_Uxp7GoVMZ%RHnWb!lZ~U zfq5gmK&JQ+@H)Mqpr#)>UCiCh?HL%0Pgc?t!5zYxIBHO4Sw0K1h$!3G+(ZqNt=Zh> zmBLEA6x_P<{rmSLXCQd00nz^+tsboTu~0~4*Rb|WKd+sSYR^v8||3fMAK7>WHsL#&txl zz-ET>Q#gAKEZ0ytQ{7@C4D|H&M$DBzSl!VfQ9x)SD%$CrG&G=)zZBJ}sA7lDa6JBk z0WQ_1CY0ei7RkZUSxUG{vx-e|;78lx%M{@N3#=SeV(6$CF)^_l%*@h2ZnvOL7}SKw zFNdQ>$RL+_-pA7*(mA85*gGod@_qcg-ho3A6s}8$%K!jDXA<1f`96u- zaZr0fn$CE#Ahfq0xN|7E!-x*qzJq^5hZK}7H}NS#Ic5{2^9}%J3J@RDgXN`y8^Z)P zL3?2Di_|SC62UmjsaAv;O6#+}!Sz5ikqo3IItvXMuuCQPW4R141T2Tht#h3TKn$W|*-jxDTDlpWqUcGA1(Ulyq?lYNZ-ZS31iu}uYuDijxZ{)>1`d6V7 z_;0`6qaomuk16-WLh$ZC{Fp>(DMsrPST@iJQ?SMTDl03|AvH-!^Z@`>zF32d1UYum z89ZAn2I%lWSy@@b?yMNGfW0Tj1pBboxdTbN=QW2utEZ=@9AJ;{-qfkEM)$f45Sk+A zm^Dh`K^poD(jY7>B|xLdAmHxd0agx80EPLs5BEj@)1VE>^|{UIiYKU93G7Ea8{ zV#T(iFq=r*-^ZPR2@RavzeCrMB0Ya1 zvJZ*uj!I8D9Av-vxL^>G9eVF@X9*ZwxUkQ z$S8?ei%Mtw)7+lfdV+%o+hfIufKV11Du5h8NJuCL$p%i%VsdeDNmt25{qR+T1`>^X ze~D4L;$Y=l#R-g=1v-r~>3zSBGk@EhPGwz-n7eQ_as9Di5aL=G9gcff&teu1(KkjdC;%^;e zVq%hlSf9U34GCpq!xqxMBn*EC3^TH_KLdCG#7zL7HBeOW`a%jrtpp5g&9`s#*REX~ zvVve2W~2g?8K+*uIpkAmSla*georGr!=OL<-?9-3ubC1b!4O(=cVLUB*K=`NF-ubb%r*mJ^Gm2b(1sb)U z{kY4bZT|Bj%=93EAza8mc%`$wXH_>0pUwM=spOnNIMn707Bko`23)KgNaLX;z>tEJw5;>P zbuzmMnc~ZNKX%8)ZD00TjUSIxy!23;^cto<^#ddA>)B6rRs2Ui`|fFmmsh^G7`k0L zAXKo>KgpA8*jzp*l&DW?Q_5W`q;8`%ArKHx=U7D0Aalh&wcvaEa~sN`&qcRK94yL68_bE*{?b$f*YVi!8TqBA33)E%GNF*G6FSqg zIG+v^jTXTPuKv{;*%!U~g?;Dc|F8Dm1gz$L{Tp7`w!JeCsmQQd5v2$zDRxM!l+rv2 zO*E<`m1MJJO0h&JWk@uwB#o=_lkYadEWD!|NH;H*Lkk@8C=eF zIqh1l_4|E)-|u~Yru)vD4DIF)vtYS_-rg_54!;YIPt56mZe3QAczoc|^`*h0{YAf; z?OO0KuX3H<(Zxs2(l}FI;r_kokqMml@vspr(ZA?iy~uu6q2yR8&=~rxqFI@<;bP*$ z&eR0W>Y3YJeLpz$*c4wI%rZ)kPkVj7X$7ZR;&*@7o@VRd)Ttc7^UUNAX~h+NN3EWW zv1(0B=?sEXzBXn<<5eq*I*xmK64$}u*U(??>|PePEqqp(gRAgIdAof{TqQ+|K0Bq5 zbw97L^wW0gS@&Lc>W13xKbSEK^8=Ma4EodG=3H`%tm4LXw)J*QaSW>Pmg^i0s&Xv- zQhmekp4>H|M}eMR<|8V%DpU-oHRc_xu?_yZ)k4}eqtD7A%cOH{N3EA@Czsn>b*)d# z$}h14?_@B!1sO9Be)|1FQ>tuI+?2@q6R-*Bc`XjUv~Ij+MIK*K-ju|LgAb0&?cj5e zJ{xm$u%c$^`--Z!CzL-YcYU>KtZ!bH-Cz zvFB**TG-K%5&GrPRQ_l0+6Q-U9kTR0{H4L}Lw3ZaC*S6qS}A>YdvYe#f5g)@uIUkX zM@MyySHT?P>A~EVajA)Er>@IO6-P)e%p1P^ge|owN2hq7lYN$WK}pL?)0?>5;SHX@ zzK>WanqjB!mbaqAU(xlaeb44SYitv^vo5mANFfn6_`CKSUbziSWR!hA*>pUy^F(5K zC!cQhglF=PU$j1b%)j)h<|^<&&RcQ)EC-v zEx#qZY@X>s_u|&fig3kecC8V;1xNmPZ(COpmELLmI+43A)~$Y3IlrfXRY^E^f#eQ& z%>zF9PuF0)RWC@N@L`f`wWm{)Z~D1`$@S;^E?vHJG4JahhMxL@<#~tr+=G+5k~)4} ztZ#38G%mritW|XZvwHd#H?v%$!(PO)++vHZ%=4h_s*h*eoa9U>Y?qwlUcMFHa zr1rGW#v)dOw-rpItF0Ua=VAB1H%)QOF`MMYr*k@1H`Q&mYdxECBbjrayF*2!Pi>-O zqx4zsjc*DK=5?0Rdgt?cv84tm?MhC`c#^7@?8MYAIBN3pa@_Q@?sX~e&oOqm zeDB+<+t=PA8B+Z^ado>>*?ZMr?r4a^$*?>4eQM(Rxj!eb{>AabTt`>mMb4#(zQGSC zTP4*$sESt9I@l(;CH^tk!u~SLEh>XqlGdbKNAZ{k?+ZxxqI{PLI5~S;AIc zJ^43cv>f~jK6{XCXooHaLNUhkh~*YEk9?Rx5J6svO+{`4g3yw>JJA==x2v;rA2ky_1yj?Sp-Kx6JHQiJcjVWu4J3a*?4Ou6w>Fa~X%j+5{#`3NwyfQ|WSi zuBEOae|O5P^Y=_AJ~c>BG2Pmj>lZ6`c+j)Cy=R;(6x9M#+!>6kg)=#UJ9qZy41Jh5 z$e49mE@r4+d`Ft}g11vpuOas@jJS1xCWN4o*b-iQ0k^qCb?@?MUwbJc&j@veg0mBv z2zw55{ukNu&+|8^bF#nGxm9~Tt1lRg4()AkrpDyPMz39f)Joy<<>%+W3mTiEsEMfc zU#6uEOeN5MG1?D+55=ILyFn-$Xsj*w9?QtI4nCOI6Ka@eS?ZGWHFK)oTeqJw1Ewn_ zze1z)=wS0sbkJ&OPS~NulpxcTJjPG5vK&&*gSpsASVP6#u8D38#$j27`?II^38^eM z{rdVBhuR4aoOvt9q3;oumWD$Rs6OIlXAsFYaGwq6m0>ahf6J3x<(6^bNPt}@E+3pN)u+0Bd-sc!uK&Js zE4wW_?D%e=?@z;txdPVm!;UV*EoctD`!?imyrNFQ{^iG?O%G2wyy$OzouSh-rDSE; zNoNTPlE2Y75d=ph@(A4$O68(8P4Zq%B*W00ei1!NV

0k6?r%Yc!A6yLDtVVy?=uddy!s!Eh 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 D^{%Ns diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/System6/TemperaturesControl.png b/IBPSA/Resources/Images/Examples/Tutorial/CDL/System6/TemperaturesControl.png deleted file mode 100644 index 5d5569b2b0b74b9c44cfb3d3a290799ba7c082e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49164 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 diff --git a/IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.pdf b/IBPSA/Resources/Images/Examples/Tutorial/CDL/schematics.pdf deleted file mode 100644 index 0a9ca939762cb97207ad30ee72087f2ec6b7d653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18394 zcmd6P1yEhf)@Fd18GGPW}T!SV6IIXOFm3~k`tKi27J#}G6*`0{t; z5{W|@IyOF4kTvHZPJ#Y&8)_M#&x!hTJ z5c&>L_;J^PtzAp?)%nPj>lufDY&g^H(NBzaGGBIyFP_ro^0ysRRm8qAqs1$IN*Inm zN3NC&>_we!nwxY_f-tdTgo?lLCx@ArRuqjT_D&ChPUW1%G~TJMu2O=1iq@*x>k~jY z%VSo;i^%Ehi{g}|HVoF7uXeJ^2_)e$6JMBm(fIXe*vq0M}ZEdn2#b}4% zcjpn~?!JjJCA>^10xF1E7}4`e5RI`dty?f(OSM+WqMUQKk^wadncJ7Fqm+y+*aD*M z(t3^SHhmh>Tpt;)i$xs7T8Ib3{7NXq3?m*)txp>=8}Cu;8=wbwn)g>u*$PT4_Ti=C zMDm^V6P>FniuWJO8HOEf-+&qdKj0#RG6R)8M(!;H%h?w+&AUkmvHF@|1QysAGOkeV@2GV(SnxM0IBNDZH;rX*b$X zwYzE$(G{kQXe_?^PCW`UdqaynATiC&f`78PT*GU(tfjLoV{l^Y)76^$Qc4$AEco~H zo#tbu=(mLLU0Ptkup=?IsVI399Sd9cWey4Ndx%M#l!i6a!W=(9jxBYQ%zH9x+F&MZ z%1l0L6+&r2N&E8_cxEOt)&$|`SzF9c?wY=dryF=37$K-3Y~F;F7*@GerzA0W z3;3U2yP_Y}eOI*3+^KTH&duYi;`%WWMGOVyW~7gvcr{uQ!fL>kDuLaL9H`PiFZ$Wc zz)|tC+`b4RaZrcW7M&EbfoxYP->`4um3M(_=esnZGhQyEn_!@>*r|tx>{ZUYOyBDU zVa2BwwQ&Kz~$55@C00fT_3l*Q=Zg4=I5OB zJ^r}2KEFSqtlu2LDuWG=Hq(+7{<`FZea6-lpf(`ZK`V@HSH7myO=mg~KGOwf zmT;K4@*I3%O@#IMEg)i0aVuW@vSR%l?JkRfk2X2Ze{q!!GMIo3Gn{|l9MBmJ6(PE}ZO$OScS^1T%>ic} znSrz`bT$hf-9Ae6t=0N&|xLER8Kl>XN1RGrD3 zyf0+b5ydOE#$wof;WY2wR{E!7G~JuMS3vF8u^nE~4|?xRDTmG76`hdq;6>Iulf{%b zTGmh<{oht_M2|f|h(66WYY$MkSie%J54!ewzhO#@Oiw-tKAQ^aLQjNb!ViHBDSb_ zcm&>+Fvb(IGbWUDlu@p#ezTV>-x{L&UZ;~tNYIoSYoU(8z7SWuXf^~8RGLH{@EjQ` ziIscfqKI)KKEe8SSFJ?S+oLno3Z=w2^m1WAav8?+LRUviSq{hi@Dk*Yi}MaM9q;ol zq_p@eN--^IXl#T$8s!XQbxQO=d-skW3s6}T76QW@Z3x8-WTk$0oF)X%(2^Dg468_v zy91p|RH!6p*YGzDP-ux&xlt(xuT7LoORq%oG4V%DF{s`5P_$bl=#Irpi2=S z40+C8Pc#7tI<6o`t&ccjp(&QcpygW2Mk6K9kQb$CtVy*Y5HEAQOvA>2+ew~P2Q7>8Y z-F7+geT(&UF%)}AVZwgmr5OCx_~p($*e<#bvQ`o@4%mi zn&i~_7-*&A8Yi`i%TbawtrF)yl`g8z7YOdz zD{lGdx_&fsaNn3gJmS{EQc&)oW(ba1S2E2O)WdMC(kG%AYKVF8q?}ZZM^odNF@bG5 z1Sj9p`AWVvyG5nWWYXSs(Ypburi#aMLF7*0ft&+8v@~A> z0huG38|sIt4O?LatnF{HX{G1S5^UWdA{x7f-Hj|zU8}?BFms#`a{IUIP$9C zxtp0%hOHO!kroi>$Gy>+=DMzfAyPsJww*6KFHAf%oCFhOpdR)q?5ljcRLaI$3sk)y z^n#yJ5Sy)rSYXxY!JgrPpVM*q?xKMvE|4&B+xk`~Knkeu%{f*I&*Ns6B<)*#A7yWf z7m{wjvn1PGLOrSnWS8cvhr#~Sg}qSE{GTq}5I6fD8b575`GNIJ0X&>w^9ThY?MC}RjS z%~;lGU5ucC+gi&Zu=d>vg!zgPA9)v{fXTYch(Mcb8a#+lyF49r;;|^#)TonY-Q{EJ z9%gg#>~ew!ufdH$5&M={rzjO|mPkgZ(a5!_cR8{qt7aB4PCaV*+QR<&QMPu&JQSJe zYnU((TbPJ_K-r*8kym}^&nV+Ds6;L(8G^cht+X7+xlB1ngl-;A9Cn>i*08V@Uu!?@ zNcdLH;7O$wo=tgStzuJLJ^Fp~rZ~Y`Q`_3?p-#t{8qOvOLv}#a-v$o1;&-K+m_xN!iU7r)tZh=2ek{?fIO-Y}H zcDT*i0Tn2@_tfXE1}a=$L3luUOc;6e^T4m5o9#}SE^p4mU?E2ov{`I<7qSb4s?m3U zFpUH=a_k`8bEj@*tGS}TtwR~ZvJ-7Eb<$uBZdZ9M+*6}>!rDt(zBIp9`LSNmu4~2b z(T3K$i_y(OGwsORec0GSzWuse+86dLPIsflMD2`zp1gUJ%>eoYu7hx~j<6kZfv#7~ zydiB)I$O8M8)G3A4cNFr2m9%AKrU7Y=_o*Noy*k!s&Z@>vg9+qmjZ{&g-eQUQ_cJR znS)Dknc1*q>)LO}mWR|b$u1CPk?(La?yqM&;P-dbqGxN=l3NbqLr=fUbElePWzk6J z5i(4rsOjj%X^8DcrAvy30Wl+ZK&9=gRzItE(bXfv30*v#n4?NQ&_`L?dLC3MOG0vI zB=>pu46P0XCf+UTm&PWW45iY;Yb5K$i8agI>gts;`soth8pv%g56T$kH(3gVoza8Z zESluXUw^F|Y~YE6Su}&T+CBk*Z=aRr)@dG&`ogfJ-CEjp&3|sEbX8JxNu`gzm(Tp>1c}j~`gfcYY`9>A@wlfElh5 zU7Fp(5{8*=cinhvHn=Nwe|jlms-9DdUx&v1N^0k(pv>RCJy}K+qF9YL;0D%4y-Atk zG*VhRnwq+qo{|%4ZjqKlhw+W0B)W}iUNPb+tFu$9MMf!`C!2jJZ(U8bV6s_bvHKOs zB{&X8?k4ccaHLheFd#=89)>houi%zZgVxC??p&p(_yV!f!F+q6zenbspy8M7>e%AJ z#flk8Yr*dp=!wix)eah?!e5s-oM<+>^tN3x+`C7}0$1Inw82@nM7!nm9C;AHAnb=^ z6DXXIi8loQ;Mb@FvJ}$;l*g%t19_)&E>)d^ZHWRe0ioHY=w^1nLTwoX5X*RJ@ zL4D|UOAG(gYX2#}x37!csjuf_Sh*pjt^Ht$u;!nY@gG?UeuFI)+*V`{y3mcvd>LZ#i_@J^~1P;!kZg51E zP1)4FrRq+8)~v+mHaX;NMAblBaBnZnlN|dEz1U3hru?;D3?&B!8su6LiPu(UYmPVt zFLp>a|;nhx3pVA=#7lO}en#bFsHUVQbPl?r&!vEzd&` z$%}-=@X0F`htsm!1Ukw-Wo((%FYJxipR~`z+pa*s2&KcYy~}G)H}x(5^19INs9>pW zHS=@A?0l3kO%mbG?4mtNioyb+-LB)RJ~y!T;@-JM)f}R9G#PDg)kfZF!Ka??)Y}Mm z$89l+nSW`=AZ2BxV<~en;C@y{3y|AUCHw6_zu2ssA;fwd5yV;fK#HDb{fNt*8RJ!AX#>{@BR7h5zsok6w)X~4!^x&TBFF3OOVBR@$pvWJ!JQJe*3 zz>xVl)9HpA!{2gZwz<5H*_P=&MpPV^@e2Dkrx?u%%4SK_mfA zFf(uX;r%3e4z?jWtVcn@qVqbIjNpqzYT|^78rfcjY;!tPqPI0@2m3uY;O>(cQ;Z(` zS=*coeGXpV5Bp>KS3?+LCVU-wb)Qix_Wnbof9`fzjhMWjYN1Jl8pp)BYLmoUj(%!{-IEycYL)<+%dkEvYWE z>B$1p!O| z24lnL-{-*VbH?vq1~EHZ=f9OUrDLRH1hD-XxP7VMMZ^SP|5Nm=_x$%q`y79@4`5L7 zum=Gc6b#KkzxtwJ=m>hQn(0qH23e4ag`tq0J3#wc^xOs`8$A<{nURG9z{12y&&tNi z`h2SUOIP^0Q_spyfR~{1?+CKEqn(TW-#YrcwO`UdEmeN*gQKCXll@D}#vXr)B>~Qk zF2DNpVvX=~DG`vXg)vA;TdZ}>%YmAUx}9pq30a17Gq*Hl5FHbffW{)#06X?; zlnHZxWE4^G0bE9~&>)yMR^TMkA_8yTqu|H@NF+i;4KDFI?NYjsG|>r2nZM_b1#Ru{ zsuCcZwWsd>c>I~!@Rmc>#qOK#*pG}=&RvQiR3UUFDgW0LGC1naOtum6v2)%+K~-p` zZPXGNpkEUShFS7dU54J)^*RpBA^3EO4TUO$C zk{Yu%sA_Zd16JovxLNTOvK|g&k8I^_w@dHG@v^eG4DoZ!X3B09|od=Uxq=Hq^>0i8^f4u3CO;)Oki4S@|Jnvydf|74Wm8Mpb|Fw0Z_$|dz zu!r>n>jql{eO&={UV&u9PgyIO?=yqmaIFA8*W>%@1K%VC+Q9!x4sy7hwQnA zWqeAKm_6IZW2fEa-3wbxxTs&eH%^-QIe2hU{f)c)@yBWI%2SwW zX%R&m9Hr0E__{Gx2v^vFhZ0s&Ma0@%@KriV<7$<3GD8sq)2Q;k_e|WYORz2GR(&qs zfe!;F_5<{=i6%J`!fWKjrb^?wR!ycO+@u+Z#j0Y_kFS#Py1Qh*OuIIQ&b0NXD7( zIVHQA;o7Y>ubE=P|9J8^NmZ@gj99*GsbrTQihAb}E?K2QlAIznLM|0nFsEfiQ~(>!k4pHzs3ja$UPNdiehO{&DDWIth=mM*t_b{sufwz5^C>~Q#Aaqm^qRd7ft zulMxx%efu<1zKyEUw_P$HLjp;E%fAWBlIp1cNbewCtrO4-W1&RZQ^1b2+qd-o2HFv z{4lc&;|DNXpXzy89I67VS!P={c8jr3N0&az%c0BQqY)F#b!Yi!6imZ%XlQZ!na$6> zUoHRab+();E;k{+2WBXK*hr_1XoD7Rr+!NR(H_k;S5Lz2yRm71=&65nvFDvQYJGr~sr8RNj0gCUq{X zuTtAK9i~jMD1`i^u6AVK-CNSaW~uu^-}%agdb%^qHvhDL8y$3}(#_c673d!0+(I@l zj&c=t?u_8G7bTm%vW8GQwV?WW#xVk*XGfo*-;}Z1y8N@wzWVC>MZqv8d~oaO^!`-1 zE52`o(PtWa%ZD)joc8GK&K)WGo=k4yaHO!)IH-4u@e)ue3L=INwR?R<#;mg+V}PQY zQ?i1?&Xk13J;Ea$x^zwLlb|OjKiJcF7jRM0Je%NSY7^zf(c<^ZCQ6NHM*@xydHaa% z(#YKOsM6s=l3!#;L51Wa5161UHBZLo6-_hUohTQ0iiWT^C?BIA^&rlo(pb3P{Iohi z;IUio48K&c>}bqwJZO~PwC$_%%_lmhymY#W0A*~mDyKEoFel0sC`J)l(}6#xm2Wd z6xo9tix8bMZ`jdp$P?$pazmGh=A_XjNY>47CASLPPv>UhDIHFvM&ruNVynr8bX5wA zMH0pf+;Dah!+9)kvL#`ROw+xa>bh6uIydHO1ZhVBjSZGNcfPZQv@wWeB-W&prICG@ z%n_MC%>jK;F0;n^EGe4bp{0w_L`&t>c8p^jl*OBi73O4FUBkDSk3sSpZU%>k z&`9m=SN`pVd5ma3*V1UoLS74{IZrQ3L~E({ruB1W`BzO=9rRM@njg@$=0C;plIA(* zB{+{YcBBh9>bnzj+yocL1ev-VEY!7^dg~LUbFtlgpjIaI$Twg2(QT0#|8aG9H#Cfh zEbPXzP+pCWKP%iEY-C-rcte$l>yvSWLX)RvF>GWK6P4dGjh#Wi&|CEVOAN=?8&0E# zDlVfX-Nhep^_# z=S7)(-1dNFp{$(vy`<164;wK8EI{GLz;oD!No;0lx-rFaUbReZF37TaqF!cYC*nd0 z(kCldimwh*S8r>8xUT$zJYY=a(#?2*spuf32PkOMnp4p!(20=95kicd6JL(#vf;Xa zAj@>QQf~Ca>8w`Gjc~asmEzp#{;num4%h3pse%9T_ISM_MucHdog4qYPycbq59YPp za&o)hX5WM4Ae7j!!z0ZbAF&T2m+9Z+lx%bh?qn-^p!M92_12y8Spp0 zMy0c_j~B`|6sJBp-?2Z1rD@Xh_sAP_3bUNIW|^wtRleP2*>mJd9?Khc!BNZ6MeO5r zAKXz0r=-BlZNo(i>q|+=YcDUWQ*BWT%hv*wkSO%x6$GFc^^=`^Xr{_)B$b{3gthj8-op&S5i5$;tdCC4o3Hfq@2de5r+=X znxp+1r=1ME2R4^0zwREpZ`0Ewg`Yj;G&#&&RmTF0PKR%Q=213a^`6@y5M=9{d?LRb z)Vr{y8n%uT{J@I*&LS6vGfrX&&`dL0F108WF+esk!6CMgx^ezqi$8gzF5Dp`%X)e_ zAJa9V&E>13>EW&}iUHG12gjE1F3wOYmLQH{0xar4E}l=g^!p$xCW!!6Dl*~l1X{}U zxKS{Djs;n40ce=`IT;6vbb=}oEs~1lnPFdaxU0!e??v{cuCSFOkoHb)Y;R$QiKtGz zcDh3YlgFBFnRo>yhlk5Byj?)smN~?Z+tS{sbj7%6=2_5$rMg(Ze zi{;%8mk88bo}U^<-_FsI-t$E&n1F&-Plpw0`S`~gBh}uQGrNg8w^7VMAJ&2hyu*8m zXyV0l=nc^7pD!H&k0OE9z*t zdd8B*X7qOSq!^?bK9dW8vr6t|J6AeKN;nlXaf`X0xttY2DQ(6p4J9y3r`C<^Os5JW zlZjUQV^|wNLw{O(hy5P10^3YZQu;Xgr?aJ`rNzO}^ucs`@g!BB1(YC8(0-BI`wKHt zdEuDQ+OSN-B*aC|`dp*?1>dMezn`0PdE;1wcn#+BUvzVH4?Avs*7>SdGZ6{IqTe8d zH@JD%8Erm(`68^TX&izyh`<&17RzSkm=tOU@l0`pJ)t5z;q>WT{=4 z#Uk@6+PQSY>=GU#IHq`3gr8;9hHMJz+1QJO>`^gI>*na9sSYqz6hVsN!yDCobH@18 zWU!Oy$Pl#Orn~S};%Fsj(6z;<*Ln-V(ANO2&FirIjoSh>v+|oaU+anLHBq9lmc487K9Z8Xpm zp;J(gFJ!rFS@jljUUNpnU4(m7fvW1d)eI}_TP@3LRkS$fIDqw<^_p(;Zk(2N^0m@h z>Fg+iLr3P@nxAHT6HL=A3M)cSEIY;Lv&v9EmM7!`!Ee@8I^yfagDF2LAUnkBz&2w3ogN<^vaJK{+ zx*eryO(JRcj6QR;;jF?FBMSg)Vb`CL^R3dkOQ!_9lrn|so! z6^Hj>Wc9b$I}^E7sP;7^!Jsk^5TL_tFE%#~KER3~NjIr6Wgg@Vr&XF1;WH7s%P@#5 zb(8s;(_*jsRDjb*y=?qZX|5==j0J(E{F9$?N{9E%u~QpKxK!kxT3jOEhR=}k#^!~2 zfkLY2ZdlD0R^s*s$+oIPM5CNuS*eQaM8g-iFUJ>nQgs`u0wyD+8b+O?OFP)oZ^>%1 zoASsF4kc@HxLfp3Ovmc;7ooad&8+gwp;ku`=j~w|zTt^x=YX=YP4I{$pJo5X9-1_# zmuI!D>zuA*b@#<}aK=e01y-IflwnRkGA)1X=E3qL=A~awK9NVt?=Pafl!omM_9phDLJmhF z-|E}`>G;s}Zs~R@Xel8#q1R!%-O{ z`W6EmdT;VisfU7hUvKxkZ0eAXea#?*-E7ZqLR3F==Sa6;$@$c^mzV4J#4Q(T*(tA& zy8O5km*Zi*?y!YR4es4E)0s==s&z4xU2i1S<_8|pYA)1S$x2B{d)ZQBVtdgo3uR`x zX&sazz+uRkq|j%9^|7a&EPVCUZ)q8fJAD*cHJJ=dtt7hR97Kn|lucT`y5c+?<#Cjm zoB5ev=`p+`yr?zIH2P8FtnH-1UT4`(a?6#fHyc7Q4}6LNAn}@%R45-GYyy)E3cMGn zj)>Qt@xVs#!_)e6IyloB5k|D>Q^mmShsX4H-6lC2R47A1N`{G*2vP9R%z^Xo_l*Ez zG8BWX7)rhV)bMRm@_W>U=}@s?&d6_2p)21h4X{dyGe)8~$p+`g^1+XXk5@`6wOdel ze83cD67%_<-)q8D<_}jDkSM8|A6|~e-s$PUt4(=qVkcEs*i$H7$gZrP@!5G-0PQYF z7u>H}bHok@w#7~z?@{2}jr51luSG7zbD-agg%MLGpngMFcu#@+N>t4B!=+RWRJf$w z05L#aNyFR}n^c-4JSHVIK+{V@q^)8f<&+ofX?d7I6Fjih{~L@y!89?@By>zD$uWo!U=@g`?-uVlBWlmj^1g%;43ZX>o0z8(eSuFVT zSSr>tJfT=DKWdXFL&?J_=`j|s&(PPbZn@;%>jasm1500Ic0#AUPElVew8_lS|u36rug;I@?n#oDAlIl;Qn z@XCoxqwUvx)v;jm5iQBb%csNqc1DJsWpzt)PNo`MBIaA;;z-Kvx5%JpdqSqyerz`` zX}NfFFp;;HK2fX023wMQDrEM2E=S5TUA@S$GtqWD8pFuGy>J5vIPYUi{L0o~j(PQc z_#S<{>)wN*Y$M*Co~Zw;?ReoN_JV7nBKIwq-jM!=DwJ5E;XTL9-1xBoR46L%46vq# zmZW+G>}oK~g&JYUvmcttVUWddH_bP>$+sDth|7-L& z0r3p+Z)wo#Z7XzIeC`&8j$J--#4Pf9-|mR}wJ>;{-mf;) z-uphT9C780hecq?<9E29Yx@TKq3wEAIQ1j(c^h@RFT@{YcI@85vNg9$YDZVj&dHym zI)1>`U1bsgh|dXOhJ)wC&Y0(uKcV6Sa$hUU9sVPUk!Iqf%7Qlr9|~U zmi%z$q$Cn{=Q6vnCnZ}-W)=9^cPtFmi1(Vlx<7G3ux;-BL^B6vv#E8`r~X>~9g%~K z{DF5;Ba5fkp1PRZN(*eIR%hXKY?~}h0Sgo3S_;@PK6-sA=E-qg z=@Nh>noqe+fk9p-Q_}anCtq69M$%Lyr0eX&OY=#8kH79|UGx;cB#Y0fH~Qy(P4eld zic@uNw-x$NDg1|_G|epTK6xi^f=0FV@6HfY&ZQPeJ9p6^upLB}im?Wq>+b6-+ld1P5M=#p@Kb^e2_d5rD) z&q~>*Qv&X5y^})2j)lzGA^tqwPnUCQOjd41a_ZwBn-+?dWtC9rr{ywg%}8L!-#90r z(x3zzx?d4a$2uB6&QpW7o-{M4IrB zLPiT&!7X%P#@<3YDPixQT;DKY`nZhWD1aMD>MRGJyW_N`m5I%VWbTHYmk8FI71GNNPr$6k)% zLF!K^umm#9RY|e%GJu9XiE5;~fkOJUDBrC2Jzsn_@{BUvb$NuFBUrw$7_|cfNi1p< zt)Y{wZ!^|Jh;}GlE>Tkj5j#0zVG%Zjb2D@TSQLcYzbHDt{zyVIz^)YOmggB8r=uu55VhEU*8Q*M{`#>}}%&0^qIAIDG41C(0o5i{J zg-9hvbHhw98Gzi2q=cu0q+gC4w)SJcsC+z%FSe!Nv(M z-_3f z5gTo_;5$DrlnSSUw4;@c6NHP6O;cX4276(WhZV7T2}WR8@{{i7Hho6uRy5*t{k7kx zw%NxYNQTSrC*42u8?w#Z_zjp(L6?C9?{O0J@lqJ6&%%F78I7w?hw-)qaSFPZoH)y< zg%%OC`2l?6->uhRg*-U#{+u$S6FxQ`!8%v8%QuY8Yb`tj<^vw5%tm{TjTa96_>_=y zf;TiBmE2K>l|~TD>)9go<19ubuLVf<$1n|i*g12ts={OfyS83MkR(^piueHjI+LwIZf0P;o?E%?fc9 zKhvVm>b@4L?L9k3P7>3JtZU02Mg`ZXCoVsS%i1VCf6Eu9Uu0a|hYn@zzK>f@c(|oa z73U)n&l^itr4d3RctY_dL|vRUDLv@ZTv2$n(+(PH)f=V&X(u-T88hs#g;4I$tpm?YKF0TbkAY{_q-6kB>_ao zXAq&<_>VL&elv_1I&2e_b}YdKwruId^!<2Q`+Xtuu;H z0{nVzL%dLq`h|HsoXT&A6<7jn?Mk|k+Cb|S6Hq#*b#-^&ERVG@SZlo?sKUb_5U%2F zWoA$FTRiRloFS;hTSX8?sjjh^6?Z2tcd2cNDh*P#D!y9zfH4hH_mGl9uU&w(C}Al~ zSO;vkBjRw9D`*%TQySMlgJmMm9dp5PbFN;lME zL3cdA*Zd&7tBm@<&#-}4%AlQZ%V_Q&X10>%Z9r^}Ew zlqnB`y%0x?=FB}mls6MB56BZj%AW*5y380*VlBeTa}cl|NIGYa*o5gG)KjTnY>geN zU(A@$gKUk{ZFmMqM2PkmbYN$f2!6-zp3>w0c26G?$-!M=uba?1_HGBwcyM;m;|hl z<3x8H0dlPXYN!YzEaLlqmp*P{g;$TJXX~imkjQ2b3{n%r#Pv8vj-7!>gou-n$iZ>p z8^~cqqMn_jUA@EsfoS^njuZA}T8N+EI~8BKBC=bN)i_jcEY3(&+AF9qIx((WQ6N^s z=Yu0xDT=&q1haaV*Pxg>0r?3o2%;ipA>HPhjoxicJ%zth`zifH_ zu>sA&!ov3F1~AjhR_?#;jxzmg&-cG=k3Mg>{`K6CZk()bAR}_{4PS8bK1qOqaS^Ie z$yZs-2gNDES4YI6mTw#fNE#~o8Kes64G6DqOrgBOmmfWd`b05L9UP&xwiuy^_IY%3 zN#~~=-WVxM@;7f^C$64MkLF73^jx)0SP+FsvPRMJecka0Q*ZLTP?kp$lG1Dym3Md} z-t=>UpwhW<T-T4Gk{>^|CZahbv{AD0{^X-*L>aONO=Imt7YM&FxbJEywtx z?@OHFy1+Q|q3Xm@#@c{@r-q{X%FDpJlU#F4v0-M&$-VwkWn|gltMFMX1TjjRkmpoX zS&baA1!EG9F0p(sk0b7w1%9nDLdBroS&~QHAXjkyy6VyKqX-P>QU5iRe+)Y-BjaDA{x9CapZoqVJOUArld+?Py|bO;uU-5X zk({B;GbunrTuDPzlSTw&X{hF+{Jcf~SH75`jfJ%bfa-S^;3bdxcc!(W+4KHC^Is)} zep3hNm>8KE0d%bF%m5}1P8I+YGYj({tN}@9Lu(6TL0dCx5P6wDT!t}!3 z_@BQlEbIXGzx}_I{AcEyX9^1^^RFB>&X>Nt{Qf@sXB+=7Q*4ZkzbEMPrDCUQYw_~%<1;Vhxi^2GLrnkW z`AMc1Gk?=x{@ac8?>rOcXD|JeW};%{tfG#wa^rjR9AOqec@v-T3Rbdbn*bcGn`Jr{ z%EK67A*o^s=!qr41|)^GKs0OAFwC5CUYY30Wa1TEIwKV_4*1h)QY0 z9Y2RuVO^S%toHSjcbA+_ezZTV94<-YqVy^uyc?+oNh|N4Z+#G1fYQX*VYOS|$Qj;2 z6J#VvX)plUkIPsEd~_RVR^@YZ?cB!mOBxtJ;VIRDnU%hV>yn1Nd8^;(EUE)$gW4); zKN1jLJ-^`=w5A)70dH2JVWKjJ3C~9bbeW86iV$1mPsk(YQ{~)8--<<1@gnEub{TfT zbsKb5k5K&V9LStLu1_Si^W$*00_kK!^1FsbW^K0M&D+U`6;;If_k_&uuZz2@w{riz^UeDB_p0O)+vr&=F@G~yL1qXlZllrp-@w%MzUFl`e}Vqvu*v= zWv25Nvz^x68>caZ4v(HwqEhmFesk%Wuc%*n_A~dS#>a*TxvZTN8pI*Nt5t*>txJ*y zccW__+=1SE(>eBp>p%y+VDfe2dAJ79p`WIR$P^JcB>c69#-?y5_HV^1yBn) z$7tvYA+(sL$-XI;`>=*`R&)zoyuyt>&hZN(PIPtIT>u+Y5UjMb;=Z#qO)lw%asJMf z*n$ld&Qv66-C}xuKKadCX(Xw~iiires#UQ>sA5;TXbmF3(uXlG_97>Fu@KACj~o_> zBJ{a!^Xe1dBx(Gv$lyU+FD-)T^-VEb7FX&#Rf<9h|zoDo|l)ZxFSy7PKjt zCd^P(JpJjIr(%_DC06VceanYdCSgQ4X(k~m$VF|{G@6hmW>u#_nJQK=IBl6_ViMlw zUa2nqO$1}0@P}hbuCQ|oGjguy`Lt$*O=B}%5_jaVl2co~UWaViK#?yxtF1)Epg1}S zmuUkvM6(!#@@S>4?3*B`BCMjvYBD>8sZ89$fJ!TnrLnlUVAZ5=|#QfRa_Cv(~Dnp zNJcqdXMxZ9=|CB@XzShG*n2zIEpF?L-7O1GG##Z%#Aq9I)_`0tel`p9*xkqu=Qq}K z7kP8v=vknki?AL}rAPgx<F8JWb}Zkn$*ftb*bud`(}n5l zQc)ZY%`rk#)YpV^bW21Ngbm#>OK@`$6|^78M}!< zUQPWoCC;~Rw`#9cMPW;Zx;b!YaA=k^PQFw>gBuN8LC|Yy5)J$=5;4e4yhuokTQ1{v zO8HTSFPo7UmLq7$CL^HN*q}(x$oV`4+%99e5hL&5bC8&%!^gK_*+4`VwD@TmenJor z$#b+uSP>kKO&PsCcUdzBxA>oZ`cfuVl66iw&FZuEsWtz zaZE;y@=@;%ZW)ykZVWZ*g%Maj9CuEjn>4KvZ7BHmAwxr%aZMXwF%w`XpnQf(9eCd> zzz=oVFzx^9=gs$$N6eodlMOKiKchv7;M?dz4+xNk-|0m<_XVCy#B)uxN+4vLy{1+Y zl6o~re;JE-ZQvY}txXvBnvAI#>dfEy08A_wo1B99-MX=}p}T0;@R>weCQr(@_ehHj*exMsWZrQ{5rtj1j zj$l#PVaf?6@+7Y3al#sDZO+lu+$0Ye+WKI^;mr6B;p@%Ah}pi?(}MCqHb3VA7|X3d zv_lw;b`VODKuME7Jo~9`+p%@rS8$}oIERx#@o)9nb|mzv9KhB_;D#cY|D!=DzIi~; zjf;C^2wMU7m;}yP$zf+s^6rX^CkIPF`B|}BZfI-9>pLfJ8`yQFyB(B4u~2Dd%=w9+ z5?*PS3D06V;wHbJa#1Uf*ySgMjpFaZy|S>%y)STv%17dgY;&QgQNY)oG^q=PzI}&R z7PIgFFJ64{%paJ7nfWg&^RM;jf3BkcwaEQz-TNC;C@Tw#OKAOHU<%g1D*FEjQv6!} z{bN1&ciQp)1S*6jMP7iwOZIQ{@-JZV-`(@9pzPuFjA|rpP3>O%@Inn&0-0GnBl2ey zCiqM$2mQidFKbJAM-!0a3zDFcG%L4uP z`c)mE&G?Ku*q_(J>_8wuSNCrO>p$niOJDvcOJC%_G1>pl#6RHOyQnU z784xfUmpNF8ygE7z!dOX_6$Z@pPlpa0oeW_V`O7ve0J+UWsHn3xb2@ZHdf%j%a~Xh zIiI`wk8(`UaPdFe_=P?HQI3%f$o_nL{)dc-DiU z%KnUM|4qiu&io&`?Cfm+S&ozK8KnQSK6Xxy|L_3^GwXlU_Y9{0QwDs&xqsH@>}dEL znsEH}_8nylPteP_y5GH1;l`g0#d|+a+E5)bClyjq$#}@0TBpAAoLOxgNlNJB1#iQAPKz_ zS|kD@RUx!c1wldy#ZVF;@7_Vq{ha%IzTf-ryMHQ}z1Lo|X0Ewr*38PI8wT3YgZu{} z5C~M~+FwQx2%9nlvR{_%0PsmukQWp1W1rs@9TPU-3S)DA2>hSj=bEJ-1R{AB{L2*d zK{EjO@Pz+W3x8wp+x~%$zAli!z(7eiFAqN_M;{kSZ(rAxMKyj1(wP<{YWBbO=vhULg`MW1#_I*@R`7(Xf=0M`j*NC?z zRnb-Le<4qB-`Hm(!}R^$y?aq2XQK80tSE|xL>*4>r|&3LM!;*ZXe_qID-BIrr%_Z2 z{m8-Tev9jBrt71AU7P7M7XU&3AG;jFteZJ^WpZ%lDy$ItL={G9V6PYN$tgY?OIW<0 z+-XUB#x&mTFKzi~_fE>kezd@=KU85dW2Pguf2F0Esh{~h2C?lkHy!E`)bts63!$%= zW$#@U>^i^ag5Z#+T0!H2*T7*B!06y5t!rpT4 z{PmKMloxvfo3(JG`%Nozy>ds5!rz^?{GNiQnXMNtTGY8B@1|OA-_j~%kNnmhi^uba zByH@FMhWjRQXSGrWkZXl4SA2HH@oYE_927+#Z@4y8C-+8^{G=ZK9%PC?h;zs|H(%K!3V zg0TMe&(O{56bzwK!DfoSNUFqm2qXwZWUGXJRH?~1>1}zND5ihCYE|P)px(5-#l#xt zCtth~UkUTBA|PgieaMsSCyhpaoT`M^kiHjb>* z(^5t@DV+BB?3iYy_drWig5Y#EYx~dg-=;)_E1^TWHAuDD6U=mN9`Oc!_;%KOJg+60 zhd}q#xa?rB!&!qCl`xu_Lv!hqYAXjR+0rAjO-4O_uD^zU3xLxI^TRjMDowiFemI66mc9-U_VgI7*OLMZd>uAr|yvP_*#w&{%B*~4SYh{@LLfqW~ zW^Ip2k9bDIrsflJ1VR!m3WU7!ycF?Dkbx{7+R^GHJ{-5LI8Vl1GJ6 z;-PiQTiZwHA`7T}q!Umr{V*p=6G<5T%AD+e&AF(Xr5M&y0W0`Ex|4i7j>(4iaQg8<}x?%ThB#qYK{*m z0fr>6*N);4*p-Ce{9^$Pyu)|i>0E`$*bQ}ufC)&^i9H8!kXI|fHr;c{coVYq=xSf^ z)_fzAgKWaouF`St7Rg0R*(9l)^oAPh7zZg;rU#5_;DvzC6uGxJ^G}}d2Xq3`Pa)2FJQe!=27ys-bVGi9DfP=i(wI$}-NKu^nh%-gtPqQ& zJ=#*@t1K)iG;rHIDai9??(4);!nW&SUP#Kb-yRI%Z1zNpmPfL4`b{4ds>h;_FcrD| zM~3Bz`!@7x658}33qlLA_fiM~dil3ELLfz_ul;5Y2t;Au|0O^`AOiRHW`;OuJ=;^N zRTTxWSkdx7Hjq$zr&6dAGXLlAr9yaA8iwi|u-Ph@A&px$d!L3{h_^a=g#=QnmaptF zf3jlQ)DnuvFrX?+B_a>PG+IjK_l6t>yj^C)XNx-Lu zn(u@3X;qcrleh6;lZJzD#I3O=0fT<(tA9hHL@e3Y~q=pZe%+$ z+RE8);%Z8CJ-U}^_*^57iNq*ZVmkBdhk)DU{PZ%c;~w;5uq^t%$$nj=#x(=~0b5%m zp$3)zaq~WKv$PajTgMG}W+x_2qw0Um>VEFOXXRRvhgi&1JYndnC{w*m#dZFa0}HjB z^wf!!3F0xnMVd`)p%;b>Uxcj&5d1K%rZG}~)S#&-5)`wf!dNU!#t^o={9ONh&q~h; zCS0bYe5kL*&ve2Ai5=Te9r)J8hLeyv+&?J=f@NukR7T1oJ>KskYEA})w41DgB%j`c z5zN`U;G{{KU3iH5W(BDod0M;^T~Qc*2a>1o&m;adXbyC!sZ_34@hy5{d8T8C; zf*YZe)Q_PVzD%>JE2VCec+p*X!TyX@KKcHLuy`)JNBap!-+f~%>h|5{AV((L8Ybrv#;8);Z@0CoV`^{gOv=rX8fr$T;_Z=V?8ek021r|2~d?}rz zTGCHYssE&iMLGYw41zH_n>jcjeZ89R7!)s=*X$fjor99*^WscC_%yt+YiD=5NoVaNA9n;YgH1xT+s2XHZ zg?^vovDLP4uh5fDo%-gchWt`;h>ljDxQJBU)G)8B!In{LS^+xdgo1vv?LcWH z&55>En!1|hm`UYE)KQ1{m>BFK_$7T{)QPK0KPR5A-#5EOSHn}YKipfFOup4qgYmY0 znLGFp)a%p#(yPb9XVUzd+D>Xp0XkjI${8Y%JaG|R3THcoFvF|YFO};zhOF7Fckm30S z8(TZ|h~`U$eLly#Mzu#=D`s}KHzMkJ1Tp}D$GcA!+`43q$uY@rCr{q@K$oHy-d|-c zVuEGWoCQ{ccsj$1(e$puMYd~@yz&?Ax81b5ShYJ8%3g;CQ;JbD@q=BI_`F4{5mct) z!~1Xx{Mfi8A>Yg~6atxV0AXBAP$oc)T~yJ27%_}!K0sLlVCoEkIGELcpgtu<(W*z+ zkTt{fDlGnDOIeav!RRH*R;QT7j2FS%Oc+&fvh6`>C5aJI&^cz61Mz$n=9)LRZQqHbj7gG@qS6;if^;!vJZpvk(k^Ng2{H^ z{QJdtsfV7Z*%Fd~`O?t38y`K`o=7vI)QJt8q;&!4bf|j#a%fQ6pV;Vx6ae|9g#+pk z{xuPdvC?9dwhuhRv?LIC?%w&)>T83hS6smOFaa8xzwqGkQ6z?tnWYY#;#8-%}_s$4qf#C9Lt0$Dmzept14<4$&%biqaA5jj(OgTzfT6V&Na7ojHi^s+-{i^4Cg zv^iN`7v}9jSvRI=4Ei*NWvVKOT+v&vUDl@!h_1y08O)!CoUGqJBQwQ$=6=kfNxfgs zFcOD>@xC*yj)9a?4Bx7ih_aw{T_}1HE}{PEldwLaChrHila{^)d&MelG{bKEL(zN; z+rH*y9S%e9c#9jq+7@kPatN>1)~ck_-q@Ah^Bh4>6i_S8GcX#a+n$v7(7;i0Tcz16 z6Z<O(;yonBDn%A!PKSOS5F&ZC(GHhn`^CfI19b2sxGOkH&9ne9>x?ebcDmBg^`HMBasdF__9OYf(Fn0C``W? zNjO*$I1Ql4dho#sv%eEqaMYEDW&y)@DMkXx8`H@2>?A9?1i>@Ol1>ze)Aq_6y}3Q- zTqlNpzqUN2N?Z+cM$IBg`=PCTPKi@KO95uDD%Zz0n~|SVDKB~%hAAq@H%-95Lf7OO zwPRjR6(!7Opj*UC>tly}zfTxbYEZ|R5)jC%4LJnPE$`+l&`(FKSy zc~U*VmSfZ>X6shZW*cm>2uWVA=4fv)QLoB$MZPkxIqy4ZcTnlX8Ku4wcs z#)eFQK9cUir*`P~%ZUt2_Mhd$WuKN6zCAfgh|EyinME#_M%-Q5>LJ7{rnW1&l+1Tw z=$6~JS5Lf}krVt`@3XSiMlcp=9(p6-Jy(bxd(&Gz=R8=bAoyu#+C(i!-)`uRMT zDb02yuw=gSd>h@ty)MU$%Tp=JOsn73)o^V#Gtq@!x+%QRZ)Z*?n9AHTnM8% z4_-~2qi` zJQ%O&96@iN+SKMB^2Fxbjda)dc*4!#pQhy9>+=n~H*OlQdQw)9#Q`37FmvZ=CX|=0 z^$~`vqJi{~Z|9|Q7lD_(Lq1uVt)Pw~y?nZo)graEXgjyy4Xq`VZ)TOS9oFxzqH}5= zHo5B~FImpGbi`A(#smzqy2=R@=z{8qS!7RlJqMAbl^C9}S_jpxXu z7d!}9Y&CK%%?r~2yEFE{lhQO@Qm{kbSIM5BXOYJEhXUW15n2<&3pXpM4@f(SE;I7OFMq`twS?Eq-P z08apxwX7=uH1e9DSQco#eGUH2dC%(v3X--~u?o)cr8oqUpz@S>pwK>2-H08t00khZe53SFn2q%mm zhmIXDOtm7%2x!nUl!JHbk!#^*_(xl4y6yI?bHsr2U@3nbccjV9h z_1BXXY$UW51QR2jpW1oL+w?D0htJBu7d0sxLQvkn*M11+oD?2gY6xAO+EkQ_+_D#& zW15VGl1HkY9?}%U3Yc)W*PbB9hG=t7rn#9TvnFaHI*I%dZR&;8PNWlBQPP4wK(d3j zyzovDC#qYzE)I`MRaC~vr6wxpO(>49mj@NH@hWV21%=>)?@^}b_&c|2Z@*TF_uN?@ zyFRzQtdbu{G|dZKF{$fUOyyMxTM5&~dw&yl-;nV6Dnn!%SQ1gj!G>!l&h+>5OPUN9 zY$itgiB83(SSbWbZ+}L{R>`OC8&NTx0V;PRIZ5HSW#~!MQs1_^kTn6*r1s5el#6{z zyRcet2fx8DFYBVw3M99)Ut3&qyRdZmd`IHuuMllHkyGswHNG+pW4$GjZ`vE`Hd#vF zpO2p*h55_adwWub*1RzIp+M`7v;np1&DgJi6*ELvX$BH0s?{4mk@OGzL!?}k3SHr~ zVI_f8bX8j+vW2KCTBvS56Pvi{Zyg>03T0TeQ%Fi&7%>}@E1z#}-TFvqNKvzs@`O*B zq{Zt`_jpn=TeqHfh<>cin_!)`Nt4o_4otBM=*a49d1HvKdQ1IuFMRadH&2RZVoT&u zJ<+`&^drqsf`)0`%9@t?8=!(fL+~w~ty^C^;@6ehDyYNG8rzZO2^Cm38O`ENRW7@J zpEHq;)+282gTrG^*!-Ok8BNq?EV9zQtAhHfH4K|Sy%-nfuNC-BzKoEcO$rN>X_x_Y zlGZN#HSAW)u#k`+ydb5WcgLR4ZRW>Ywo^1gE*>S4R$8}i5`@mjXN)~llQo~=W-K~L zCej&ToRq}yH<;BQtzoE&knyQyF@btbo(e)*PEv>MK9%ALvK78H>Vao@o%+~)KlaOj z{ECU2Ivv8+Qej;6t}+dVa}D_w6|UADws%yEH=|1w%g7aPYQ}>bdrKP9+5;6LqbLuN z+%|sjQB_d;#}hZ-pND%?{aGK5?i3YWovnDIIvwJ?%C6NwSQ^nVpAk#kv;|-iAron# zb>#+>_krd&syhaA{`ZsqtDe9vB%&eAT}HE_jz~JvAsVn1fN!E!tMnUA2c}sCEI98J zO&hM%qbF9q9j)~v?H1D8g?qzRMl#B0mTeZcgXIH{-o@sR%Dg7ScH%x*m)8?XAAy2E z&P0%BH65eO<*uPa>LS+UR{-4DA!H8-J*Gdcnxc6GTa-Vl_Z zo7M>IYnEzL8pURVohUz37U1HF^ha$6lU z8gn@55M}HeVt|=2ZbSaDx2g>M|OlQ{3`0$q& z1|=)gF4pw-uA~rGzqk5IrdyFM#cX226Q>|W^@6Yj{JLI#!*J72;bipsv#VcbB&iJ* zR4yn!AfjlZhW0hKw_*I$w<0pwCE#jB=Gn+ zBn;~aB!mI-2Vr_O{8+SIe&PZIB2Io!D=0ZbPI*&b6^~_|bWIUHFvCgc0!rMa#_?oq zSH8mL|>1%>z`27?^% zQH}T(&V9)!38*Gdx=g?+2qXp(S)d^oaF}(x5`z(qkH2&6M)KMk3EMhJRPeW~OSLx1 zF;tISJp<2vl~#Xk^NOpSW?oYZ24hyl34xg?%G=zbe?X>lr<>K~ZjSOAp&y>%bj%BdUN zXEKt4t^u}BjtheUZQBZUx>{UE{os*~o3@Ucv*7k=@aD+fM3`qiKo1m~r50#k^mai{=mWS$8i4Af> ziduDi5nA{@l2HEElmY~IyNpMNlU!IIoF8yUm{X*6!fYYfX!9J$7xJ*rz2Jhad?>G6 zHc){bd^P~=AN!MnJ2c;*18rmD8@ApeE7CCQ6G?_e4s@VA2b7Xc%@x87B2jfxTlMcY zyOw`Q9yAm^zqNI_xy;Gkx=`)2=hLeRcv3Jd^rWG)}9=mUlV`6va{TcDYu9%0i8Fa5A#(8qjMn^+sTm8eRTK4mo| z&>r1?;_9)=`+-h6RVfds0W;$ObfN@_()-A_T0~!&h~{0-0-Cv{`4i*ci;7v8ZoBK^ zx$fmW0h+bAhe^7=8&fhaVrh1j0W~FOSl>+f%mEv8IPV-YZEDTnwuKT{%ls*H%N`Ic zLYPQYAIy2cd)Gn;pd*F!S*H|Zo)_Ews1llF>C;(`uZA`cl6SmH@}(3~Lr3q3DCecO z$cf~1>Q|~h^jydrC4ARuo-x%HHpzm>mci#C4v8TqTITN!`4~8p^PgNp00KffPuV5y zodvMSkwk0wBjy$h?2NV;-XuX49@*Mr3&pTO-!Qa(Xq&1qyCr79NUYeA2LDea^S@VkUy z(G!150r~=nJO(KN9c)(x2n6Er7wx)l?!*+8Y+^2H92lt8#Zrh_tPGgI>oK6bXceCM zgZr4|n-`JwSp1nE>oASe6Av(a#Ndv|m@N{}QhJxUp6hMh#K-wUB`vz#`}lRvCnW-K^|}7=b8|a8j~hCtqFjz5QVK{TZVOH}ql)dJH3(tD#uFg_0eJ zDa`m(=krGt&`XzI?(bOt>r!RL+(c)n4yQm5*cHmLs%5PxwNi6rgABX{>d7(4d?=a1 z8_)0+AesNhn2v~9FWc(2%s{6PuCQ~;r*cyVNyw`e%T2dwCnAF=sU*@>yHJ(t2`+R^ zhjiTb=~hQ4)e@B&s(UEC(AG3f#mX6X+T(Y57XoP?=;ucURvA-1lRBZci(~JodO)q6 zEO3-}&BdIe$uBty?8V~iYtZXJqoBU*OR-^1CeX1tN6t>W z=}zbtAWpd8>1*P){m-VBzK}K-UibRgz#S>g$f*=DS3wSlv=&#MB>n}oEp zj&R=X`XThm*~p2r)7c|un~E{mw<;AXIqEUNK+A+E?can7Ej;M6yM-#AXrm>A)Bs)z z4|Fl_v$H)~pgD8sQUR~6+B=sA??M&t+Zm-5RX8%Gqybe}B_&~W!3kA1Z~)?Y*jq+3 zB@Aq)xDbK~Ux6BYkq!_;1~(jlK8$@c7>#WS>S+5D0Ja!I>Z(fW9XJu*;RA?JKbz?yMl#-Zxc{5{eDDV2mol?VY9iI>Vb2L*v{skDG9 zW`vOVJK&%AJf;H1QsA2V3?~c{mI+q@I>1N*CNZ!e79l$RY4J#N2%dUMwPIWc?|F*Z{T;7L*;ccEzF_k628GnNZh;L3=7__l=?4g0fzosCi zcTFhcqyUCR`$+c*U7(8q7w*7aTdf5Ae=q9kl?0ad=4GgTBNw1xhv`MTk%;+I-~a{$ z_C-~@tyfJ5mT{Tnn5tshcweO1*qQ-d)Vk)oOmnGwO+E{{q~}ka5HD=Nu#Z{C2f`yL ze#G`aa5E+LYsfjM18w}$Ga~`*#cX1@`sKCZKlQ{=HuN#FNEKAUP||HG{oCAfvslV+aT_W@c-w?#K}0oAfBL^S2O6pKPqs z2A3&8@{>{yJwOyIy=$R$;D_U$I$#GCf zj4qnHPeI&)2du!<)`eW7C;~&;dlyOCL$tRiK)oW$*8yW8Pa~!5f%Ycc551yuw-O&vhmuD1;ca6aXw~;~Gqh!jlQ`yd?xj zrThzFos^Rx!e~0+2y0BJi8nvU%mIoba^YV8kZdx^4M?Q#;s=W)^9}O;XVX}0fdhAX z`XtmzdBl}rz@cY9m%f7rQlx7Q;pQISQ;t%K;AnLgdy1ffKajXBnU!WZ5nh0K;*8s{j+KK z>~p+G4md%QCsmoh;|H8z!7OYKZY`5s`6bmPXCw*hCQ^AjXsW-KcSgTSrM06tSK$tv zRPK$o!`|yJ!0H3sM>s<(s-Zel1oAV|kx+A{)i_uXU2^S&zbTw_=Q)$l=NfY@UM((g zvo#%HqWwf@AFu)3OKPR0yvbdYO_FkUL*HgXR9*=+S_$O29P35(9r zhcx=OE0C%mbL>}}TT7&*EF!ch_U4DX^7KWOYf&m_71(R4wgD+OXY_VKAPnvp8yQy% zc*Sc^W(ban_^mr_04#g}`xYRGx&bihd-Y0DWM6GXrYKU?AW3*o+WAvW3O#k_>A8wa zK%?&w$q>`vNly^8Q$x|xjN3Rdqh{frEBvv_C~W;^x^QP!9X>e<=0UV0-_FKq&DLAIi-S(4j%B1V@s0#zp&|Gw4E~fv zOKJP=_CB$jlmL!OognC*ZwrtUkqSeF(C$$yQ9ws9%w_cvpV%^rh0E`}Bqk!$Q8Q@; zK(|%d$GPyXLnQS)>Pr_=I|=S;O3vtatTWa|n``-g8zhKfW-48c@OPp3u3FUTV7F?8 z0|*x17Nk^$6OdH_M<|+s!z+_5o#5dW-aOWvvR|~xC(Dh@4kv(iTPZdAc)@Bd3LcR6 zc1H*uZ$PrQ+IFP0wywI08$|+z)f_Xvo)F)N)n$9&oDh({@P`P#PWg4dZn>`PboHz* zVUFj8dUl9;sId0vfb^3Up?=_$ALstP1R1C2>GqR%FdB?zVxmM7dI{x0{P)M&eM}Gead(tTrF51H0GVJAFqKY z6k$eOg&G!V0O^2p1Z9l*?P5*oj;5Kq!^*}mGWKEV$^_E+E73&Te9UHh^eDXHE@_#T zl*3~VU%s+Wa)om#f$$KJE&ut#YSSJ;pD z)MzZ-uD@g{}fmKwM?2a18yS=cao5G4bhqW$!aVGsLZ zF`+9g1F1j=Gh4`$1ac)KpdFgfCj^{FvoHpe;n88AqD?F#qJp_u{%&rDW7=#c(MfpOdfqmnIRqua};-HOzv@BTy%;MJXY^+p~ ze~00sSMSl9g^T?@j!QM@24VSkAM{%&hu zk#+oVap}b3q9`LP1HadhE2<#KEurvVx%2q5z`rQw(2N#E1ra5|Co}T&&HBkxmF3CS z=KXpV^m>I+Xx@zCm%=fUO2L}O4#1p+*vX4^ zoKJ4Q4?oiQ_wp|$gEXNPLemKGjEhAJw=@Wb`W`-ppNJ^X=Zg!jA&$}UWHx#{Zhlq zT)V;U9s`0bhAwZXMEfyJI-A%cl~*4qOz}3|cK7NWgn6Os<>Y~kUC`{Kxd1Yys(||C zqE{f0ylcJdQBLfCUHX1P_QzvVuW6XRg)I1O5d{>hg5aMTg&}jm_fASnKRBwD+G8So zrz}A1S&UY9*mu|DVKXNRra#nvpuPgWRgg)|M$K@ghlGWM+U0J=lE&6lztx4;Q|plv zC%uff$4IQ`F>fW-?bpapNTAcC6j4TPMxKlrRFm}Fpp^!zImvW<0W1k+x9jrm$^stg z^lm_f1i*hBnuIv83=BTIyg9`{t_MDJy9q=tkXTf#TNL{B%${xDKlky1#P*JoQ*9B1 z(=xK}TSi-~z9#k{F}U#}8P9@VFI*}wbi4M1kGR><;=la47?G?fnj~xuYs(a61gjD@wLjucPjeCKiJ8XQq)g#dJeT zC}GBIlM?lGp@VQAEezwMPBRYqiJICAT#$tHMLF?fm21F~7*Ib-P6vW1fJTSDxZK6B z($3A{RvB6+ezr38<$!5F=ElwUQQL1tfp}u5_yis>0*sU`|3H0Df)e(hZ2@Zt zxXc+U={}HJ!LIeoizwHYsN_@Iz)?lN3$^$lSB&~7e^EUQW#GxjaRjs(MBxpWNtduH z+ki0W4&a5LkdxPHt5>)%g-?%hU?z_c>O|u;(@)zvTm>?HToln(y)uNhi!w;c=r(#R zEo7%f$9LdoXKqB$%7#9Wavf)6yNZMbfo54|g~Aa6M>8j*&H)*}QOpnr>jZb#>c0u5 zwb*RxkAKqI6ttASeoYHB#&n5*6u4c8sh9B;FLJyFrg4FAI|^7|zU`$A{{)-?2CtOS z4+Kv}EeRO$gp}L*YwEdE6jW>Pm@RPj9VVa(eBYq}HEI!lo8cy=Bk!q=zZU=zJP79d zwV053;El4CAFwof%V=6li)lYiIMOA-Xz1HFp+9s#NT?d!xomCug83VB#ajg1!#{3R znP1&T9lJU~+J7PBre(o(%0(j{%TF9<-p!x!u)fQ5@Ws76o`aqj9wbS=9uppuRTOnQ zual^}n)ZVdrq=1y88(wDOMWeqsMG1HVL!fq{OM;)5uJqHKkn&0rq>1sj#qIG$OatN zdF>AIVl{Xw^w;m(BB+xVQ>R>$7;prCv1(;782j4vPCe6VXBMvxcNJb7np+ zKWxDbPH)7Ow}14yZCA^|cL|nPH|R1r)l2ttofr3K^Hh8C`xuq%oNFBWVIax ztDKDKP-bCVN|FI=rg;ld`-`=%C5TXPBRIssX%nLy(OCBuvDR}dnyj6%saN;bPl&sO`y~lmSMoVHp)~;i2tHrK+|Sg5NIC2J{6+pv z+&G{(orJRb!te!;)X>H1Vy8dum3#Dms|h3zTmtQYGKt`-O~%&mpJ3@fi?BtgBDN91 zKjO_Ic$9%9>Lg^ndD-^kmiCQ(P$;zcEclVp1=~ZzeYf-2li9;g{N%8K2wF_r+yucg zDRJdPZ^^Em2e^ae|ACFX_de-!@Nk796(gRP&7-)uR%%;b;J4qZ%{rNKC=8ODt-SPYgs-p6k0w1HF@DBD z>dK{0Dvio0_p;2h^AZhZ0$fPXqQZDLyBiCSxwK zXWpzgJDrXRL zY(hU*agj$JpLm0iK=`qboC-MLb;dvJ&RkoxBd-0Yup=hytegjaD*I0f9Haks`_zj7ccf439T4~)Yc zXj4>}13bkuj#=YHUIs_l@t_OU^=uorWeyav`uL`7$3Vue_X(f($0qCk@x+3C>!8xJ z8%3p;G9RAt1HdvEl-@n$a(Vt#f(+r%p#$|tR3Gm8xroliN0w!JE!~j$lqYouw~}rs zbz|CJYv}(Jzm(|1>8r3LvLxKP5Xo9U+8L3dBguQ@vEY#3ktMy72%{9D2GcK{zJ@D5 zdA{~(vUPFcK1N>;yiP~7#gj3Eb$iW^S$+*>#=*THFO)t8x@S>j*dG> zZdK}{wEA){1<9nd80f8($wx~cKd93jcPy^|S~B{*gR?t5jCU;tmca^nQ&P`@GN3RY zxVd8{4|10S{`3cqJ?#qtHmQ)?oiq618>Ah6zG(mbtFBK6G z_jPcmEp|SG-Cj^chg7fTn2w48SA*)DKcL2^8jYPIwi-!dz699=(+>I2xUr{njU>Jt z*>NovaJ>G=8Zn3?N0px#9ur0wa${9thJTc8xRciWpI^-|h$Bdqr%S#F%88}raMWD4 z9R4Z^>aLw>Z68lFsJr0tUIrzJz*{4t4HaG*Yp3ar8d7+tx0o#W8KJ=>iVD$Y5{BGn zrbE>d@>sSof35qm0K|W4DR|syd~>SeTy%r7!hwppDWwN-uY<>b^lr4_>;#H5ak^>Q zi>JZ)lx!cE2>arg$7gWC&r3n4CJh`?p|{v5rzMFKU~0SM=9$mp<-9G)8EKGYMC12? zIHFTa5woou{0=9J6s7myId$w(*-ZD;$_1;2mPj@w!5}V2tGLapYntNa>A~yz3{Y?m zbL#B|oQl7h?mNW*;U@2q(Azlq8(VaaImEQg?F%#EAkTW#bJ+-}{v|?&kefMg{xCDz z9x1#P`YP!HYcE`wB?8MtRAh-{j$q&74-$*LakYKF*STXCQ`u6v)LsoMq}-U2KCp4j zCs>sh`68(xu#`9)0QHfaAn(xk#lc+Z9qhIur;c3}A6SYha%9B31QFAkN(57}R&TKu z`|6X58IeZKpf5kJk5|czW&prdQOx+BvGp?RdbtO0W$4L`jqUE3 zm~!5Fg`357;^GsF2cx;p$uVp97_~1mJ6b(0YaHNZdmyaI)VVL|TqQYO&|5mQd$Rqg zM)o@f?Hvu`2~yn+Z>&cmT6F>KqhVb)cMO@81Us5H$fLnoO^ zK0I!6rShRGqMlc3?XSJF0Jw@)g$}?KLv^XSj~Us=ecVqleULN^O6(q$0*#^b@`vAx zOiy=#7)XPdFHzC0!4!7R`fBowIVh`3C{s=O32WA2{hwAoEI(c|JMW(m+-FQOu-`c*;0~$<+uJf>sT=Kr=6^iJ4E6~k~&%0`pq={#+KGVA#=t# zwThd#>}ci~*C>Lm(wfycaPapi-{n6df}SU##J)6x0sm~&2^$I1eG&NCrSqe@pD^{DiugW!3*@@|)X60MYO99|Z@>!Oi}FlXaILaeCw305k7N zM2fn~X{11fyhlX*C&B_$mk*dHA#1UXrJp78Us;k|6Xz*HZUZyx#3Msg-;b#G48Pi) z56ue(8w(b3eaUl#0>LFVpW{pS8QSb^9tj-lIN_RlL=}1Fj+a-Q&}DGQiz5t2-9OB} z=cvsr>x{H3i=zIkTT2c2TkOOL{8>l805k824UFwQ9smUL3IF3p;h$NwSqxh^&+Oeb z;R3;aS6EspfKBIh8%rPr!w3mSA(6~|jAT)%1@tMNIeSV4jsM%Vb_9tuj&&AIC490y@;9mWkHDm3-yrp*sE`o~qN;^N;T%P&#p%EauGQfV*RYMWWK|1I&E; z#94P<3(h&78f$VQB>e3l+}IC4CVe6CVOpfQ+OrBfVmk` zcsTp-NOzXSP`_~p2UiEa36IT-(p*&>7FebhaLrHMAlWS3PK>CccWNs!yGT44ed(cd+NMVn&@o|rq^e9cWy&*~Tr3bAepZmM31T6F65yU(6 z?aQ)D;cv}FTQ+X0(sqvX4YfuGTgm5)u~RB&|<=|_5q&Rs>#;G+z*M&q4=#e zamM+vHZ^Esji!n&EuAU4cjHF!xryzm*ywdfCzXM9$aqKZc0MG6%jWMt#;YFnHF1mO zW}M;CG2+#~g}7^f`S50NA3PIXfnhKWD3HGSiy_201ey)Nyx-n!QC%B5^Fcr%^IXS zxVCnNIK^fxbPTIj=6ZVRhU%n!_6B(-KHGPc_1Bz;7>=vjHu!7`Y!l#`;UYFIHdd>!D%D{NpCm$`;@P%6>rJ>wGEtYs6Eli z?RE3_uq!$7oq1=Dd0sPZJ1BHP!28IMx&%OUM%nXwbd3`G)^kdH-l3+^6Iw<`ZP~Nn z*?J6N*EjxLWsjD0UuTl49NgK)4LEPRk8eUhr;Z^!Jw{|4^h?qSt1H@#n;-n5>Jp2; zM$g_{!Idw}%c@t~uy0Afw=rre23h^DMuF!n0HR-@4m5Uc{)bl3cb=js@>eU}N1zTl z0bUKsOK#ghV$5a+X%O)bQbMIIXeL`p^OyqlL?U~SSv!;D znPVzt@*3rf$A}~AgehNnA1CCxpG0QS#28}zaCYv-ejjaBV%&!xHssnvvO33G&amnv zV5PWH4{n|PXA^jQ;mF(9-7edIHa?nL69m3DV(*+HkBd+EAgh(wW*Tk4G~^?^KhB^p z@)J^j^Q+J*BC)1uq`Q|YcEaWP#RRbKQ5Dfpw zewvv-8Fk;NpZ0P*LQ!AR{KdEhMB|*2S>5298_6;d zi$j8(wcPSIJ!ZuPv~^EkbpUrbUvYX4GyjRBMpu)$^bYVa)gg=#9tg20L*}-qv+O-L zA>v{m!zJ}4X^xqAX)zv=Gyi$nlYL6UC1=Z<90( zKL6Cndh8?$mQh&7SUQ{0*HB6Fkbb7$(Ha#Zey+WGC|v@N@pZnG8K7MAL8OU23eh#s(pN?LH^uIc#C4YyxU_YnGu|ugzHiiD0O!WtU ziH3QSne9l85jjV*wcR=;--w`w^xl=dOi8$C9Jf>&;RsM?)|*SOlMEdMg_U*Bl_qMr z6ej{)p9U~L+EZYt)e%zU@|;+~nywR9o-D2Jg_2|9>P~?36uGeyBaa1fR#ioxxM;~) z^*Cu}hW_$r)sLT3kO?~L16nX=^1#OmV)u%L--+7^GA^Qkn}ysyX^VOCa@UPbM&g(Z zuGR1%fnv_5qPgGBX9AaCF*^Ly&#zwG^Oow!Pwx@M(vrmL5m7aqy`8ZPW+^S*u;r@Y|Do$Upql8~ZV3@09i?}qNN*w#x>D4Df<%xaO%YIf z2c<@(H>E305zzorrMCzO3Id{3X`v&%NRxKYgxB}`?*HGrR#p}eX6DQ}Pub6Y_L-nR zmBs^q>p!`n|2_=zW7d-!B_nDnyt;(7MWL4-(pJ8V96H3N7r!ObYz(DU5T+EMr{AaB z5qq`QbW2&sc-RepUJZfa4Wc2wbtKDV zW)EZ?3S?1nB~RfhlvTq;ZV}FUi3Y%zQ-I?x>~i8JSN^+BdOlwT?X&7Z+cW5J3Ci?EWJa70GrP!kEe>(4ui*+Jo-n zHb9l%*2mo_V91Y(7}v7oDPpZ8uS~ukB$smC#h1HCw}s^o(UJBXkE?6kD>CGX9lj#P zSFf9V@JmqydH@vYEdZuNVY~M}o7yQj4*O)8($SxdS##%uS;-@BZTJMC$@ z$v=^_4nAJ=9!EgKTU#089q=`{VNm~Azr{$l?rdWuE_d>vKo66M21a*sMOl@4U*c6> z(*bVCx@}EXvf=U2YeoMZDN!3v+- zk_mVNa5~Np$^#zB_-~pH97R%+ES0cIvbprzApz;bqfbS@xk~-h3+NGoYBbRkohLE~ z{`UgYje7vOyIqSSPBq?IlWF@4UC#R*)*>d!C`nJv+dn^GaSauNZ?8KP=?S!sW>ajd zro>QiT*~gVSZQ24o+9v`fFZ@7Q_FKf#R*^I!aq4 zTH&vl#%z1Lq*w+L*7iW6WWoP%FL;^S-N+PiTK zsw@@8H9!%UXv4qiQBv=kI>gAA%p0T!C?c|Z^ArBpR`BIN;@X*l8obwhju#tU0}ulk zS@ygK(W-%^&$A)#H*aWHBpjXgtlXaSUajfba&A%|DEgJ6b0Wskc3%|#_{$%fAWt@z zfB4P&%4P@pAjO$ja8?pkN?iS#xQn=p+^S#^^T3ILQ^+()>rZUBV8<F-iFU$Ta-QPM5qE%-8#tN^{X$J7J056okR2%Tw2#KsBF@JO3pE3+;clp($@cwHQ>OW=cJZrUG5#1TmX`1 zBhw0?CLP*?5H2h%$t3v+2NKy3{Wpc3i-10V%_J#Ul>nWlejAo~;u4$<4i9>RE5+sE z9^h)azaNhRI{~px=fF@+hm0XAOkFO|aZh z5d!`o{Fw-U8t-V*^=ou+U9iZ09!d9exV~0tjUT%V(A$4*|20?~bhKMFIaXyVC>Uo< zxD3f3xFI|f{>KSlUjwgzaS3_~9*@X?>0d4u%04syFtON1#}oVX$Pb9tfzy?Y%s1lx zX>R6f{lkQnY#HF^PP5yJSju``jVBB^_ZER(B2&^%u{T05wZRdvWIzs}&?IbBeysNd zyVuSVaS3%7L;sxEI{pu;ex!$c3enoRmSbn>Nt4_j&O6h9b=_2knjH@6;o5VCKB>Kpt;NaPmrwPVwXm@k@I z=heFbqG`yHLtM$4k_+s1h7_tSkL4an;BndHvMR?^l^)fZtA?;5X{ZLSMaE^D5U>Mi zw15+}nZjL2Zx^i9@Yo8?#N$+OBDe~4Kg@~5iTIFWE;A}!_Z}?ZlAAxv?LXVVdV4k=J|DDI;0ievo4-NjS*z@S3d3aZ8Cl)1FT73)LMA~_caw*x6) z8x&7eLtq6bICWYm>WLRmq$QYIob+Q#(P>AOvtd+;j;^)uy)4Dt#?8hr91$PFk(>i^ zEPKkU4IWEXe*|4z&Us0=$gDbAmfl_DvAplbMU)r6mqE;)5yg;^=N@DhSIkAEOPu_M zbEEjl%~b(`ey(e7{_p`YmQ<2q#8;gqZ}L_1#{QFdA<$1r4hsJ=kcjI*9X7ge22Z*A zDOVl3m2`RFad#I3=!t!>!Z{4+WN&iF5->*2c{f|McsDyO+&mQs=WBifGA$~i#*Oit6o_$d>lHXb_^;dRw@2ylR2(#=lj4$|cND8v-DZLu{srhA-AJ-Z`%%$5B zKw(O`|7f-A%t=+lLjKmrtI|HqE|g-bblbEUZzIW6Mfm!Us7+HJehobxFiH{oKxZ9U z4_{1-GSk?3aUfnc)=D!ltl>3`E6>0~!?$h9ZeA#TYUwVU^ezLMQ`ei`x$!soo`jFE2=I&Me=evu^ zUzRFh>hZ<8bTbWgN>%lIRheBdfwNX}XSV~DiyY5+DUADW_kY>!eX_Er+r9qcf$#cG z;6)!Z%&JVL`VOa%Un~@$b9K3LHbbABr8_)K=EDvV>hxzWkM1hC*g_oa52CLp>UF0X z%WSZ1mucuEecw@xSd&-)E7nn0yeZyVW1BAr{s3dr6lZ72h!&Xg~l2~u) zAjefnnA4*U$c>VJ+E}lrcwdc{q0Pwi$GCnO=*78zpr^aw(^;VtJssb!eD6U)K(a&f zXd%M&+fg5s4E^Iwh3w&maQwlC-_%iK?c^GW5KwP`n5PO4^Cr6{Z47be9ohKcP9}a(B(009ayCE8F75wOB0Jb># z#vX9oOO0LV+o^K#?e*AV6>RGbW|4id80F0#T_iSG|)mqX(mK@<7LPxB8)hX;?XzkiN zQYwBSD+`{lBoZhzrM$`Eb2||54OBtGz?Ni3o>cgQ8*#!espy56lGxIL2f7_C8>!C; z0>w_nw8EGMS}y<0*Ne3|;4B7Z?4U}&avkf%^MN;kPbkC&@65u!{fRP02;>igRQV@I z*I;SiKYIO$ZpxgAu?bR8j;a0(u+N{Ty!-hU%!*eKHm7D3z-f}M z1E@|O^Luu60kz^I#sCrKOHm8eYcnp-`3~KVoG%4lrKbD3M$t-Ed4|ej;%_yWy z%)VU5g|??aY?E1$#CY^{0)+c=VMuajHZZ6^#Biv0)LVBJPx^55-ssV}R99$0F>ExW1er#5Gq>7MgVwYMLtM62H=;6m znF(2YVlke*9T1a%e231WNZj$He{gz0^t z#rYqHd;2trQt^D)5c*Ua&{v8&Ve{<|S1~k9ycJFeH}XWbjANJ0g}O+th&_GvG*kWtkn-jz6!n^2lj62|}BJN4*WLza?6iV0T zri$$2oLMB3TmtNbU2LA0f`!9|0g=r~=RUsP@{3Q}cC^a4R-Z#_EG+deJQW_QAS>*W zAf^#m@J^6#vQ(=GQCdYx()*mRswWztPf>4QiF0gABakukCU8lP6oS3ML(QQtEW#JCx%@pB$i8*Z=%O@0ael`&2nQ>_6s{)e-h4316WQA0ZmZ9&rUrBY)93R@CNAU*N^L#p~komhP6PS04%tiNmS+_9f~JTL2c80nG^DGKG?bu?Xr*^GlCkwkPTBzgJ1<%~z54;Y5xhAl6Aj`7kd^Mev{j-;7 zm^zIScts2R^4}hB_E&$(0Wsqvr>~$(V~rJp8ok#}ET71M$pIokNRjGE75s?vZ+CJ2 zJH4en;OWNVi+wS^cSr!vw1=>?{t$p{5nybDiF}UaNJ*1#kTsF`l{G%ui zencnwB&_;cK{BK4pT~;{HB3_=rw7Fze5p|>McV$a7T`bCSKM*+b_p(xNk1+{j+Z>! zgn*aJmPGM&f0q*2LZaFYsQ!3JRmtgdTrZK5(#^biuRp}s?he%=$47(rY#-L3*N}$H z!;-Ox2eg9Yv>b?^>WTr9`dM~$aYSEX!{kKEGd_dx%VZ65j9?v6xm1K&%p31zd56IF z5Sb#sCQd64R(@>U!IBtPvkmc5Jr~Z2y z9zlfA7HC)BAe6+UctJ}CFr>eCzlnp`o?J({(>dRu@{aJzefW31uUhIXa&uIQ8UOtV zL<6&HIPRB*gxjLQBp*BQS=tDy|6K$dOz1VPM3X?Hwo@kv5dL}s)T!mVN65dx z|BOhBpny~)PKH_iKNnfaa_qnV`xU|3#bC=sjG(bEbfW`z58p9xQ2`Hv{Xgf#+5pbA zt;GWKI0*3%BUzJ_LE3if9slE!h@&B))_UDBm;>*O+WJi-GDWY;M zl>DAQTyc{)O3MvMypXFEAEYD+DJGw{oeJoah~mhGkHI)2|8e&n4pXC~|KacR80YVQ zWR&ZaOegjpo|j*KbehXhYe73jO9`l30}$-+-{CA;Xjv%R0ky8S&xR?sUT01mBC^1X z;e1XX(`f}d382^&4)zWbiQBw{r^U14EpS~y{$%M7_)+Lnyg)+x88}gIoh~sGL^Pno z0Rt8{Q3SGeZ%kbfJP07UhT8%NgNnyOqp$dAYA>W@Sl1ZA_!BQ3I}k|j=OTEwFqc~~0Idcow z1~j(E_?@hhE`@X$=q9ok&(l_y=f8A=vM6*v*;++ZlB!-O!&d`G)IN5oNImX(M*-Z3 z<+y?G#Rdeoz&8p1j5Zsf_Tlq7*((bj4Fqtngg5KKvb$IvD>3*`QeyA`7DbIjMMmbN z{4SE^*pxS?r-Qnjaa$d@nlEu(e0u($VW~L<+tCaffTZyc(%VrJ7ph+&iv2{Gq-)&! z@LWjoa5-+iMcAa_Fb1Nm_3s4o*4C?QQ|ApO^W=**iD1pS=6C7Fv8@G55VT7iG>sBIuXvn3gr zy)T>>BaN|bW6(nXBB)Lb@d}n*P;hjjedPy|4Sb3^eAf35p|U*hY{w@XI!R=~q_mc~DH}@Dn?p zT#yRNc{~OKlz=G@5|l;kX}M}>Ya|7daexm(y@Wxuebyy-3}|9xvzEbKSR`c$whwd1 zNI-PU-;)tUHb6+r!OQ~URQ2qCdnSQ}>JlZn*+SiokvKi``k281hvq(n?ncJ$jLX?o z4MK>eq>SOnqT?d*LUhLb?e&6ZiMZTPEmpIgkivO7I;F;ps6j{*J1;{djZwEk{KAP^ zYC=AqIB2Els8c;PEji^7QrT4qKDoU7eAxZReI*9(giNtQ#9mM<9P6A zp>X5(58ajZ0jpRJ*LJZA(dUZZP6b%(uVu|hMnDs!LsXj(XmPk1gNqYeo_@vOMW9%7 zVU?6fVQ69PzCG!X9a_XFZw*Xt4wl*$`tB`NY>;fsbhOj3$u1t5+}>K~mk6AUmYW$e zsqu0=?7QXMp_`$!8-2SeM0sRjz(->d!H+WNgp$e#U}N7*dNAZ_fMki1$x!mDlL0y`D@8a~|gT>+V4ArE51Eev+pve-a&kJbTTpIbtF7Pyl#~wgG zhe8`LpS$~6t|f+}W-6G;{9XleJU6ePZF{~quZcLcaUDbB$K7zRJ1Z-gx;4 zaj@uiQvu?|9c3F-t{Rkd!Q*>EzXRb%;%BHXIR*Z-`HD4yy#?N>Dvrv%2PR-|_>s6)&+9cG$)$`pdEm15YA=DfXCB7+k@+N2J z5=1?UqHcm5k?i{65ZY#ydiJgHFbE1Rxfn^Ajx7iSF&7cCB7^kZ&rdgKRQFfq`U}j4 zoX#|UeJ(BcuJTNsL&=x3yQ$9gRZVK48=Z>I(_mVi5v;sQeyCj8|8);>*}~G~%%>GK z5D<;6U;Jl#C2&GzZ?V*4bG~oVxdP3?p4uwS=kxe&a^=wgRoWI8>|4s z|1-I+3XjwG{C_Nf7m+x;g%DDECC!4tngA*6NYX8*-Ij&IhI;evk3Y-oHw4l>(6JQk z-`l?kWTrV6rtoBT&Gx^)m7FPgyD?71|Bv5?uU!~E12!m;jNE>v{>y0UrPf^l(0apA zPng!RP>@W3RQaB|PQVvqRabHF1qSxoz2%x+-dLrQY-r{){kOg}Z2h!fVpP~)usCX? z;ZoU`v9y%WJc-H$T8aPfvVu5=^xxZ3-h4u*W7Jpv&GJ(O!!AwWPSbOGBz=;URm)VS z&qTNv1xLXCBv&D)ir)@{wVyDM7(jt@o;ngVR)Ii@2aFwi>2HCGUA{(oXaNPiHxB1L z=Duk1QD1gE|Dm~?ujax%v2?R#b!yB;>&XE$XQ&;j^gGt7rF$cCj{ zoEt@B32UeKXKTrK{@2^g!<$1`9xq^SCD1TIsN3gHHZ3uK)zoWfQP<}LoCBJ%?B$}* zuRKKEuJc2#YS*k`dB)`e6v_>#ei%SEkSo{}N)z}8xXMmL)}z@BUvX8NuPG&r$n4}_ zKig zwH7NuFryrOxbPkZW>H|kHq+l{=DBSa$qN~K#!$|Og6&CS@RuN#f^~Fz-O|$1^g0+s zM(CA&E>+{*&13%PA7l+02r_g1g=5c?P2Ik{@KebQoO*V7T|JaKy6@wwrILfKq1nub z^H}gf*I3}u!R{&EOZzGdv+8lVPa&b_*As|g+m;L{Np)iNy zPmDBOnX0OR{bt_Nd)q5qbw#h1Kty@E4^*+~7Ns`V0)Pb;o+4-EM~VH<)e=^O`U}OR zMlVdYa?Ru|#a}&riC#Lf$OVNzBKy94md&YnUANC?LRUf1{uEQ1Avfyt_%V%2ib!E? zoLI&1X-kd8tH-x*_nrW&m;Sfl7R|ss@K!g|d^R&srDm~2dr_35`uBJ3Ut468w^9PE`_>*D}a*hGdKQYo$$wdR$rT%O4H*XjwXYG6zH{P%gfw|h~ov7XD^kqVx zLZM#(Z5N1wzl60~e+lb{1H-chM2`>~$RWLre~V5PDmz zR9{bcMR5G1l{hN(9&>f;-8^iyNG0b>c&e72`t6aR+J);Uc^>gRwS)ykG?oohFpBdC zTUH61XU~-dy*w){Jf}%p$Nf%Fiulp*oGUbFHC_Hx^O^0|SxRXZ8=IlDgU+w@8L_Po zz78rcDVLT?*SM?9ZYcA5f?REa`~F5dx!@W{R!x$)nTb)k!(djA{PFaEfVOP-Il$A% z9WoW5W>XIzql8h>OX~=BMp2_8yWU&_iW{IQ1=;%dYRHtZb?GM@o+~`zD|>E?3&44X zyMK5g!0EeK9Mf~Adf{+yW#t5?Zo2xheJrrXDFpT8WRThr>1Knn%g`QUqiS4=DB^Ir zJhE_L#f*xA)LvbmU^TM=EIt(l#IDNQ1qr~5vltsw9&(H_i zqCv;`-#b_@7H~myw-}-K=7DbcG8h&LEn-ybv&JB8+i9AvaM{qQZu2HE{koxl?_2}` z>}e}?%X392Fl^FVL{LLEK>w$46Q3djH%c=P9Q5Yd&8nv2v=uVJ&bvtT-zkF*M4?w0 zf}S^5E_Tch4d|G~u{tt#7cW#d%bRpJxzBukzTHfxo877R0~lcyuqVTO_1YK zUx{GS*Il_>=%wxkXKxu0Q4$$1tCrW`c z4lli;NoTz6-2CPKIKyN*ddScseujeAz)pRBg*x#Q|@j43k_2#(~ z#VhfT5&^zxIPG)Jlks?^4G4_K($Xw09IFoaB&T2B-!Pf`E|uwy`bqduM=H5i4L=NYh ztRkC^7meVQGJyj{w^yznyu5;rcdsNzp`DSYnv+P=;1|!DKxE;=zOo@o2ZKPT8q+Y- zQ0j7I_eL{IP0ZDS^!+h{K_re*p51%cHS%&S=RtZ;Y$#tD5d;nD05q5c(7*;jgForu zOuGZ5NQMD%Xke@w``ud|&|DnYv95|r%6LA#S#kGE+>!s>tI+z5jO|+6agcK2?jjF< z|46oQ{lp;GnJTw3#Rog~)*fB}5q48frco`X9ee9nMsZW0KOiWt$Abv%(_LcS{%5H& zSPc`etMcH>E{MJx6cV*A$fEKwpfe*REOSDcytPGwFC$EG*Kn1)Zau(fUBm8O%1la! zJCjvh&fQs>>>vk3ir4QL{dpP07aK7Hj?~I1r3gPjQ1PJ z9&IQk`D+Z|R4nJF#H?Cl{Fhr*57*kjHdMxSm!-1)f)TsC_cM;QYb~vB>Ko#E9wn77 z`?S}*1@xxfDQ~(Jw%Bay@1zm2)-a@qD zK5R!mA_@@#f=A9JXJDww%hd}78-+E?)gcUW`x}`@qRAcwUN zLsQwIEm7Aq*%-nga+AKGcD=0;hG3U;UK}Xirr}iD`PSpD6=wqJ^Rq_*sBs0LMjC*c z1E(wVMCjC?^gvkVM2H{);ei3bC1ku+wujxF13)F=g`7^fq2kph^tRR;ASRA;p7T9a z0-$E{Yvu61J6!4N@S*z>k*IOWliiKkjc@8SYq5d*R+|QfW@W1@fk(crPtT|qJUHB) z?Ls)Ae1RehTJ4^b5UA{t^CosjhrXMPasYO1pseJ*Jgf`Le4*&Q++4F#zb6LOioV}o zUaZMCD!%g_1R^NqZWenoN20ohwnvh=2uehD7rF0qFv~Pjd8_2!_8nH zUtwL1L5S;sMEmnAv!#|--iOXNJ=7aH&BlE9xn2IJZ@n9%(&D&acVh$d92W@=ZZkl* zu(&wPb9-JT9Ze);7M+Qvs!z~I(OhlE_mK^S!D24Gxz!lpKhwF7=YE#hgPF_@kU5V1 zVcEl`#HM5p$qHBKeqA{hx$!}*wrsC$HoP`u>U?D{@8kS&gSe3J((DfuE>uOD;0(~6 zfK5waH?1ZN?4>XR<1mH$iFg7EDVtH|1d_ogj5*7J+f#agGKG2=UaRc-Ppq1DI4Mca z{6Zlt8@8f|OCy+M6fEa%h1P;;)?5+MZ~`*&XM0oghMhBBSgWfv6(h&@wU?_8p@OK@ z_!YnuBz7YN{lloUx+`+z2cV71!fL{|qc5Wo_u-#fONi1Ek&*i6pLrf#N=uWCAteSP zp#Yb#Z8bS39xG%?VL-w?^Lqo2%PTBJ(^}p`G^n%uWvyk3QK!4WJY(KF0q>8XC^9)cbnon&F+Qq8(tUZ`$asbzuUJ=3@ z;fe5E8X`w*VLE|Bzul8M!V9PZ5u>oLXB3_;C0ZZ*H9rJ*CNEAjz4j$U#=-Ko-r_^CS{|y=BiU)b@+usR=z91XNz7U~6QybGTRdbhN@LctLRgZn$>kHq632I+ zXr8+uM)4d0a#*!$$FbTHvV_Sjaj-+RkSk+Za%lK$?;Po({f&vLYK5WMc#VqCOAFkG z;{HmCovdIpz8}}NuXA~W*j^=9S?F|vxi^J|R4ia?s#1N%eE2+{%3lBf0TFl@)B646 zDC6omJc@n%;h9)aQy4Y<3VaK37WSCVW?pxNx1}ZEJjiCAo~OAw#dN@AYp2loogR41 zeD;nA-WDf{FQZauxfP@+L=`DTHxMnD<5O_4l>m#eLX;>d+Dy;0noK?hY8DIrmaqbw zQ?6*d8b0EXJQ3`3IFWT-JQyA(ax;_2Nju@9zx0b8d16xv(W@zM(yzhA`3q9&l|WQ^ zKgo&j!0F#X7FQ5?p9&oFgQW~b`Y#iuUBs3SJjU5#^7dG75>^NWj|5E}3~*~UBtUYE z+bnk+=I$t#2IEwN*f0peGB0tWhARoh4eYwZUHVqmV+kBbSsJZ|V|C%*SK150OFxvp z4r|>B>$y1P!q9e&H#F~^jXz#Li}xxl<+6wGoYQvhweSY@NOi>5j`FU_JB*=u*X2XO zuAj}2CWG@aO$P5+Fhr}9H+7*9BLmPoTk z)|{i-MJdx+W&}bnK)Fo_rTEg09}_jumGj zRFd@N`*Lu3rMtdiYLQ|Xb?^X(4Jz0ni+CESe0#jjMjbkB2r z=bj0s-J;$vjr0s9E^MF4BsQOGIjkURf%BFYUfyUccaylgmuF*W$z>^R$=^NUd$#Ch zr<8^6hp7NopO~GR-yVW+c3J(O%o?4ZKa&)uDbNF@%JsZRpRdkY=9_lt(GIxaqo&( z{;o_+sbZ1UV1GQArM)BWfJ@gOI?OBU_VEUsrB&^3YyDN$Jh{rgR?4oCwjb#4#pQJ3 z@Op6vw`J_&VKhn7>8=G;+wD>Y58_yx3V=WQ=~n7m;T9y+yrTl0utPPE*`IQ^wlCp- z;2aOQZX8?l(mc@wU;hU}BA{KXIRp@SK1IWnWgvf9fU~LfPf;vgslVvbojNY-g%MNh z!9Brf7CF)#((dJ|>rx{Z==JqC!X46ko5RO{X^d-5s~ldSx6ya^E7zGWV$W==Z-@}Q z@@}@yy7lM#NYBX5+_+LVg^D&W-%|ocx$hg8k-_&~n{{XpK732$Omt{q%@up<6A^9f zuV4+B)~Z#$wXceQsO!kU zVb651+Shi$V67_6iH4!0H`X@K;0nVh9>39$dvdv?aO{%lK_K<2aMqRANlO?BS^{N)=qyFS{pOfGez@{tdx@|FGfl6=0D5$5Xjv9%Y{ ziqfyu_Bo)G0?Rv>S8{NzB3ps-Yd-8x{r$xX_YYQbncr2E^C(C;XiWt?*8k-sH`rG#D2crz5IW&;wy^g5`eZ`2qF-H`ik+uh5Lzy%HJt82uY*PTQEZRV+l>R4L`=6PIR^5s?Y~CCQA8nOnWVJu2M^k2zb-#t_z^DLyxA`f1xl;H_Q! zUrMwEP@*pgl<2iZV$(~e<6>C5+En&}P^x*<7LPbwAW~^Z7$MgJy(tYH2F#TS}tCsKsczju>S6Ze63q z5W8HT%$m-k^GTQy=ZWuO_2LW!Ag0eRZ(J8)j9y%c4ABtGjdod*h>Dwc+zRmG1Yq zy%McydIy&W7rhu(3&r~|hSZqr1*2UjvWOy@oP1dqAkoWZR)5;pJUxQ-A#7y%wDD zhIHv1ob6}qi+48A>mphD3p;YTG;@nV&T= ztyk%`wsPI_Ts!2{*sh`IsV>~8E?&BaPu3V(FUTM3P&#-u>Ms)5xnGIcW7mw*mhkLn z?OR&r+5EJgwxt*)IG~g+7dyRWYIF!dtbFNnEdUJ~!9adC>tx3aK+e#~A~ zegAz9X6XQG6@kXJ6hvt&UEFjn;V(<3o;a~$ff?iPM7Mv`s5!VPl$8%T(9P-tJr&IBP6BKjKVd*ZBKua9fBe5E=&!6g55!eWU11P zuvc5@am5(h&&6iU%@>PHWC;dRQ+7FV5g(3rSRItIwZ5A+#N7&uw`U^irw!(&5HwTX zW572%+5D2&T)wsIK4Vusc93ISgS>)v_8_`U8`xF*!pC`!Vbyp7JSWgdn{xK|t*p<7 zd=m%bC-LshMU2rtG=yEcSS+}`X)AImr|rG)zE^QSZy;QRyD!xnN3#F?{Hc z5bZkp0$9RW=pS=5aIE>M6IW`_Z|=Ss|r*r|Gw$1^KeWT>$q9( zkGvU}x9uJ*C>eyjUst}k_vw}D)|tQ>+lss(3va7BySBoCrMU^8PqS@13JV_F+c_D& zZ8Nui$=}cwSiR>Zf+};+^f0Lm_ThTKjEtD8Pq_TCzp1&10dZ=@)|tqu?VLkW(;6ZC zXf;AQ&xeHO#Kr|4I76=(+XwMK$9V=_u8iMaV|yGEIE2PrAOS6!%XKu>WARP7#UR`DtIW}k`o_-h*5k#^>qX|%+Z z<#z@X2ba8XJ?w6YB8MuJIa@0&cjr};lM_1n_vF=ndCz)!_F=b8mkU~h!1ojabmVR_ zavskz;e9<$IGQhn@nMS3n8gJT6CVyK4b4%T(}8s98nw<`>h!1#E#F#FNMiyV2f=n) z;EXJaL*skUwq{nUdg&i&7e*;rPq9McWu6Eva@;sWyBtr!6$x5(IeqiGdMOw8!7VvM z`If!5B&Hx5ePi3xu5noxHYc9wCO9^P++#4i-&K;|tK-I=DR%3YwQ<#}=BKPAS$S%h zN_1&qee%)*iPp&3+y`{7Toky>u*{2MsW%QZR<#GW-u4V`{dP#VozIt!_&#|!D%`Hv zo^=s8P_p+upf2VYDJN)FtuG0{?+ywNHF2`KMm9 zzdVm8t*iK(*_*uPh&NdTVxr)tsPvP$lHW>iwiAEhQbOJ?)Eio}M66KJz(Rk!aBbTR zISuwku+joDdknFu0CsQcd&sTT>)GGa^|V+k7NyO^qB<-ITz1vrJbH`@Fa~xvs146h zQ9cd}>=ZvypM=yFyLICz+rf@ET!c-R#7RKsy7DD@Vh8HQleN;fXeRFdPGs2gA=@Ey z4c__KoVe4#uOoSt_%K~ir6zotO5TM|DrPga^gtA`b+)B*G^G-K_(Wl-ki?0kfT&(K z&B%ge5#bjxccqwn$in$Oali?`@bA7Izf~3s=j3p$Vc_eCPm!G2D77vP(k|U?IHg)q zNXJ3TNg6;td@+hbB|?yKKs7ah#B?Oc&)=0!Ps2rI)ofyFKS{&2jjhD9^X#&A6+<)G zpM~(&X~v1euY3^_eY`)Pt!UD_M{#pTj#kF_9O`~Pw;ab|E40=%9^M>Y!WK4rLnd8g z{L4pNAk6v8Ru#{!LwPOLA6&Eza!ui5sVo|&KAp_6|D>PgGRIL@t2!M(m6kjb`Z`?g zdFCl~V~^9ZOEEYMjt%3Co@eGky~kg`4>jA%HSdk0YD?e-fxbzCX?th%=zpKZdpGa3 zhl5B88F{s>)x@JvMDaKCxSkMd?%dv-H`Jgl`8aHB(-~?gQoiv0x+5JlYgF;Q;^&8m z9n1Q@-Z9`70eOyl#I9KfmpuyOn=~de6YTaLK11F&y;cmqrhH;*S6OCj?R18H>y|Q{w~sZ` zQ@8jqwX}kayb6QC@|tvZ?t+l~O~qp7oxtWq)-nZoB8OW73w;a=oa(u9nqoI%p_*)MVjv(MW^!=urr= z3U3U(^ETWaJNArhaq6WfB=G#%^sxCTc?=;g0KUQlBY2_faXLF|s}A*nGp$~a->EhE zA9X&b9`Gy5zZ=`t7DSw*@A$zp3Gcvher{+@wMIfpPg!L544F*LFV<7i^24+-K(0_7YRG`+~*b zZ*;W3Qik=2e7pP$G^}+$!c(Gi>)a?H&{2z9X`FD9~@(6 z0}!Lv=*gnqp5JeiZeAHIYbHyu=|k;*O|1&MimsOxAcw1}QTm@p>^Nt=D^dIuAw(b6 zz!E^^mn3+ocnW!XhrA=*ERIj6^X^1x){;p5(Z#GAzgmNimS(S_r5|#vI%`~RTeBWJ zVt0K8*nG#?=w`ADZ|`EX4(CfvEk}3(Sjse{ zE`IOGvm=JDY%a%_hIdk%Btz9( zoXOV{)lODv=u#TPZc&r>pKnXP8J7$gqiMCbW|SACVU#~l6Um;C+{P11oi+J!GC^g( zAJ#Nrg7#B?JcKAs3|nOTTW3a6=;HMgRbj) z#8rOsAVYLuScfxT+rT1dzBQEoywcVhgY&TLKW3No>h^YfE}rM6L|lRm5zpRu7%MMe z0AM3&SY0^Ji}oPLpyxOzTyYPVPM!h%N*Aj6`ju8%^>x4CojsswC<`44yDfhv+&9V2mU`n9v4QhU@Z%8&ZcNtbJEa_4MZ^1+G$jw5P z6MhX7zGH|2-KUzYb2hL&7!4$f@NVE!;2_$MpQH4+R*kGO*7U>eY2&Znxwtt*ZdvI~2$NbO?asRonY&PWYTl9pgX>rdp8u zRcLN|%dNh3T6C7fJIZVs{+7jW8q}*kRU%XBd%SrW9(r0e_E{Zrl%8F-{6(8i>li=z zJ46-}cp^(CQI`Oa4JdmNb;sG7fKG&)%*hm*G+-uw7L}X3+*FEOCAQa|IqWg9G2}Le zwrvG6tr}Yz>9pDjxQDeaJppj;p`|k3VDSBSw@UKqH=wItY__r1?4k$%#EBa-s+i7i zGC0W&G=3(7p3U~#lVYJ|a;-%`BUj@xMOV{5Hmk={!d+tV1_7SUzz z`#Cn?w7e1=Fg!*wGCbC5zqqm-;h2_|_QKumb4(hbqZ48U!nVd^q|TOAl;Lu4Og9kN zNlW}x&lwZIJ7rGi;Ihn@CtC-%te|o0wrw>iN|EB*(qejb%K11eHfl`t<}vqi(zx4D zx1iVUPTC|#*!ao*?C2kbfSo=QQsAQiwf=gT<4cAH&GHRvg#!d7r5cd)ZyeExr`a}m z7Y4M74g4+Wg9~|cfIV7E8Vl<-zn$>+@VCGzf%QDKI2BB#>s5A#O@v4lQ9z_Zldl6k z-(>US^(<{-+#~V6bVJz&{#8rr2N`eluj&QV%H%8l#+8)pYRZ(~Z$6yao;;lKau1Z~ z9kAH_)UI9JKC6vubSh9xW6rw6JK;Vu>O+1cUSM;wdkwwjD^Ftt7L9MSg)Lkyv;wsF zpgczt*zo+nTIlSWwTBSd2rb8-=RmE1wrAD+Rp$GUX@S$Ad|8prW4~=&xX0I9@6T@9 zbEI~jNvuzX1xbFEtvc;uJh!vR08?eY!$aSHyJ0|OA_)K#3O<_NY!66&*S}^Ck?SLp zwGILInHI!_QY|DxMdwp9i38haoUf$3P856VaW3G-1aXMfFLPK^Y7wsfg<}wJdwo6U zj#ZW@D>p%Uv`wxdG6`BzSStlH!#VA^hdFdU^or9^NnuAd9ZZ$#QM~-FWS3v2A1yrl zhWeY$3|+d5El~~aC+Zc1Y+>=?MV#Cpffv~iNj>W#vdt?)eM)QOp?-oe?fVXKEzsc7 zJ@vjHv>$<!cByHBsPmImi z2kGYi*kVVGDTYt7>w0+XNV=G99Z=&{ zyAk@d&4b9+_D6<6QiH&)t?)xiLd_o+SFKv(Pqo=aRVQ0xcH-+7nP(3tg)O~g{m;54 zVJxLq=_Yte9D{y@IZ@Z-Q1(7i2+w*qahHjCx)Z8oehzuyQ+m$ytmt&)*d4iWq=_k( zThO7FtQotj*Chxhj6%yDNY#v-7^rDcSb*=@ZUpj#*d@}>5Y5sCt1%Lx!lBM#)3`9` zO%bt^m?i*Iqrsypm6p_%Xvh-^Jf8L(Dun0RBtfbx$RK{RS!&7#xk|kx8ONZVDSlQR;%HHBi(th34M7NkgkzsEBz>XZtMsE=wF5o<6#f;a@n+%w?xGA34e)t} zIWZIaovh?AYN}r9$RH8tuAb5_Wpm+Qi+#B3MMHdqq9@ZY6_Hd-1*ABeX=AmRPco4z zk!*g+L6gQOKi84BZCi$E<_6`5y@T6_Y|K|b1pDPW?5XN61}frb6HGK2-?n0ovb;WC z5s{S4j40z)BD-XjmA%R)$+$C8 z2#I9hR%DNi%>TL6^Su1H_7#6y=nPg$Gbi3md2M} z{nU!m`AT1vlg-drpjRUadXimWM0IU}+DG^<|;rJOJH zNhS5oH%V4JH~oBHnMQAT=vucVLL2f!NJTRsh{-f1qPEyz%L6wl?B7G~sAjYiaEl_2 zH-4VH2@E`yUn!;R=&NzU?B~6mx6Tkgg*aGfCEA}l@|bcvMwmHiKEHB=-B8xU>sfM;8~8_eOMx{xo9z6&+t>7ZWysA_cRhJC{o3}jg9i2@x<0SZ z=Ls!x^rti6%BxobyltK}7*=;Vt6k95r{YD|2tq!?w#Q^~yHD;8PP)ftvY$ft+Q18n*l?zurM6-WyT9OKt--ZVS7nj$v|p!;KS)qS@+nr-@dHpcei`!252Ai9x<2H%qv~!Ecs*F#NH!k zeR)3ZIbWJ-)B*JnzFwjeDVS`wB4}D7Y+i&|s-D~AC;pPCn%n&e)5X{?8^4uDpOpN` zlCP*vcrrNRgYIIp&KKu||$K?BInZrtSQDN|}bz z|K|$s!mS)08*7or(a|Dy6`|dXhvQR%i(C8>WI{7`+)yMKKOktT)aXmq>3k{AyJ{w- z6t$JaDE0bo^-Tk>x*7iALK}PwG5dBBK8Er~_QBi%4TZMos?>gV^tp`FeyDZ6?XA!H z=OmmF7#YG`S!eZ`Ba&?-M^WiG^9PmlbT+Hc1!@b*Ts^iusUx4ApWLk~Zm$Zjwa}tv z6(&X(BKiP-uLtvllq}QA`K1UIx`$ZPNWMBJCMQG%+ z<2_7mclcVf)Y1=K!Cyo-vFgBfLS~SXZwj4l^Gy;?f-X|L^8Ybi%SPomftj*?jKJHs z6ZB-PsD^Jh{4}V=e-(xtqJxrFq9u!F*f~!kQHiS+oJ$GzSD#n~-M?V^`};S1df(1* zydNfrwuy`cGrMM$VoTFR$BHlX_aph<5$iy?L%Qj_zIMt#;Q?KBpoOjg+aFqI{^eCZ z5BF(~;Q>WVTZY&BfXiM$XT!3@{@bm(R*SqMq(Yi0mzghNKRoS5XGlrX$S`~2x;}%t z2FUUU()dxZ$6m?zkHHh$%7)Zve_9 zPwfJkMEYm^d)=Vv$5);dpwCD?WE@Ky3Y;)askF!?*AI=nbIC|h4co|QX_1zrdOJxy zm-Xj=zMA`0n#KR6mMcWbU1qKf?b=>?fmm4*RB!B+Z(WEd3kl~<4)#DU(@88zauCKQjbC0_v z4Gp;i7z+9l`W}J-7~Ki}?)+uW)6xPw@N=Nb(T2$)Fi0S8o3Xcc&a%{g?G z9%)f<8^;ulRAsDllCutj)0|=Ej=F?7;DF8;eZ$$}8vdPcKt-4ir0Irzu?q1(GCdec zhT;RJA2JCRPftJ5|Ji{*XJfJLRd)A)w_js~(!@G~A&$6H@^93-cM@L8;q;qa`yfVh zxq#EbcOJ~!2>K^dK>>X6qEn)B2;#2eW{h%FgN8@M4-W`__yxrGH*Fkh-2TXk1Rwo? zOlEk8aelnD$GN18Ftfx-jj`T`H{HgB%7F&kHJvo<-fQk;{@!C=HGH^`Yb_`uBH}Pm zsDY;RLxoqA*|_V~LHY>>QuP^`e|hvb{{|?c)MXZ+C%;P9WERyO;y69N{tc(@&*|T~ z&4!4NMrAnuIaFjVwXa9mK~{iOHIYtmOK53a*+k+j1yGq0^4}eNG!TIQ9g;pS%eztz z$q0WpjIq8(=1tsx1m1Y+Hlk}9$ld%ML+7sogx6=S2aMN)eVIEd^=k2$$goO6N_rXS zE;paSp9A7@i#drX+LJau4w3{Zm1!?5NJ5-fSKRB+mB?I4zOLcypiSX`#9InABFc?WBqV>0_mxOb5N|)+orPb%% zbR$@iwx9C2FaG9F+L;S6ROoi>-Wk;@Hl!XhV^|P1h4Q-sr)uQJzq0p??>~!z?JmB> zG{^b)=;d+b%^oMThb-e9p*S~0F zXny}M0Ed~klaIXl-1OTwJU5;HjQXz`qd(-vUsY9e2opKIumiFb_F*@5^8;T-_nIlo%H*cc#mdKfqrPbZv z;wUna@;mJ8Q^gn6|Ea-dHT@1~TRDrk=-6CpDzU|#LMgp*4ZDty^MB4q`ChLKvw5x} zl6#2E9syO%p>J11u;Hnw{$4)IU1TB!SEo9rLM>jKM@o7wSzZid{IIz^{zBq5Effn= zb6$#g{mwU4n?RSc+1P54;#^NQ2Q`C~Uj`fH{QKNiQ~t8XnI@Di-`ej9!Oh#vINtix zBB#Wggdhj7W$!(VA8&hPboI=cx|BbGxzAT(TEqlp0tP*`ayAB%yIFXOHgQvaqc*? z;S6OftG~4T)bPGHr|>TPSUZJQ z!e|~^KT)NqkRU97CjsrHsZjf9n1{vRaLj6{F<#WA(RQa zGZo8rYKN#$BiwJDJ?~ecVASASRLuCA~CHg|W zhaL1k)Rwx!T_rX6QWz3Kg&#evO9yzXe(aCitd8f|D@AUlWWGTs=au*v{C`H3%d!>D zNO|&^jlt(9E~upsFa#AIIU>CJe;t~ghton2NSx2Z9a{Ar8q@s{bw4upFzH2~o21z9 z#spkw$t3TQ3l>HK9^S@1O?$0zarc55zkiuOQT0&Y(IN&J9pK#PjqC%@#XlI|3$+*H zLwF;&1-kD;Eq+TNbL`%}X|<b!xj}#Ainfq6NWi-#=5fi;ExEQGNxbYzQ74m#RDvlL`l$X=#t#44ku!?)+Y9&!RJjS;9h~T0+9lAe=~1UE8w$9M@sHx`C2*XYjmi zBzPHgXvv|$U@UO9D`gV6a@7Tm3ML}t7YGkVw%Mo^jc3TE-DmVKMzWdPwxVsBocX^# zTwXz34#33>!cJ)loRAE9wd&ORiAf~Jk9;smqzW`scA2G8*LGNEw>_aKC|SWwv>vheoaX+@A4@gn1lQF63&KjwcV8#PUx1OrAe6@AyrT_YxES+aekVOSsK9? zJ{fzgr8~2*giSj;s*yHZua$4_C%>d=bvay(8cl+(;|ZLV;Y?`x!b#4vFs*5f_+wCS zDj`aNVLK7{Xwww&V=3oiVKINM)*n9AZLSFS8`YWL+M0@gZd{Cb{r#~fVzS{%)l5eF zQt!kLACqaz>^?UY==ge{IW4q7)bdQOR&QRmv!Ht-mdBNw35ME#v>~W&$NkbJ61Y%r z>})R2m3`BktJ~iTW0n@VUY{iunv>(l@i#+ahhF6T!nhjMEmU!m99>lswmJBV9Ppa^ zD%c^h6h_mu_unxi1*P6nOOF*NesKkU*mPuHM<2i}@Bgw1qF#3N*`|C6AfwZ5zGVRZ zD?aM470x{bfd`I@TPnA`q+B`fQRtJ7m17&~X-6U6h>o<`{P0%d2>lb6jAR5`eTQH9 z>t`VsESKr>!LmW5&7wQ`fEshm_M6@=bN1RnZPQIlD`Y8+ILKe#muEBd+hlT<5Iy~O zILH(e$A7_X+*n=3Sx%I78$sa^%tw+_2-<-p+!mpmMgQF!_vc=pne#F`2J}AEz7M8c}^y9KK91S1oxE1EboBsi4^G?>2+d zEe^(m3jXgTJSa{udlG~p)oLD9Cc?!Cmd|y&19de!Ydi_|T~j`>i%y}!71OJGrk{i? z$vx)(Jz*;eDXrY~TVGI6$XnUj-+XYM$DfqEQvU4 zdhsVM9saxLGXg(?xM{a1cAB!92_}I*21Se+Pp2xOl*YKGL6CYoOR0!un)$!ok(&w; zqgr@4KJN2X)n9^GKB9sM_^vr>mgBGv|Hhrs56W`7c5a7mVzRMX7okb9ojdWhCvdcX zL;ZN+GKkD5v!-9WHC!#*%=W;(TkNmT!KKoOz=&M~jD)_N3zzd=Tw?PIICiZlnfw)m zwQH%Lt{-(~5mlPuxXnRVNq(#B(ZC{co96I7E#tKY1q&Kqs6IY0tjQ2Ls8NE@2U8#s zw0D!9;TRBQ-{gQjZ&zT`8aoJ@EIQ3ky3OwmF}MfNT3|zQE-mD2ehEBn>IQ`G~7^3hBr*f`91 zQFw85`)N{h+67EOxC}^`$>&p(`bk@0BuIF^FE9I{Z=j*|-t6X&zn{#@3d_M>zCDAg z_r?cZJlM4TWP`-^mxsUGi0wJzCGq5hS~-P+zf+d4Yr>fk;&UF^H*i?G zfwkiQ@|%~wd_7$5@=JbxDH%paU6SVQ<3)nkL&DbFofZCWrydNPB$k;iDV^z_Ce@G6q0KJF^H|%HNB))l%P@^S?vCQWB8ip5en|%bnGXq( zt{>HJpLljznf08&DZ0&3=*CH;k#D)anLd+nUTeS!6JC)gzVN(dvDMOTFSkztwYW3cx&FRZ9{X$n2NyaeY+ z^v0(n3zg$k>%$Kgb2ug4N^#?)k8e<#=vlTz*fWMU8FJGGw~#+v^-san5$&Cy*Wxaw zzHaw!!{4R6+6kH9yvs*LS!51R>wlJ0!9V)E2F;20G`Za}2eJn@ok))|=O3TbS|-v*uC4A5v{zh0)$wSEoA%ig-|-I)=-rMIxT$;Q z;5ay;YW$^P(fBiI15(zu=IjW{uPne|%~ysqOLyhyaPnxx<3Z!$GswC%f^Ab(V2hM9 zy|5-(L@KzCp6)BFC{LrXp3 z#e-8Q&=uyaTi$q=AX)F`<3P&$xRmtUjQdHm$9q?}w`UG1kTpIZ&>~jkNxY%>!uhlp zk26JT>3OdQyl?w1^96d!dhNXTzl5XG_tojWj{g?mNPnc@>Au$8-Lz#-Cd# z@z59L`_8C(E>db!RI60-aiG29I{QZD1N<5cp?hOUBFWC{KojT~C$kf(eR=hG>cFQ{ zWRJ<3xm*oykS?J{r${X&p-qS__WZfd;(!8PCE|8oH!%~PhPDtyY1{5~Gj(ldAP2Dm zi2~IiyGv{fi)K&$4elO26BCoU^4@ERwuPC`T8|lMi4200(9S5e9|2sNP`PUty4gJ` z7|(86=A4tCczS_R;+A$yFT1oO%OcxS5pM8^TNo47*Y5zeE z$)HJ&aH9S}qSqvwJpHD4XSnmpb-8+mUz3t2%&xHWn)Uc%iYnX2v80Rc{TNRFLGpDM zbn5ijc|zgmViml=`QFFubi<)BZ%?JlU--|*U@V|EAon!N@dUk*nHt|j?ydgN z!=x&VV)fmOO1wJ?F)3D@&qXOe7Lqn8nB2-XFv+JTZS5__k9cW;`&} zqRzK1MJYum{o*occXhpWvbevoU>-yFv8(+iLu%)Bt@;>^^2xXWuRDIh<_NKmt0ze^ zV1cAz)59Mdph>z*nl#U0_VwB`by8mM6ZCzMsT}dW>RIUC&c?dZRha0vM=ll#G7xOxOYgF}oP{jM(%KQ)X_0dtNa8kXO`V+?h zYwQcSt+yBHbnLi&hkrosIi*w5itpRTCs`@NPIw#cAL`_MXZE#Nnx;0TJ>a&OfP+}> zR>$AFv>`xRE2>LbfsOansYnpd0Ocpko9&6J*_uh8T3f9_=|-pdx!pIu^LJWibG?&$ zXJnps)~*Q8;SmFv>&T$vb?$8NDSxA=4Qd{@JA8|Y6Z5+DWi$-$q`eZz5)D3#bIZ!b zGA~}1(b>^CG>}Na5?8HsyfQn=I&Onrv^Hc`fQg+hOQbK>mQ2qCRhEAvX?{LkK=Fiz zdx`qHWzEk6A=eUmu~(jNoZ_vX8cDtq;K@7BWMdtx5_qA#7NHw0f^yzt9G_^KSIz2>M3+X-*tC20c3`Q`dZvSZ6N*q!%- zTe1P6$2m0AWyK!%>37_?$a+>yuauM_GOFw9!=)@j0$h8|_Jl$3{JnBC zmbkOTMjaFqv1j2ky%v6F_V+gGUVttfYQDdGJWRZu@az)XXaltp(JR0Gy|UZi0zpyb z{qNwapD*ti7g?e^6jmuvh$0o(VYcVIT0eI;Mo0(%d}ZlnYYw_J$7XM?w4R!RmlW_R zSnsoC7pa;~6F6gZr?+78>m~M~nRhQ0edJuH0)I`_?(Z(Tfu03fghXJZF&72Zoi(H*j+V{$zvTIM2tp*LMt7nX0CMHWe6tM)5*1R5hW}N`i zUWLEk$;}lt$gH-BzrA0uwKm&)j)YY|b82R}nSBbr3~LE`VftC{>L83Gh(wV9geHTC z%nBY$Eqed=tq9ql@oI1N!e4Wj5t%c)KP4ux)i37WA!EnC8T_zYcBq}VZRpR9d1b*K ze{C6Pdt7s1W#^wzoIiI4Kj8f!q^81Nws2!XY8^W0`BE$mk+b=+SJHbv)o!$~62DF! zCN1#E-TQ^Z$l%A~nB-b&3C-ccTU9arccoLGPT9Y5da)ddbN%Dt-$dOqaUYYN0?L;1 zC`Qd&`JDVdHb?fHw|u(KRai@gjhvfdkf_NlE+4 zFTl3wntVhh$ERa#94`ZRi(0cUpu^nchY!<%RG9!Pv%H7BReb$w1G8y8{j_Em*J(Fg=U zoqw%>5S-4blzadWj5f`Nyrz;eTSvBsH)xUf^xfTxi9m2*_}d#Jety4J{7Km2kuNZF z{%|PM`a&RuDl!67*q(ChAaKOZ1_*lBBxoAebWP0^HBbq%GE3U&TeU>4lqJ2a{t?9k9+&nPkX#2J1!G<#A50Mv^+(HDBI_x(0XU^8|?@!q~ zHA(ccTsFJ^E3;?o-W*5y&@)dmZ=2*KFc#zC!HiJ)6%AhDJSO zwcNS2TY*b{*FN{^de z3{3Z7YA0v%3qk8L`8q^!qp;B9U9yXh*_f69<-$C-=XsM`jr`{tF5g)84mu!7ufNJ$BrFaG;F$3LdG6e#^D{mVj}6v zcCNB(BIWE`JIAZf7BO#+6bOBO(qzR&OGe6G9hUcaS6$aylcRju3X(Nzg9UEHlULb1g=ujbSJ<3tLq^Hn`nL z*sg^;jBuJ!C@@c(ye~#E9u~^3{ErJ@!qedrpxJ20aXRgw^?R;Ixx+wgc8c#ykP$82 z-`jSbee<@f*5?6;%>BwqSCzNII?G=dX=mjZs19Em-iVWIbKwvr-aIAB!3j(6GX7EC zXBi>*W_+3_(>MXi8csJWVG9B()i||rW`3@8Zv2XXdA{Atn0Je1;gqfXc=o7`{R>}4 zjC!Rk5-8&l$JP5{PTCIN-{A6=YJAYusF|c|HTRc)CODmjOoig^Z#_^`RbL#gfzxy^ zEux|{K{cMYTyFlTfw;B53O?p+zMcI&dS~KMy9g6`&$(T)Cdx(ZJFrp5VHG8AcLiJw zXPPI7ASnhiQr4AZZnwL9C*3F#jXqb+whoS5v#lhh6}`0=wW zo^hg&8!NJuf*%%sA#MW@TypqiS*So5c#6>>(3iME2SD(a#&MUGm6doUKgD$|iSd@k*JAPVxv^U4U_$L$A>au1 zbI^YX3B$S!J+N7HS$_S>@eyM$9A4LDwe7|Z^xX@caG;S?65I89vE9Qj*V{g8Y{^t~ zc=X{TI)AN`SM-ZZ3cvWAR8PGOF=FOL-g<1v z-(A0_U+2zUEtNof&6Sr%5t|#?a_!cjWC?vp0J8FBTxLTxwg)Iw%S?YcsH?7!gHw`T zSs4#k=H1_4FRjAayvTZ`Klw{QJ4LuZb6(M&6X~H~X(N|?Xo`2FK=(LXXj6%>BeDgf zG4GFPo@7_|OmU@IGG?fF5ZO6N^=e4!dn<>AA6lDv)qv;6X>)64g%^qK5hu;~ikOSS zIzL=jjrOk?x4>6T?3ON9-+MHsQ~~`<#N(DoQn=p%g^CHPGQoR0>xTMo1bN(CpJ3~L ze7s-BW9CryMuh4LoSuE`#gA6SH{pUgDvgjU)M9w>&+%jd8-f@7>-1gO>7Kvc#@IrP zAM<(OBw?{<(9h-?Mm_k6cifb`J|fbXbEeywo0is)QsX{EG-+tu;r z?XcSR`n=cHuk7>)LyI?uj`BJgY_O4B<1KSL^ZH@)18j4gNnte$2lXaSd$8!Ls>=lh zHZ7eS$f=?a61HaNO*s zAE$qi|06-;Q^YJ-1CuIeHRz*C*Gc5tG`p#dZIdFgjnQF=D6TVNKEE_eWX3z$&1)G0b&Z290JqXT`0U( z;|ZFa$0hCPQ+&7hLD@R<-r{ies-}a+=nKOwY^#5*4$19TYH|`1C%r|DhYNpnEvLQ~ z;)v586cvDdb=w7q6;T;-UCG){&Br|IWdj_14D`Ee{Iwg4&_75#!?lH$FA*5d&+aj% z4*c%8^XI{4bZ5`f{KU#*{PyQb{(!U~Te8PT3QA!y}ZQ!47pI z7H@7S1sN1MCQMil33$FPu?l8gCK`3!at{~_l*gTd9!br(OJsUA-smu1`YCUf_=WTG z(A5@Ri7O_gd3<7Wve@zi=B}$N5+@|dxu1l%6WoPMtXcwM44cQC(W4FZv_AgqC_n5^ z?&dLgY7;)*SZF=TQ$h1N&lRDA16?M5KUiC|_(`Y7z7T=@{00%Jo>d}I#@Lk|E5bH@ zE#NjKhuiaMEx!ApF3SAla=bwL#O{k|yGZN^C%u?GhuO5V&~>{%tE7kI!pT^F_>r)v z@!jv#Yze-|jYO4}L`x}fUUVG>KPwjUh(bf)M z3l%u-moiiHu~*-ED9=RpFPs#<-2= zQy=pw61ZuZx}ZMq1)2O8qSrAYVK-`Q1;GI`RC&t}``+jv|&a(fzy0&ceMq z>xoa#+-ARrgQ&U-_*F#^-(F%ZE_lOj##$sb!!dT0;6*UP`v;7)Hlvgx-^y>^7ns3g-ts0)A(Mel+3 zwpw^hfLD>>!OhEnCBfz+hRl5)+;PkPvfJJ(pLr$hx}PAuDAwl(vUe((rR)iFr5z&X zj$p5mP~4J$_qQLe&J10Lq(l>ls^SZM*93>XSHE;Ek3%{+XJRM?V}#DuR?1?0&mi-* zZH0*7L69J9*nB(&DV7Hq*OvM5TlI^Xw*FE!9}9`HdRN3WU-!Q?NF^#4cd|d)$#CmX z5sawu=a&TQ7cXji{v!NpM!qYYnIDN|7@;w@5+U>nFq)J2L_~g$2C@GHr`Q_g z_F4RPmIpzY+HKBQy3~!~*s)T#U$OTCKutJi*rMbHSyNL}W-GVeEo7`$9lq82Y$r|( zoxwGb^0wq#^K`NrYk!%quwA^7Ogo}FykP2B&F7V1;>c3(MtQ_nsa#n6+KO_|PqCN2 zv+_ArM50B+194C2_E>4p0?N&WtfioUfEuzT+>0A5qAa4K+Z8Qa7tzQH{BcSl~M>}^=_$c2M-t^82i^M_dB46+f4ZIXx7aXH#cWbPEM{C*P7hO z1{NS#InB+hZg(9^czLJbI-p{iacA5rPT^v z@{dmIokm&kI@R$>Q(fO8#vS%gJU#A|O<+9b2g7)vgrNd+NDos5Urs^zs(jMrXCNgr zlha_O7?_UPydT$vuO=THILOQ#;J9T(_tAdfWP&ZZf-sht9V`9G=y*CaROte#+1taV zhcAE2l6?2nuldG}8_wN2mkc(4003h$x_KgqrKIPs&{08I)&05&Blk5DHY_pf`8~_+ zmg=}20jEO@T8|8s`MPp0UuR|EoDsQbf~P!tk}a~CHkfF(w~*uqyA1uNiHpm!mbCqk zrv}YUkS#)HS1lFEGDVd=ze@Bv3^6qI0DOD~Tz#p5+7`m~-}3`;Z%2F+pbyAJT>?kU z^TRBRk9OoFsiglNgZT{ZIno5Bk5SqEuuMAX=1<`(Xq!N22-ubp|E0nB>Y6Qy@ zO)n3JQyO~A9emL|QtqZZu3XP>WA`9&VHIH5r}P9?vZuQxM(}fMYdT!>ZSi7{K0G2R zbsjwraf4bGs`Ka_GTtw}7g;m>`wuaKJ4?$@Bh~8Wx=A_W+ab@+h;bw0aeySLj_w>F zoQeJ22VbU|$AFNYz`HSaaST%c5NskEg^Ci+uL%fqDyTSoTVK8vu}4aInk z{~kF5{W>AL%pk)UPxCjsd=aH}3EZGO>%I~j3cxi1oLqt2m6-RYGl=fvLB}~~y2Ue> z?H$uC9TS*(*h-!XY*;Fi_WXKZi$nL(&FE6~5LPe>mc@wGhO=@8k<(@Rf@?p!da%kA zmfTCT$o+2c+M+IbXUCfgLU_m-ogJz5@d9w@xa?i7E3lp9hTCs|ZSqu{;h@xTCFB_k z#Xe~sA264Fr-`X#$f=%h_Y6nEL3-U!Gu zxPaQVGV2}Na>T9}4E;IYSuJpgswgv|0n8LNni%U>@Ui$NSKWQ|ALxN2X9vJja9dlO zv7uostJdG+a}x4pkiv64Rl9jI^r&!%TwoL+sL<)8>j&)ccQbkUo*=Fb&2$c>Uko1u zsFhdz+gpreCzA6)X++4VUnnLK73ynBZDAl@_DqEI8V~L&?h-D|j_n?C=b`DtgB5Vc zM*O$URa&*AGP{kjZHH<@kWg5FCvkHVa>MfZ2)FVA^_jAkSzcN)Exw*K;1-4-gd7+6 z5o#9FRbZiJ;~JP7K%9QUSv!N^eBEC&Sj8~6UdF^2ya|WB`Gb8^O!Ov6L=q|sqlLA_ zzIEy^`_&0+#XYv{Da6@e!ts|ZI1`1$kUK%nV|r0#lt@n$pRM1yD_d|FY{Bi|*XS;q zn3~FVc-Bzpw|hr%Ynl^q?>4|=sqg^WHs)q01B|9;T`I^6d+S6w0K5QqQUMa4Dr{$4hCRfG3Nd@=_p*%abIf_i#=q67*!ZNlcxiu(BPN_^g@#QqOst;6DRKgg= z9kUI*w=@X$tivpU>v642C zgI>DhuOB*>Seqb8)(+VMFKC#6LWmr!a&ABD-ix=(Jc523u@MNi1e3CYBp15%w9rpq zyikRSfi_kO7Jj>usG9q0R$pF9W)92)&Q8H3@x*U$HAP`-Ivs@=d;LkfW$?P51DI0n zwR&r)N)k+u^%CKO$JtyTasLJU!<tj?u|h%+6K#E}p5+TQVt~4u5@lUCH^(Cpw^?>HfG#Z}{r&nScM3|u6p%?Tz9AHW#VRbKZV`x4O__egfU5mAQ`cvGJLEj>S~oN>OHo>&N}7ab^QPdm0Va-eSDCp6Y)Y=WW;7TemTN8GF7OUr5$fTm_WlD zHFFIvbcjRUesw*LyLLbLf1QO-ZDr@KvL=wZkt9dTU1pM}XH0zd>>L<%JBMtr32<|v ze2L3)%31%andP=`-p+|;a;Xo>l1xxAjv~TCip|t?LR(+I5q_uU=;+v(n^6TOXk-cU zY+{g|f*$Nd3vjw2m2<@Xb)da)k&M>>;mrQdDxA)omf1Q;p&6LW8@|#pH2fa%F;5>z z7Yqyx^TcL{2F+$k{@#naYDftaXpO{bFvvr# z!mpwC(!!=0&5!$$TL)5+#n#QIp_5$BIO!HP5{<=urm+nkgpPL|+lxjIVk^cR6g-HW z9Ubnu@PYT-SLtGX^4Vpx!-Lq@IcxvQV)$(iVzGUcIqukB`UqazQWw^?4~}}Rdz2t2 z=c70aU)eO}{^Q7sBKdyUttzaU-^=X#x-cX?(iZ4G`OWfPsr3hfPoIT=!vs5)0`#zX zZ2ne#s_LpCNNXUpU!uG~yo6o~&3Tkj3a#c=!H#|fKOJ@V?%hq;vYwDr;nd99vR|L; zLkun?Xp~u1)b6RkjTt`jKB-iy$>Zw zYT;}6lRJc~YWK)qNsIEpUbllCj`*l|3i|H1{05&W7EGxaT&+){a%6%jP~3YH7W$ooZ{I0#&# z)2C+^9PCOGuxCX&v)ZYIU@Vdf*%)4Ig;_LL&q0=gjd=3sIHdGxN9w8$Hf_?>=`eyxF~nKa7k+XyXZ24pX2BNjRq$$ zWJQl$K1bp!MVVsNLxmE*@I-qET2318*bc(q{Y-JY?w3_1&#CjU+kA8OCS%yed??fH0!* z6HiL#=1%)xm;B*NI;tj$dyIbrH~YK50mQ^@RUB>^RHFSsvMG}$1WZ7L%gw}&;snMj z|D+Xu4ey6Dp|QQK4GCe0x~xBSbl5^;zd`7niLgbqwa-FVpU+>u*g)Ht+wKf?c~jsg z3Q{X>asWvo%ceD{?&vQlk4ewT;hSMxI}dg?E#g&wIa&PGNAp1_hvyqgg`>5|vFfSa z^{;6SPa@xueTcjVqJ+cLjH1TA3y@9V&dg>MrL8<1%5w5+wU;YEqR3Y+48F@8Vnymi z)_N^EpowOyO`Q3~<_OmGh&(w%FwoF}23!PK7Y10Kqw@z|oyWy&1JUm!2+S(^l;(ih zh^E4Lz(vU=NzXmRinzGI(`bO@zI^T+8erEnxVB)dMIQ70Io4`w)W~L91!Dql-Ti7v zxe_(?THy77_&X3tO|j^WQDg{9!Zgl`J_1rEEa-s^e~tqdUYan_Wu@WWy`Y~dO z$)UqXMct;gP0Q_?I#Vxr?XLBvN958YR{h0k8**XOvL|qgzsXsWSx!d7_hs<0q9{lf zu5YVgIiJt&p^Q_;%(zQ%bb^c{3^G*_r{N$2Jr(?Ul4(pel!Nj#`BHl z42iGb?`wO#9S@OHfVNuPf1}*fxbuXWoJY3?Jcitjknur>CbjqSLS~iD`3qF8Q|;k$ zS$1E6IoAy9^AQ#$J>sCeMK`ZnbJL!j;~w+uu7uaN?9xUwPrs?nV~Su01s>Hd55)Vv zXjIQ0cR*L2l*4XcWIb;T!IAcd{kNI*+Mcaoaviwb)_Lw*}{Q%75`CmYk0&yKvyCQ+3jM0yYe(6Lj05STHT+ zNY0spQ4|OHYUtRtC<>4Pv`7_)(z0{2-`}Xem*=8oa5vTW0s2khQo_hiVELUhByXap zFKyPJydNl z?rN#V`tvhJlZ*beJ`eF6Ig2?jw4J)$gkWVZq4y4J9A;``Aiz7p@+uK*pS_BI4vNLMt}&hKm`8~6hSgudW-7demC zcTMIORFUJL?OtJ~HNa?jE6Mav$l40kRbdmpvVANIlB;y zm?AFz`+jP}>nFSwhlnaUWY>=rrBapt=I~Zz$gi(b8r&0rI7C={1{K9MKcPrcOI*v< z_LZtAWa%QUC1;WB9~t`>b-M|tt+@x@h=>~!(Z`ttYVTh2cwg8$7&|1Q^T9*K=Hqw$ zBJn^+yNUcd!1&S)RX^960I>C| zJD2VN%m`w+ONv7Jwt|m_xbAKV04D)tvdtTOK+T&uBV)~&KRL@_CmYN&166*ah8p#N&-$Mf~xwnstZ z{N)|UC;c-T8i_K`Ad?dTp~AQK_ne?fx#-I3>L17grA6@PdaPk%(NLLjaKYHnAE~-q z!9y>D3dB)6->FkBZhr%wxLX^}Q`NVmtd%MPg1FS3Z1`EoDlQNd8(x+~f4q7h`7NBOPShbVDGW^R*DT@tTRB zpzAxb-2v(auoeP^3qbgRlJ=+}){LYMjaTwWr3&))xrw{a-!|bNxqHvq6B;LWA!w>B ze7Lqp`TK_YrJy04wQjOzRJ7Cq7Ek#~ddUv?*jhvF_Co8@XoE?$r`We_t*O_g?N$(# zA-5!!N(KiVh>IZL1}7=+r8}P1(xFlI;JaQkrn+MA5|&W5voB+L444=U_%j2>8f+it#;)gxq@skpLDHRo)y({r!R!Xl71kOWARU}gW zqe|2I=@TEklG`s`xW82a(f{-34~zHG2e{It90wWQ^$#AWUq^vmASuAUq^WAB4B==- zLyq3zijK~UUfgs4g7TM_qoONdjsbYSgt&k(wSNeYsKIxtUaCKQ)%~7v*)5%JvCKfn ze<3L{WTt9ce~hKXk{-d?(u+t|@n$nQi(2)?&1*pOE@(q4ne6@_W#1i7b^rf;hGT|o zWo9HJD`bU~vguG(86i>jtc;@+MG6^}k&-%vP&PRcGD3yOIzp74vd8`U9Cdxazw7?p zf7~9fx^kS)d5_oo^?uFglXH7CWSCsXj(_aWw0L0~3^hP8d}>KZIWmX^A}2Hg!CF$^ zUhEVXnjio!Wt1;s8-E;siWTALObF49--!am7NR!_;wvJs(phPCa4VJ0)$<_ZOHp#) z88~p^362T>YK6s`1Z_tM=P!JBAW&ZVH?M@pk-)cth$+;|L%s8pR3H6+TGRAy0Qk+; zuT%c~XbhNV;))vB-Dm-@P2%s^zFzqunIvP!@4tRhq0oH3jZ}T7#m|OVi^00vMc{WvPt6WeE{K-rz z-%d_G3gtCD;F6a@B{?`t)DR;+c62L43}>zjDP@PhRiV8)SQ@tYsbdF^^OI*tDi28= zk~1Uuzrue)YHIh9;5Af@Lq#js?Surj<6H6sLvhAVcF!%x*=oA4+} zhzgB>_j?*D%E5?Aj%_$C2L}i|AOu1p^}@HiNHiMMX_3qBc1BCYJ)q3(Pa|R?bYD|) zJ>}zFxjaZPMD<8jfm^3Ux&Oow2kupHI0uvwty}7Zj0>#JUA0E*_XcH#+@q?

yl;1BM2GAqX$^zCDbPghMTZ;{U zK8~iG(jSZu0+BxB*EX;$86gYM_qa3Xun>zsm8**)+c>opC4CK(z>w8QyU7q9)7`4| z8mH=`>!YgNiCpj{NT>c&VJKL$q>;jPA!SkULC<#ajMMrVhw|YjlY%EpNLN@!)g}DHz6nKh`|G{*#^oCiCw?3luS2Npddp%uE?eQFuvj5XXowWI3-jG zmYJ=!Ef~GV20gF>JVQYzgPcFq3->J%NPdXi*l$%%>E%n%k!^y(bbf)e( zS2D)7ZsNH3xXEEE^nTOB;SUQZu4;>O-cBl%$z>nc{*H0~9{IJbS=TT;IE>K?=Y4^zvfpvOrsQAuft>k z{ig7Q_0&EcCL2NnVUR8R_|vn|rlR%|vZ7YD-20;RkC%UK*A)LXY9ba~I8 z{uAcC$s0F1S4Ns4XksM4NXKSr!>&rid?2NfoX7+35d4Nab{r9&qUWQwWLKn9Ey61# zyA`ipa?OS?cA6^QoO`qYi>P5d&A#jHr+@#QKEBF;&d#uuQJKG+Z;2lCnhx*{;2mA0@9TLvJqBIY9jG}Gu-;ggTz%-_OgOYf*8D;@Bk4r|u@DA~PNvsjTvYlj%>>9^V- z*IB0(_)<{noLjpB4{@WsQxJOXMFJ4LIeH40zrFjTE0<;lkDi<0aP;lEPGGrZC@bi?~*R4&XS#^®28R9>e{j67 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PI   - - -   -   -   -   - - - - - - - -  Tout - - Boiler   - - - - - - 19°C - 50°C - 21°C - 21°C -  TRoo -  Tsup -  y -  y -  y -  Tsup - - - - - - - - - - - - 20°C  - 21°C  - 1  - 0  - - - - - - -  TRoo - - - - - - - - - - - - - - - - 16°C  - 17°C  - 1  - 0  - - - - - - -  Tout - - - -  TRoo - - - - -  TB - - - - - - - - - 70°C  - 90°C  - 1  - 0  - - - - - - - - - - - - - - - -  TBoi - - - - - - - - - 60°C - - - - - - - - - - - PI   - - - - - - - - - - - - - - - - - - Expansionvessel   - ANDgate - on/off - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Supply temperaturecontroller - System on/offcontroller - Boiler on/offcontroller - Return temperaturecontroller - - - diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt deleted file mode 100644 index 21ee36b0a8..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_BoilerReturn.txt +++ /dev/null @@ -1,12 +0,0 @@ -last-generated=2020-02-19 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "number of continuous time states": "1", - "numerical Jacobians": "0" -} -time=[0e+00, 3.6e+03] -conBoiRet.TSet=[3.331499938964844e+02, 3.331499938964844e+02] -conBoiRet.TRet=[2.931499938964844e+02, 2.936499938964844e+02, 2.941499938964844e+02, 2.946499938964844e+02, 2.951499938964844e+02, 2.956499938964844e+02, 2.961499938964844e+02, 2.966499938964844e+02, 2.971499938964844e+02, 2.976499938964844e+02, 2.981499938964844e+02, 2.986499938964844e+02, 2.991499938964844e+02, 2.996499938964844e+02, 3.001499938964844e+02, 3.006499938964844e+02, 3.011499938964844e+02, 3.016499938964844e+02, 3.021499938964844e+02, 3.026499938964844e+02, 3.031499938964844e+02, 3.036499938964844e+02, 3.041499938964844e+02, 3.046499938964844e+02, 3.051499938964844e+02, 3.056499938964844e+02, 3.061499938964844e+02, 3.066499938964844e+02, 3.071499938964844e+02, 3.076499938964844e+02, 3.081499938964844e+02, 3.086499938964844e+02, 3.091499938964844e+02, 3.096499938964844e+02, 3.101499938964844e+02, 3.106499938964844e+02, 3.111499938964844e+02, 3.116499938964844e+02, 3.121499938964844e+02, 3.126499938964844e+02, 3.131499938964844e+02, 3.136499938964844e+02, 3.141499938964844e+02, 3.146499938964844e+02, 3.151499938964844e+02, 3.156499938964844e+02, 3.161499938964844e+02, 3.166499938964844e+02, 3.171499938964844e+02, 3.176499938964844e+02, 3.181499938964844e+02, 3.186499938964844e+02, 3.191499938964844e+02, 3.196499938964844e+02, 3.201499938964844e+02, 3.206499938964844e+02, 3.211499938964844e+02, 3.216499938964844e+02, 3.221499938964844e+02, 3.226499938964844e+02, 3.231499938964844e+02, 3.236499938964844e+02, 3.241499938964844e+02, 3.246499938964844e+02, 3.251499938964844e+02, 3.256499938964844e+02, 3.261499938964844e+02, 3.266499938964844e+02, 3.271499938964844e+02, 3.276499938964844e+02, 3.281499938964844e+02, 3.286499938964844e+02, 3.291499938964844e+02, 3.296499938964844e+02, 3.301499938964844e+02, 3.306499938964844e+02, 3.311499938964844e+02, 3.316499938964844e+02, 3.321499938964844e+02, 3.326499938964844e+02, 3.331499938964844e+02, 3.336499938964844e+02, 3.341499938964844e+02, 3.346499938964844e+02, 3.351499938964844e+02, 3.356499938964844e+02, 3.361499938964844e+02, 3.366499938964844e+02, 3.371499938964844e+02, 3.376499938964844e+02, 3.381499938964844e+02, 3.386499938964844e+02, 3.391499938964844e+02, 3.396499938964844e+02, 3.401499938964844e+02, 3.406499938964844e+02, 3.411499938964844e+02, 3.416499938964844e+02, 3.421499938964844e+02, 3.426499938964844e+02, 3.431499938964844e+02] -conBoiRet.yVal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.583335362374783e-02, 7.333334535360336e-02, 1.458333432674408e-01, 2.333333343267441e-01, 3.35833340883255e-01, 4.5333331823349e-01, 5.858333110809326e-01, 7.333333492279053e-01, 8.958333134651184e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt deleted file mode 100644 index 14cf98e3cc..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_EquipmentOnOff.txt +++ /dev/null @@ -1,12 +0,0 @@ -last-generated=2020-02-19 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "numerical Jacobians": "0" -} -time=[0e+00, 3.6e+03] -conEquSta.TBoi=[3.331499938964844e+02, 3.335499877929688e+02, 3.339500122070312e+02, 3.343500061035156e+02, 3.3475e+02, 3.351499938964844e+02, 3.355499877929688e+02, 3.359500122070312e+02, 3.363500061035156e+02, 3.3675e+02, 3.371499938964844e+02, 3.375499877929688e+02, 3.379500122070312e+02, 3.383500061035156e+02, 3.3875e+02, 3.391499938964844e+02, 3.395499877929688e+02, 3.399500122070312e+02, 3.403500061035156e+02, 3.4075e+02, 3.411499938964844e+02, 3.415499877929688e+02, 3.419500122070312e+02, 3.423500061035156e+02, 3.4275e+02, 3.431499938964844e+02, 3.435499877929688e+02, 3.439500122070312e+02, 3.443500061035156e+02, 3.4475e+02, 3.451499938964844e+02, 3.455499877929688e+02, 3.459500122070312e+02, 3.463500061035156e+02, 3.4675e+02, 3.471499938964844e+02, 3.475499877929688e+02, 3.479500122070312e+02, 3.483500061035156e+02, 3.4875e+02, 3.491499938964844e+02, 3.495499877929688e+02, 3.499500122070312e+02, 3.503500061035156e+02, 3.5075e+02, 3.511499938964844e+02, 3.515499877929688e+02, 3.519500122070312e+02, 3.523500061035156e+02, 3.5275e+02, 3.531499938964844e+02, 3.535499877929688e+02, 3.539500122070312e+02, 3.543500061035156e+02, 3.5475e+02, 3.551499938964844e+02, 3.555499877929688e+02, 3.559500122070312e+02, 3.563500061035156e+02, 3.5675e+02, 3.571499938964844e+02, 3.575499877929688e+02, 3.579500122070312e+02, 3.583500061035156e+02, 3.5875e+02, 3.591499938964844e+02, 3.595499877929688e+02, 3.599500122070312e+02, 3.603500061035156e+02, 3.6075e+02, 3.611499938964844e+02, 3.615499877929688e+02, 3.619500122070312e+02, 3.623500061035156e+02, 3.6275e+02, 3.631499938964844e+02, 3.635499877929688e+02, 3.639500122070312e+02, 3.643500061035156e+02, 3.6475e+02, 3.651499938964844e+02, 3.655499877929688e+02, 3.659500122070312e+02, 3.663500061035156e+02, 3.6675e+02, 3.671499938964844e+02, 3.675499877929688e+02, 3.679500122070312e+02, 3.683500061035156e+02, 3.6875e+02, 3.691499938964844e+02, 3.695499877929688e+02, 3.699500122070312e+02, 3.703500061035156e+02, 3.7075e+02, 3.711499938964844e+02, 3.715499877929688e+02, 3.719500122070312e+02, 3.723500061035156e+02, 3.7275e+02, 3.731499938964844e+02] -conEquSta.onSys=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -conEquSta.onPum=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -conEquSta.onBoi=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt deleted file mode 100644 index 15489622af..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_RadiatorSupply.txt +++ /dev/null @@ -1,12 +0,0 @@ -last-generated=2020-02-19 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "number of continuous time states": "1", - "numerical Jacobians": "0" -} -time=[0e+00, 3.6e+03] -conRadSup.TRoo=[2.971499938964844e+02, 2.971099853515625e+02, 2.970700073242188e+02, 2.970299987792969e+02, 2.96989990234375e+02, 2.969500122070312e+02, 2.969100036621094e+02, 2.968699951171875e+02, 2.968299865722656e+02, 2.967900085449219e+02, 2.9675e+02, 2.967099914550781e+02, 2.966700134277344e+02, 2.966300048828125e+02, 2.965899963378906e+02, 2.965499877929688e+02, 2.96510009765625e+02, 2.964700012207031e+02, 2.964299926757812e+02, 2.963900146484375e+02, 2.963500061035156e+02, 2.963099975585938e+02, 2.962699890136719e+02, 2.962300109863281e+02, 2.961900024414062e+02, 2.961499938964844e+02, 2.961099853515625e+02, 2.960700073242188e+02, 2.960299987792969e+02, 2.95989990234375e+02, 2.959500122070312e+02, 2.959100036621094e+02, 2.958699951171875e+02, 2.958299865722656e+02, 2.957900085449219e+02, 2.9575e+02, 2.957099914550781e+02, 2.956700134277344e+02, 2.956300048828125e+02, 2.955899963378906e+02, 2.955499877929688e+02, 2.95510009765625e+02, 2.954700012207031e+02, 2.954299926757812e+02, 2.953900146484375e+02, 2.953500061035156e+02, 2.953099975585938e+02, 2.952699890136719e+02, 2.952300109863281e+02, 2.951900024414062e+02, 2.951499938964844e+02, 2.951099853515625e+02, 2.950700073242188e+02, 2.950299987792969e+02, 2.94989990234375e+02, 2.949500122070312e+02, 2.949100036621094e+02, 2.948699951171875e+02, 2.948299865722656e+02, 2.947900085449219e+02, 2.9475e+02, 2.947099914550781e+02, 2.946700134277344e+02, 2.946300048828125e+02, 2.945899963378906e+02, 2.945499877929688e+02, 2.94510009765625e+02, 2.944700012207031e+02, 2.944299926757812e+02, 2.943900146484375e+02, 2.943500061035156e+02, 2.943099975585938e+02, 2.942699890136719e+02, 2.942300109863281e+02, 2.941900024414062e+02, 2.941499938964844e+02, 2.941099853515625e+02, 2.940700073242188e+02, 2.940299987792969e+02, 2.93989990234375e+02, 2.939500122070312e+02, 2.939100036621094e+02, 2.938699951171875e+02, 2.938299865722656e+02, 2.937900085449219e+02, 2.9375e+02, 2.937099914550781e+02, 2.936700134277344e+02, 2.936300048828125e+02, 2.935899963378906e+02, 2.935499877929688e+02, 2.93510009765625e+02, 2.934700012207031e+02, 2.934299926757812e+02, 2.933900146484375e+02, 2.933500061035156e+02, 2.933099975585938e+02, 2.932699890136719e+02, 2.932300109863281e+02, 2.931900024414062e+02, 2.931499938964844e+02] -conRadSup.TSup=[3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02, 3.093303527832031e+02, 3.149057006835938e+02, 3.193303527832031e+02, 3.22171142578125e+02, 3.231499938964844e+02, 3.22171142578125e+02, 3.193303527832031e+02, 3.149057006835938e+02, 3.093303527832031e+02, 3.031499938964844e+02, 2.969696655273438e+02, 2.91394287109375e+02, 2.869696655273438e+02, 2.841288757324219e+02, 2.831499938964844e+02, 2.841288757324219e+02, 2.869696655273438e+02, 2.91394287109375e+02, 2.969696655273438e+02, 3.031499938964844e+02] -conRadSup.yVal=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.343824088573456e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.219262838363647e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.495950937271118e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.245810151100159e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.496521949768066e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.245894193649292e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.496550559997559e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 7.886499166488647e-01, 1.303928345441818e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.211419925093651e-01, 8.903452754020691e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt deleted file mode 100644 index 305e965fa7..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_Controls_Validation_SystemOnOff.txt +++ /dev/null @@ -1,13 +0,0 @@ -last-generated=2020-02-19 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "numerical Jacobians": "0" -} -time=[0e+00, 3.6e+03] -conSysSta.TRoo=[2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02, 2.969542236328125e+02, 2.963860778808594e+02, 2.955011291503906e+02, 2.943860778808594e+02, 2.931499938964844e+02, 2.919139404296875e+02, 2.907988586425781e+02, 2.899139404296875e+02, 2.893457641601562e+02, 2.891499938964844e+02, 2.893457641601562e+02, 2.899139404296875e+02, 2.907988586425781e+02, 2.919139404296875e+02, 2.931499938964844e+02, 2.943860778808594e+02, 2.955011291503906e+02, 2.963860778808594e+02, 2.969542236328125e+02, 2.971499938964844e+02] -conSysSta.TRooSet=[2.936499938964844e+02, 2.936499938964844e+02] -conSysSta.TOut=[2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02, 2.916950988769531e+02, 2.930889282226562e+02, 2.941950988769531e+02, 2.949052734375e+02, 2.951499938964844e+02, 2.949052734375e+02, 2.941950988769531e+02, 2.930889282226562e+02, 2.916950988769531e+02, 2.901499938964844e+02, 2.886049194335938e+02, 2.872110595703125e+02, 2.861049194335938e+02, 2.853947143554688e+02, 2.851499938964844e+02, 2.853947143554688e+02, 2.861049194335938e+02, 2.872110595703125e+02, 2.886049194335938e+02, 2.901499938964844e+02] -conSysSta.TOutLow=[2.891499938964844e+02, 2.891499938964844e+02] -conSysSta.onSys=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt deleted file mode 100644 index 1cfe0ca8dc..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System1.txt +++ /dev/null @@ -1,19 +0,0 @@ -last-generated=2024-09-13 -statistics-initialization= -{ - "nonlinear": "5, 9, 0, 0, 0", - "numerical Jacobians": "0" -} -statistics-simulation= -{ - "linear": "0, 0, 0, 0, 0, 0, 0", - "nonlinear": "1, 10, 0", - "number of continuous time states": "25", - "numerical Jacobians": "0" -} -time=[1.296e+06, 1.3824e+06] -senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] -boi.T=[2.931499938964844e+02, 3.235456848144531e+02, 3.302677612304688e+02, 3.345385437011719e+02, 3.377018737792969e+02, 3.400711059570312e+02, 3.418246154785156e+02, 3.43099365234375e+02, 3.440057983398438e+02, 3.446341552734375e+02, 3.450574645996094e+02, 3.453338317871094e+02, 3.455127258300781e+02, 3.456378784179688e+02, 3.457569580078125e+02, 3.459273376464844e+02, 3.461693115234375e+02, 3.46459716796875e+02, 3.467494812011719e+02, 3.47017333984375e+02, 3.472599487304688e+02, 3.474747619628906e+02, 3.476561889648438e+02, 3.477958068847656e+02, 3.4789404296875e+02, 3.479646301269531e+02, 3.480312805175781e+02, 3.481113891601562e+02, 3.482064514160156e+02, 3.483145141601562e+02, 3.48431396484375e+02, 3.485502319335938e+02, 3.486645812988281e+02, 3.487763671875e+02, 3.491953735351562e+02, 3.505382385253906e+02, 3.518658447265625e+02, 3.530768737792969e+02, 3.541841125488281e+02, 3.551770629882812e+02, 3.560694580078125e+02, 3.568801879882812e+02, 3.576192016601562e+02, 3.582900085449219e+02, 3.589009094238281e+02, 3.594639587402344e+02, 3.599889831542969e+02, 3.604840698242188e+02, 3.609529724121094e+02, 3.613988342285156e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.632096862792969e+02, 3.637702941894531e+02, 3.643639221191406e+02, 3.649652709960938e+02, 3.655647583007812e+02, 3.661495666503906e+02, 3.667016906738281e+02, 3.671998596191406e+02, 3.676280517578125e+02, 3.679831848144531e+02, 3.682727966308594e+02, 3.685096130371094e+02, 3.687021484375e+02, 3.688519897460938e+02, 3.689580688476562e+02, 3.690074768066406e+02, 3.689551086425781e+02, 3.687868041992188e+02, 3.68546142578125e+02, 3.683146667480469e+02, 3.681323852539062e+02, 3.679927062988281e+02, 3.678861999511719e+02, 3.6713037109375e+02, 3.658734130859375e+02, 3.648491821289062e+02, 3.640643005371094e+02, 3.634662780761719e+02, 3.630252990722656e+02, 3.627292175292969e+02, 3.625504150390625e+02, 3.62445556640625e+02, 3.623630065917969e+02, 3.622667236328125e+02, 3.621480407714844e+02, 3.620196533203125e+02, 3.619066772460938e+02, 3.618231201171875e+02, 3.617662658691406e+02, 3.6172265625e+02, 3.616731872558594e+02, 3.616102905273438e+02, 3.615349426269531e+02, 3.614475708007812e+02, 3.613488464355469e+02, 3.612393798828125e+02, 3.611209106445312e+02, 3.609960327148438e+02] -temSup.T=[2.931499938964844e+02, 3.056086120605469e+02, 3.113561401367188e+02, 3.153233642578125e+02, 3.182890625e+02, 3.205071105957031e+02, 3.221427001953125e+02, 3.233262023925781e+02, 3.241630859375e+02, 3.247395629882812e+02, 3.251250915527344e+02, 3.253751831054688e+02, 3.255378723144531e+02, 3.256560668945312e+02, 3.257808227539062e+02, 3.259664001464844e+02, 3.26222900390625e+02, 3.265184020996094e+02, 3.268041381835938e+02, 3.27066650390625e+02, 3.273036499023438e+02, 3.275118713378906e+02, 3.276850280761719e+02, 3.278150329589844e+02, 3.279053344726562e+02, 3.279723510742188e+02, 3.280408325195312e+02, 3.28124267578125e+02, 3.282225036621094e+02, 3.283329772949219e+02, 3.284511413574219e+02, 3.285694274902344e+02, 3.286827087402344e+02, 3.287948303222656e+02, 3.29435546875e+02, 3.308346557617188e+02, 3.321353454589844e+02, 3.33323486328125e+02, 3.344068298339844e+02, 3.353753967285156e+02, 3.362482604980469e+02, 3.370426330566406e+02, 3.377664184570312e+02, 3.384229431152344e+02, 3.39022216796875e+02, 3.395759582519531e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428024291992188e+02, 3.433203735351562e+02, 3.438912963867188e+02, 3.444885864257812e+02, 3.450904541015625e+02, 3.456882629394531e+02, 3.462680358886719e+02, 3.468106079101562e+02, 3.472947082519531e+02, 3.477068786621094e+02, 3.480466003417969e+02, 3.483233032226562e+02, 3.485499267578125e+02, 3.487330322265625e+02, 3.4887353515625e+02, 3.489696350097656e+02, 3.490020751953125e+02, 3.489236145019531e+02, 3.487330322265625e+02, 3.484853210449219e+02, 3.482633972167969e+02, 3.480914001464844e+02, 3.479599609375e+02, 3.478597412109375e+02, 3.468447875976562e+02, 3.456152648925781e+02, 3.446482238769531e+02, 3.439093322753906e+02, 3.433475646972656e+02, 3.429397583007812e+02, 3.426728210449219e+02, 3.425152282714844e+02, 3.42420654296875e+02, 3.423378601074219e+02, 3.422367553710938e+02, 3.421138916015625e+02, 3.419861755371094e+02, 3.4187890625e+02, 3.418018493652344e+02, 3.417496948242188e+02, 3.417067260742188e+02, 3.416545104980469e+02, 3.415888366699219e+02, 3.415107727050781e+02, 3.414208984375e+02, 3.413197021484375e+02, 3.412080688476562e+02, 3.41087890625e+02, 3.409619750976562e+02] -temRet.T=[2.931499938964844e+02, 3.142822570800781e+02, 3.206342468261719e+02, 3.24792236328125e+02, 3.278826293945312e+02, 3.301961059570312e+02, 3.319061584472656e+02, 3.331472473144531e+02, 3.340280151367188e+02, 3.3463720703125e+02, 3.350465698242188e+02, 3.35313232421875e+02, 3.354861145019531e+02, 3.35608642578125e+02, 3.35729736328125e+02, 3.359056396484375e+02, 3.361529846191406e+02, 3.364453430175781e+02, 3.36733642578125e+02, 3.369995422363281e+02, 3.372401123046875e+02, 3.374525146484375e+02, 3.376309204101562e+02, 3.377670288085938e+02, 3.378623046875e+02, 3.379315490722656e+02, 3.379988403320312e+02, 3.380801696777344e+02, 3.381763916015625e+02, 3.382853698730469e+02, 3.384027099609375e+02, 3.385213623046875e+02, 3.386353149414062e+02, 3.387472229003906e+02, 3.392459716796875e+02, 3.406112365722656e+02, 3.419290161132812e+02, 3.431316223144531e+02, 3.442301330566406e+02, 3.452140808105469e+02, 3.460992736816406e+02, 3.469039916992188e+02, 3.476374206542969e+02, 3.48302978515625e+02, 3.489095764160156e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.532143249511719e+02, 3.537787170410156e+02, 3.543737487792969e+02, 3.549752807617188e+02, 3.555741882324219e+02, 3.561571655273438e+02, 3.567058410644531e+02, 3.571988525390625e+02, 3.576211547851562e+02, 3.579706420898438e+02, 3.582554931640625e+02, 3.584885559082031e+02, 3.586776428222656e+02, 3.588240356445312e+02, 3.589264526367188e+02, 3.589697265625e+02, 3.589078063964844e+02, 3.587312622070312e+02, 3.584878845214844e+02, 3.582598571777344e+02, 3.580813598632812e+02, 3.579447326660156e+02, 3.578405151367188e+02, 3.569900512695312e+02, 3.557423400878906e+02, 3.547391357421875e+02, 3.539712219238281e+02, 3.533865661621094e+02, 3.52957763671875e+02, 3.526724243164062e+02, 3.5250146484375e+02, 3.524004821777344e+02, 3.523179016113281e+02, 3.522198486328125e+02, 3.52099609375e+02, 3.519714050292969e+02, 3.518605346679688e+02, 3.517793579101562e+02, 3.517242431640625e+02, 3.51680908203125e+02, 3.516304321289062e+02, 3.515664978027344e+02, 3.514901733398438e+02, 3.514018859863281e+02, 3.5130224609375e+02, 3.511919860839844e+02, 3.510728759765625e+02, 3.509476013183594e+02] -temRoo.T=[2.931499938964844e+02, 2.848866271972656e+02, 2.869789123535156e+02, 2.894321899414062e+02, 2.913446044921875e+02, 2.927545776367188e+02, 2.937647399902344e+02, 2.944679260253906e+02, 2.9494140625e+02, 2.952493896484375e+02, 2.954407958984375e+02, 2.955587463378906e+02, 2.956434936523438e+02, 2.957352294921875e+02, 2.959083862304688e+02, 2.961827697753906e+02, 2.965125427246094e+02, 2.968211364746094e+02, 2.970805358886719e+02, 2.973132019042969e+02, 2.975180053710938e+02, 2.976884765625e+02, 2.978131103515625e+02, 2.978904724121094e+02, 2.979407348632812e+02, 2.979949951171875e+02, 2.980780029296875e+02, 2.981799926757812e+02, 2.982949523925781e+02, 2.984177551269531e+02, 2.98541015625e+02, 2.986544494628906e+02, 2.987626342773438e+02, 2.988789978027344e+02, 3.010147094726562e+02, 3.024350280761719e+02, 3.035816650390625e+02, 3.046459045410156e+02, 3.05590576171875e+02, 3.064289855957031e+02, 3.071981811523438e+02, 3.079039916992188e+02, 3.085435791015625e+02, 3.091235961914062e+02, 3.09661376953125e+02, 3.101661682128906e+02, 3.106457824707031e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139285888671875e+02, 3.14550048828125e+02, 3.151605529785156e+02, 3.1576318359375e+02, 3.163482971191406e+02, 3.168951416015625e+02, 3.17378662109375e+02, 3.177808532714844e+02, 3.181035461425781e+02, 3.183600769042969e+02, 3.185693664550781e+02, 3.187411499023438e+02, 3.188727111816406e+02, 3.189614562988281e+02, 3.190003662109375e+02, 3.189236145019531e+02, 3.1869873046875e+02, 3.183977355957031e+02, 3.181357727050781e+02, 3.179747009277344e+02, 3.178573608398438e+02, 3.177685546875e+02, 3.177008972167969e+02, 3.152051086425781e+02, 3.142509155273438e+02, 3.135875244140625e+02, 3.130862426757812e+02, 3.127158203125e+02, 3.124877014160156e+02, 3.123734741210938e+02, 3.12321044921875e+02, 3.122685546875e+02, 3.121752624511719e+02, 3.120455322265625e+02, 3.11903564453125e+02, 3.117870483398438e+02, 3.117142028808594e+02, 3.116724853515625e+02, 3.116422729492188e+02, 3.1159716796875e+02, 3.115286254882812e+02, 3.114475708007812e+02, 3.113548889160156e+02, 3.112511596679688e+02, 3.111366882324219e+02, 3.110134887695312e+02, 3.108846435546875e+02, 3.107538452148438e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt deleted file mode 100644 index 1cfe0ca8dc..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System2.txt +++ /dev/null @@ -1,19 +0,0 @@ -last-generated=2024-09-13 -statistics-initialization= -{ - "nonlinear": "5, 9, 0, 0, 0", - "numerical Jacobians": "0" -} -statistics-simulation= -{ - "linear": "0, 0, 0, 0, 0, 0, 0", - "nonlinear": "1, 10, 0", - "number of continuous time states": "25", - "numerical Jacobians": "0" -} -time=[1.296e+06, 1.3824e+06] -senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] -boi.T=[2.931499938964844e+02, 3.235456848144531e+02, 3.302677612304688e+02, 3.345385437011719e+02, 3.377018737792969e+02, 3.400711059570312e+02, 3.418246154785156e+02, 3.43099365234375e+02, 3.440057983398438e+02, 3.446341552734375e+02, 3.450574645996094e+02, 3.453338317871094e+02, 3.455127258300781e+02, 3.456378784179688e+02, 3.457569580078125e+02, 3.459273376464844e+02, 3.461693115234375e+02, 3.46459716796875e+02, 3.467494812011719e+02, 3.47017333984375e+02, 3.472599487304688e+02, 3.474747619628906e+02, 3.476561889648438e+02, 3.477958068847656e+02, 3.4789404296875e+02, 3.479646301269531e+02, 3.480312805175781e+02, 3.481113891601562e+02, 3.482064514160156e+02, 3.483145141601562e+02, 3.48431396484375e+02, 3.485502319335938e+02, 3.486645812988281e+02, 3.487763671875e+02, 3.491953735351562e+02, 3.505382385253906e+02, 3.518658447265625e+02, 3.530768737792969e+02, 3.541841125488281e+02, 3.551770629882812e+02, 3.560694580078125e+02, 3.568801879882812e+02, 3.576192016601562e+02, 3.582900085449219e+02, 3.589009094238281e+02, 3.594639587402344e+02, 3.599889831542969e+02, 3.604840698242188e+02, 3.609529724121094e+02, 3.613988342285156e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.632096862792969e+02, 3.637702941894531e+02, 3.643639221191406e+02, 3.649652709960938e+02, 3.655647583007812e+02, 3.661495666503906e+02, 3.667016906738281e+02, 3.671998596191406e+02, 3.676280517578125e+02, 3.679831848144531e+02, 3.682727966308594e+02, 3.685096130371094e+02, 3.687021484375e+02, 3.688519897460938e+02, 3.689580688476562e+02, 3.690074768066406e+02, 3.689551086425781e+02, 3.687868041992188e+02, 3.68546142578125e+02, 3.683146667480469e+02, 3.681323852539062e+02, 3.679927062988281e+02, 3.678861999511719e+02, 3.6713037109375e+02, 3.658734130859375e+02, 3.648491821289062e+02, 3.640643005371094e+02, 3.634662780761719e+02, 3.630252990722656e+02, 3.627292175292969e+02, 3.625504150390625e+02, 3.62445556640625e+02, 3.623630065917969e+02, 3.622667236328125e+02, 3.621480407714844e+02, 3.620196533203125e+02, 3.619066772460938e+02, 3.618231201171875e+02, 3.617662658691406e+02, 3.6172265625e+02, 3.616731872558594e+02, 3.616102905273438e+02, 3.615349426269531e+02, 3.614475708007812e+02, 3.613488464355469e+02, 3.612393798828125e+02, 3.611209106445312e+02, 3.609960327148438e+02] -temSup.T=[2.931499938964844e+02, 3.056086120605469e+02, 3.113561401367188e+02, 3.153233642578125e+02, 3.182890625e+02, 3.205071105957031e+02, 3.221427001953125e+02, 3.233262023925781e+02, 3.241630859375e+02, 3.247395629882812e+02, 3.251250915527344e+02, 3.253751831054688e+02, 3.255378723144531e+02, 3.256560668945312e+02, 3.257808227539062e+02, 3.259664001464844e+02, 3.26222900390625e+02, 3.265184020996094e+02, 3.268041381835938e+02, 3.27066650390625e+02, 3.273036499023438e+02, 3.275118713378906e+02, 3.276850280761719e+02, 3.278150329589844e+02, 3.279053344726562e+02, 3.279723510742188e+02, 3.280408325195312e+02, 3.28124267578125e+02, 3.282225036621094e+02, 3.283329772949219e+02, 3.284511413574219e+02, 3.285694274902344e+02, 3.286827087402344e+02, 3.287948303222656e+02, 3.29435546875e+02, 3.308346557617188e+02, 3.321353454589844e+02, 3.33323486328125e+02, 3.344068298339844e+02, 3.353753967285156e+02, 3.362482604980469e+02, 3.370426330566406e+02, 3.377664184570312e+02, 3.384229431152344e+02, 3.39022216796875e+02, 3.395759582519531e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428024291992188e+02, 3.433203735351562e+02, 3.438912963867188e+02, 3.444885864257812e+02, 3.450904541015625e+02, 3.456882629394531e+02, 3.462680358886719e+02, 3.468106079101562e+02, 3.472947082519531e+02, 3.477068786621094e+02, 3.480466003417969e+02, 3.483233032226562e+02, 3.485499267578125e+02, 3.487330322265625e+02, 3.4887353515625e+02, 3.489696350097656e+02, 3.490020751953125e+02, 3.489236145019531e+02, 3.487330322265625e+02, 3.484853210449219e+02, 3.482633972167969e+02, 3.480914001464844e+02, 3.479599609375e+02, 3.478597412109375e+02, 3.468447875976562e+02, 3.456152648925781e+02, 3.446482238769531e+02, 3.439093322753906e+02, 3.433475646972656e+02, 3.429397583007812e+02, 3.426728210449219e+02, 3.425152282714844e+02, 3.42420654296875e+02, 3.423378601074219e+02, 3.422367553710938e+02, 3.421138916015625e+02, 3.419861755371094e+02, 3.4187890625e+02, 3.418018493652344e+02, 3.417496948242188e+02, 3.417067260742188e+02, 3.416545104980469e+02, 3.415888366699219e+02, 3.415107727050781e+02, 3.414208984375e+02, 3.413197021484375e+02, 3.412080688476562e+02, 3.41087890625e+02, 3.409619750976562e+02] -temRet.T=[2.931499938964844e+02, 3.142822570800781e+02, 3.206342468261719e+02, 3.24792236328125e+02, 3.278826293945312e+02, 3.301961059570312e+02, 3.319061584472656e+02, 3.331472473144531e+02, 3.340280151367188e+02, 3.3463720703125e+02, 3.350465698242188e+02, 3.35313232421875e+02, 3.354861145019531e+02, 3.35608642578125e+02, 3.35729736328125e+02, 3.359056396484375e+02, 3.361529846191406e+02, 3.364453430175781e+02, 3.36733642578125e+02, 3.369995422363281e+02, 3.372401123046875e+02, 3.374525146484375e+02, 3.376309204101562e+02, 3.377670288085938e+02, 3.378623046875e+02, 3.379315490722656e+02, 3.379988403320312e+02, 3.380801696777344e+02, 3.381763916015625e+02, 3.382853698730469e+02, 3.384027099609375e+02, 3.385213623046875e+02, 3.386353149414062e+02, 3.387472229003906e+02, 3.392459716796875e+02, 3.406112365722656e+02, 3.419290161132812e+02, 3.431316223144531e+02, 3.442301330566406e+02, 3.452140808105469e+02, 3.460992736816406e+02, 3.469039916992188e+02, 3.476374206542969e+02, 3.48302978515625e+02, 3.489095764160156e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.532143249511719e+02, 3.537787170410156e+02, 3.543737487792969e+02, 3.549752807617188e+02, 3.555741882324219e+02, 3.561571655273438e+02, 3.567058410644531e+02, 3.571988525390625e+02, 3.576211547851562e+02, 3.579706420898438e+02, 3.582554931640625e+02, 3.584885559082031e+02, 3.586776428222656e+02, 3.588240356445312e+02, 3.589264526367188e+02, 3.589697265625e+02, 3.589078063964844e+02, 3.587312622070312e+02, 3.584878845214844e+02, 3.582598571777344e+02, 3.580813598632812e+02, 3.579447326660156e+02, 3.578405151367188e+02, 3.569900512695312e+02, 3.557423400878906e+02, 3.547391357421875e+02, 3.539712219238281e+02, 3.533865661621094e+02, 3.52957763671875e+02, 3.526724243164062e+02, 3.5250146484375e+02, 3.524004821777344e+02, 3.523179016113281e+02, 3.522198486328125e+02, 3.52099609375e+02, 3.519714050292969e+02, 3.518605346679688e+02, 3.517793579101562e+02, 3.517242431640625e+02, 3.51680908203125e+02, 3.516304321289062e+02, 3.515664978027344e+02, 3.514901733398438e+02, 3.514018859863281e+02, 3.5130224609375e+02, 3.511919860839844e+02, 3.510728759765625e+02, 3.509476013183594e+02] -temRoo.T=[2.931499938964844e+02, 2.848866271972656e+02, 2.869789123535156e+02, 2.894321899414062e+02, 2.913446044921875e+02, 2.927545776367188e+02, 2.937647399902344e+02, 2.944679260253906e+02, 2.9494140625e+02, 2.952493896484375e+02, 2.954407958984375e+02, 2.955587463378906e+02, 2.956434936523438e+02, 2.957352294921875e+02, 2.959083862304688e+02, 2.961827697753906e+02, 2.965125427246094e+02, 2.968211364746094e+02, 2.970805358886719e+02, 2.973132019042969e+02, 2.975180053710938e+02, 2.976884765625e+02, 2.978131103515625e+02, 2.978904724121094e+02, 2.979407348632812e+02, 2.979949951171875e+02, 2.980780029296875e+02, 2.981799926757812e+02, 2.982949523925781e+02, 2.984177551269531e+02, 2.98541015625e+02, 2.986544494628906e+02, 2.987626342773438e+02, 2.988789978027344e+02, 3.010147094726562e+02, 3.024350280761719e+02, 3.035816650390625e+02, 3.046459045410156e+02, 3.05590576171875e+02, 3.064289855957031e+02, 3.071981811523438e+02, 3.079039916992188e+02, 3.085435791015625e+02, 3.091235961914062e+02, 3.09661376953125e+02, 3.101661682128906e+02, 3.106457824707031e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139285888671875e+02, 3.14550048828125e+02, 3.151605529785156e+02, 3.1576318359375e+02, 3.163482971191406e+02, 3.168951416015625e+02, 3.17378662109375e+02, 3.177808532714844e+02, 3.181035461425781e+02, 3.183600769042969e+02, 3.185693664550781e+02, 3.187411499023438e+02, 3.188727111816406e+02, 3.189614562988281e+02, 3.190003662109375e+02, 3.189236145019531e+02, 3.1869873046875e+02, 3.183977355957031e+02, 3.181357727050781e+02, 3.179747009277344e+02, 3.178573608398438e+02, 3.177685546875e+02, 3.177008972167969e+02, 3.152051086425781e+02, 3.142509155273438e+02, 3.135875244140625e+02, 3.130862426757812e+02, 3.127158203125e+02, 3.124877014160156e+02, 3.123734741210938e+02, 3.12321044921875e+02, 3.122685546875e+02, 3.121752624511719e+02, 3.120455322265625e+02, 3.11903564453125e+02, 3.117870483398438e+02, 3.117142028808594e+02, 3.116724853515625e+02, 3.116422729492188e+02, 3.1159716796875e+02, 3.115286254882812e+02, 3.114475708007812e+02, 3.113548889160156e+02, 3.112511596679688e+02, 3.111366882324219e+02, 3.110134887695312e+02, 3.108846435546875e+02, 3.107538452148438e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt deleted file mode 100644 index 76334f3afa..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System3.txt +++ /dev/null @@ -1,19 +0,0 @@ -last-generated=2024-09-13 -statistics-initialization= -{ - "nonlinear": "5, 9, 0, 0, 0", - "numerical Jacobians": "0" -} -statistics-simulation= -{ - "linear": "0, 0, 0, 0, 0, 0, 0", - "nonlinear": "1, 10, 0", - "number of continuous time states": "26", - "numerical Jacobians": "0" -} -time=[1.296e+06, 1.3824e+06] -senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] -boi.T=[2.931499938964844e+02, 3.434833679199219e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.432107238769531e+02, 3.43205078125e+02, 3.434713439941406e+02, 3.442933044433594e+02, 3.448924865722656e+02, 3.452561645507812e+02, 3.454854736328125e+02, 3.456283569335938e+02, 3.457260131835938e+02, 3.458241577148438e+02, 3.45978515625e+02, 3.462084350585938e+02, 3.464895935058594e+02, 3.467725524902344e+02, 3.470345764160156e+02, 3.47273193359375e+02, 3.474848937988281e+02, 3.476638488769531e+02, 3.478019714355469e+02, 3.47898681640625e+02, 3.479682006835938e+02, 3.480339050292969e+02, 3.481134948730469e+02, 3.482081298828125e+02, 3.483157653808594e+02, 3.48432373046875e+02, 3.485509338378906e+02, 3.486650695800781e+02, 3.487767944335938e+02, 3.491956481933594e+02, 3.505384216308594e+02, 3.518659973144531e+02, 3.530770263671875e+02, 3.541842346191406e+02, 3.551771545410156e+02, 3.560695190429688e+02, 3.568802490234375e+02, 3.576192321777344e+02, 3.582900390625e+02, 3.589009094238281e+02, 3.594639892578125e+02, 3.59989013671875e+02, 3.604840698242188e+02, 3.609530029296875e+02, 3.613988647460938e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.632096862792969e+02, 3.637702941894531e+02, 3.643639221191406e+02, 3.649652709960938e+02, 3.655647583007812e+02, 3.661495666503906e+02, 3.667016906738281e+02, 3.671998596191406e+02, 3.676280517578125e+02, 3.679831848144531e+02, 3.682727966308594e+02, 3.685096130371094e+02, 3.687021484375e+02, 3.688519897460938e+02, 3.689580383300781e+02, 3.690074157714844e+02, 3.689550476074219e+02, 3.687867736816406e+02, 3.685461120605469e+02, 3.683146667480469e+02, 3.681323547363281e+02, 3.679927062988281e+02, 3.6788623046875e+02, 3.671304016113281e+02, 3.658734436035156e+02, 3.648491821289062e+02, 3.640643310546875e+02, 3.6346630859375e+02, 3.630252990722656e+02, 3.627292175292969e+02, 3.625504150390625e+02, 3.624454956054688e+02, 3.623629150390625e+02, 3.622666320800781e+02, 3.6214794921875e+02, 3.620196533203125e+02, 3.619066467285156e+02, 3.618231201171875e+02, 3.617662658691406e+02, 3.617226867675781e+02, 3.616732788085938e+02, 3.616103515625e+02, 3.615350036621094e+02, 3.614476318359375e+02, 3.61348876953125e+02, 3.612394714355469e+02, 3.611210632324219e+02, 3.609961853027344e+02] -temSup.T=[2.931499938964844e+02, 3.036293640136719e+02, 3.110102233886719e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.213748168945312e+02, 3.230311279296875e+02, 3.238466491699219e+02, 3.244719848632812e+02, 3.249839172363281e+02, 3.253121337890625e+02, 3.255178833007812e+02, 3.256466979980469e+02, 3.257389831542969e+02, 3.258440551757812e+02, 3.260146179199219e+02, 3.262597045898438e+02, 3.265465393066406e+02, 3.268257751464844e+02, 3.270829467773438e+02, 3.273160705566406e+02, 3.275213928222656e+02, 3.276922607421875e+02, 3.278208312988281e+02, 3.279096984863281e+02, 3.279757080078125e+02, 3.280433044433594e+02, 3.281263122558594e+02, 3.282240600585938e+02, 3.283341674804688e+02, 3.284520568847656e+02, 3.28570068359375e+02, 3.286831665039062e+02, 3.287952270507812e+02, 3.294358215332031e+02, 3.308348693847656e+02, 3.32135498046875e+02, 3.333235778808594e+02, 3.344069213867188e+02, 3.353754577636719e+02, 3.362483215332031e+02, 3.370426940917969e+02, 3.377664489746094e+02, 3.384229736328125e+02, 3.390222473144531e+02, 3.395759887695312e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428023986816406e+02, 3.433203735351562e+02, 3.438912963867188e+02, 3.444885864257812e+02, 3.450904541015625e+02, 3.456882629394531e+02, 3.462680358886719e+02, 3.468106079101562e+02, 3.472947387695312e+02, 3.477068786621094e+02, 3.480466003417969e+02, 3.483233032226562e+02, 3.485499267578125e+02, 3.487330322265625e+02, 3.4887353515625e+02, 3.489696044921875e+02, 3.490020446777344e+02, 3.48923583984375e+02, 3.487329711914062e+02, 3.484852905273438e+02, 3.482633972167969e+02, 3.480913696289062e+02, 3.479599609375e+02, 3.478597717285156e+02, 3.468447875976562e+02, 3.456152648925781e+02, 3.446482238769531e+02, 3.439093322753906e+02, 3.433475952148438e+02, 3.429397277832031e+02, 3.426727905273438e+02, 3.425152282714844e+02, 3.424205627441406e+02, 3.423377380371094e+02, 3.422366333007812e+02, 3.421138305664062e+02, 3.419862060546875e+02, 3.418788757324219e+02, 3.418018493652344e+02, 3.417496948242188e+02, 3.41706787109375e+02, 3.416546020507812e+02, 3.415888977050781e+02, 3.415108337402344e+02, 3.414209289550781e+02, 3.413197631835938e+02, 3.412081604003906e+02, 3.410880126953125e+02, 3.409621276855469e+02] -temRet.T=[2.931499938964844e+02, 3.333218688964844e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.331719970703125e+02, 3.331664428710938e+02, 3.334713745117188e+02, 3.343245849609375e+02, 3.348904418945312e+02, 3.35240966796875e+02, 3.354615783691406e+02, 3.355992431640625e+02, 3.356948547363281e+02, 3.357954406738281e+02, 3.359557189941406e+02, 3.361912536621094e+02, 3.364745788574219e+02, 3.367561950683594e+02, 3.370164489746094e+02, 3.372530517578125e+02, 3.3746240234375e+02, 3.37638427734375e+02, 3.377730407714844e+02, 3.378668212890625e+02, 3.379350280761719e+02, 3.380014038085938e+02, 3.380822448730469e+02, 3.381780395507812e+02, 3.382865600585938e+02, 3.384036560058594e+02, 3.385220336914062e+02, 3.386358032226562e+02, 3.387476196289062e+02, 3.392462463378906e+02, 3.406114501953125e+02, 3.419291687011719e+02, 3.431317443847656e+02, 3.44230224609375e+02, 3.452141723632812e+02, 3.460993347167969e+02, 3.46904052734375e+02, 3.47637451171875e+02, 3.483030090332031e+02, 3.489096069335938e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.532143249511719e+02, 3.537787475585938e+02, 3.543737487792969e+02, 3.549753112792969e+02, 3.555741882324219e+02, 3.561571655273438e+02, 3.567058410644531e+02, 3.571988525390625e+02, 3.576211547851562e+02, 3.579706420898438e+02, 3.582554931640625e+02, 3.584885559082031e+02, 3.586776428222656e+02, 3.588240356445312e+02, 3.589264221191406e+02, 3.589696960449219e+02, 3.589077453613281e+02, 3.587312316894531e+02, 3.584878540039062e+02, 3.582598571777344e+02, 3.580813293457031e+02, 3.579447021484375e+02, 3.57840576171875e+02, 3.569900512695312e+02, 3.557423706054688e+02, 3.547391357421875e+02, 3.539712524414062e+02, 3.533865966796875e+02, 3.52957763671875e+02, 3.526723937988281e+02, 3.5250146484375e+02, 3.52400390625e+02, 3.523177795410156e+02, 3.522197265625e+02, 3.520995178222656e+02, 3.51971435546875e+02, 3.518605041503906e+02, 3.517793579101562e+02, 3.517242431640625e+02, 3.516809387207031e+02, 3.516305236816406e+02, 3.515665893554688e+02, 3.51490234375e+02, 3.514019165039062e+02, 3.513022766113281e+02, 3.511920776367188e+02, 3.510730285644531e+02, 3.5094775390625e+02] -temRoo.T=[2.931499938964844e+02, 2.834371643066406e+02, 2.862301635742188e+02, 2.892975769042969e+02, 2.915568542480469e+02, 2.931440124511719e+02, 2.9422509765625e+02, 2.948786010742188e+02, 2.951877136230469e+02, 2.954170532226562e+02, 2.955670776367188e+02, 2.956549987792969e+02, 2.957168884277344e+02, 2.957911682128906e+02, 2.959510803222656e+02, 2.962154846191406e+02, 2.965373840332031e+02, 2.968403015136719e+02, 2.970947265625e+02, 2.973243408203125e+02, 2.975263977050781e+02, 2.976948547363281e+02, 2.978182067871094e+02, 2.978943176269531e+02, 2.979436950683594e+02, 2.979971923828125e+02, 2.980797424316406e+02, 2.98181396484375e+02, 2.982959594726562e+02, 2.984185791015625e+02, 2.985416259765625e+02, 2.986548767089844e+02, 2.987629699707031e+02, 2.988792419433594e+02, 3.01014892578125e+02, 3.024351501464844e+02, 3.035817565917969e+02, 3.046459655761719e+02, 3.055906372070312e+02, 3.064290466308594e+02, 3.071982421875e+02, 3.079040222167969e+02, 3.085436096191406e+02, 3.091235961914062e+02, 3.096614074707031e+02, 3.101661682128906e+02, 3.106458129882812e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139285888671875e+02, 3.14550048828125e+02, 3.151605834960938e+02, 3.157632141113281e+02, 3.163482971191406e+02, 3.168951416015625e+02, 3.173786926269531e+02, 3.177808532714844e+02, 3.181035461425781e+02, 3.183600769042969e+02, 3.185693664550781e+02, 3.187411499023438e+02, 3.188727111816406e+02, 3.189614562988281e+02, 3.19000244140625e+02, 3.189235534667969e+02, 3.186986999511719e+02, 3.18397705078125e+02, 3.181358337402344e+02, 3.179746704101562e+02, 3.178573608398438e+02, 3.177685546875e+02, 3.177008972167969e+02, 3.152051391601562e+02, 3.142509155273438e+02, 3.135875549316406e+02, 3.130862121582031e+02, 3.127157592773438e+02, 3.124877014160156e+02, 3.123734741210938e+02, 3.12321044921875e+02, 3.12268310546875e+02, 3.121751708984375e+02, 3.120454406738281e+02, 3.119035339355469e+02, 3.117870788574219e+02, 3.117142333984375e+02, 3.116724853515625e+02, 3.116422729492188e+02, 3.115973205566406e+02, 3.115286865234375e+02, 3.114476318359375e+02, 3.113549194335938e+02, 3.112511901855469e+02, 3.111367492675781e+02, 3.110135498046875e+02, 3.108847351074219e+02, 3.107539367675781e+02] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt deleted file mode 100644 index 1288ad2fd5..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System4.txt +++ /dev/null @@ -1,21 +0,0 @@ -last-generated=2024-09-13 -statistics-initialization= -{ - "nonlinear": "5, 9, 0, 0, 0", - "numerical Jacobians": "0" -} -statistics-simulation= -{ - "linear": "0, 0, 0, 0, 0, 0, 0", - "nonlinear": "1, 10, 0", - "number of continuous time states": "26", - "numerical Jacobians": "0" -} -time=[1.296e+06, 1.3824e+06] -senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] -boi.T=[2.931499938964844e+02, 3.434833679199219e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.432107238769531e+02, 3.43205078125e+02, 3.434713439941406e+02, 3.442933044433594e+02, 3.448924865722656e+02, 3.452561645507812e+02, 3.454854736328125e+02, 3.456283569335938e+02, 3.457260131835938e+02, 3.458241577148438e+02, 3.45978515625e+02, 3.462084350585938e+02, 3.464895935058594e+02, 3.467725524902344e+02, 3.470345764160156e+02, 3.47273193359375e+02, 3.474848937988281e+02, 3.476638488769531e+02, 3.478019714355469e+02, 3.47898681640625e+02, 3.479682006835938e+02, 3.480339050292969e+02, 3.481134948730469e+02, 3.482081298828125e+02, 3.483157653808594e+02, 3.48432373046875e+02, 3.485509338378906e+02, 3.486650695800781e+02, 3.487767944335938e+02, 3.491956481933594e+02, 3.505384216308594e+02, 3.518659973144531e+02, 3.530770263671875e+02, 3.541842346191406e+02, 3.551771545410156e+02, 3.560695190429688e+02, 3.568802490234375e+02, 3.576192321777344e+02, 3.582900390625e+02, 3.589009094238281e+02, 3.594639892578125e+02, 3.59989013671875e+02, 3.604840698242188e+02, 3.609530029296875e+02, 3.613988647460938e+02, 3.618287048339844e+02, 3.622544860839844e+02, 3.627047424316406e+02, 3.541706848144531e+02, 3.586401672363281e+02, 3.6102783203125e+02, 3.624544982910156e+02, 3.473058776855469e+02, 3.603316040039062e+02, 3.624865417480469e+02, 3.529296875e+02, 3.610571899414062e+02, 3.631178894042969e+02, 3.585865783691406e+02, 3.62072265625e+02, 3.468697204589844e+02, 3.607023010253906e+02, 3.629743957519531e+02, 3.579193725585938e+02, 3.617729797363281e+02, 3.509577026367188e+02, 3.593564453125e+02, 3.618064575195312e+02, 3.591344604492188e+02, 3.586734008789062e+02, 3.615327758789062e+02, 3.623335266113281e+02, 3.622222595214844e+02, 3.620665588378906e+02, 3.619429931640625e+02, 3.618490905761719e+02, 3.617927551269531e+02, 3.617894287109375e+02, 3.618338317871094e+02, 3.61899169921875e+02, 3.619463195800781e+02, 3.619490356445312e+02, 3.619058532714844e+02, 3.618348999023438e+02, 3.617657775878906e+02, 3.617156677246094e+02, 3.61684326171875e+02, 3.616601257324219e+02, 3.616254577636719e+02, 3.615739440917969e+02, 3.615072326660156e+02, 3.614264526367188e+02, 3.613327026367188e+02, 3.612271423339844e+02, 3.611116333007812e+02, 3.60989013671875e+02] -temSup.T=[2.931499938964844e+02, 3.036293640136719e+02, 3.110102233886719e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.213748168945312e+02, 3.230311279296875e+02, 3.238466491699219e+02, 3.244719848632812e+02, 3.249839172363281e+02, 3.253121337890625e+02, 3.255178833007812e+02, 3.256466979980469e+02, 3.257389831542969e+02, 3.258440551757812e+02, 3.260146179199219e+02, 3.262597045898438e+02, 3.265465393066406e+02, 3.268257751464844e+02, 3.270829467773438e+02, 3.273160705566406e+02, 3.275213928222656e+02, 3.276922607421875e+02, 3.278208312988281e+02, 3.279096984863281e+02, 3.279757080078125e+02, 3.280433044433594e+02, 3.281263122558594e+02, 3.282240600585938e+02, 3.283341674804688e+02, 3.284520568847656e+02, 3.28570068359375e+02, 3.286831665039062e+02, 3.287952270507812e+02, 3.294358215332031e+02, 3.308348693847656e+02, 3.32135498046875e+02, 3.333235778808594e+02, 3.344069213867188e+02, 3.353754577636719e+02, 3.362483215332031e+02, 3.370426940917969e+02, 3.377664489746094e+02, 3.384229736328125e+02, 3.390222473144531e+02, 3.395759887695312e+02, 3.400937194824219e+02, 3.405828552246094e+02, 3.410462646484375e+02, 3.4148779296875e+02, 3.419151916503906e+02, 3.423424072265625e+02, 3.428023986816406e+02, 3.412862548828125e+02, 3.395494689941406e+02, 3.413731079101562e+02, 3.427290954589844e+02, 3.3701904296875e+02, 3.409632263183594e+02, 3.428541259765625e+02, 3.385643920898438e+02, 3.416318054199219e+02, 3.434749145507812e+02, 3.400550842285156e+02, 3.425283813476562e+02, 3.370928955078125e+02, 3.413815307617188e+02, 3.433495178222656e+02, 3.397550354003906e+02, 3.422109985351562e+02, 3.4031494140625e+02, 3.402499389648438e+02, 3.421600952148438e+02, 3.431968078613281e+02, 3.398429565429688e+02, 3.419109802246094e+02, 3.423342590332031e+02, 3.421798706054688e+02, 3.4202978515625e+02, 3.419132080078125e+02, 3.418257446289062e+02, 3.417798767089844e+02, 3.417883911132812e+02, 3.418408813476562e+02, 3.419064331054688e+02, 3.419457397460938e+02, 3.419378051757812e+02, 3.41885986328125e+02, 3.418122863769531e+02, 3.417462768554688e+02, 3.417007446289062e+02, 3.416725769042969e+02, 3.416478576660156e+02, 3.41609619140625e+02, 3.415546264648438e+02, 3.414846801757812e+02, 3.414009704589844e+02, 3.413045043945312e+02, 3.41196533203125e+02, 3.410791625976562e+02, 3.409553527832031e+02] -temRet.T=[2.931499938964844e+02, 3.333218688964844e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.331719970703125e+02, 3.331664428710938e+02, 3.334713745117188e+02, 3.343245849609375e+02, 3.348904418945312e+02, 3.35240966796875e+02, 3.354615783691406e+02, 3.355992431640625e+02, 3.356948547363281e+02, 3.357954406738281e+02, 3.359557189941406e+02, 3.361912536621094e+02, 3.364745788574219e+02, 3.367561950683594e+02, 3.370164489746094e+02, 3.372530517578125e+02, 3.3746240234375e+02, 3.37638427734375e+02, 3.377730407714844e+02, 3.378668212890625e+02, 3.379350280761719e+02, 3.380014038085938e+02, 3.380822448730469e+02, 3.381780395507812e+02, 3.382865600585938e+02, 3.384036560058594e+02, 3.385220336914062e+02, 3.386358032226562e+02, 3.387476196289062e+02, 3.392462463378906e+02, 3.406114501953125e+02, 3.419291687011719e+02, 3.431317443847656e+02, 3.44230224609375e+02, 3.452141723632812e+02, 3.460993347167969e+02, 3.46904052734375e+02, 3.47637451171875e+02, 3.483030090332031e+02, 3.489096069335938e+02, 3.494692077636719e+02, 3.499915466308594e+02, 3.504844360351562e+02, 3.509513244628906e+02, 3.513955993652344e+02, 3.518245239257812e+02, 3.522507934570312e+02, 3.5270458984375e+02, 3.491664733886719e+02, 3.489520568847656e+02, 3.511195068359375e+02, 3.525196533203125e+02, 3.410640869140625e+02, 3.505323486328125e+02, 3.525862731933594e+02, 3.451190185546875e+02, 3.512355041503906e+02, 3.532137756347656e+02, 3.491168823242188e+02, 3.522052917480469e+02, 3.408605041503906e+02, 3.509209594726562e+02, 3.530771179199219e+02, 3.48597900390625e+02, 3.518997802734375e+02, 3.468207702636719e+02, 3.4966064453125e+02, 3.519014282226562e+02, 3.527380065917969e+02, 3.490868225097656e+02, 3.51636962890625e+02, 3.522988586425781e+02, 3.521707763671875e+02, 3.5201708984375e+02, 3.518960876464844e+02, 3.518045349121094e+02, 3.517520141601562e+02, 3.517530517578125e+02, 3.518004760742188e+02, 3.518659362792969e+02, 3.519102478027344e+02, 3.519090576171875e+02, 3.518626708984375e+02, 3.517906799316406e+02, 3.5172265625e+02, 3.516742248535156e+02, 3.516440734863281e+02, 3.516197204589844e+02, 3.51583740234375e+02, 3.515309448242188e+02, 3.514630432128906e+02, 3.513811950683594e+02, 3.512864379882812e+02, 3.511799926757812e+02, 3.510637817382812e+02, 3.509407348632812e+02] -temRoo.T=[2.931499938964844e+02, 2.834371643066406e+02, 2.862301635742188e+02, 2.892975769042969e+02, 2.915568542480469e+02, 2.931440124511719e+02, 2.9422509765625e+02, 2.948786010742188e+02, 2.951877136230469e+02, 2.954170532226562e+02, 2.955670776367188e+02, 2.956549987792969e+02, 2.957168884277344e+02, 2.957911682128906e+02, 2.959510803222656e+02, 2.962154846191406e+02, 2.965373840332031e+02, 2.968403015136719e+02, 2.970947265625e+02, 2.973243408203125e+02, 2.975263977050781e+02, 2.976948547363281e+02, 2.978182067871094e+02, 2.978943176269531e+02, 2.979436950683594e+02, 2.979971923828125e+02, 2.980797424316406e+02, 2.98181396484375e+02, 2.982959594726562e+02, 2.984185791015625e+02, 2.985416259765625e+02, 2.986548767089844e+02, 2.987629699707031e+02, 2.988792419433594e+02, 3.01014892578125e+02, 3.024351501464844e+02, 3.035817565917969e+02, 3.046459655761719e+02, 3.055906372070312e+02, 3.064290466308594e+02, 3.071982421875e+02, 3.079040222167969e+02, 3.085436096191406e+02, 3.091235961914062e+02, 3.096614074707031e+02, 3.101661682128906e+02, 3.106458129882812e+02, 3.111026611328125e+02, 3.115364990234375e+02, 3.119558410644531e+02, 3.12372314453125e+02, 3.128164367675781e+02, 3.133385620117188e+02, 3.139214172363281e+02, 3.124472351074219e+02, 3.131286315917969e+02, 3.141797180175781e+02, 3.145890502929688e+02, 3.13705322265625e+02, 3.147475891113281e+02, 3.146864929199219e+02, 3.142790222167969e+02, 3.153054809570312e+02, 3.142137451171875e+02, 3.14788330078125e+02, 3.15270751953125e+02, 3.143161010742188e+02, 3.152500305175781e+02, 3.141626281738281e+02, 3.143001403808594e+02, 3.149447021484375e+02, 3.133312683105469e+02, 3.139218139648438e+02, 3.147353210449219e+02, 3.1331591796875e+02, 3.137755737304688e+02, 3.121613159179688e+02, 3.11927001953125e+02, 3.118166198730469e+02, 3.11737060546875e+02, 3.116876220703125e+02, 3.117040405273438e+02, 3.117762145996094e+02, 3.118657836914062e+02, 3.119212951660156e+02, 3.119105834960938e+02, 3.118436889648438e+02, 3.117496948242188e+02, 3.116694641113281e+02, 3.116246643066406e+02, 3.116041870117188e+02, 3.115902099609375e+02, 3.115573425292969e+02, 3.114983520507812e+02, 3.114244689941406e+02, 3.113372802734375e+02, 3.112377014160156e+02, 3.1112646484375e+02, 3.110057067871094e+02, 3.108787536621094e+02, 3.107493591308594e+02] -conBoiRet.yVal=[0e+00, 4.212583005428314e-01, 4.565468430519104e-01, 4.838085770606995e-01, 5.058921575546265e-01, 5.233334898948669e-01, 5.365664958953857e-01, 6.597625017166138e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -conEquSta.onBoi=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt deleted file mode 100644 index aceb6ad53b..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System5.txt +++ /dev/null @@ -1,22 +0,0 @@ -last-generated=2024-09-19 -statistics-initialization= -{ - "nonlinear": "5, 10, 0, 0", - "numerical Jacobians": "0" -} -statistics-simulation= -{ - "linear": "0, 0, 0, 0, 0, 0, 0", - "nonlinear": "1, 10, 0", - "number of continuous time states": "26", - "numerical Jacobians": "0" -} -time=[1.296e+06, 1.3824e+06] -senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] -boi.T=[2.931499938964844e+02, 3.434832763671875e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.432107238769531e+02, 3.412689514160156e+02, 3.432171936035156e+02, 3.432071838378906e+02, 3.4320166015625e+02, 3.431986999511719e+02, 3.432062072753906e+02, 3.432010498046875e+02, 3.413011169433594e+02, 3.432116394042969e+02, 3.432052917480469e+02, 3.4327685546875e+02, 3.432153625488281e+02, 3.413323059082031e+02, 3.432182922363281e+02, 3.432119750976562e+02, 3.431321105957031e+02, 3.432158813476562e+02, 3.412737731933594e+02, 3.432198791503906e+02, 3.432103576660156e+02, 3.432146606445312e+02, 3.432135925292969e+02, 3.4314208984375e+02, 3.432171325683594e+02, 3.432020874023438e+02, 3.432201843261719e+02, 3.42871826171875e+02, 3.432225952148438e+02, 3.412811889648438e+02, 3.432481384277344e+02, 3.431516418457031e+02, 3.413154296875e+02, 3.415331420898438e+02, 3.431570129394531e+02, 3.413214416503906e+02, 3.413232421875e+02, 3.4316650390625e+02, 3.413245239257812e+02, 3.413251647949219e+02, 3.433076782226562e+02, 3.413253479003906e+02, 3.432435913085938e+02, 3.413251953125e+02, 3.413246459960938e+02, 3.431742858886719e+02, 3.413232727050781e+02, 3.432348022460938e+02, 3.413182373046875e+02, 3.413131103515625e+02, 3.413131103515625e+02, 3.432421264648438e+02, 3.413114013671875e+02, 3.434130249023438e+02, 3.413118896484375e+02, 3.413118896484375e+02, 3.41317626953125e+02, 3.41317626953125e+02, 3.41317626953125e+02, 3.413144836425781e+02, 3.413144836425781e+02, 3.432393798828125e+02, 3.413183288574219e+02, 3.413183288574219e+02, 3.413230895996094e+02, 3.413230895996094e+02, 3.413209228515625e+02, 3.413209228515625e+02, 3.418636779785156e+02, 3.413165283203125e+02, 3.432117919921875e+02, 3.413403625488281e+02, 3.413269653320312e+02, 3.43216552734375e+02, 3.413267822265625e+02, 3.432596435546875e+02, 3.434873657226562e+02, 3.413261413574219e+02, 3.432266845703125e+02, 3.413264465332031e+02, 3.413274230957031e+02, 3.431798400878906e+02, 3.413275756835938e+02, 3.413270568847656e+02, 3.431701354980469e+02, 3.413266906738281e+02, 3.413622131347656e+02, 3.432836608886719e+02, 3.413270568847656e+02, 3.432550964355469e+02, 3.434814453125e+02, 3.413267517089844e+02, 3.432408752441406e+02, 3.413265075683594e+02, 3.413261413574219e+02, 3.432283325195312e+02] -temSup.T=[2.931499938964844e+02, 3.036293029785156e+02, 3.1101025390625e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.213748168945312e+02, 3.229210205078125e+02, 3.197828063964844e+02, 3.218347473144531e+02, 3.231505737304688e+02, 3.194843444824219e+02, 3.215145263671875e+02, 3.227781982421875e+02, 3.233633117675781e+02, 3.205654602050781e+02, 3.22278564453125e+02, 3.185347595214844e+02, 3.207666625976562e+02, 3.226780090332031e+02, 3.193686828613281e+02, 3.218971862792969e+02, 3.175887756347656e+02, 3.210928344726562e+02, 3.225085754394531e+02, 3.201983032226562e+02, 3.224572448730469e+02, 3.190616760253906e+02, 3.217935180664062e+02, 3.176122741699219e+02, 3.211933898925781e+02, 3.173088073730469e+02, 3.207025756835938e+02, 3.223034973144531e+02, 3.20312255859375e+02, 3.214923706054688e+02, 3.181777648925781e+02, 3.136198120117188e+02, 3.179538879394531e+02, 3.173634643554688e+02, 3.125412902832031e+02, 3.168973693847656e+02, 3.164294128417969e+02, 3.114633178710938e+02, 3.160238952636719e+02, 3.156395874023438e+02, 3.111219482421875e+02, 3.15251220703125e+02, 3.137964477539062e+02, 3.148606567382812e+02, 3.144755554199219e+02, 3.098387451171875e+02, 3.140381774902344e+02, 3.124127807617188e+02, 3.133011169433594e+02, 3.123234252929688e+02, 3.123234252929688e+02, 3.111024780273438e+02, 3.113951416015625e+02, 3.075806579589844e+02, 3.105326843261719e+02, 3.105326843261719e+02, 3.101451416015625e+02, 3.101451416015625e+02, 3.101451416015625e+02, 3.100009155273438e+02, 3.100009155273438e+02, 3.067701416015625e+02, 3.100101318359375e+02, 3.100101318359375e+02, 3.1067626953125e+02, 3.1067626953125e+02, 3.113613586425781e+02, 3.113613586425781e+02, 3.112803649902344e+02, 3.113517150878906e+02, 3.091761779785156e+02, 3.147893676757812e+02, 3.154362182617188e+02, 3.107131958007812e+02, 3.154381713867188e+02, 3.14986083984375e+02, 3.130552673339844e+02, 3.1522998046875e+02, 3.132066040039062e+02, 3.15069091796875e+02, 3.151340637207031e+02, 3.116830139160156e+02, 3.153270568847656e+02, 3.154429626464844e+02, 3.108334045410156e+02, 3.15427001953125e+02, 3.153990173339844e+02, 3.109686889648438e+02, 3.15482177734375e+02, 3.147348937988281e+02, 3.129483337402344e+02, 3.157128601074219e+02, 3.142114868164062e+02, 3.158470458984375e+02, 3.159845886230469e+02, 3.1395166015625e+02] -temRet.T=[2.931499938964844e+02, 3.333218383789062e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.331719970703125e+02, 3.330797729492188e+02, 3.331796875e+02, 3.331683654785156e+02, 3.331630554199219e+02, 3.331756286621094e+02, 3.331673278808594e+02, 3.331625061035156e+02, 3.331213684082031e+02, 3.331729431152344e+02, 3.331667785644531e+02, 3.330426635742188e+02, 3.331762390136719e+02, 3.330877075195312e+02, 3.331846313476562e+02, 3.331731567382812e+02, 3.331069641113281e+02, 3.331767272949219e+02, 3.330840148925781e+02, 3.331806335449219e+02, 3.33171630859375e+02, 3.331859436035156e+02, 3.331747131347656e+02, 3.331281127929688e+02, 3.331780395507812e+02, 3.330380554199219e+02, 3.331809692382812e+02, 3.331681518554688e+02, 3.33183349609375e+02, 3.330904541015625e+02, 3.332095336914062e+02, 3.331208801269531e+02, 3.331210327148438e+02, 3.331462097167969e+02, 3.331207885742188e+02, 3.33127685546875e+02, 3.3313037109375e+02, 3.330989685058594e+02, 3.331325378417969e+02, 3.331344299316406e+02, 3.330813293457031e+02, 3.331361694335938e+02, 3.332266845703125e+02, 3.331374206542969e+02, 3.331385803222656e+02, 3.331060180664062e+02, 3.33139404296875e+02, 3.332242126464844e+02, 3.331390686035156e+02, 3.331380615234375e+02, 3.331380615234375e+02, 3.332298583984375e+02, 3.331373596191406e+02, 3.332115478515625e+02, 3.331369018554688e+02, 3.331369018554688e+02, 3.331404724121094e+02, 3.331404724121094e+02, 3.331404724121094e+02, 3.331390075683594e+02, 3.331390075683594e+02, 3.331656494140625e+02, 3.331409912109375e+02, 3.331409912109375e+02, 3.331437683105469e+02, 3.331437683105469e+02, 3.331425476074219e+02, 3.331425476074219e+02, 3.331925354003906e+02, 3.331404418945312e+02, 3.331940002441406e+02, 3.331416931152344e+02, 3.331355895996094e+02, 3.330783996582031e+02, 3.331355895996094e+02, 3.332304992675781e+02, 3.332329711914062e+02, 3.331363220214844e+02, 3.332164001464844e+02, 3.331370544433594e+02, 3.331370544433594e+02, 3.331669616699219e+02, 3.331362609863281e+02, 3.331356201171875e+02, 3.331059265136719e+02, 3.331356201171875e+02, 3.331392822265625e+02, 3.330787048339844e+02, 3.331354675292969e+02, 3.332292175292969e+02, 3.332362060546875e+02, 3.331343383789062e+02, 3.332232360839844e+02, 3.331337585449219e+02, 3.331330261230469e+02, 3.332156677246094e+02] -temRoo.T=[2.931499938964844e+02, 2.834371948242188e+02, 2.862301330566406e+02, 2.892975463867188e+02, 2.915568542480469e+02, 2.931440124511719e+02, 2.941587219238281e+02, 2.922658386230469e+02, 2.932417602539062e+02, 2.94072265625e+02, 2.921136779785156e+02, 2.928497619628906e+02, 2.936820373535156e+02, 2.934452514648438e+02, 2.924263916015625e+02, 2.93575927734375e+02, 2.927049255371094e+02, 2.928812866210938e+02, 2.941804809570312e+02, 2.924045104980469e+02, 2.937210083007812e+02, 2.923773803710938e+02, 2.93244140625e+02, 2.93449462890625e+02, 2.92740478515625e+02, 2.941199035644531e+02, 2.923981018066406e+02, 2.937544860839844e+02, 2.923780517578125e+02, 2.934642639160156e+02, 2.926152038574219e+02, 2.932439575195312e+02, 2.930661010742188e+02, 2.930980224609375e+02, 2.939833679199219e+02, 2.939597473144531e+02, 2.928506774902344e+02, 2.939415893554688e+02, 2.942293701171875e+02, 2.929274597167969e+02, 2.939508056640625e+02, 2.943716430664062e+02, 2.929440612792969e+02, 2.940947265625e+02, 2.942908325195312e+02, 2.929515380859375e+02, 2.943915710449219e+02, 2.938172302246094e+02, 2.934654235839844e+02, 2.946894226074219e+02, 2.930814208984375e+02, 2.9433154296875e+02, 2.939205017089844e+02, 2.940247802734375e+02, 2.944462280273438e+02, 2.940744323730469e+02, 2.941338195800781e+02, 2.944700317382812e+02, 2.931013793945312e+02, 2.950010375976562e+02, 2.937785339355469e+02, 2.944610595703125e+02, 2.945914001464844e+02, 2.932905883789062e+02, 2.950827941894531e+02, 2.941322937011719e+02, 2.933622131347656e+02, 2.948946533203125e+02, 2.934913024902344e+02, 2.949083251953125e+02, 2.937841186523438e+02, 2.946959838867188e+02, 2.940284118652344e+02, 2.942195129394531e+02, 2.94270751953125e+02, 2.936306762695312e+02, 2.9396240234375e+02, 2.943980102539062e+02, 2.929287414550781e+02, 2.942446899414062e+02, 2.940342407226562e+02, 2.930511169433594e+02, 2.944958190917969e+02, 2.935714111328125e+02, 2.934937438964844e+02, 2.946109924316406e+02, 2.931596984863281e+02, 2.938140563964844e+02, 2.945286254882812e+02, 2.929768981933594e+02, 2.941008911132812e+02, 2.942635498046875e+02, 2.929299926757812e+02, 2.943206176757812e+02, 2.938662109375e+02, 2.930386352539062e+02, 2.944496154785156e+02, 2.935947875976562e+02, 2.931981201171875e+02, 2.94506103515625e+02, 2.934295959472656e+02] -conBoiRet.yVal=[0e+00, 4.212594628334045e-01, 4.565480053424835e-01, 4.838098287582397e-01, 5.058930516242981e-01, 5.233339667320251e-01, 5.236923694610596e-01, 5.114201307296753e-01, 5.269390344619751e-01, 5.375866889953613e-01, 5.091941952705383e-01, 5.244570374488831e-01, 5.345306396484375e-01, 5.361558794975281e-01, 5.172062516212463e-01, 5.304576754570007e-01, 5.046308040618896e-01, 5.186852812767029e-01, 5.250994563102722e-01, 5.083945989608765e-01, 5.273821353912354e-01, 4.959457218647003e-01, 5.211418867111206e-01, 5.086243152618408e-01, 5.144302845001221e-01, 5.318449735641479e-01, 5.061728954315186e-01, 5.265560150146484e-01, 4.959854781627655e-01, 5.218941569328308e-01, 4.948271512985229e-01, 5.181629657745361e-01, 5.102766156196594e-01, 5.152435302734375e-01, 4.907311797142029e-01, 4.999020397663116e-01, 4.709380865097046e-01, 4.793302714824677e-01, 4.872170388698578e-01, 4.647347331047058e-01, 4.73406046628952e-01, 4.782120883464813e-01, 4.590348303318024e-01, 4.694218337535858e-01, 4.735685586929321e-01, 4.590467512607574e-01, 4.665768444538116e-01, 4.718035161495209e-01, 4.60739940404892e-01, 4.640884697437286e-01, 4.502870142459869e-01, 4.588809907436371e-01, 4.636670053005219e-01, 4.519980549812317e-01, 4.530890583992004e-01, 4.444915950298309e-01, 4.563360810279846e-01, 4.393826425075531e-01, 4.436482787132263e-01, 4.376770555973053e-01, 4.282426834106445e-01, 4.411533176898956e-01, 4.342884719371796e-01, 4.274236261844635e-01, 4.373604655265808e-01, 4.294531941413879e-01, 4.348052740097046e-01, 4.357894957065582e-01, 4.293039739131927e-01, 4.430703222751617e-01, 4.38592940568924e-01, 4.473768174648285e-01, 4.420123100280762e-01, 4.530364871025085e-01, 4.41187858581543e-01, 4.460897147655487e-01, 4.652161002159119e-01, 4.719216823577881e-01, 4.554951786994934e-01, 4.672927558422089e-01, 4.791069328784943e-01, 4.731855690479279e-01, 4.67265248298645e-01, 4.682562649250031e-01, 4.624899327754974e-01, 4.683427810668945e-01, 4.59576815366745e-01, 4.651550352573395e-01, 4.713089168071747e-01, 4.555608928203583e-01, 4.665520191192627e-01, 4.725323021411896e-01, 4.576119780540466e-01, 4.680196344852448e-01, 4.775474965572357e-01, 4.748954772949219e-01, 4.701705276966095e-01, 4.743029177188873e-01, 4.654714167118073e-01, 4.724253416061401e-01, 4.726920425891876e-01] -conEquSta.onBoi=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00] -conSysSta.onSys=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 1e+00] diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt deleted file mode 100644 index f28e82de20..0000000000 --- a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Examples_Tutorial_CDL_System6.txt +++ /dev/null @@ -1,23 +0,0 @@ -last-generated=2024-09-13 -statistics-initialization= -{ - "nonlinear": "5, 10, 0, 0", - "numerical Jacobians": "0" -} -statistics-simulation= -{ - "linear": "0, 0, 0, 0, 0, 0, 0", - "nonlinear": "1, 10, 0", - "number of continuous time states": "27", - "numerical Jacobians": "0" -} -time=[1.296e+06, 1.3824e+06] -senTOut.T=[2.681499938964844e+02, 2.680006103515625e+02, 2.678824462890625e+02, 2.677569885253906e+02, 2.675857238769531e+02, 2.673489074707031e+02, 2.670778503417969e+02, 2.667972106933594e+02, 2.665312194824219e+02, 2.6629833984375e+02, 2.661046142578125e+02, 2.659736938476562e+02, 2.659306640625e+02, 2.660298767089844e+02, 2.6639697265625e+02, 2.6689599609375e+02, 2.673535766601562e+02, 2.676152648925781e+02, 2.678009948730469e+02, 2.679618225097656e+02, 2.680851135253906e+02, 2.681575012207031e+02, 2.681536254882812e+02, 2.681101989746094e+02, 2.680885620117188e+02, 2.681499938964844e+02, 2.682830200195312e+02, 2.684293518066406e+02, 2.685801696777344e+02, 2.687266235351562e+02, 2.688496398925781e+02, 2.689453125e+02, 2.690469055175781e+02, 2.69188232421875e+02, 2.694860229492188e+02, 2.701334228515625e+02, 2.709511413574219e+02, 2.717348327636719e+02, 2.723293762207031e+02, 2.728933410644531e+02, 2.734419860839844e+02, 2.739486999511719e+02, 2.743910217285156e+02, 2.748066101074219e+02, 2.752138061523438e+02, 2.756160583496094e+02, 2.760163269042969e+02, 2.763985595703125e+02, 2.767682189941406e+02, 2.771453247070312e+02, 2.775499877929688e+02, 2.780906677246094e+02, 2.787913208007812e+02, 2.795452575683594e+02, 2.802459106445312e+02, 2.808594970703125e+02, 2.814520263671875e+02, 2.819882507324219e+02, 2.8243017578125e+02, 2.827425842285156e+02, 2.829331359863281e+02, 2.830432434082031e+02, 2.831151733398438e+02, 2.831843566894531e+02, 2.832323608398438e+02, 2.832435302734375e+02, 2.832067260742188e+02, 2.830890808105469e+02, 2.826735534667969e+02, 2.820996398925781e+02, 2.816126098632812e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.814500122070312e+02, 2.815123901367188e+02, 2.816962585449219e+02, 2.819049987792969e+02, 2.820390930175781e+02, 2.820126342773438e+02, 2.818557434082031e+02, 2.816533203125e+02, 2.81490234375e+02, 2.814390258789062e+02, 2.814595336914062e+02, 2.814947814941406e+02, 2.814945983886719e+02, 2.814153137207031e+02, 2.813063659667969e+02, 2.811892395019531e+02, 2.810629577636719e+02, 2.809265441894531e+02, 2.807815856933594e+02, 2.806335144042969e+02, 2.8048779296875e+02, 2.803500061035156e+02] -boi.T=[2.931499938964844e+02, 3.434833679199219e+02, 3.432331848144531e+02, 3.432239074707031e+02, 3.43217041015625e+02, 3.528956604003906e+02, 3.576978759765625e+02, 3.526015930175781e+02, 3.602760009765625e+02, 3.509493713378906e+02, 3.608724975585938e+02, 3.475165710449219e+02, 3.572972106933594e+02, 3.452764892578125e+02, 3.555399169921875e+02, 3.449403991699219e+02, 3.5786083984375e+02, 3.474909973144531e+02, 3.617934265136719e+02, 3.517604370117188e+02, 3.456141967773438e+02, 3.582394714355469e+02, 3.485054321289062e+02, 3.604246520996094e+02, 3.540896301269531e+02, 3.455384216308594e+02, 3.605604858398438e+02, 3.511347351074219e+02, 3.440261840820312e+02, 3.601527709960938e+02, 3.515797119140625e+02, 3.449183349609375e+02, 3.620229797363281e+02, 3.54238037109375e+02, 3.535430297851562e+02, 3.526867980957031e+02, 3.512720031738281e+02, 3.514784240722656e+02, 3.523876037597656e+02, 3.536019592285156e+02, 3.549525756835938e+02, 3.563995971679688e+02, 3.579619445800781e+02, 3.596748352050781e+02, 3.617506408691406e+02, 3.60470458984375e+02, 3.559532775878906e+02, 3.508215637207031e+02, 3.44654296875e+02, 3.469327392578125e+02, 3.512892456054688e+02, 3.554247436523438e+02, 3.594942016601562e+02, 3.558909912109375e+02, 3.466330871582031e+02, 3.546285400390625e+02, 3.61640380859375e+02, 3.472928466796875e+02, 3.571298522949219e+02, 3.440164184570312e+02, 3.547879028320312e+02, 3.50660888671875e+02, 3.528243408203125e+02, 3.604035949707031e+02, 3.512106018066406e+02, 3.614145812988281e+02, 3.494896545410156e+02, 3.59525634765625e+02, 3.456096496582031e+02, 3.542845764160156e+02, 3.612555541992188e+02, 3.444588012695312e+02, 3.529975280761719e+02, 3.599310607910156e+02, 3.433215026855469e+02, 3.517929382324219e+02, 3.618186340332031e+02, 3.601310119628906e+02, 3.603203125e+02, 3.617422485351562e+02, 3.611863098144531e+02, 3.574175415039062e+02, 3.532514038085938e+02, 3.489363098144531e+02, 3.44717529296875e+02, 3.452042236328125e+02, 3.477545776367188e+02, 3.501216125488281e+02, 3.523743286132812e+02, 3.544904174804688e+02, 3.565160217285156e+02, 3.58537841796875e+02, 3.606431579589844e+02, 3.6238623046875e+02, 3.589515991210938e+02, 3.558465270996094e+02, 3.530482177734375e+02, 3.505100708007812e+02, 3.4816259765625e+02, 3.459473266601562e+02, 3.432810974121094e+02] -temSup.T=[2.931499938964844e+02, 3.036293640136719e+02, 3.1101025390625e+02, 3.156801452636719e+02, 3.190068054199219e+02, 3.181846313476562e+02, 3.185993957519531e+02, 3.186600036621094e+02, 3.189481201171875e+02, 3.189635925292969e+02, 3.192712707519531e+02, 3.194983520507812e+02, 3.193892211914062e+02, 3.19415771484375e+02, 3.19120849609375e+02, 3.185459899902344e+02, 3.183751525878906e+02, 3.185407409667969e+02, 3.180388793945312e+02, 3.17714111328125e+02, 3.173306274414062e+02, 3.176727905273438e+02, 3.180802001953125e+02, 3.177732849121094e+02, 3.1754443359375e+02, 3.1768505859375e+02, 3.176912536621094e+02, 3.175335998535156e+02, 3.1697998046875e+02, 3.172467651367188e+02, 3.172243041992188e+02, 3.168643493652344e+02, 3.170609436035156e+02, 3.167634582519531e+02, 3.124078369140625e+02, 3.115540161132812e+02, 3.104700927734375e+02, 3.09622802734375e+02, 3.090401306152344e+02, 3.084966735839844e+02, 3.080016174316406e+02, 3.075909729003906e+02, 3.073069152832031e+02, 3.071300659179688e+02, 3.070762329101562e+02, 3.0696240234375e+02, 3.068350830078125e+02, 3.065877990722656e+02, 3.060327758789062e+02, 3.05546142578125e+02, 3.04848876953125e+02, 3.040871276855469e+02, 3.036488342285156e+02, 3.034918823242188e+02, 3.028552856445312e+02, 3.018724060058594e+02, 3.015412902832031e+02, 3.011158752441406e+02, 3.004388427734375e+02, 3.002837829589844e+02, 2.999995422363281e+02, 3.00043701171875e+02, 2.999257507324219e+02, 3.000049133300781e+02, 2.998818969726562e+02, 2.999306335449219e+02, 2.9996142578125e+02, 2.999478454589844e+02, 3.005303039550781e+02, 3.008473205566406e+02, 3.015175476074219e+02, 3.016997375488281e+02, 3.014815673828125e+02, 3.01451904296875e+02, 3.016185607910156e+02, 3.015406188964844e+02, 3.041492309570312e+02, 3.055158386230469e+02, 3.062835388183594e+02, 3.067785949707031e+02, 3.0699365234375e+02, 3.070588684082031e+02, 3.070314331054688e+02, 3.069041442871094e+02, 3.067091979980469e+02, 3.067263793945312e+02, 3.067084350585938e+02, 3.066339721679688e+02, 3.064884033203125e+02, 3.063646240234375e+02, 3.063402099609375e+02, 3.064747619628906e+02, 3.068072814941406e+02, 3.071504516601562e+02, 3.074424133300781e+02, 3.077146606445312e+02, 3.07935302734375e+02, 3.080780029296875e+02, 3.081256103515625e+02, 3.080643005371094e+02, 3.080347290039062e+02] -temRet.T=[2.931499938964844e+02, 3.333218994140625e+02, 3.331938171386719e+02, 3.331850891113281e+02, 3.331782531738281e+02, 3.439313049316406e+02, 3.521710815429688e+02, 3.435746459960938e+02, 3.540379943847656e+02, 3.419050598144531e+02, 3.516350402832031e+02, 3.381692199707031e+02, 3.480570373535156e+02, 3.359356079101562e+02, 3.463271789550781e+02, 3.358786010742188e+02, 3.488461608886719e+02, 3.382138671875e+02, 3.528662414550781e+02, 3.430753173828125e+02, 3.406753540039062e+02, 3.494378662109375e+02, 3.393665466308594e+02, 3.544672241210938e+02, 3.454693603515625e+02, 3.366733703613281e+02, 3.516876525878906e+02, 3.423803405761719e+02, 3.391623840332031e+02, 3.514603271484375e+02, 3.428921813964844e+02, 3.364239501953125e+02, 3.533380126953125e+02, 3.458009033203125e+02, 3.485299377441406e+02, 3.486251525878906e+02, 3.479062805175781e+02, 3.484880981445312e+02, 3.496084899902344e+02, 3.510238037109375e+02, 3.525453491210938e+02, 3.541170349121094e+02, 3.557326965332031e+02, 3.574421081542969e+02, 3.583822631835938e+02, 3.54431396484375e+02, 3.497737121582031e+02, 3.4457080078125e+02, 3.400477905273438e+02, 3.445541381835938e+02, 3.492832641601562e+02, 3.538783874511719e+02, 3.580769958496094e+02, 3.506819458007812e+02, 3.449400329589844e+02, 3.533544921875e+02, 3.604164428710938e+02, 3.460746459960938e+02, 3.561886291503906e+02, 3.43033935546875e+02, 3.53843994140625e+02, 3.461331176757812e+02, 3.518097534179688e+02, 3.558353271484375e+02, 3.501661682128906e+02, 3.604344177246094e+02, 3.484012756347656e+02, 3.585531311035156e+02, 3.44355224609375e+02, 3.53044189453125e+02, 3.599440002441406e+02, 3.430190734863281e+02, 3.516394958496094e+02, 3.587284851074219e+02, 3.419649047851562e+02, 3.503922729492188e+02, 3.612626953125e+02, 3.587860717773438e+02, 3.584432373046875e+02, 3.585357666015625e+02, 3.551532897949219e+02, 3.512120056152344e+02, 3.469041137695312e+02, 3.425299377441406e+02, 3.397169799804688e+02, 3.424599914550781e+02, 3.451210632324219e+02, 3.476570739746094e+02, 3.501051940917969e+02, 3.523716735839844e+02, 3.544588317871094e+02, 3.564186096191406e+02, 3.583626403808594e+02, 3.563072509765625e+02, 3.5266748046875e+02, 3.493633422851562e+02, 3.464041137695312e+02, 3.437685852050781e+02, 3.413943481445312e+02, 3.393263549804688e+02, 3.402254333496094e+02] -temRoo.T=[2.931499938964844e+02, 2.834371643066406e+02, 2.862301330566406e+02, 2.892975769042969e+02, 2.91556884765625e+02, 2.924832458496094e+02, 2.924545288085938e+02, 2.924683837890625e+02, 2.924432373046875e+02, 2.924492492675781e+02, 2.924227600097656e+02, 2.924105529785156e+02, 2.924169616699219e+02, 2.923835754394531e+02, 2.924335021972656e+02, 2.92436279296875e+02, 2.924851379394531e+02, 2.92466064453125e+02, 2.92510986328125e+02, 2.925418090820312e+02, 2.925221252441406e+02, 2.925343627929688e+02, 2.925024719238281e+02, 2.925279846191406e+02, 2.925511169433594e+02, 2.925020446777344e+02, 2.925323486328125e+02, 2.925522766113281e+02, 2.925442810058594e+02, 2.925641479492188e+02, 2.925733642578125e+02, 2.925527038574219e+02, 2.925766296386719e+02, 2.926077575683594e+02, 2.926939697265625e+02, 2.928887329101562e+02, 2.929942016601562e+02, 2.930628662109375e+02, 2.931092224121094e+02, 2.931529235839844e+02, 2.931947021484375e+02, 2.932321166992188e+02, 2.932615661621094e+02, 2.932836303710938e+02, 2.932965393066406e+02, 2.933004455566406e+02, 2.932983093261719e+02, 2.9329638671875e+02, 2.933058471679688e+02, 2.933336181640625e+02, 2.933860168457031e+02, 2.934620361328125e+02, 2.9352392578125e+02, 2.935338439941406e+02, 2.935364685058594e+02, 2.936015930175781e+02, 2.936659240722656e+02, 2.936662292480469e+02, 2.937183837890625e+02, 2.93729248046875e+02, 2.937367858886719e+02, 2.93751220703125e+02, 2.937371520996094e+02, 2.937605590820312e+02, 2.9374072265625e+02, 2.9376611328125e+02, 2.937378234863281e+02, 2.937599182128906e+02, 2.937034606933594e+02, 2.936749572753906e+02, 2.936654968261719e+02, 2.936250610351562e+02, 2.936240539550781e+02, 2.936634216308594e+02, 2.936337585449219e+02, 2.936203308105469e+02, 2.934090576171875e+02, 2.933837890625e+02, 2.933442687988281e+02, 2.933167724609375e+02, 2.93299072265625e+02, 2.932864074707031e+02, 2.932745056152344e+02, 2.932637939453125e+02, 2.932545471191406e+02, 2.932497253417969e+02, 2.93251953125e+02, 2.932626342773438e+02, 2.932821960449219e+02, 2.933033752441406e+02, 2.933187866210938e+02, 2.933218994140625e+02, 2.933094177246094e+02, 2.932885131835938e+02, 2.932628479003906e+02, 2.932356872558594e+02, 2.932101135253906e+02, 2.931886291503906e+02, 2.931727905273438e+02, 2.931629943847656e+02, 2.931585388183594e+02] -conBoiRet.yVal=[0e+00, 4.212586879730225e-01, 4.565469026565552e-01, 4.838089942932129e-01, 5.058921575546265e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -conRadSup.yVal=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 8.280595541000366e-01, 7.872971296310425e-01, 8.308314681053162e-01, 7.737717032432556e-01, 8.45884382724762e-01, 7.899181246757507e-01, 8.887307047843933e-01, 8.119707107543945e-01, 9.11929726600647e-01, 8.20879340171814e-01, 8.946013450622559e-01, 7.933893203735352e-01, 8.787143230438232e-01, 7.640860676765442e-01, 8.136985301971436e-01, 8.346748352050781e-01, 7.783265709877014e-01, 8.606112599372864e-01, 7.530050873756409e-01, 7.947607636451721e-01, 8.739627599716187e-01, 7.674879431724548e-01, 8.19435715675354e-01, 8.412542939186096e-01, 7.598286271095276e-01, 8.11187207698822e-01, 8.60146701335907e-01, 7.479205131530762e-01, 7.793366312980652e-01, 7.707185745239258e-01, 7.100793719291687e-01, 6.651185154914856e-01, 6.312261819839478e-01, 6.057806611061096e-01, 5.786939859390259e-01, 5.525615811347961e-01, 5.297839641571045e-01, 5.137857794761658e-01, 5.052066445350647e-01, 5.072216391563416e-01, 5.342182517051697e-01, 5.682747364044189e-01, 6.019164323806763e-01, 6.211527585983276e-01, 5.796337723731995e-01, 5.148346424102783e-01, 4.289049804210663e-01, 3.828279078006744e-01, 4.464203715324402e-01, 4.837310612201691e-01, 3.770953714847565e-01, 3.231187760829926e-01, 3.936016857624054e-01, 2.861414849758148e-01, 3.561140298843384e-01, 2.963634729385376e-01, 3.350069522857666e-01, 3.215218186378479e-01, 3.020563423633575e-01, 3.348166346549988e-01, 2.826885282993317e-01, 3.521836698055267e-01, 2.805283963680267e-01, 4.067943096160889e-01, 3.671534657478333e-01, 3.562982380390167e-01, 4.50657069683075e-01, 3.975051045417786e-01, 3.344292342662811e-01, 4.426386952400208e-01, 4.100818932056427e-01, 1.92404180765152e-01, 3.860281109809875e-01, 4.618188738822937e-01, 4.974184334278107e-01, 5.309092998504639e-01, 5.643199682235718e-01, 5.983712077140808e-01, 6.284129619598389e-01, 6.471862196922302e-01, 6.299030184745789e-01, 6.065564751625061e-01, 5.782372355461121e-01, 5.462060570716858e-01, 5.177878141403198e-01, 4.990358650684357e-01, 4.948543012142181e-01, 5.048975348472595e-01, 5.306417942047119e-01, 5.654724836349487e-01, 5.986533761024475e-01, 6.277169585227966e-01, 6.511507034301758e-01, 6.683641076087952e-01, 6.80217981338501e-01, 6.74770712852478e-01] -conEquSta.onBoi=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 0e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00] -conSysSta.onSys=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos deleted file mode 100644 index 82ae145a12..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/BoilerReturn.mos +++ /dev/null @@ -1,5 +0,0 @@ -// Script generated by Dymola Wed Feb 19 14:48:31 2020 -// Plot commands -simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.BoilerReturn", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="BoilerReturn"); -createPlot(id=2, position={15, 15, 542, 503}, y={"conBoiRet.TSet", "conBoiRet.TRet"}, range={0.0, 4000.0, 0.0, 80.0}, grid=true, colors={{28,108,200}, {238,46,47}}, displayUnits={"degC", "degC"}); -createPlot(id=2, position={15, 15, 542, 249}, y={"conBoiRet.yVal"}, range={0.0, 4000.0, -1.0, 2.0}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos deleted file mode 100644 index 4aac1295ad..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/EquipmentOnOff.mos +++ /dev/null @@ -1,3 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.EquipmentOnOff", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="EquipmentOnOff"); -createPlot(id=2, position={15, 15, 793, 722}, y={"conEquSta.TBoi"}, range={0.0, 4000.0, 50.0, 110.0}, grid=true, colors={{28,108,200}}, displayUnits={"degC"}); -createPlot(id=2, position={15, 15, 793, 359}, y={"conEquSta.onSys", "conEquSta.onPum", "conEquSta.onBoi"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {28,108,200}, {28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos deleted file mode 100644 index 4695d891e4..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/RadiatorSupply.mos +++ /dev/null @@ -1,3 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.RadiatorSupply", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="RadiatorSupply"); -createPlot(id=2, position={15, 15, 542, 517}, y={"conRadSup.TRoo", "conRadSup.TSup"}, range={0.0, 4000.0, 0.0, 60.0}, grid=true, colors={{28,108,200}, {238,46,47}}, displayUnits={"degC", "degC"}); -createPlot(id=2, position={15, 15, 542, 256}, y={"conRadSup.yVal"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos deleted file mode 100644 index 4b448c5ebd..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/Controls/Validation/SystemOnOff.mos +++ /dev/null @@ -1,3 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.Controls.Validation.SystemOnOff", stopTime=3600, method="Cvode", tolerance=1e-06, resultFile="SystemOnOff"); -createPlot(id=3, position={75, 75, 758, 583}, y={"conSysSta.TRoo", "conSysSta.TRooSet", "conSysSta.TOut", "conSysSta.TOutLow"}, range={0.0, 4000.0, 10.0, 25.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}, displayUnits={"degC", "degC", "degC", "degC"}); -createPlot(id=3, position={75, 75, 758, 289}, y={"conSysSta.onSys"}, range={0.0, 4000.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos deleted file mode 100644 index 17ad1282fb..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System1.mos +++ /dev/null @@ -1,2 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.System1", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem1"); -createPlot(id=1, position={35, 35, 912, 543}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={0.0, 2.0, -20.0, 50.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos deleted file mode 100644 index d083bd6b4d..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System2.mos +++ /dev/null @@ -1,2 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.System2", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem2"); -createPlot(id=1, position={35, 35, 912, 543}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={0.0, 2.0, -20.0, 50.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos deleted file mode 100644 index f0c4423da1..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System3.mos +++ /dev/null @@ -1,2 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.System3", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem3"); -createPlot(id=1, position={35, 35, 912, 543}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={0.0, 2.0, -20.0, 50.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC", "degC"}); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos deleted file mode 100644 index fb738b6520..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System4.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.System4", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem4"); -createPlot(id=2, position={35, 35, 1209, 915}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={15.0, 16.0, -50.0, 100.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC", "degC"}); -createPlot(id=2, position={35, 35, 1209, 303}, y={"conBoiRet.yVal"}, range={15.0, 16.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="h"); -createPlot(id=2, position={35, 35, 1209, 302}, y={"conEquSta.onBoi"}, range={15.0, 16.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}, timeUnit="h"); diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos deleted file mode 100644 index f91eb5d105..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System5.mos +++ /dev/null @@ -1,5 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.System5", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem5"); -createPlot(id=2, position={35, 35, 1209, 915}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, autoscale=true, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, range2={0.20000000000000004, 0.9000000000000001}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC", "degC"}); -createPlot(id=2, position={35, 35, 1209, 216}, y={"conBoiRet.yVal"}, range={360.0, 384.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}}, timeUnit="h"); -createPlot(id=2, position={35, 35, 1209, 281}, y={"conEquSta.onBoi", "conSysSta.onSys"}, range={360.0, 384.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}}, timeUnit="h"); - diff --git a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos b/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos deleted file mode 100644 index b44644b3dd..0000000000 --- a/IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/CDL/System6.mos +++ /dev/null @@ -1,5 +0,0 @@ -simulateModel("IBPSA.Examples.Tutorial.CDL.System6", startTime=1296000, stopTime=1382400, method="Cvode", tolerance=1e-06, resultFile="ControlDescriptionLanguageSystem6"); -createPlot(id=2, position={35, 35, 1209, 915}, y={"senTOut.T", "boi.T", "temSup.T", "temRet.T", "temRoo.T"}, range={15.0, 16.0, -50.0, 100.0}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC", "degC"}); -createPlot(id=2, position={35, 35, 1209, 303}, y={"conBoiRet.yVal", "conRadSup.yVal"}, range={360.0, 384.0, -0.5, 1.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, timeUnit="h"); -createPlot(id=2, position={35, 35, 1209, 302}, y={"conEquSta.onBoi", "conSysSta.onSys"}, range={360.0, 384.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {28,108,200}}, timeUnit="h"); - From 4b30907f9fd9e5ac2ec91b78024a96382e778649 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Sat, 14 Dec 2024 00:29:03 +0000 Subject: [PATCH 13/15] Corrected package name in documentation --- IBPSA/Airflow/Multizone/BaseClasses/TwoWayFlowElement.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IBPSA/Airflow/Multizone/BaseClasses/TwoWayFlowElement.mo b/IBPSA/Airflow/Multizone/BaseClasses/TwoWayFlowElement.mo index f784b173ac..e0e2c8e1db 100644 --- a/IBPSA/Airflow/Multizone/BaseClasses/TwoWayFlowElement.mo +++ b/IBPSA/Airflow/Multizone/BaseClasses/TwoWayFlowElement.mo @@ -169,7 +169,7 @@ This is for February 24, 2015 by Michael Wetter:
Changed model to use -Buildings.Utilities.Psychrometrics.Functions.density_pTX +IBPSA.Utilities.Psychrometrics.Functions.density_pTX for the density computation as From 71070d8af7244996c717c496e41175b374dada95 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Sat, 14 Dec 2024 00:31:49 +0000 Subject: [PATCH 14/15] Added IBPSA/Utilities/Math/Functions/round.mo This function is used in various CDL Elementary Blocks --- ...tilities_Math_Functions_Examples_Round.txt | 13 ++++ .../Math/Functions/Examples/Round.mos | 2 + .../Math/Functions/Examples/Round.mo | 35 +++++++++++ IBPSA/Utilities/Math/Functions/round.mo | 63 +++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Utilities_Math_Functions_Examples_Round.txt create mode 100644 IBPSA/Resources/Scripts/Dymola/Utilities/Math/Functions/Examples/Round.mos create mode 100644 IBPSA/Utilities/Math/Functions/Examples/Round.mo create mode 100644 IBPSA/Utilities/Math/Functions/round.mo diff --git a/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Utilities_Math_Functions_Examples_Round.txt b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Utilities_Math_Functions_Examples_Round.txt new file mode 100644 index 0000000000..d74ee1a8c1 --- /dev/null +++ b/IBPSA/Resources/ReferenceResults/Dymola/IBPSA_Utilities_Math_Functions_Examples_Round.txt @@ -0,0 +1,13 @@ +last-generated=2020-10-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[-2e+00, 2e+00] +ym2=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +ym1=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +y=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +y1=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +y2=[-2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -2e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, -1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] diff --git a/IBPSA/Resources/Scripts/Dymola/Utilities/Math/Functions/Examples/Round.mos b/IBPSA/Resources/Scripts/Dymola/Utilities/Math/Functions/Examples/Round.mos new file mode 100644 index 0000000000..b378d70167 --- /dev/null +++ b/IBPSA/Resources/Scripts/Dymola/Utilities/Math/Functions/Examples/Round.mos @@ -0,0 +1,2 @@ +simulateModel("IBPSA.Utilities.Math.Functions.Examples.Round", startTime=-2, stopTime=2, method="Cvode", tolerance=1e-06, resultFile="Round"); +createPlot(id=1, position={35, 35, 1536, 906}, y={"ym2", "ym1", "y", "y1", "y2"}, range={-2.0, 2.0, -2.5, 2.5}, grid=true, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}); diff --git a/IBPSA/Utilities/Math/Functions/Examples/Round.mo b/IBPSA/Utilities/Math/Functions/Examples/Round.mo new file mode 100644 index 0000000000..3b860d0d87 --- /dev/null +++ b/IBPSA/Utilities/Math/Functions/Examples/Round.mo @@ -0,0 +1,35 @@ +within IBPSA.Utilities.Math.Functions.Examples; +model Round "Example for round function" + extends Modelica.Icons.Example; + Real ym2 "Function value"; + Real ym1 "Function value"; + Real y "Function value"; + Real y1 "Function value"; + Real y2 "Function value"; +equation + ym2=IBPSA.Utilities.Math.Functions.round(x=time*100, n=-2)/100; + ym1=IBPSA.Utilities.Math.Functions.round(x=time*10, n=-1)/10; + y=IBPSA.Utilities.Math.Functions.round(x=time, n=0); + y1=IBPSA.Utilities.Math.Functions.round(x=time/10, n=1)*10; + y2=IBPSA.Utilities.Math.Functions.round(x=time/100, n=2)*100; + annotation(experiment(StartTime=-2,Tolerance=1e-6, StopTime=2.0), +__Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Utilities/Math/Functions/Examples/Round.mos" + "Simulate and plot"), +Documentation(info=" +

+This example tests the implementation of + +IBPSA.Utilities.Math.Functions.round +for different values of n. +Arguments and return values are scale to simplify the show that the scaling for the rounding +is implemented correctly. +

+", revisions=" +
    +
  • +October 19, 2020, by Michael Wetter:
    +First implementation. +
  • +
+")); +end Round; diff --git a/IBPSA/Utilities/Math/Functions/round.mo b/IBPSA/Utilities/Math/Functions/round.mo new file mode 100644 index 0000000000..6c0a6f90af --- /dev/null +++ b/IBPSA/Utilities/Math/Functions/round.mo @@ -0,0 +1,63 @@ +within IBPSA.Utilities.Math.Functions; +function round "Round real number to specified digits" + extends Modelica.Icons.Function; + + input Real x "Argument to be rounded"; + input Integer n "Number of digits being round to"; + output Real y "Connector of Real output signal"; + +protected + Real fac = 10^n "Factor used for rounding"; + +algorithm + y := if (x>0) then floor(x*fac + 0.5)/fac else ceil(x*fac - 0.5)/fac; + +annotation ( +Documentation(info=" +

+Function that outputs the input after rounding it to n digits. +

+

+For example, +

+
    +
  • +set n = 0 to round to the nearest integer, +
  • +
  • +set n = 1 to round to the next decimal point, and +
  • +
  • +set n = -1 to round to the next multiple of ten. +
  • +
+

+Hence, the function outputs +

+
+    y = floor(x*(10^n) + 0.5)/(10^n)  for  x > 0,
+    y = ceil( x*(10^n) - 0.5)/(10^n)  for  x < 0.
+
+

+To use this function as a block, use + +Buildings.Controls.OBC.CDL.Reals.Round. +

+", revisions=" +
    +
  • +August 30, 2024, by Michael Wetter:
    +Removed wrong parameter declaration on a protected variable which causes an error in +Dymola 2025x beta1.
    +This is for +Buildings, #3978. +
  • +
  • +March 2, 2020, by Michael Wetter:
    +First implementation.
    +This is for +Buildings, #2170. +
  • +
+")); +end round; From 57153d870aff66c3c192526507b5bbf5e5752654 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 13 Dec 2024 16:33:02 -0800 Subject: [PATCH 15/15] Updated package.order --- IBPSA/Utilities/Math/Functions/Examples/package.order | 1 + IBPSA/Utilities/Math/Functions/package.order | 1 + IBPSA/failed-simulator-dymola.log | 2 -- 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 IBPSA/failed-simulator-dymola.log diff --git a/IBPSA/Utilities/Math/Functions/Examples/package.order b/IBPSA/Utilities/Math/Functions/Examples/package.order index a073d84717..0b7ed0c40e 100644 --- a/IBPSA/Utilities/Math/Functions/Examples/package.order +++ b/IBPSA/Utilities/Math/Functions/Examples/package.order @@ -19,6 +19,7 @@ RegNonZeroPower RegNonZeroPowerDerivativeCheck RegNonZeroPowerDerivative_2_Check RegStep +Round SmoothExponentialDerivativeCheck SmoothHeavisideDerivatives SmoothInterpolation diff --git a/IBPSA/Utilities/Math/Functions/package.order b/IBPSA/Utilities/Math/Functions/package.order index b809973459..d668c299cf 100644 --- a/IBPSA/Utilities/Math/Functions/package.order +++ b/IBPSA/Utilities/Math/Functions/package.order @@ -21,6 +21,7 @@ quadraticLinear quinticHermite regNonZeroPower regStep +round smoothExponential smoothHeaviside smoothInterpolation diff --git a/IBPSA/failed-simulator-dymola.log b/IBPSA/failed-simulator-dymola.log deleted file mode 100644 index 3d43ef277d..0000000000 --- a/IBPSA/failed-simulator-dymola.log +++ /dev/null @@ -1,2 +0,0 @@ -Automatically generated BuildingsPy dump file for failed translations. -