diff --git a/.travis.yml b/.travis.yml index 55d43006b3e..7dd4087c74e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -97,6 +97,8 @@ env: - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Utilities\"" - TEST_ARG="make test-openmodelica PACKAGE=\"Buildings.Utilities\"" - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Utilities\"" + - TEST_ARG="make test-dymola PACKAGE=\"Buildings.Templates\"" + - TEST_ARG="make test-optimica PACKAGE=\"Buildings.Templates\"" before_install: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg b/Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg new file mode 100644 index 00000000000..a07e7995876 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg @@ -0,0 +1,101 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg b/Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg new file mode 100644 index 00000000000..44a5dcbf9a1 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg @@ -0,0 +1,101 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Actuators/VFD.svg b/Buildings/Resources/Images/Templates/Components/Actuators/VFD.svg new file mode 100644 index 00000000000..7f96b73705f --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Actuators/VFD.svg @@ -0,0 +1,301 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Coils/ChilledWaterSupplyReturn.svg b/Buildings/Resources/Images/Templates/Components/Coils/ChilledWaterSupplyReturn.svg new file mode 100644 index 00000000000..04c6cd69a97 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Coils/ChilledWaterSupplyReturn.svg @@ -0,0 +1,151 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Coils/Cooling.svg b/Buildings/Resources/Images/Templates/Components/Coils/Cooling.svg new file mode 100644 index 00000000000..c834ff363af --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Coils/Cooling.svg @@ -0,0 +1,108 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Coils/Heating.svg b/Buildings/Resources/Images/Templates/Components/Coils/Heating.svg new file mode 100644 index 00000000000..e6d2886dc17 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Coils/Heating.svg @@ -0,0 +1,119 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Coils/HotWaterSupplyReturn.svg b/Buildings/Resources/Images/Templates/Components/Coils/HotWaterSupplyReturn.svg new file mode 100644 index 00000000000..7343943a523 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Coils/HotWaterSupplyReturn.svg @@ -0,0 +1,143 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Dampers/BladesOpposed.svg b/Buildings/Resources/Images/Templates/Components/Dampers/BladesOpposed.svg new file mode 100644 index 00000000000..4586b78537d --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Dampers/BladesOpposed.svg @@ -0,0 +1,85 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg b/Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg new file mode 100644 index 00000000000..ad3f0dd9709 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg @@ -0,0 +1,73 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Dampers/BladesVAV.svg b/Buildings/Resources/Images/Templates/Components/Dampers/BladesVAV.svg new file mode 100644 index 00000000000..6ab7d2dd9df --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Dampers/BladesVAV.svg @@ -0,0 +1,71 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Fans/Array.svg b/Buildings/Resources/Images/Templates/Components/Fans/Array.svg new file mode 100644 index 00000000000..ae06f1bdd6b --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Fans/Array.svg @@ -0,0 +1,173 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Fans/Housed.svg b/Buildings/Resources/Images/Templates/Components/Fans/Housed.svg new file mode 100644 index 00000000000..4e10e9d4490 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Fans/Housed.svg @@ -0,0 +1,777 @@ + + diff --git a/Buildings/Resources/Images/Templates/Components/Fans/Plug.svg b/Buildings/Resources/Images/Templates/Components/Fans/Plug.svg new file mode 100644 index 00000000000..555b55e7da2 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Fans/Plug.svg @@ -0,0 +1,115 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Fans/Propeller.svg b/Buildings/Resources/Images/Templates/Components/Fans/Propeller.svg new file mode 100644 index 00000000000..3a508f3acdf --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Fans/Propeller.svg @@ -0,0 +1,73 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Filters/Filter.svg b/Buildings/Resources/Images/Templates/Components/Filters/Filter.svg new file mode 100644 index 00000000000..7100ef1fd91 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Filters/Filter.svg @@ -0,0 +1,73 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/HeatExchangers/Generic.svg b/Buildings/Resources/Images/Templates/Components/HeatExchangers/Generic.svg new file mode 100644 index 00000000000..3eaf01503cd --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/HeatExchangers/Generic.svg @@ -0,0 +1,69 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressure.svg b/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressure.svg new file mode 100644 index 00000000000..3251bcc00eb --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressure.svg @@ -0,0 +1,99 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureHigh.svg b/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureHigh.svg new file mode 100644 index 00000000000..1b4c13d8b1c --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureHigh.svg @@ -0,0 +1,99 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureLow.svg b/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureLow.svg new file mode 100644 index 00000000000..d8f3a660d72 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureLow.svg @@ -0,0 +1,99 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/HumidityRatio.svg b/Buildings/Resources/Images/Templates/Components/Sensors/HumidityRatio.svg new file mode 100644 index 00000000000..33ded78701e --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/HumidityRatio.svg @@ -0,0 +1,99 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/ProbeAveraging.svg b/Buildings/Resources/Images/Templates/Components/Sensors/ProbeAveraging.svg new file mode 100644 index 00000000000..eac1b98ebc8 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/ProbeAveraging.svg @@ -0,0 +1,106 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/ProbeInWell.svg b/Buildings/Resources/Images/Templates/Components/Sensors/ProbeInWell.svg new file mode 100644 index 00000000000..29cc872049b --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/ProbeInWell.svg @@ -0,0 +1,76 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg b/Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg new file mode 100644 index 00000000000..eb1f63f0f0d --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg @@ -0,0 +1,80 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/SpecificEnthalpy.svg b/Buildings/Resources/Images/Templates/Components/Sensors/SpecificEnthalpy.svg new file mode 100644 index 00000000000..4f6abd45403 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/SpecificEnthalpy.svg @@ -0,0 +1,111 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/Temperature.svg b/Buildings/Resources/Images/Templates/Components/Sensors/Temperature.svg new file mode 100644 index 00000000000..e20a0d52728 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/Temperature.svg @@ -0,0 +1,94 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg new file mode 100644 index 00000000000..0cdc3d65118 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg @@ -0,0 +1,111 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateAFMS.svg b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateAFMS.svg new file mode 100644 index 00000000000..d8c5f80e565 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateAFMS.svg @@ -0,0 +1,102 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateFlowCross.svg b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateFlowCross.svg new file mode 100644 index 00000000000..8b37d379cfe --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateFlowCross.svg @@ -0,0 +1,73 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateFlowMeter.svg b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateFlowMeter.svg new file mode 100644 index 00000000000..010a33d052a --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateFlowMeter.svg @@ -0,0 +1,119 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Valves/ThreeWay.svg b/Buildings/Resources/Images/Templates/Components/Valves/ThreeWay.svg new file mode 100644 index 00000000000..f66b2a0f944 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Valves/ThreeWay.svg @@ -0,0 +1,84 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Components/Valves/TwoWay.svg b/Buildings/Resources/Images/Templates/Components/Valves/TwoWay.svg new file mode 100644 index 00000000000..e21401b50b9 --- /dev/null +++ b/Buildings/Resources/Images/Templates/Components/Valves/TwoWay.svg @@ -0,0 +1,80 @@ + + + + diff --git a/Buildings/Resources/Images/Templates/Icons.svg b/Buildings/Resources/Images/Templates/Icons.svg new file mode 100644 index 00000000000..40fcfe9897c --- /dev/null +++ b/Buildings/Resources/Images/Templates/Icons.svg @@ -0,0 +1,3858 @@ + + diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZBase.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZBase.txt new file mode 100644 index 00000000000..4bcea649881 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZBase.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 2, 0, 1, 5, 1, 0, 1, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1, 2, 1, 1, 0, 0, 0, 1, 5, 1", + "number of continuous time states": "30", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549318953e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502380372913e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295898438e+02, 2.931503601074219e+02, 2.93150390625e+02, 2.931504211427236e+02, 2.931504821777344e+02, 2.931505126953125e+02, 2.931505432128906e+02, 2.93150604247865e+02, 2.93150634765625e+02, 2.931506958007812e+02, 2.931507568359375e+02, 2.931508178710938e+02, 2.931508483886719e+02, 2.931509094238281e+02, 2.931510009764897e+02, 2.931510620117188e+02, 2.931511230470933e+02, 2.931512145996094e+02, 2.931512756347656e+02, 2.931513671872453e+02, 2.931514587401252e+02, 2.93151519775427e+02, 2.931516113283069e+02, 2.931517028811868e+02, 2.931517944335938e+02, 2.931519165036152e+02, 2.931520080564951e+02, 2.93152099609375e+02] +VAV_1.bus.TAirMix=[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.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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 1.903674949471838e-04, 7.463307461038224e-04, 1.647834624751131e-03, 2.869447812114541e-03, 4.34494519039745e-03, 6.077618128984614e-03, 8.064855760242096e-03, 1.021790078947745e-02, 1.251461831880188e-02, 1.491985154069591e-02, 1.742303200321052e-02, 1.999452593716658e-02, 2.261420837873473e-02, 2.527040786028833e-02, 2.793705118878496e-02, 3.061215862208582e-02, 3.332453172289484e-02, 3.608017961429468e-02, 3.888478197722597e-02, 4.174218986162145e-02, 4.461644405677818e-02, 4.748644713956704e-02, 5.030480655675899e-02, 5.308878570577123e-02, 5.585563182830811e-02, 5.860516317634715e-02, 6.133721476490511e-02, 6.40516873946877e-02, 6.67484946612199e-02, 6.942756900553816e-02, 7.20655837351311e-02, 7.468001730552998e-02, 7.727309722530572e-02, 7.984520403250092e-02, 8.239668014003469e-02, 8.492783841161632e-02, 8.74389994129163e-02, 8.99287399490814e-02, 9.238674096353351e-02, 9.482327703948928e-02, 9.723878737797789e-02, 9.963368191828602e-02, 1.020083112478484e-01, 1.04363054595695e-01, 1.066982401294358e-01, 1.090153436443723e-01, 1.113162713992825e-01, 1.135994294826763e-01, 1.158651166474813e-01, 1.18113599717617e-01, 1.203451550330424e-01, 1.225600135658736e-01, 1.247584286362772e-01, 1.26940618257092e-01, 1.291068170549724e-01, 1.31257220591508e-01, 1.333920523826171e-01, 1.355188524412906e-01, 1.376382912953908e-01, 1.397456476626569e-01, 1.418412148844306e-01, 1.439252932884711e-01, 1.45998136194341e-01, 1.480600267249556e-01, 1.501112182017606e-01, 1.521519518131259e-01, 1.541824605023518e-01, 1.562030002951995e-01, 1.582137649071162e-01, 1.602296257213551e-01, 1.62243921900094e-01, 1.642533483289958e-01, 1.662583312925754e-01, 1.682592164284425e-01, 1.702563762664795e-01, 1.722501684349814e-01, 1.742409058600384e-01, 1.762289312692109e-01, 1.782145457595494e-01, 1.801980561224044e-01, 1.821797783419942e-01, 1.841800525203367e-01, 1.861835304591929e-01, 1.881906740915543e-01, 1.902019333530336e-01, 1.922177941545504e-01, 1.942386766562713e-01, 1.962650278948793e-01, 1.982972502030056e-01, 2.003357459123578e-01, 2.023808753426145e-01, 2.044330503021689e-01, 2.06495104736604e-01, 2.085758303611655e-01, 2.106674785595185e-01, 2.127705559709214e-01, 2.148855118900204e-01, 2.170128036597823e-01, 2.191528657482058e-01, 2.21306100487709e-01] +VAV_1.bus.VOut_flow=[-0e+00, 4.826665704886589e-05, 1.990246185865922e-04, 4.443106493562069e-04, 7.515020350850617e-04, 1.179754118635109e-03, 1.662148579800376e-03, 2.189400589478849e-03, 2.766936192144236e-03, 3.365441939848996e-03, 3.975835073726648e-03, 4.570887924827806e-03, 5.140258612965428e-03, 5.682222796326621e-03, 6.198313988430577e-03, 6.678706692243686e-03, 7.117701843789489e-03, 7.521155686400607e-03, 7.888382979832699e-03, 8.219062424292451e-03, 8.513146928109118e-03, 8.770796625023633e-03, 8.992319950463741e-03, 9.174841386690087e-03, 9.318735515681444e-03, 9.425420314073563e-03, 9.495376655197858e-03, 9.5291649713896e-03, 9.52740758845971e-03, 9.49078234724908e-03, 9.420015018275515e-03, 9.335669711322447e-03, 9.224899022204542e-03, 9.086983473218617e-03, 8.922777201058702e-03, 8.733196062220143e-03, 8.519217691644229e-03, 8.281871793966318e-03, 8.027253561514017e-03, 7.789641268442881e-03, 7.540065015404354e-03, 7.279001546266178e-03, 7.006930753518567e-03, 6.72433219867022e-03, 6.431679170196858e-03, 6.129443744241147e-03, 5.828890254682382e-03, 5.545726477933346e-03, 5.263652350973869e-03, 4.983515279240252e-03, 4.706134553998709e-03, 4.432306366169253e-03, 4.162800455507823e-03, 3.898358389699417e-03, 3.639698345432283e-03, 3.387506650091871e-03, 3.142448432711407e-03, 2.905161186638899e-03, 2.692346139611282e-03, 2.506124790112311e-03, 2.336558808044272e-03, 2.18461032232014e-03, 2.051210323711123e-03, 1.937257892292311e-03, 1.843621256269155e-03, 1.771140818362282e-03, 1.720629974224662e-03, 1.692876599812049e-03, 1.688646148782845e-03, 1.708681936318592e-03, 1.758625229050127e-03, 1.836929557581461e-03, 1.943150198852304e-03, 2.07805372761112e-03, 2.242391528080438e-03, 2.436902606859803e-03, 2.662315964820082e-03, 2.919350812114768e-03, 3.208718215551263e-03, 3.531120462680322e-03, 3.887259659045542e-03, 4.277826656071219e-03, 4.664348726138757e-03, 5.077289201819918e-03, 5.516805017927935e-03, 5.982934291886823e-03, 6.4757296132689e-03, 6.995240439230227e-03, 7.54152265184528e-03, 8.114638649916404e-03, 8.714652226688548e-03, 9.341631274687573e-03, 9.995654047090597e-03, 1.066334500664052e-02, 1.129857559155753e-02, 1.194433014283675e-02, 1.259953484084385e-02, 1.326312958441132e-02, 1.393407920412714e-02, 1.461135717494364e-02, 1.529395487159491e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilElectricHeating.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilElectricHeating.txt new file mode 100644 index 00000000000..dc9b8f793a8 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilElectricHeating.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 0, 1, 1, 0, 2, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "2", + "nonlinear": "1, 0, 1, 2, 0, 1, 0, 1, 1, 1", + "number of continuous time states": "29", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295898438e+02, 2.931503601070217e+02, 2.931503906247453e+02, 2.931504211425781e+02, 2.931504516601562e+02, 2.931504821777344e+02, 2.931505126956399e+02, 2.931505737300322e+02, 2.931506042480469e+02, 2.931506652832031e+02, 2.931507263183594e+02, 2.93150756836083e+02, 2.931508178713848e+02, 2.931508789066866e+02, 2.931509399414062e+02, 2.931510314939587e+02, 2.931510925292969e+02, 2.931511840820312e+02, 2.931512451174422e+02, 2.931513366703221e+02, 2.931514282222925e+02, 2.931515197751723e+02, 2.931516113280522e+02, 2.931517028809321e+02, 2.931518249513902e+02, 2.931519470214844e+02, 2.931520385742188e+02, 2.931521606445312e+02, 2.931523132323127e+02, 2.931524353027708e+02, 2.931525573732288e+02, 2.931527099612649e+02, 2.931528625483916e+02, 2.931529846188496e+02, 2.931531677244639e+02, 2.931533203125e+02] +VAV_1.bus.TAirMix=[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.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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 1.789618631189735e-04, 6.837572745504608e-04, 1.498918582302834e-03, 2.588054970390909e-03, 3.91164271877838e-03, 5.471896613283022e-03, 7.278160602017459e-03, 9.246804190025742e-03, 1.136815097772683e-02, 1.361609960962385e-02, 1.59855467785072e-02, 1.846039176580268e-02, 2.100733976972097e-02, 2.360921337475262e-02, 2.626170617498825e-02, 2.896181777830178e-02, 3.170939485421587e-02, 3.450736574366662e-02, 3.735931286476151e-02, 4.026776464934189e-02, 4.319763375722118e-02, 4.61246337488694e-02, 4.903482896972246e-02, 5.193749598130921e-02, 5.483123660087585e-02, 5.771488970722926e-02, 6.058746268613959e-02, 6.344814564517412e-02, 6.629624454759016e-02, 6.907938837787019e-02, 7.181566888666734e-02, 7.452656521510158e-02, 7.721281445718377e-02, 7.987513298289099e-02, 8.251412369325399e-02, 8.513033762138322e-02, 8.77181949945072e-02, 9.025763840589929e-02, 9.277028947631637e-02, 9.525699020833167e-02, 9.771851537706677e-02, 1.001555578886133e-01, 1.025687587949182e-01, 1.049587434235295e-01, 1.073186798010234e-01, 1.096519435922744e-01, 1.119617077464928e-01, 1.142485315155403e-01, 1.16512937182823e-01, 1.187554448843002e-01, 1.209765097697754e-01, 1.231793579697751e-01, 1.253722372500556e-01, 1.275474233595346e-01, 1.297051731934581e-01, 1.318456972518623e-01, 1.339692488527746e-01, 1.360760068124461e-01, 1.381662095507323e-01, 1.40253732593364e-01, 1.423338919988316e-01, 1.444030543256669e-01, 1.464614728937524e-01, 1.48509445727058e-01, 1.505472410481904e-01, 1.525751001205695e-01, 1.545932855367341e-01, 1.56602053400284e-01, 1.586016123280939e-01, 1.605921858373262e-01, 1.625832213193751e-01, 1.645834686783845e-01, 1.665810755556625e-01, 1.685765217593096e-01, 1.705702394247055e-01, 1.725626904886999e-01, 1.745543070863885e-01, 1.765454915506157e-01, 1.785366343448457e-01, 1.805281317332625e-01, 1.825203443783262e-01, 1.84514479289057e-01, 1.86530340108195e-01, 1.885527276496314e-01, 1.905822109403384e-01, 1.926193655152698e-01, 1.946647306448336e-01, 1.967188129708551e-01, 1.987821042332523e-01, 2.00855081269681e-01, 2.029382084702223e-01, 2.050319278988038e-01, 2.071366742068121e-01, 2.092580502346729e-01, 2.113950427118347e-01, 2.135461019127295e-01, 2.157116768223716e-01, 2.178922700898478e-01, 2.20088286087794e-01, 2.223001569509506e-01] +VAV_1.bus.VOut_flow=[-0e+00, 3.016260949055355e-05, 1.418019017245946e-04, 3.289538297463626e-04, 5.671758857422294e-04, 9.121556378582833e-04, 1.305064009076699e-03, 1.739415326553998e-03, 2.221167176391398e-03, 2.729717921732643e-03, 3.257051497834957e-03, 3.783637456088721e-03, 4.296763470228769e-03, 4.798930840255809e-03, 5.289267254021322e-03, 5.750895211594871e-03, 6.183668189368305e-03, 6.592094826991835e-03, 6.974939921876018e-03, 7.331385358362143e-03, 7.660958355290152e-03, 7.963462920412898e-03, 8.232056189418193e-03, 8.436614568387507e-03, 8.603972460723539e-03, 8.734474889934063e-03, 8.828572066709698e-03, 8.886802894328623e-03, 8.909771217821218e-03, 8.898135247871806e-03, 8.8534197527462e-03, 8.775769754540709e-03, 8.665558789508553e-03, 8.523605035114434e-03, 8.350799857646838e-03, 8.148101958523491e-03, 7.91654770541746e-03, 7.669450350470858e-03, 7.450627521040194e-03, 7.220285139881287e-03, 6.978893333346261e-03, 6.72691911541181e-03, 6.46482792004587e-03, 6.193082511036608e-03, 5.9121376152296e-03, 5.665056133940415e-03, 5.437837635710271e-03, 5.216290216975836e-03, 5.000611073976497e-03, 4.790980100763997e-03, 4.587562289088964e-03, 4.390509149243114e-03, 4.207635938966928e-03, 4.061065685673449e-03, 3.929121224710091e-03, 3.811760938508071e-03, 3.708933270387036e-03, 3.620576987777424e-03, 3.546621541397025e-03, 3.486989164885371e-03, 3.450341587462949e-03, 3.43367249224623e-03, 3.434540467297362e-03, 3.452996970026533e-03, 3.489085539902328e-03, 3.542842962582738e-03, 3.614298793328631e-03, 3.703478563092055e-03, 3.810401924354994e-03, 3.935083779178587e-03, 4.077535305158882e-03, 4.241912550799578e-03, 4.432189641797654e-03, 4.643035634654926e-03, 4.874638052933965e-03, 5.127181299030781e-03, 5.400845122787419e-03, 5.695806472004792e-03, 6.012240901474488e-03, 6.350316760164783e-03, 6.710207581641095e-03, 7.09207998586683e-03, 7.495701139368978e-03, 7.911985523543552e-03, 8.348300366172703e-03, 8.804631243762271e-03, 9.280971489909987e-03, 9.777309132539788e-03, 1.029363486030439e-02, 1.082994308524836e-02, 1.138622821750673e-02, 1.196248303613574e-02, 1.255871161563935e-02, 1.317490965186897e-02, 1.378599475662532e-02, 1.439819744940069e-02, 1.502067451150384e-02, 1.565276090700844e-02, 1.629381131393564e-02, 1.694318403657556e-02, 1.760024391114712e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilEvaporatorMultiStage.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilEvaporatorMultiStage.txt new file mode 100644 index 00000000000..c517987a72b --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilEvaporatorMultiStage.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 1, 1, 2, 1, 0, 1, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "2, 1, 1, 1, 0, 0, 1, 1, 1, 1", + "number of continuous time states": "30", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770021714e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502380371094e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295898438e+02, 2.931503601074219e+02, 2.93150390625e+02, 2.931504211425781e+02, 2.931504516601562e+02, 2.931504821777344e+02, 2.931505432128906e+02, 2.931505737307598e+02, 2.93150634765625e+02, 2.931506652832031e+02, 2.931507263183594e+02, 2.931507873535156e+02, 2.931508483886719e+02, 2.931509094238281e+02, 2.931509704593846e+02, 2.931510314941406e+02, 2.931511230466567e+02, 2.931511840820312e+02, 2.931512756347656e+02, 2.931513671875e+02, 2.9315142822302e+02, 2.931515502925686e+02, 2.931516418454485e+02, 2.931517333983284e+02, 2.931518249512083e+02, 2.931519470214844e+02, 2.931520385745462e+02, 2.931521606440947e+02, 2.931522827145527e+02, 2.931524047850107e+02, 2.931525268554688e+02] +VAV_1.bus.TAirMix=[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.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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 2.849898140609589e-04, 1.028192274416488e-03, 2.187505689141707e-03, 3.687963732100075e-03, 5.438166997880449e-03, 7.458750918940396e-03, 9.736997936642393e-03, 1.218524154941205e-02, 1.476844026958925e-02, 1.744125743009904e-02, 2.018713967623265e-02, 2.298620046384072e-02, 2.58186379982889e-02, 2.867471223379738e-02, 3.154839776345556e-02, 3.444525331348258e-02, 3.738190925926196e-02, 4.036826797718432e-02, 4.341271220617877e-02, 4.652030300212718e-02, 4.964952003410456e-02, 5.277616195369474e-02, 5.587098618840897e-02, 5.894732639911737e-02, 6.201113760471344e-02, 6.506163171979419e-02, 6.809813204089769e-02, 7.112011277484138e-02, 7.412710290967553e-02, 7.71179610711422e-02, 8.008018810628813e-02, 8.302446664587146e-02, 8.59508327113072e-02, 8.885935590217142e-02, 9.175010942228308e-02, 9.462318159435887e-02, 9.74787013060868e-02, 1.003143428302708e-01, 1.031271259332332e-01, 1.059215201216295e-01, 1.086977730150822e-01, 1.114561444788736e-01, 1.141968424436901e-01, 1.169201365620851e-01, 1.196262347052996e-01, 1.22316037859343e-01, 1.249897557692423e-01, 1.276472537315736e-01, 1.302887325190391e-01, 1.329144537448883e-01, 1.355246181258003e-01, 1.381194342816929e-01, 1.406991108292493e-01, 1.432638262441023e-01, 1.458138197134654e-01, 1.483492547202936e-01, 1.508703547805668e-01, 1.533810091097013e-01, 1.55880681255414e-01, 1.583677918145206e-01, 1.608425939513681e-01, 1.633053112230754e-01, 1.657561522454019e-01, 1.681953256352437e-01, 1.706230400106339e-01, 1.730394747180673e-01, 1.754448522790998e-01, 1.778393817733429e-01, 1.802232122129228e-01, 1.826022593692809e-01, 1.849752417352512e-01, 1.873399547726968e-01, 1.896966948917416e-01, 1.920456863919023e-01, 1.943871825933456e-01, 1.96721407012921e-01, 1.99048612972216e-01, 2.013689941873921e-01, 2.03682775306659e-01, 2.059901925267308e-01, 2.082914555552229e-01, 2.105932848229171e-01, 2.1289383258551e-01, 2.151909381740229e-01, 2.174849157504967e-01, 2.197760459803874e-01, 2.220646281063139e-01, 2.24350915448656e-01, 2.26635191130329e-01, 2.289177084721391e-01, 2.311987221038851e-01, 2.334785125362342e-01, 2.357573045884918e-01, 2.380390768726669e-01, 2.403226820040772e-01, 2.426072110095406e-01, 2.448929333841902e-01, 2.47180189298848e-01, 2.494692482568525e-01, 2.517603635787964e-01] +VAV_1.bus.VOut_flow=[-0e+00, 2.610214494615439e-05, 1.511383097309551e-04, 3.72340485271961e-04, 6.793509629445515e-04, 1.130658748180527e-03, 1.65132102922882e-03, 2.223043917610903e-03, 2.850625313944451e-03, 3.505888855228606e-03, 4.179467348006193e-03, 4.842896519511256e-03, 5.479447709482426e-03, 6.088670626907524e-03, 6.673767197132544e-03, 7.223727797414121e-03, 7.733097009207691e-03, 8.208536460399931e-03, 8.649317242407091e-03, 9.055062288858587e-03, 9.425673527546301e-03, 9.761270341973131e-03, 1.006213485809475e-02, 1.032728877634119e-02, 1.055680226540017e-02, 1.075130980461836e-02, 1.091133350780788e-02, 1.103748555304065e-02, 1.113045307786822e-02, 1.119098815798474e-02, 1.12209217365749e-02, 1.123747974490175e-02, 1.122809758517244e-02, 1.119371323116324e-02, 1.113534069247663e-02, 1.105405291490425e-02, 1.095070147149547e-02, 1.082587527878363e-02, 1.069197425424007e-02, 1.056596710877005e-02, 1.042841476473471e-02, 1.027979882477059e-02, 1.012059558852751e-02, 9.951278691231439e-03, 9.772310920761784e-03, 9.584151909080485e-03, 9.406621707567392e-03, 9.239629822505742e-03, 9.073857041333814e-03, 8.910088955138248e-03, 8.749082684516907e-03, 8.591570743525184e-03, 8.438259076137796e-03, 8.289827549752642e-03, 8.146931718820085e-03, 8.010198522052162e-03, 7.880233258513893e-03, 7.757615679321302e-03, 7.662803273206163e-03, 7.592998753126803e-03, 7.53965146759684e-03, 7.503689773585589e-03, 7.486010440811348e-03, 7.487481000670985e-03, 7.508939646122828e-03, 7.551198490916009e-03, 7.615043591125643e-03, 7.701237526912792e-03, 7.810520854634955e-03, 7.943612558588118e-03, 8.106172300154663e-03, 8.297688773985174e-03, 8.51683532100239e-03, 8.764369850449521e-03, 9.041029684799577e-03, 9.347544051706791e-03, 9.684623558315706e-03, 1.005296948683025e-02, 1.045327194922329e-02, 1.088620533429796e-02, 1.135244442705932e-02, 1.18526423987275e-02, 1.23597489609968e-02, 1.288263030814384e-02, 1.343155707209978e-02, 1.400652574507663e-02, 1.460754411374158e-02, 1.523460883052578e-02, 1.588772455453118e-02, 1.656689221710033e-02, 1.72721164723415e-02, 1.800339288208004e-02, 1.87607320250857e-02, 1.954412776078558e-02, 2.030355314897177e-02, 2.105684296349142e-02, 2.181909956736761e-02, 2.258923614886412e-02, 2.336620204497948e-02, 2.414895146746356e-02, 2.493645995855331e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilEvaporatorVariable.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilEvaporatorVariable.txt new file mode 100644 index 00000000000..030d6bea74f --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilEvaporatorVariable.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 1, 2, 1, 0, 1, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "2, 1, 1, 1, 0, 0, 1, 1, 1, 1", + "number of continuous time states": "30", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931499938965208e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502685546875e+02, 2.931502685548694e+02, 2.931502990722656e+02, 2.931503295898438e+02, 2.931503601074219e+02, 2.93150390625e+02, 2.931504211425781e+02, 2.931504821777344e+02, 2.931505126953125e+02, 2.931505432133272e+02, 2.931506042480469e+02, 2.931506652830212e+02, 2.931506958007812e+02, 2.931507568359375e+02, 2.931508178710938e+02, 2.9315087890625e+02, 2.931509399410425e+02, 2.931510009763442e+02, 2.93151062011646e+02, 2.931511230469478e+02, 2.931511840822495e+02, 2.931512756347656e+02, 2.931513366699219e+02, 2.931514282226562e+02, 2.931515197752815e+02, 2.93151611328125e+02, 2.931516723634631e+02, 2.93151763916343e+02, 2.9315185546875e+02, 2.931519775387715e+02, 2.931520690916514e+02, 2.931521606445312e+02] +VAV_1.bus.TAirMix=[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.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] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 2.268350905088846e-04, 8.35084451513755e-04, 1.801975615990248e-03, 3.087021067373284e-03, 4.607012839858689e-03, 6.394672005891789e-03, 8.439441148571597e-03, 1.0651979076223e-02, 1.300671145176776e-02, 1.54669439406594e-02, 1.802103423124548e-02, 2.06434733833879e-02, 2.33129890429203e-02, 2.601731738642132e-02, 2.873651707798692e-02, 3.147145831837528e-02, 3.424495036177223e-02, 3.706330603043696e-02, 3.993244910882902e-02, 4.285650240087047e-02, 4.579872458253274e-02, 4.873749648758725e-02, 5.162973954580407e-02, 5.449447188973644e-02, 5.734380707144737e-02, 6.017734752191993e-02, 6.29947453382166e-02, 6.579574909277298e-02, 6.858014546874866e-02, 7.134775488271528e-02, 7.407569075356289e-02, 7.678298844940167e-02, 7.947002745044253e-02, 8.213709944755647e-02, 8.478447206952425e-02, 8.74123833844505e-02, 9.002110238022605e-02, 9.260775271177586e-02, 9.516434735398223e-02, 9.770013241316849e-02, 1.002155178797181e-01, 1.027108835958095e-01, 1.051865723958816e-01, 1.076429417597928e-01, 1.100802897525467e-01, 1.12486703194374e-01, 1.148529353557176e-01, 1.171897674651857e-01, 1.194991745448961e-01, 1.217890381813049e-01, 1.240556336072265e-01, 1.262995196244806e-01, 1.285506551349914e-01, 1.30801225845122e-01, 1.330457005001113e-01, 1.352914268368155e-01, 1.375445888663809e-01, 1.397982128321583e-01, 1.420532226364084e-01, 1.443203931593039e-01, 1.46592017736614e-01, 1.488673378102489e-01, 1.511486481592101e-01, 1.534345182722362e-01, 1.557236964483052e-01, 1.58012294735981e-01, 1.602968833476167e-01, 1.625797732243007e-01, 1.648587440883061e-01, 1.671192672902435e-01, 1.693698812012807e-01, 1.716106022974717e-01, 1.738261091374655e-01, 1.760201135286008e-01, 1.781959384679794e-01, 1.803473999556584e-01, 1.824686418422518e-01, 1.84565907716005e-01, 1.866391405927639e-01, 1.88684222656468e-01, 1.907044793342375e-01, 1.927004470693569e-01, 1.946792784402062e-01, 1.966399899580638e-01, 1.985815866375232e-01, 2.005134644224327e-01, 2.024449547872407e-01, 2.043680110778668e-01, 2.062872229102578e-01, 2.082395600208563e-01, 2.101968773482116e-01, 2.121588554987874e-01, 2.141250953904529e-01, 2.160952394082498e-01, 2.18146043511674e-01, 2.202397779384041e-01, 2.223772940676181e-01, 2.245753216164564e-01, 2.268224038922508e-01, 2.291156351566315e-01] +VAV_1.bus.VOut_flow=[-0e+00, 3.729504740603225e-05, 1.752593467553095e-04, 4.065130093872061e-04, 7.040264698532022e-04, 1.132395434424085e-03, 1.613826558611629e-03, 2.140220936788118e-03, 2.717669460913237e-03, 3.318510731421224e-03, 3.93376304118283e-03, 4.536576139102533e-03, 5.114264936654067e-03, 5.665909755231104e-03, 6.193447827254069e-03, 6.685368901754487e-03, 7.136032604788311e-03, 7.552303301876736e-03, 7.933411484774309e-03, 8.278947400835412e-03, 8.588780560922838e-03, 8.86299663975015e-03, 9.101836968096026e-03, 9.300863294031335e-03, 9.461321010827877e-03, 9.584826417267323e-03, 9.67182318389513e-03, 9.722835344875915e-03, 9.738454595016099e-03, 9.719324265092323e-03, 9.666134682763399e-03, 9.599913861462379e-03, 9.505554954310763e-03, 9.383719588401987e-03, 9.235207979612742e-03, 9.060867017838599e-03, 8.86159978904672e-03, 8.638329914892436e-03, 8.401097625159382e-03, 8.176481950372023e-03, 7.939344416254586e-03, 7.690338326386068e-03, 7.430039927605757e-03, 7.158929679027804e-03, 6.877479540569192e-03, 6.586158294036688e-03, 6.353769579151754e-03, 6.238559717390587e-03, 6.186084339946973e-03, 6.200134234716102e-03, 6.310421042144299e-03, 6.497996150663492e-03, 6.761968266551963e-03, 7.150198713990798e-03, 7.649884796270476e-03, 8.25132166821637e-03, 8.961741631128839e-03, 9.787507060710394e-03, 1.072060017521429e-02, 1.175930825384971e-02, 1.289884092114425e-02, 1.414009559102553e-02, 1.548176286060481e-02, 1.690433244542844e-02, 1.841050236725786e-02, 2.000213805961904e-02, 2.166317522632812e-02, 2.337845310517963e-02, 2.515837234771567e-02, 2.699594988520579e-02, 2.884861119133698e-02, 3.073870987145027e-02, 3.266455423200455e-02, 3.457017626420092e-02, 3.646594105175756e-02, 3.836128488183022e-02, 4.021358660469643e-02, 4.198215488678936e-02, 4.370337091476245e-02, 4.536408962952169e-02, 4.685127935374375e-02, 4.823477534231856e-02, 4.951701773228152e-02, 5.05844966444195e-02, 5.146412011574231e-02, 5.218293361582284e-02, 5.268602021293657e-02, 5.29174356964604e-02, 5.293243372991888e-02, 5.272594410009186e-02, 5.223467422784431e-02, 5.150883859691295e-02, 5.054972868924204e-02, 4.935814904648382e-02, 4.793450943973773e-02, 4.627042793413599e-02, 4.436809503148857e-02, 4.223585010249007e-02, 3.993235610832473e-02, 3.742457055664954e-02, 3.477776423096657e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilWaterHeating3WVReheat.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilWaterHeating3WVReheat.txt new file mode 100644 index 00000000000..87f9a1fe8e5 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZCoilWaterHeating3WVReheat.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 2, 1, 5, 1, 0, 1, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1, 2, 1, 1, 0, 0, 1, 5, 1", + "number of continuous time states": "32", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931499938966663e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244144991e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549317498e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502380371458e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295898438e+02, 2.931503601074219e+02, 2.93150390625e+02, 2.931504211425781e+02, 2.931504516601562e+02, 2.931504821780254e+02, 2.931505432128906e+02, 2.931505737304688e+02, 2.931506347654431e+02, 2.931506652832031e+02, 2.931507263183594e+02, 2.931507873535156e+02, 2.931508483886719e+02, 2.931509094234643e+02, 2.931509704589844e+02, 2.931510314941406e+02, 2.931510925293696e+02, 2.931511840820312e+02, 2.931512451175513e+02, 2.931513366695217e+02, 2.931513977050781e+02, 2.931514892578125e+02, 2.931515808105833e+02, 2.931516723634631e+02, 2.93151763916343e+02, 2.9315185546875e+02, 2.931519470214844e+02, 2.931520690916514e+02, 2.931521606445312e+02] +VAV_1.bus.TAirMix=[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.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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 1.901867747308522e-04, 7.463656707092696e-04, 1.646621460766407e-03, 2.869795428100648e-03, 4.345380583254565e-03, 6.075973413066794e-03, 8.063973797758245e-03, 1.021755806243026e-02, 1.251442087812796e-02, 1.491813976991687e-02, 1.742090486244399e-02, 1.999076711906558e-02, 2.260983302504826e-02, 2.526562831285483e-02, 2.793941488651184e-02, 3.061274162936805e-02, 3.332327630039399e-02, 3.607703919591867e-02, 3.887971558195821e-02, 4.173516768999726e-02, 4.460744375411037e-02, 4.747544635707587e-02, 5.031574028324873e-02, 5.310088544923017e-02, 5.586870387196541e-02, 5.861902870753081e-02, 6.135172476999811e-02, 6.40667077651178e-02, 6.676390246217412e-02, 6.944325992796442e-02, 7.209622797246013e-02, 7.471338100733482e-02, 7.730903882283235e-02, 7.98835968734509e-02, 8.243741246551253e-02, 8.497080590682791e-02, 8.748411267741815e-02, 8.997763066613489e-02, 9.244700126568973e-02, 9.488792572473087e-02, 9.730779465702535e-02, 9.970701798876812e-02, 1.020859537451847e-01, 1.044449886315408e-01, 1.067844433520492e-01, 1.091046388521114e-01, 1.114065947880677e-01, 1.136912653403929e-01, 1.159579210786505e-01, 1.182068064808846e-01, 1.204381755312977e-01, 1.226522293996481e-01, 1.248491990546803e-01, 1.270292801713112e-01, 1.291986081939823e-01, 1.313620055537191e-01, 1.335119173349309e-01, 1.356483882423876e-01, 1.377714629804052e-01, 1.398811737194517e-01, 1.419776201136793e-01, 1.440608193503107e-01, 1.461365530855733e-01, 1.482092916731542e-01, 1.502725233018816e-01, 1.523263698695332e-01, 1.543710048708151e-01, 1.56406565047291e-01, 1.584331547072635e-01, 1.604509079605541e-01, 1.624599738204165e-01, 1.644604595982714e-01, 1.664524934507841e-01, 1.684361975379893e-01, 1.704180687665939e-01, 1.724058408597208e-01, 1.743897237426708e-01, 1.763700154397335e-01, 1.783470320029082e-01, 1.803210652197834e-01, 1.822923864196941e-01, 1.842612638241167e-01, 1.862279805560134e-01, 1.881927601339529e-01, 1.901558739842183e-01, 1.921175690253611e-01, 1.940832873688354e-01, 1.960630426319465e-01, 1.980462102681119e-01, 2.000332224118587e-01, 2.020244993153139e-01, 2.040204372442065e-01, 2.060214415766802e-01, 2.080278699421453e-01, 2.100400948712766e-01, 2.120584590911439e-01, 2.140833230424151e-01, 2.161150237855995e-01, 2.181562612751454e-01, 2.202144116163254e-01] +VAV_1.bus.VOut_flow=[-0e+00, 4.83736863753403e-05, 1.991076081616116e-04, 4.449939199567226e-04, 7.509460938981353e-04, 1.179920592658772e-03, 1.663073848874429e-03, 2.190379409503486e-03, 2.767758550878149e-03, 3.367437298447624e-03, 3.979843485903739e-03, 4.575707984835626e-03, 5.147745981023248e-03, 5.690288049927152e-03, 6.206355958878202e-03, 6.689209682137599e-03, 7.128738482076544e-03, 7.532373001143902e-03, 7.899416358610644e-03, 8.229539803070358e-03, 8.522692984822279e-03, 8.77903603483373e-03, 8.998875529839419e-03, 9.18117065548227e-03, 9.323535551334231e-03, 9.428445249795914e-03, 9.496374099592498e-03, 9.52787974879458e-03, 9.52358357828364e-03, 9.484163435247708e-03, 9.410345099741379e-03, 9.310839721130957e-03, 9.196078311009406e-03, 9.054299643786051e-03, 8.886356901774731e-03, 8.693161296592951e-03, 8.475686748120168e-03, 8.234962940115701e-03, 7.971816564461155e-03, 7.702652003072808e-03, 7.445138103965592e-03, 7.176583068828546e-03, 6.897462623537168e-03, 6.608252157574787e-03, 6.309420729125139e-03, 6.001435312449545e-03, 5.684757872260317e-03, 5.379026256943321e-03, 5.10286184428442e-03, 4.830295012871053e-03, 4.561556968837976e-03, 4.296865064220569e-03, 4.036422792842106e-03, 3.780419912186746e-03, 3.529033693337165e-03, 3.300844695684966e-03, 3.111219310205367e-03, 2.936617352822809e-03, 2.776973629322593e-03, 2.632212701630369e-03, 2.50225031525263e-03, 2.386991556768818e-03, 2.286336197104955e-03, 2.209761620315039e-03, 2.164905145943371e-03, 2.140803933472514e-03, 2.137607415541596e-03, 2.155454319788662e-03, 2.194476047068648e-03, 2.254795533349954e-03, 2.336528497863121e-03, 2.439784601107605e-03, 2.564667807626348e-03, 2.71127855582178e-03, 2.879710931859654e-03, 3.07355192489922e-03, 3.297132899943085e-03, 3.545211896650308e-03, 3.818026868608158e-03, 4.115810422945367e-03, 4.43879894316896e-03, 4.787220999770259e-03, 5.161305702471697e-03, 5.561280292231377e-03, 5.987371079866278e-03, 6.439801132940104e-03, 6.918798897292166e-03, 7.415206871892368e-03, 7.911292146796433e-03, 8.426523589360486e-03, 8.960591066418312e-03, 9.513185753721166e-03, 1.008401621519995e-02, 1.067278864083143e-02, 1.127921618328254e-02, 1.19030213091956e-02, 1.254393113777541e-02, 1.320167440822149e-02, 1.387599818925511e-02, 1.455490602056629e-02, 1.520287618041039e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZControlG36Airflow.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZControlG36Airflow.txt new file mode 100644 index 00000000000..725f4a9469c --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZControlG36Airflow.txt @@ -0,0 +1,18 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 2, 0, 0, 1, 5, 1, 0, 1, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1, 1, 2, 0, 0, 0, 1, 5, 1, 1", + "number of continuous time states": "36", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +VAV_1.bus.TAirSup=[2.931499938964844e+02, 2.935587463378906e+02, 2.939021911621094e+02, 2.943377990722656e+02, 2.941629943847656e+02, 2.940722351074219e+02, 2.940494079589844e+02, 2.939938049316406e+02, 2.939225463867188e+02, 2.938546447753906e+02, 2.9381591796875e+02, 2.937929077148438e+02, 2.937659606933594e+02, 2.937571105957031e+02, 2.9375634765625e+02, 2.937438659667969e+02, 2.937451171875e+02, 2.937531127929688e+02, 2.937454223632812e+02, 2.937491760253906e+02, 2.937567443847656e+02, 2.937489013671875e+02, 2.937528076171875e+02, 2.93760009765625e+02, 2.937518920898438e+02, 2.937564392089844e+02, 2.937629699707031e+02, 2.937546997070312e+02, 2.937598266601562e+02, 2.93765625e+02, 2.937571105957031e+02, 2.937629699707031e+02, 2.937679138183594e+02, 2.937595520019531e+02, 2.937659912109375e+02, 2.937698059082031e+02, 2.937616271972656e+02, 2.937688598632812e+02, 2.937715454101562e+02, 2.937637634277344e+02, 2.937714538574219e+02, 2.937728881835938e+02, 2.93765625e+02, 2.9377392578125e+02, 2.937738952636719e+02, 2.937676086425781e+02, 2.937762145996094e+02, 2.937746887207031e+02, 2.937695007324219e+02, 2.937782592773438e+02, 2.937751770019531e+02, 2.937713928222656e+02, 2.937800598144531e+02, 2.937755432128906e+02, 2.937732543945312e+02, 2.937816467285156e+02, 2.937757568359375e+02, 2.937749938964844e+02, 2.937830200195312e+02, 2.937759094238281e+02, 2.937769470214844e+02, 2.937839660644531e+02, 2.937760314941406e+02, 2.9377880859375e+02, 2.937847595214844e+02, 2.937762145996094e+02, 2.937806396484375e+02, 2.937851867675781e+02, 2.937765502929688e+02, 2.937822570800781e+02, 2.937853088378906e+02, 2.937769775390625e+02, 2.937839050292969e+02, 2.937851867675781e+02, 2.93777587890625e+02, 2.937853698730469e+02, 2.937847900390625e+02, 2.937784118652344e+02, 2.9378662109375e+02, 2.937841796875e+02, 2.937793579101562e+02, 2.937877502441406e+02, 2.937833862304688e+02, 2.937804870605469e+02, 2.937886352539062e+02, 2.937826538085938e+02, 2.937817077636719e+02, 2.937892456054688e+02, 2.937819213867188e+02, 2.937829895019531e+02, 2.937896118164062e+02, 2.937813720703125e+02, 2.937843322753906e+02, 2.937897033691406e+02, 2.937809753417969e+02, 2.9378564453125e+02, 2.937894897460938e+02, 2.937808227539062e+02, 2.937869262695312e+02, 2.937890014648438e+02, 2.937808837890625e+02] +VAV_1.bus.TAirMix=[2.931499938964844e+02, 2.932084655761719e+02, 2.932410888671875e+02, 2.932364501953125e+02, 2.932334594726562e+02, 2.932936401367188e+02, 2.933694458007812e+02, 2.933857421875e+02, 2.933811950683594e+02, 2.93352294921875e+02, 2.933258666992188e+02, 2.933309936523438e+02, 2.933170471191406e+02, 2.933013916015625e+02, 2.933141174316406e+02, 2.933076477050781e+02, 2.932956848144531e+02, 2.933121948242188e+02, 2.933078918457031e+02, 2.932974243164062e+02, 2.933141479492188e+02, 2.933089599609375e+02, 2.932989501953125e+02, 2.933160095214844e+02, 2.933095092773438e+02, 2.933008117675781e+02, 2.9331787109375e+02, 2.933099060058594e+02, 2.93302490234375e+02, 2.933196716308594e+02, 2.93309814453125e+02, 2.933042297363281e+02, 2.933214416503906e+02, 2.933097229003906e+02, 2.933060302734375e+02, 2.933229675292969e+02, 2.933092651367188e+02, 2.933079528808594e+02, 2.933244934082031e+02, 2.933088989257812e+02, 2.933098449707031e+02, 2.933255615234375e+02, 2.933082885742188e+02, 2.933118896484375e+02, 2.933263854980469e+02, 2.93307861328125e+02, 2.9331396484375e+02, 2.933267211914062e+02, 2.933075866699219e+02, 2.933160705566406e+02, 2.933265686035156e+02, 2.933074951171875e+02, 2.933181762695312e+02, 2.93325927734375e+02, 2.933075561523438e+02, 2.933203125e+02, 2.933247375488281e+02, 2.93307861328125e+02, 2.933224487304688e+02, 2.933231506347656e+02, 2.933086242675781e+02, 2.933243103027344e+02, 2.933212280273438e+02, 2.933096618652344e+02, 2.93326416015625e+02, 2.933190612792969e+02, 2.9331103515625e+02, 2.933280639648438e+02, 2.933169860839844e+02, 2.933125610351562e+02, 2.933294067382812e+02, 2.933150634765625e+02, 2.933144226074219e+02, 2.933302917480469e+02, 2.933132934570312e+02, 2.933164672851562e+02, 2.933306884765625e+02, 2.9331201171875e+02, 2.933184814453125e+02, 2.933303527832031e+02, 2.9331103515625e+02, 2.933207397460938e+02, 2.933292846679688e+02, 2.933105163574219e+02, 2.933228759765625e+02, 2.933275756835938e+02, 2.933105163574219e+02, 2.93324951171875e+02, 2.933253173828125e+02, 2.933110046386719e+02, 2.933269348144531e+02, 2.933229064941406e+02, 2.933119201660156e+02, 2.933287048339844e+02, 2.933203125e+02, 2.93313232421875e+02, 2.933302307128906e+02, 2.933178100585938e+02, 2.933149108886719e+02, 2.933313293457031e+02, 2.933155822753906e+02] +VAV_1.bus.TOut=[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.931500854492188e+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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 9.863148629665375e-02, 1.372568011283875e-01, 1.754816770553589e-01, 2.132712155580521e-01, 2.501983046531677e-01, 2.856027781963348e-01, 3.196139335632325e-01, 3.517191410064697e-01, 3.790517151355743e-01, 3.998578190803528e-01, 4.195109307765961e-01, 4.348271489143372e-01, 4.437201321125031e-01, 4.523179829120636e-01, 4.569849073886871e-01, 4.554584622383118e-01, 4.547916948795319e-01, 4.540855884552002e-01, 4.505287110805511e-01, 4.504989385604858e-01, 4.49882835149765e-01, 4.465540945529938e-01, 4.467290341854095e-01, 4.461459517478943e-01, 4.430427551269531e-01, 4.434212148189545e-01, 4.428218007087708e-01, 4.39941018819809e-01, 4.405165314674377e-01, 4.398471415042877e-01, 4.372068345546722e-01, 4.379767179489136e-01, 4.371769726276398e-01, 4.348013699054719e-01, 4.357460141181946e-01, 4.347801506519318e-01, 4.326934814453125e-01, 4.337911903858185e-01, 4.326256215572357e-01, 4.30847704410553e-01, 4.320628046989441e-01, 4.306808412075043e-01, 4.292478561401367e-01, 4.305479824542999e-01, 4.289388656616211e-01, 4.278521537780762e-01, 4.291961193084717e-01, 4.273695647716522e-01, 4.266473054885864e-01, 4.279880225658417e-01, 4.259589910507202e-01, 4.25608903169632e-01, 4.268837571144104e-01, 4.24692302942276e-01, 4.247169494628906e-01, 4.258556962013244e-01, 4.235751032829285e-01, 4.239490926265717e-01, 4.248870611190796e-01, 4.225917756557465e-01, 4.232896268367767e-01, 4.239619672298431e-01, 4.217365086078644e-01, 4.227433502674103e-01, 4.230653643608093e-01, 4.210236370563507e-01, 4.222695231437683e-01, 4.222226440906525e-01, 4.20434445142746e-01, 4.218664765357971e-01, 4.214287102222443e-01, 4.199601709842682e-01, 4.215183556079865e-01, 4.206825196743011e-01, 4.195926785469055e-01, 4.212165176868439e-01, 4.199998676776886e-01, 4.193052351474762e-01, 4.209283590316772e-01, 4.193710684776306e-01, 4.190993010997772e-01, 4.206453561782837e-01, 4.187923967838287e-01, 4.189516007900238e-01, 4.203239679336548e-01, 4.182960391044617e-01, 4.188505709171295e-01, 4.199555218219757e-01, 4.178804755210876e-01, 4.18779045343399e-01, 4.195573627948761e-01, 4.175495803356171e-01, 4.187431335449219e-01, 4.191271066665649e-01, 4.17304515838623e-01, 4.187350571155548e-01, 4.18681263923645e-01, 4.171460866928101e-01, 4.187454283237457e-01, 4.182412028312683e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZControlG36Pressure.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZControlG36Pressure.txt new file mode 100644 index 00000000000..c47fdb3e3fc --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZControlG36Pressure.txt @@ -0,0 +1,18 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 2, 0, 1, 5, 1, 0, 1, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0, 1, 1, 2, 0, 0, 1, 5, 1, 1", + "number of continuous time states": "37", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +VAV_1.bus.TAirSup=[2.931499938964844e+02, 2.934417724609375e+02, 2.934788208007812e+02, 2.93883056640625e+02, 2.941762084960938e+02, 2.941072082519531e+02, 2.940464172363281e+02, 2.939945068359375e+02, 2.93953857421875e+02, 2.93924560546875e+02, 2.939037475585938e+02, 2.938895874023438e+02, 2.938804016113281e+02, 2.938748474121094e+02, 2.938716735839844e+02, 2.938701171875e+02, 2.938699035644531e+02, 2.938707885742188e+02, 2.938714904785156e+02, 2.938721923828125e+02, 2.938728637695312e+02, 2.9387353515625e+02, 2.938742065429688e+02, 2.938748474121094e+02, 2.9387548828125e+02, 2.938760986328125e+02, 2.938767395019531e+02, 2.938773498535156e+02, 2.938779296875e+02, 2.938785400390625e+02, 2.938791198730469e+02, 2.938796997070312e+02, 2.938802490234375e+02, 2.938807983398438e+02, 2.9388134765625e+02, 2.938818664550781e+02, 2.938823852539062e+02, 2.938828735351562e+02, 2.938837890625e+02, 2.938853454589844e+02, 2.938869934082031e+02, 2.93888671875e+02, 2.938904418945312e+02, 2.938922119140625e+02, 2.938939819335938e+02, 2.93895751953125e+02, 2.938974609375e+02, 2.938991088867188e+02, 2.939006652832031e+02, 2.939021301269531e+02, 2.939035034179688e+02, 2.9390478515625e+02, 2.939059448242188e+02, 2.939070129394531e+02, 2.93907958984375e+02, 2.939088439941406e+02, 2.939096374511719e+02, 2.939103698730469e+02, 2.939110107421875e+02, 2.9391162109375e+02, 2.939121398925781e+02, 2.939126281738281e+02, 2.939130554199219e+02, 2.939134521484375e+02, 2.93913818359375e+02, 2.939141235351562e+02, 2.939144287109375e+02, 2.939146728515625e+02, 2.939149169921875e+02, 2.939151306152344e+02, 2.939153137207031e+02, 2.939154663085938e+02, 2.939156188964844e+02, 2.939157409667969e+02, 2.939158630371094e+02, 2.939159851074219e+02, 2.939155883789062e+02, 2.939149475097656e+02, 2.939143676757812e+02, 2.939138488769531e+02, 2.939133605957031e+02, 2.939129028320312e+02, 2.939125061035156e+02, 2.939121704101562e+02, 2.939118347167969e+02, 2.939115295410156e+02, 2.939112548828125e+02, 2.939110107421875e+02, 2.939107971191406e+02, 2.939105834960938e+02, 2.93910400390625e+02, 2.939102478027344e+02, 2.939100952148438e+02, 2.939099426269531e+02, 2.939098205566406e+02, 2.939096984863281e+02, 2.939096069335938e+02, 2.939095153808594e+02, 2.93909423828125e+02, 2.939093627929688e+02, 2.939092712402344e+02] +VAV_1.bus.TAirMix=[2.931499938964844e+02, 2.934419555664062e+02, 2.934414978027344e+02, 2.934410705566406e+02, 2.934406127929688e+02, 2.934401245117188e+02, 2.934396362304688e+02, 2.934391784667969e+02, 2.934387512207031e+02, 2.934383850097656e+02, 2.934381103515625e+02, 2.934378967285156e+02, 2.934377136230469e+02, 2.934375915527344e+02, 2.934375e+02, 2.934374389648438e+02, 2.934374389648438e+02, 2.934374694824219e+02, 2.934375e+02, 2.934375e+02, 2.934375305175781e+02, 2.934375610351562e+02, 2.934375610351562e+02, 2.934375915527344e+02, 2.934375915527344e+02, 2.934376220703125e+02, 2.934376220703125e+02, 2.934376525878906e+02, 2.934376525878906e+02, 2.934376831054688e+02, 2.934376831054688e+02, 2.934377136230469e+02, 2.934377136230469e+02, 2.934377136230469e+02, 2.93437744140625e+02, 2.93437744140625e+02, 2.93437744140625e+02, 2.934377746582031e+02, 2.934378967285156e+02, 2.934382019042969e+02, 2.934385070800781e+02, 2.934388732910156e+02, 2.934392700195312e+02, 2.93439697265625e+02, 2.934401550292969e+02, 2.93440673828125e+02, 2.934411926269531e+02, 2.934417114257812e+02, 2.934422912597656e+02, 2.934428405761719e+02, 2.934433898925781e+02, 2.934439392089844e+02, 2.934444885253906e+02, 2.934450073242188e+02, 2.934454956054688e+02, 2.934459838867188e+02, 2.934464416503906e+02, 2.934468383789062e+02, 2.934472351074219e+02, 2.934476013183594e+02, 2.934479370117188e+02, 2.934482727050781e+02, 2.934485473632812e+02, 2.934488220214844e+02, 2.934490661621094e+02, 2.934492797851562e+02, 2.934494934082031e+02, 2.934496765136719e+02, 2.934498291015625e+02, 2.934499816894531e+02, 2.934501342773438e+02, 2.934502563476562e+02, 2.934503784179688e+02, 2.934504699707031e+02, 2.934505615234375e+02, 2.934506530761719e+02, 2.934502258300781e+02, 2.934495849609375e+02, 2.93448974609375e+02, 2.934484558105469e+02, 2.934479675292969e+02, 2.93447509765625e+02, 2.934471130371094e+02, 2.934467468261719e+02, 2.934464416503906e+02, 2.934461364746094e+02, 2.934458923339844e+02, 2.934456481933594e+02, 2.934454345703125e+02, 2.934452209472656e+02, 2.934450378417969e+02, 2.934448852539062e+02, 2.934447631835938e+02, 2.934446105957031e+02, 2.934444885253906e+02, 2.934443969726562e+02, 2.934443054199219e+02, 2.934442138671875e+02, 2.934441223144531e+02, 2.934440612792969e+02, 2.934440002441406e+02] +VAV_1.bus.TOut=[2.931499938964844e+02, 2.934419250488281e+02, 2.934414672851562e+02, 2.934410705566406e+02, 2.934406127929688e+02, 2.934401245117188e+02, 2.934396362304688e+02, 2.934391784667969e+02, 2.934387512207031e+02, 2.934384155273438e+02, 2.934381103515625e+02, 2.934378967285156e+02, 2.934377136230469e+02, 2.934375915527344e+02, 2.934375e+02, 2.934374389648438e+02, 2.934374389648438e+02, 2.934374694824219e+02, 2.934375e+02, 2.934375e+02, 2.934375305175781e+02, 2.934375610351562e+02, 2.934375610351562e+02, 2.934375915527344e+02, 2.934375915527344e+02, 2.934376220703125e+02, 2.934376220703125e+02, 2.934376525878906e+02, 2.934376525878906e+02, 2.934376831054688e+02, 2.934376831054688e+02, 2.934377136230469e+02, 2.934377136230469e+02, 2.934377136230469e+02, 2.93437744140625e+02, 2.93437744140625e+02, 2.93437744140625e+02, 2.934377746582031e+02, 2.934378967285156e+02, 2.934381713867188e+02, 2.934385070800781e+02, 2.934388732910156e+02, 2.934392700195312e+02, 2.93439697265625e+02, 2.934401550292969e+02, 2.934406433105469e+02, 2.93441162109375e+02, 2.934417114257812e+02, 2.934422607421875e+02, 2.934428100585938e+02, 2.93443359375e+02, 2.934439086914062e+02, 2.934444580078125e+02, 2.934449768066406e+02, 2.934454650878906e+02, 2.934459228515625e+02, 2.934463806152344e+02, 2.934468078613281e+02, 2.934471740722656e+02, 2.934475402832031e+02, 2.934478759765625e+02, 2.934481811523438e+02, 2.93448486328125e+02, 2.9344873046875e+02, 2.93448974609375e+02, 2.934491882324219e+02, 2.934494018554688e+02, 2.934495849609375e+02, 2.934497375488281e+02, 2.934498901367188e+02, 2.934500122070312e+02, 2.934501037597656e+02, 2.934501953125e+02, 2.934502868652344e+02, 2.934503479003906e+02, 2.934503784179688e+02, 2.934402465820312e+02, 2.934006042480469e+02, 2.933429565429688e+02, 2.932843627929688e+02, 2.9323583984375e+02, 2.932007446289062e+02, 2.931778869628906e+02, 2.931643981933594e+02, 2.931567993164062e+02, 2.931532287597656e+02, 2.931514587402344e+02, 2.93150634765625e+02, 2.931502685546875e+02, 2.931501159667969e+02, 2.931500549316406e+02, 2.931500244140625e+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] +VAV_1.bus.VOut_flow=[-0e+00, -3.610116839408875e-01, -3.538279831409454e-01, -3.435310125350952e-01, -3.311296105384827e-01, -3.173570036888123e-01, -3.02636593580246e-01, -2.872562110424042e-01, -2.725309133529663e-01, -2.59420245885849e-01, -2.479426711797714e-01, -2.382409572601318e-01, -2.304006516933441e-01, -2.244787216186523e-01, -2.204907536506653e-01, -2.184202820062637e-01, -2.181845754384995e-01, -2.194383293390274e-01, -2.204081118106842e-01, -2.213384658098221e-01, -2.22231537103653e-01, -2.230890393257141e-01, -2.239126861095428e-01, -2.247038930654526e-01, -2.254642248153687e-01, -2.261947840452194e-01, -2.268970459699631e-01, -2.275721877813339e-01, -2.282214164733887e-01, -2.288458496332169e-01, -2.29446604847908e-01, -2.300243675708771e-01, -2.305802702903748e-01, -2.311148792505264e-01, -2.316294014453888e-01, -2.321248650550842e-01, -2.326016575098038e-01, -2.330606281757355e-01, -2.305851578712463e-01, -2.240454256534576e-01, -2.166936993598938e-01, -2.08601638674736e-01, -1.998070180416107e-01, -1.903840154409409e-01, -1.804280877113342e-01, -1.700559854507446e-01, -1.594088673591614e-01, -1.486285626888275e-01, -1.378551423549652e-01, -1.272368580102921e-01, -1.168856993317604e-01, -1.069054454565048e-01, -9.737575054168701e-02, -8.835174143314362e-02, -7.986700534820557e-02, -7.194868475198746e-02, -6.459435075521462e-02, -5.779412761330611e-02, -5.153068900108337e-02, -4.577890411019325e-02, -4.051071032881737e-02, -3.570312261581421e-02, -3.13180536031723e-02, -2.732563763856888e-02, -2.369491010904312e-02, -2.039441093802452e-02, -1.739821955561638e-02, -1.468299422413111e-02, -1.222140993922947e-02, -9.990708902478237e-03, -7.969752885401249e-03, -6.138545460999012e-03, -4.481189418584108e-03, -2.983622951433063e-03, -1.628385274671018e-03, -4.021319036837667e-04, 7.087611593306065e-04, 1.71466579195112e-03, 2.622732892632484e-03, 3.442055778577924e-03, 4.182243254035711e-03, 4.851446952670819e-03, 5.456919781863689e-03, 6.003669463098049e-03, 6.501183845102787e-03, 6.945909466594458e-03, 7.347847800701857e-03, 7.711565587669611e-03, 8.039064705371857e-03, 8.33478756248951e-03, 8.602102287113667e-03, 8.843645453453064e-03, 9.062264114618301e-03, 9.259219281375408e-03, 9.437223896384239e-03, 9.597626514732838e-03, 9.742790833115578e-03, 9.874169714748859e-03, 9.992325678467751e-03, 1.009922195225954e-02, 1.019540056586266e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZDedicatedDampersPressure.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZDedicatedDampersPressure.txt new file mode 100644 index 00000000000..8fd9a646f67 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZDedicatedDampersPressure.txt @@ -0,0 +1,18 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 3, 0, 0, 10, 1, 1, 0, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1, 0, 1, 3, 1, 0, 0, 10, 1", + "number of continuous time states": "32", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931499938966663e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244144991e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549317498e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502380371458e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295898438e+02, 2.931503601074219e+02, 2.93150390625e+02, 2.931504211425781e+02, 2.931504516601562e+02, 2.931504821780254e+02, 2.931505432128906e+02, 2.931505737304688e+02, 2.931506347654431e+02, 2.931506652832031e+02, 2.931507263183594e+02, 2.931507873535156e+02, 2.931508483886719e+02, 2.931509094234643e+02, 2.931509704589844e+02, 2.931510314941406e+02, 2.931510925293696e+02, 2.931511840820312e+02, 2.931512451175513e+02, 2.931513366695217e+02, 2.931513977050781e+02, 2.931514892578125e+02, 2.931515808105833e+02, 2.931516723634631e+02, 2.93151763916343e+02, 2.9315185546875e+02, 2.931519470214844e+02, 2.931520690916514e+02, 2.931521606445312e+02] +VAV_1.bus.TAirMix=[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.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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 1.904103212640396e-04, 7.473180645021388e-04, 1.648743013684822e-03, 2.873359599767521e-03, 4.350889821798118e-03, 6.083620037352944e-03, 8.073772242500133e-03, 1.022955349758017e-02, 1.252847826035978e-02, 1.493405979775616e-02, 1.743832059466757e-02, 2.000932837822247e-02, 2.262921198550505e-02, 2.52856070446944e-02, 2.79596879162217e-02, 3.063310965409154e-02, 3.334365736362021e-02, 3.609737555571126e-02, 3.889997743586934e-02, 4.175532896112585e-02, 4.462746718935469e-02, 4.749530215434447e-02, 5.033526080455256e-02, 5.312003716644473e-02, 5.588744580745697e-02, 5.863733478361336e-02, 6.136956146046673e-02, 6.408404526622902e-02, 6.678072587272676e-02, 6.945954689777102e-02, 7.211191889533047e-02, 7.472851313610085e-02, 7.732359725805149e-02, 7.989757416285057e-02, 8.245078625732874e-02, 8.498357620282369e-02, 8.749626457467372e-02, 8.998915671401635e-02, 9.245790146430367e-02, 9.489825222977127e-02, 9.731755491739416e-02, 9.971620455391138e-02, 1.020945740673617e-01, 1.044530501596135e-01, 1.067919460860442e-01, 1.091115827936941e-01, 1.114130171884801e-01, 1.136972034526091e-01, 1.159633898052705e-01, 1.182118281722069e-01, 1.204427501873579e-01, 1.226563793721879e-01, 1.248529243436998e-01, 1.270325882300555e-01, 1.292015586243428e-01, 1.313646430593214e-01, 1.335142270146495e-01, 1.356503998986514e-01, 1.377731766135517e-01, 1.398826340337816e-01, 1.419788122070011e-01, 1.440617730247337e-01, 1.461373130446876e-01, 1.482098579170665e-01, 1.502729256328786e-01, 1.523266231894689e-01, 1.543711240803533e-01, 1.564065650473976e-01, 1.584330503991173e-01, 1.604507291464421e-01, 1.624597205005163e-01, 1.644601466740995e-01, 1.664521358230575e-01, 1.684358250090305e-01, 1.704177707433701e-01, 1.724055726388904e-01, 1.743895151266983e-01, 1.763698962306571e-01, 1.783470022005858e-01, 1.803211695277341e-01, 1.822926248382377e-01, 1.842616810567367e-01, 1.862285617017973e-01, 1.881935647972435e-01, 1.901569021636302e-01, 1.921188356236363e-01, 1.940849115952989e-01, 1.960649648819182e-01, 1.980484603438785e-01, 2.000358301157782e-01, 2.020274497444487e-01, 2.040237900047291e-01, 2.060251817678734e-01, 2.08032042267404e-01, 2.100447142317796e-01, 2.120635552892314e-01, 2.140888960752095e-01, 2.16121103458514e-01, 2.18162951896024e-01, 2.202216386795044e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZFanRelief.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZFanRelief.txt new file mode 100644 index 00000000000..cef6a73b209 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZFanRelief.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 2, 0, 1, 5, 1, 0, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "1, 2, 1, 0, 0, 0, 1, 5, 1", + "number of continuous time states": "29", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502685543965e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295899893e+02, 2.931503601077129e+02, 2.931504211425781e+02, 2.931504516598288e+02, 2.931504821777344e+02, 2.931505126953125e+02, 2.931505737304688e+02, 2.931506042483015e+02, 2.931506652832031e+02, 2.931507263179956e+02, 2.931507568359375e+02, 2.931508178710938e+02, 2.931508789063228e+02, 2.931509399416245e+02, 2.931510009769263e+02, 2.931510925288967e+02, 2.931511535641985e+02, 2.931512145996094e+02, 2.931513061523438e+02, 2.931513671876819e+02, 2.931514587405618e+02, 2.931515502925322e+02, 2.931516418454121e+02, 2.93151733398292e+02, 2.931518249511719e+02] +VAV_1.bus.TAirMix=[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.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.931499633789062e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 1.554221310491496e-04, 6.02572601716051e-04, 1.327918786271533e-03, 2.28917375399002e-03, 3.475339523597557e-03, 4.885089322303964e-03, 6.476504678826906e-03, 8.219076646913076e-03, 1.010184386593189e-02, 1.209142587706885e-02, 1.418885787680293e-02, 1.635644271441025e-02, 1.85792251981654e-02, 2.084904895499401e-02, 2.316147508984937e-02, 2.551518093187349e-02, 2.791132175977039e-02, 3.035217906460109e-02, 3.284044623801264e-02, 3.53778928355537e-02, 3.793490473276988e-02, 4.047329008884787e-02, 4.299612983232017e-02, 4.551084474214744e-02, 4.801575466990471e-02, 5.050952224641012e-02, 5.29910299435335e-02, 5.545940593326886e-02, 5.791391636387851e-02, 6.034603426223358e-02, 6.275795342798879e-02, 6.515297464238233e-02, 6.753096418588553e-02, 6.989184682822007e-02, 7.223556329808718e-02, 7.456207688618793e-02, 7.687141636491512e-02, 7.916167487094007e-02, 8.143359746184287e-02, 8.368805661946516e-02, 8.59251626348662e-02, 8.814499816948497e-02, 9.034765354693126e-02, 9.253323130020591e-02, 9.470183659604647e-02, 9.685964702617965e-02, 9.900497670609046e-02, 1.011357181189412e-01, 1.032519767422825e-01, 1.05353906750679e-01, 1.074415986696826e-01, 1.095151791623196e-01, 1.115747674380928e-01, 1.136204705568739e-01, 1.15652409760461e-01, 1.176706994741262e-01, 1.196754440045218e-01, 1.216772381085927e-01, 1.236744500767046e-01, 1.256619793565666e-01, 1.276401104101604e-01, 1.296090474294277e-01, 1.315690437338957e-01, 1.335202781383513e-01, 1.354630039635651e-01, 1.373973885197839e-01, 1.393236634823662e-01, 1.412420110117393e-01, 1.43152624823101e-01, 1.450658612464618e-01, 1.469824355199074e-01, 1.488957797419987e-01, 1.508062892496062e-01, 1.527142506532494e-01, 1.546200066804886e-01, 1.565238404538837e-01, 1.584260499980087e-01, 1.603269184355657e-01, 1.62226732469852e-01, 1.641257531657835e-01, 1.660242374185663e-01, 1.679293228956968e-01, 1.698434980899704e-01, 1.717610111512436e-01, 1.736822082454234e-01, 1.75607469901689e-01, 1.775371423094483e-01, 1.794715532957753e-01, 1.814110008849595e-01, 1.833558278039571e-01, 1.853062906311976e-01, 1.872627255410875e-01, 1.892253742467414e-01, 1.911966358371682e-01, 1.931781494454928e-01, 1.951678140048315e-01, 1.971658858018205e-01, 1.991726866764419e-01, 2.011884878688377e-01, 2.03213557600975e-01] +VAV_1.bus.VOut_flow=[-0e+00, 1.002694966873784e-04, 4.123538287168865e-04, 9.267714178612501e-04, 1.644035994437116e-03, 2.552647303164986e-03, 3.620548097285894e-03, 4.848905334894146e-03, 6.228435114973782e-03, 7.738870475729319e-03, 9.378355675814644e-03, 1.111124559774996e-02, 1.295083625960663e-02, 1.489285009420167e-02, 1.688953104571458e-02, 1.894239398385718e-02, 2.106769087912473e-02, 2.326082957341716e-02, 2.551736333250407e-02, 2.783296499530172e-02, 3.020338456590688e-02, 3.262445863759374e-02, 3.504015534013746e-02, 3.74571447382322e-02, 3.98958599301027e-02, 4.235317558050156e-02, 4.482615975728042e-02, 4.731202975946678e-02, 4.980818524960701e-02, 5.231218249244549e-02, 5.479700568571098e-02, 5.726725176733036e-02, 5.973200676024958e-02, 6.218989989121613e-02, 6.463972391617823e-02, 6.708040233538765e-02, 6.951100032130945e-02, 7.193072770110354e-02, 7.431429737201384e-02, 7.666901834246818e-02, 7.900472591631684e-02, 8.13214638133256e-02, 8.361927719725784e-02, 8.589815185930379e-02, 8.81581460830432e-02, 9.039934245342524e-02, 9.261180276870479e-02, 9.479868437931263e-02, 9.696381770009198e-02, 9.91074198984775e-02, 1.01229727268219e-01, 1.033309941542005e-01, 1.054115036833466e-01, 1.074715464292598e-01, 1.095114157708511e-01, 1.115314489458272e-01, 1.135319541113865e-01, 1.155132516407252e-01, 1.174713703650349e-01, 1.194073906340856e-01, 1.213237746749331e-01, 1.232208284530247e-01, 1.250988087080183e-01, 1.26958028363233e-01, 1.287987407393684e-01, 1.306212289611161e-01, 1.324257654498043e-01, 1.342126548388306e-01, 1.359821247368665e-01, 1.377344582658271e-01, 1.394720992202145e-01, 1.411954201282963e-01, 1.429032634684802e-01, 1.445959178225825e-01, 1.462736560851979e-01, 1.479367762804031e-01, 1.495855168249298e-01, 1.512201608442511e-01, 1.528409318568507e-01, 1.544480885467627e-01, 1.560418735880412e-01, 1.576225157796274e-01, 1.591962587163019e-01, 1.60765263066706e-01, 1.623245667431966e-01, 1.638745032637898e-01, 1.654154487313252e-01, 1.669476919036707e-01, 1.684715606064435e-01, 1.699873379627722e-01, 1.714953368983917e-01, 1.729958316152203e-01, 1.744891082208818e-01, 1.759754259704105e-01, 1.774607900357036e-01, 1.789493578513428e-01, 1.804348709236366e-01, 1.81917707852876e-01, 1.833982886462502e-01, 1.848769769878896e-01, 1.863541454076767e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZFanSupplyBlowThrough.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZFanSupplyBlowThrough.txt new file mode 100644 index 00000000000..55898108458 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_AirHandlersFans_Validation_VAVMZFanSupplyBlowThrough.txt @@ -0,0 +1,19 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 1, 0, 0, 1, 5, 1, 1, 0, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1, 0, 1, 0, 1, 1, 0, 0, 1, 5, 1", + "number of continuous time states": "30", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAV_1.bus.TAirSup=[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.931500244138442e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500549316406e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931500854492188e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.931501159667969e+02, 2.93150146484375e+02, 2.93150146484375e+02, 2.931501770019531e+02, 2.931501770019531e+02, 2.931502075195312e+02, 2.931502380371094e+02, 2.931502380371094e+02, 2.931502685546875e+02, 2.931502990722656e+02, 2.931503295895891e+02, 2.931503295898438e+02, 2.931503601074583e+02, 2.931503906251819e+02, 2.931504516601562e+02, 2.931504821772978e+02, 2.931505126953125e+02, 2.931505432128906e+02, 2.931506042480469e+02, 2.931506347657705e+02, 2.931506958007812e+02, 2.931507568359375e+02, 2.931507873535156e+02, 2.931508483886719e+02, 2.931509094238281e+02, 2.931509704590935e+02, 2.931510620117188e+02, 2.93151123046875e+02, 2.931511840820312e+02, 2.931512756345473e+02, 2.931513671874272e+02, 2.93151428222729e+02, 2.931515197756089e+02, 2.931516113284888e+02, 2.931517028808594e+02, 2.931518249509172e+02, 2.931519165037971e+02, 2.931520385742188e+02, 2.93152130127135e+02, 2.93152252197593e+02, 2.931523742671416e+02, 2.931524963375996e+02, 2.931526184080576e+02, 2.931527404785156e+02] +VAV_1.bus.TAirMix=[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.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.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02, 2.931500244140625e+02] +VAV_1.bus.TOut=[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.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] +VAV_1.bus.fanSup.V_flow=[0e+00, 1.829000628343488e-04, 7.197420676760761e-04, 1.592682746358498e-03, 2.788720072585885e-03, 4.237857531206956e-03, 5.942178672307592e-03, 7.870138563096939e-03, 9.975265174831082e-03, 1.223785533689005e-02, 1.462027580598464e-02, 1.709923349448175e-02, 1.965088652814932e-02, 2.224892316402563e-02, 2.487655154543743e-02, 2.753691588263097e-02, 3.022441364466171e-02, 3.292984466923775e-02, 3.565344019098711e-02, 3.839608720052512e-02, 4.115807555093987e-02, 4.391532198846861e-02, 4.66540384566494e-02, 4.938306545836188e-02, 5.209504212767619e-02, 5.478798970580101e-02, 5.74619758190826e-02, 6.011732011055358e-02, 6.275460092661397e-02, 6.537453302970778e-02, 6.797777551880474e-02, 7.056382236958872e-02, 7.313517664408292e-02, 7.569296323311082e-02, 7.823841927975568e-02, 8.077277393834287e-02, 8.329732355460726e-02, 8.581316351299038e-02, 8.831827461531219e-02, 9.081049619165417e-02, 9.329310656859524e-02, 9.57661726954102e-02, 9.822973931271285e-02, 1.00683851277557e-01, 1.03128575370104e-01, 1.055639713165947e-01, 1.079871634335877e-01, 1.103987026101801e-01, 1.128000195690239e-01, 1.151911742571602e-01, 1.175722479820251e-01, 1.199432932043054e-01, 1.223043695308469e-01, 1.246555514676687e-01, 1.269968846950032e-01, 1.293284567265553e-01, 1.316503280835022e-01, 1.339625434683112e-01, 1.362637915751952e-01, 1.385539532007607e-01, 1.408341174695162e-01, 1.431043711667835e-01, 1.453647155731344e-01, 1.476152102921478e-01, 1.498559149286818e-01, 1.520868741871792e-01, 1.543081195613273e-01, 1.565197222342418e-01, 1.587217285408204e-01, 1.609141831843313e-01, 1.630973245831648e-01, 1.652713017500454e-01, 1.674359677002054e-01, 1.695914078440366e-01, 1.71737639052842e-01, 1.738747358322144e-01, 1.760027428842163e-01, 1.781217198153399e-01, 1.80231711329282e-01, 1.823327794366507e-01, 1.844249789849992e-01, 1.865083421278342e-01, 1.88584150366555e-01, 1.906540577307559e-01, 1.927161121680864e-01, 1.947703908653626e-01, 1.96817007717726e-01, 1.988560249633857e-01, 2.008875320086339e-01, 2.029116182607575e-01, 2.049283582265216e-01, 2.06937814456911e-01, 2.089401003132277e-01, 2.109352634008516e-01, 2.129241828888578e-01, 2.149091237559615e-01, 2.168879551355147e-01, 2.188607844960546e-01, 2.208277396638673e-01, 2.227889131699815e-01, 2.247444242238998e-01] +VAV_1.bus.VOut_flow=[-0e+00, 5.576723836641253e-05, 2.262588784012335e-04, 5.02959905094465e-04, 8.566020825975588e-04, 1.336431325927651e-03, 1.881217311535537e-03, 2.479430036627425e-03, 3.139184908258117e-03, 3.822893354026362e-03, 4.525126785941374e-03, 5.21967284783581e-03, 5.890972623469717e-03, 6.544782622328203e-03, 7.185022308837962e-03, 7.780663797677073e-03, 8.330440339689717e-03, 8.853953239974975e-03, 9.351242916782394e-03, 9.822354760569365e-03, 1.026733486070029e-02, 1.068623297279971e-02, 1.10791000042674e-02, 1.140349811351402e-02, 1.168371657697231e-02, 1.192648708820343e-02, 1.213186903611128e-02, 1.229991188608814e-02, 1.243066041280774e-02, 1.252414664601952e-02, 1.258196210211871e-02, 1.261642854161039e-02, 1.261712236793014e-02, 1.258404465912953e-02, 1.251718684180008e-02, 1.241653219107312e-02, 1.228205880834123e-02, 1.211373423516653e-02, 1.193034454533021e-02, 1.175181633393152e-02, 1.155150042268013e-02, 1.132936953536285e-02, 1.108539257013165e-02, 1.081954055549566e-02, 1.053177837558531e-02, 1.022207419081422e-02, 9.920944702072563e-03, 9.625649043921897e-03, 9.322779854996967e-03, 9.013120382726676e-03, 8.697452023625374e-03, 8.376562659219718e-03, 8.051238329164354e-03, 7.722271591228435e-03, 7.390455125538388e-03, 7.056579392554906e-03, 6.721441713978067e-03, 6.385839304252694e-03, 6.07008717016869e-03, 5.778453030817366e-03, 5.498129134186444e-03, 5.230604114473053e-03, 4.977371661497369e-03, 4.739923759935763e-03, 4.519752858906891e-03, 4.318349077293435e-03, 4.137204015883683e-03, 3.977805161299945e-03, 3.841641915179406e-03, 3.730201139520589e-03, 3.643026487744158e-03, 3.580330539288255e-03, 3.545660824550313e-03, 3.540413441096789e-03, 3.565983810323421e-03, 3.623765194788575e-03, 3.715148302581427e-03, 3.841520802165484e-03, 4.004267574152645e-03, 4.204766827171263e-03, 4.444395352924898e-03, 4.724519256555794e-03, 5.025836375966221e-03, 5.320392137907656e-03, 5.643562375187468e-03, 5.995513004664514e-03, 6.376409341687328e-03, 6.786403045160389e-03, 7.225638473311234e-03, 7.694251134000789e-03, 8.192365356350316e-03, 8.720091060283573e-03, 9.277531858301035e-03, 9.864770378769247e-03, 1.046643699065193e-02, 1.103880977524812e-02, 1.16242061979639e-02, 1.222145571519367e-02, 1.282939663788185e-02, 1.344685942317828e-02, 1.407268084585667e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Coils.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Coils.txt new file mode 100644 index 00000000000..fcf3a539e49 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Coils.txt @@ -0,0 +1,49 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "2", + "nonlinear": "0, 1, 1, 1, 1, 0, 1", + "number of continuous time states": "13", + "numerical Jacobians": "0" +} +time=[0e+00, 2e+02] +coiCoo.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +coiCoo.bus.y_actual=[0e+00, 5.281694466248155e-04, 3.941664937883615e-03, 1.247709523886442e-02, 2.779555320739746e-02, 5.107414722442627e-02, 8.257031440734863e-02, 1.204207092523575e-01, 1.626090854406357e-01, 2.075263261795044e-01, 2.538827061653137e-01, 3.006649613380432e-01, 3.470892906188965e-01, 3.925524950027466e-01, 4.366018176078797e-01, 4.789092540740967e-01, 5.192505717277527e-01, 5.574813485145569e-01, 5.935185551643372e-01, 6.27329409122467e-01, 6.589224934577942e-01, 6.883383393287659e-01, 7.156407833099365e-01, 7.409093379974365e-01, 7.642349004745483e-01, 7.85717248916626e-01, 8.054574131965637e-01, 8.235682249069214e-01, 8.401467204093934e-01, 8.552989363670349e-01, 8.691281676292419e-01, 8.817324638366699e-01, 8.932054042816162e-01, 9.036359786987305e-01, 9.131078124046326e-01, 9.216998815536499e-01, 9.294861555099487e-01, 9.365363717079163e-01, 9.429145455360413e-01, 9.486798048019409e-01, 9.538872838020325e-01, 9.585869908332825e-01, 9.628259539604187e-01, 9.666460752487183e-01, 9.700870513916016e-01, 9.731841087341309e-01, 9.759703874588013e-01, 9.784753918647766e-01, 9.807265400886536e-01, 9.827483892440796e-01, 9.845635294914246e-01, 9.861917495727539e-01, 9.876530170440674e-01, 9.889628291130066e-01, 9.901362061500549e-01, 9.911872744560242e-01, 9.921284914016724e-01, 9.929710626602173e-01, 9.93725061416626e-01, 9.943996667861938e-01, 9.950029850006104e-01, 9.955424666404724e-01, 9.960246682167053e-01, 9.964554905891418e-01, 9.968402981758118e-01, 9.971839189529419e-01, 9.974907040596008e-01, 9.977644681930542e-01, 9.980087280273438e-01, 9.982267022132874e-01, 9.984210729598999e-01, 9.985944032669067e-01, 9.987490177154541e-01, 9.988868236541748e-01, 9.990097284317017e-01, 9.991193413734436e-01, 9.992168545722961e-01, 9.993038177490234e-01, 9.993811845779419e-01, 9.994499683380127e-01, 9.995111227035522e-01, 9.995654821395874e-01, 9.996138215065002e-01, 9.996567368507385e-01, 9.996948838233948e-01, 9.997288584709167e-01, 9.997590780258179e-01, 9.997859597206116e-01, 9.998098611831665e-01, 9.998311400413513e-01, 9.998500943183899e-01, 9.998669028282166e-01, 9.998818635940552e-01, 9.998951554298401e-01, 9.999069571495056e-01, 9.999174475669861e-01, 9.999266862869263e-01, 9.999348521232605e-01, 9.999420642852783e-01, 9.999483227729797e-01, 9.999539256095886e-01] +coiCoo.hex.m1_flow=[1.406250021318556e-06, 2.002072869800031e-04, 9.158572182059288e-03, 2.879834733903408e-02, 3.152541816234589e-02, 3.452939167618752e-02, 3.905384615063667e-02, 4.528073221445084e-02, 5.339531600475311e-02, 6.36335164308548e-02, 7.625211775302887e-02, 9.150707721710205e-02, 1.0963024944067e-01, 1.308019906282425e-01, 1.55127838253975e-01, 1.82619035243988e-01, 2.131793051958084e-01, 2.465950399637222e-01, 2.825339138507843e-01, 3.20557028055191e-01, 3.601428866386414e-01, 4.00716632604599e-01, 4.416830241680145e-01, 4.824582636356354e-01, 5.225013494491577e-01, 5.61340868473053e-01, 5.985833406448364e-01, 6.339449286460876e-01, 6.672017574310304e-01, 6.982334256172179e-01, 7.269927263259888e-01, 7.534891366958618e-01, 7.777782678604126e-01, 7.999497056007385e-01, 8.201159834861755e-01, 8.384042978286743e-01, 8.549493551254272e-01, 8.698891997337341e-01, 8.833573460578918e-01, 8.954824805259705e-01, 9.063871502876282e-01, 9.161844849586487e-01, 9.249815344810486e-01, 9.328740835189819e-01, 9.399527311325073e-01, 9.462974071502686e-01, 9.519829750061035e-01, 9.570755362510681e-01, 9.616362452507019e-01, 9.657191634178162e-01, 9.693737626075745e-01, 9.726428985595703e-01, 9.755694270133972e-01, 9.781866669654846e-01, 9.805262684822083e-01, 9.82617974281311e-01, 9.844878315925598e-01, 9.861589670181274e-01, 9.876523613929749e-01, 9.889867305755615e-01, 9.901788234710693e-01, 9.912435412406921e-01, 9.921944141387939e-01, 9.930431246757507e-01, 9.938006997108459e-01, 9.944767355918884e-01, 9.950798153877258e-01, 9.956178069114685e-01, 9.960975646972656e-01, 9.965254068374634e-01, 9.969068169593811e-01, 9.972468614578247e-01, 9.975501298904419e-01, 9.978203177452087e-01, 9.980611801147461e-01, 9.982759356498718e-01, 9.984670281410217e-01, 9.986372590065002e-01, 9.987888932228088e-01, 9.989234805107117e-01, 9.990432858467102e-01, 9.991496801376343e-01, 9.992443323135376e-01, 9.993283152580261e-01, 9.994029998779297e-01, 9.99469518661499e-01, 9.995285868644714e-01, 9.995812177658081e-01, 9.996280074119568e-01, 9.996696710586548e-01, 9.997067451477051e-01, 9.997397065162659e-01, 9.997689723968506e-01, 9.997949600219727e-01, 9.998180270195007e-01, 9.998384714126587e-01, 9.998566508293152e-01, 9.99872624874115e-01, 9.998866319656372e-01, 9.998989701271057e-01, 9.999098777770996e-01] +coiCoo.hex.m2_flow=[1e+00, 1e+00] +coiCoo.hex.m1_flow_nominal=[1e+00, 1e+00] +coiCoo.hex.m2_flow_nominal=[1e+00, 1e+00] +coiCoo.hex.Q2_flow=[-6.713470611430239e-06, -1.762336045503616e-01, -9.00266845703125e+02, -3.372742919921875e+03, -3.69112109375e+03, -4.041030029296875e+03, -4.56596826171875e+03, -5.283310546875001e+03, -6.207830078125e+03, -7.3568193359375e+03, -8.7457822265625e+03, -1.03810302734375e+04, -1.22359423828125e+04, -1.40770732421875e+04, -1.5656072265625e+04, -1.709747265625e+04, -1.861216015625e+04, -2.0330892578125e+04, -2.2202203125e+04, -2.4240953125e+04, -2.6361271484375e+04, -2.8497265625e+04, -3.059082421875e+04, -3.25944765625e+04, -3.44723125e+04, -3.620012890625e+04, -3.776437109375e+04, -3.916180859375e+04, -4.038471875000001e+04, -4.14643046875e+04, -4.24146484375e+04, -4.322758984375e+04, -4.39294296875e+04, -4.453464453125e+04, -4.50565625e+04, -4.5507109375e+04, -4.589672265625e+04, -4.623444140625e+04, -4.6527921875e+04, -4.678366796875e+04, -4.700718359375e+04, -4.7203078125e+04, -4.73752734375e+04, -4.752704296875e+04, -4.766119140625e+04, -4.778006640625e+04, -4.78856953125e+04, -4.79797734375e+04, -4.806378125e+04, -4.81389765625e+04, -4.82064453125e+04, -4.8267109375e+04, -4.83218203125e+04, -4.837125390625e+04, -4.8416015625e+04, -4.845666015625e+04, -4.849365625e+04, -4.85274140625e+04, -4.85583046875e+04, -4.85866484375e+04, -4.861271875e+04, -4.863676953125e+04, -4.865901953125e+04, -4.867966015625e+04, -4.869886328125e+04, -4.871678515625e+04, -4.873355859375e+04, -4.87493046875e+04, -4.876412890625e+04, -4.87781328125e+04, -4.87913984375e+04, -4.880399609375e+04, -4.881600390625e+04, -4.88274765625e+04, -4.883846484375e+04, -4.884901953125e+04, -4.88591796875e+04, -4.8868984375e+04, -4.887846875e+04, -4.888765625e+04, -4.8896578125e+04, -4.89052578125e+04, -4.891371484375e+04, -4.892196875e+04, -4.893004296875e+04, -4.893794921875e+04, -4.894569921875e+04, -4.895330859375e+04, -4.89607890625e+04, -4.896814453125e+04, -4.897538671875e+04, -4.898252734375e+04, -4.898956640625e+04, -4.899651171875e+04, -4.900337109375e+04, -4.90101484375e+04, -4.901684765625e+04, -4.902346875e+04, -4.903001953125e+04, -4.90365e+04, -4.904291796875e+04] +coiCoo.Q_flow_nominal=[-5e+04, -5e+04] +coiHea.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +coiHea.bus.y_actual=[0e+00, 5.281694466248155e-04, 3.941664937883615e-03, 1.247709523886442e-02, 2.779555320739746e-02, 5.107414722442627e-02, 8.257031440734863e-02, 1.204207092523575e-01, 1.626090854406357e-01, 2.075263261795044e-01, 2.538827061653137e-01, 3.006649613380432e-01, 3.470892906188965e-01, 3.925524950027466e-01, 4.366018176078797e-01, 4.789092540740967e-01, 5.192505717277527e-01, 5.574813485145569e-01, 5.935185551643372e-01, 6.27329409122467e-01, 6.589224934577942e-01, 6.883383393287659e-01, 7.156407833099365e-01, 7.409093379974365e-01, 7.642349004745483e-01, 7.85717248916626e-01, 8.054574131965637e-01, 8.235682249069214e-01, 8.401467204093934e-01, 8.552989363670349e-01, 8.691281676292419e-01, 8.817324638366699e-01, 8.932054042816162e-01, 9.036359786987305e-01, 9.131078124046326e-01, 9.216998815536499e-01, 9.294861555099487e-01, 9.365363717079163e-01, 9.429145455360413e-01, 9.486798048019409e-01, 9.538872838020325e-01, 9.585869908332825e-01, 9.628259539604187e-01, 9.666460752487183e-01, 9.700870513916016e-01, 9.731841087341309e-01, 9.759703874588013e-01, 9.784753918647766e-01, 9.807265400886536e-01, 9.827483892440796e-01, 9.845635294914246e-01, 9.861917495727539e-01, 9.876530170440674e-01, 9.889628291130066e-01, 9.901362061500549e-01, 9.911872744560242e-01, 9.921284914016724e-01, 9.929710626602173e-01, 9.93725061416626e-01, 9.943996667861938e-01, 9.950029850006104e-01, 9.955424666404724e-01, 9.960246682167053e-01, 9.964554905891418e-01, 9.968402981758118e-01, 9.971839189529419e-01, 9.974907040596008e-01, 9.977644681930542e-01, 9.980087280273438e-01, 9.982267022132874e-01, 9.984210729598999e-01, 9.985944032669067e-01, 9.987490177154541e-01, 9.988868236541748e-01, 9.990097284317017e-01, 9.991193413734436e-01, 9.992168545722961e-01, 9.993038177490234e-01, 9.993811845779419e-01, 9.994499683380127e-01, 9.995111227035522e-01, 9.995654821395874e-01, 9.996138215065002e-01, 9.996567368507385e-01, 9.996948838233948e-01, 9.997288584709167e-01, 9.997590780258179e-01, 9.997859597206116e-01, 9.998098611831665e-01, 9.998311400413513e-01, 9.998500943183899e-01, 9.998669028282166e-01, 9.998818635940552e-01, 9.998951554298401e-01, 9.999069571495056e-01, 9.999174475669861e-01, 9.999266862869263e-01, 9.999348521232605e-01, 9.999420642852783e-01, 9.999483227729797e-01, 9.999539256095886e-01] +coiHea.hex.m1_flow=[1.406250021318556e-06, 2.002072869800031e-04, 9.158572182059288e-03, 2.879834733903408e-02, 3.152541816234589e-02, 3.452939167618752e-02, 3.905384615063667e-02, 4.528073221445084e-02, 5.339531600475311e-02, 6.36335164308548e-02, 7.625211775302887e-02, 9.150707721710205e-02, 1.0963024944067e-01, 1.308019906282425e-01, 1.55127838253975e-01, 1.82619035243988e-01, 2.131793051958084e-01, 2.465950399637222e-01, 2.825339138507843e-01, 3.20557028055191e-01, 3.601428866386414e-01, 4.00716632604599e-01, 4.416830241680145e-01, 4.824582636356354e-01, 5.225013494491577e-01, 5.61340868473053e-01, 5.985833406448364e-01, 6.339449286460876e-01, 6.672017574310304e-01, 6.982334256172179e-01, 7.269927263259888e-01, 7.534891366958618e-01, 7.777782678604126e-01, 7.999497056007385e-01, 8.201159834861755e-01, 8.384042978286743e-01, 8.549493551254272e-01, 8.698891997337341e-01, 8.833573460578918e-01, 8.954824805259705e-01, 9.063871502876282e-01, 9.161844849586487e-01, 9.249815344810486e-01, 9.328740835189819e-01, 9.399527311325073e-01, 9.462974071502686e-01, 9.519829750061035e-01, 9.570755362510681e-01, 9.616362452507019e-01, 9.657191634178162e-01, 9.693737626075745e-01, 9.726428985595703e-01, 9.755694270133972e-01, 9.781866669654846e-01, 9.805262684822083e-01, 9.82617974281311e-01, 9.844878315925598e-01, 9.861589670181274e-01, 9.876523613929749e-01, 9.889867305755615e-01, 9.901788234710693e-01, 9.912435412406921e-01, 9.921944141387939e-01, 9.930431246757507e-01, 9.938006997108459e-01, 9.944767355918884e-01, 9.950798153877258e-01, 9.956178069114685e-01, 9.960975646972656e-01, 9.965254068374634e-01, 9.969068169593811e-01, 9.972468614578247e-01, 9.975501298904419e-01, 9.978203177452087e-01, 9.980611801147461e-01, 9.982759356498718e-01, 9.984670281410217e-01, 9.986372590065002e-01, 9.987888932228088e-01, 9.989234805107117e-01, 9.990432858467102e-01, 9.991496801376343e-01, 9.992443323135376e-01, 9.993283152580261e-01, 9.994029998779297e-01, 9.99469518661499e-01, 9.995285868644714e-01, 9.995812177658081e-01, 9.996280074119568e-01, 9.996696710586548e-01, 9.997067451477051e-01, 9.997397065162659e-01, 9.997689723968506e-01, 9.997949600219727e-01, 9.998180270195007e-01, 9.998384714126587e-01, 9.998566508293152e-01, 9.99872624874115e-01, 9.998866319656372e-01, 9.998989701271057e-01, 9.999098777770996e-01] +coiHea.hex.m2_flow=[1e+00, 1e+00] +coiHea.hex.m1_flow_nominal=[1e+00, 1e+00] +coiHea.hex.m2_flow_nominal=[1e+00, 1e+00] +coiHea.hex.Q2_flow=[0e+00, 1.145710182189941e+01, 2.2978759765625e+03, 6.63223095703125e+03, 7.128404296875e+03, 7.65306103515625e+03, 8.408404296875e+03, 9.397877929687502e+03, 1.063192578125e+04, 1.21382587890625e+04, 1.39465498046875e+04, 1.60595322265625e+04, 1.8414814453125e+04, 2.0920830078125e+04, 2.350941796875e+04, 2.61097421875e+04, 2.865373828125e+04, 3.11018359375e+04, 3.33505390625e+04, 3.542798046875e+04, 3.729994140625e+04, 3.89642578125e+04, 4.042826953125e+04, 4.170555859375e+04, 4.281323046875e+04, 4.376985546875e+04, 4.459377734375e+04, 4.530273046875e+04, 4.59122734375e+04, 4.64366328125e+04, 4.688825e+04, 4.727780859375e+04, 4.76144453125e+04, 4.790593359375e+04, 4.81588515625e+04, 4.837877734375e+04, 4.857042578125e+04, 4.87378046875e+04, 4.888428125e+04, 4.901270703125e+04, 4.912551953125e+04, 4.92247734375e+04, 4.93122421875e+04, 4.9389421875e+04, 4.9457625e+04, 4.9517953125e+04, 4.95713828125e+04, 4.961873828125e+04, 4.966075390625e+04, 4.969805078125e+04, 4.973119140625e+04, 4.976063671875e+04, 4.978683984375e+04, 4.981015234375e+04, 4.983089453125e+04, 4.984935546875e+04, 4.986580078125e+04, 4.988044921875e+04, 4.98935e+04, 4.990512890625e+04, 4.99154921875e+04, 4.992473046875e+04, 4.993296484375e+04, 4.994030078125e+04, 4.994683984375e+04, 4.995266796875e+04, 4.9957859375e+04, 4.9962484375e+04, 4.9966609375e+04, 4.997028125e+04, 4.997355078125e+04, 4.997646875e+04, 4.997906640625e+04, 4.998137890625e+04, 4.998344140625e+04, 4.998527734375e+04, 4.998691015625e+04, 4.99883671875e+04, 4.99896640625e+04, 4.99908125e+04, 4.99918359375e+04, 4.999274609375e+04, 4.99935546875e+04, 4.999426953125e+04, 4.999490625e+04, 4.99954765625e+04, 4.999598046875e+04, 4.99964296875e+04, 4.9996828125e+04, 4.999718359375e+04, 4.99975e+04, 4.999778125e+04, 4.999803125e+04, 4.999825e+04, 4.999844921875e+04, 4.999862109375e+04, 4.999877734375e+04, 4.99989140625e+04, 4.999903515625e+04, 4.999913671875e+04, 4.999923046875e+04] +coiHea.Q_flow_nominal=[5e+04, 5e+04] +coiEle.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +coiEle.hex.m_flow=[1e+00, 1e+00] +coiEle.hex.m_flow_nominal=[1e+00, 1e+00] +coiEle.hex.Q_flow=[0e+00, 1e+04, 2e+04, 3e+04, 4e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04, 5e+04] +coiEle.Q_flow_nominal=[5e+04, 5e+04] +coiEva.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +coiEva.hex.m_flow=[1.132799983024597e+00, 1.132799983024597e+00] +coiEva.hex.m_flow_nominal=[1.132799983024597e+00, 1.132799983024597e+00] +coiEva.hex.QSen_flow=[0e+00, 0e+00, -5.66994091796875e+03, -8.11473583984375e+03, -1.03938232421875e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04, -1.2560240234375e+04] +coiEva.hex.QLat_flow=[0e+00, 0e+00, -9.164449462890625e+02, -1.764842651367188e+03, -2.7789482421875e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03, -3.9057236328125e+03] +coiEva.Q_flow_nominal=[-1.82769609375e+04, -1.82769609375e+04] +coiMul.bus.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, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 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, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +coiMul.hex.m_flow=[4.531199932098389e+00, 4.531199932098389e+00] +coiMul.hex.m_flow_nominal=[4.531199932098389e+00, 4.531199932098389e+00] +coiMul.hex.QSen_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 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.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -2.3271404296875e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04, -5.216828125e+04] +coiMul.hex.QLat_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -8.0922998046875e+03, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04, -1.2997642578125e+04] +coiMul.Q_flow_nominal=[-7.28735234375e+04, -7.28735234375e+04] +non.m_flow=[1e+00, 1e+00] +non.m_flow_nominal=[1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Dampers.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Dampers.txt new file mode 100644 index 00000000000..35252e05129 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Dampers.txt @@ -0,0 +1,28 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0, 0", + "number of continuous time states": "6", + "numerical Jacobians": "0" +} +time=[0e+00, 2e+02] +mod.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +mod.bus.y_actual=[0e+00, 5.273207789286971e-04, 3.93623998388648e-03, 1.24744912609458e-02, 2.779442071914673e-02, 5.107245221734047e-02, 8.257108926773071e-02, 1.204183325171471e-01, 1.626055240631104e-01, 2.075200527906418e-01, 2.538755238056183e-01, 3.006600141525269e-01, 3.470855355262756e-01, 3.925494253635406e-01, 4.366007149219513e-01, 4.789118468761444e-01, 5.192551016807556e-01, 5.574837923049927e-01, 5.935178399085999e-01, 6.273276209831238e-01, 6.589217185974121e-01, 6.883384585380554e-01, 7.156403660774231e-01, 7.409075498580933e-01, 7.642318606376648e-01, 7.857134342193604e-01, 8.054555058479309e-01, 8.235636353492737e-01, 8.401416540145875e-01, 8.552939891815186e-01, 8.691229224205017e-01, 8.817264437675476e-01, 8.9319908618927e-01, 9.036296010017395e-01, 9.131025075912476e-01, 9.216963052749634e-01, 9.29485023021698e-01, 9.365367889404297e-01, 9.429159760475159e-01, 9.486814141273499e-01, 9.538882374763489e-01, 9.58587110042572e-01, 9.628247022628784e-01, 9.666438698768616e-01, 9.700837135314941e-01, 9.731800556182861e-01, 9.759656190872192e-01, 9.784700870513916e-01, 9.807206988334656e-01, 9.827421307563782e-01, 9.845568537712097e-01, 9.861853718757629e-01, 9.876460433006287e-01, 9.889557361602783e-01, 9.901295304298401e-01, 9.911810755729675e-01, 9.921228289604187e-01, 9.929643273353577e-01, 9.937203526496887e-01, 9.943978190422058e-01, 9.950039982795715e-01, 9.955458641052246e-01, 9.960305094718933e-01, 9.964631795883179e-01, 9.968493580818176e-01, 9.971938729286194e-01, 9.975012540817261e-01, 9.977753758430481e-01, 9.98019814491272e-01, 9.982377886772156e-01, 9.984322190284729e-01, 9.986054301261902e-01, 9.987596869468689e-01, 9.988970160484314e-01, 9.990193247795105e-01, 9.991281628608704e-01, 9.992249011993408e-01, 9.993105530738831e-01, 9.99386727809906e-01, 9.994543790817261e-01, 9.995148181915283e-01, 9.995679259300232e-01, 9.996150732040405e-01, 9.996572732925415e-01, 9.996946454048157e-01, 9.997275471687317e-01, 9.997571110725403e-01, 9.997837543487549e-01, 9.998070001602173e-01, 9.998278021812439e-01, 9.998466968536377e-01, 9.998633861541748e-01, 9.998781681060791e-01, 9.99891459941864e-01, 9.999034404754639e-01, 9.999139308929443e-01, 9.999233484268188e-01, 9.999318718910217e-01, 9.999393224716187e-01, 9.999459981918335e-01, 9.99951958656311e-01] +mod.dam.m_flow=[4.687500165800884e-08, 5.008081771507022e-08, 7.64485292847894e-08, 2.12829306178719e-07, 1.176377281808527e-06, 1.155472000391455e-05, 1.393755665048957e-04, 1.112448284402491e-03, 3.472911426797509e-03, 5.339581519365311e-03, 8.273989893496037e-03, 1.287144888192415e-02, 1.994960568845272e-02, 3.061909414827824e-02, 4.630098119378093e-02, 6.865287572145462e-02, 9.928697347640991e-02, 1.390821784734726e-01, 1.868894696235657e-01, 2.377327978610992e-01, 2.829835116863251e-01, 3.227478861808777e-01, 3.629264533519745e-01, 4.032918214797974e-01, 4.433438181877136e-01, 4.826471507549286e-01, 5.208351612091064e-01, 5.576139688491821e-01, 5.927554368972779e-01, 6.261000037193297e-01, 6.575466394424438e-01, 6.870418190956116e-01, 7.145747542381287e-01, 7.401652932167053e-01, 7.63860821723938e-01, 7.857259511947632e-01, 8.058409690856934e-01, 8.242936134338379e-01, 8.411805033683777e-01, 8.565990328788757e-01, 8.706493973731995e-01, 8.834301233291626e-01, 8.950371742248535e-01, 9.055631756782532e-01, 9.150960445404053e-01, 9.237186908721924e-01, 9.315093159675598e-01, 9.385406970977783e-01, 9.448807835578918e-01, 9.505924582481384e-01, 9.557338953018188e-01, 9.603586196899414e-01, 9.645156860351562e-01, 9.682499170303345e-01, 9.716023802757263e-01, 9.746102690696716e-01, 9.773075580596924e-01, 9.797205328941345e-01, 9.81890857219696e-01, 9.838374853134155e-01, 9.855806231498718e-01, 9.871400594711304e-01, 9.885357618331909e-01, 9.89782452583313e-01, 9.908957481384277e-01, 9.918895959854126e-01, 9.927765130996704e-01, 9.935678243637085e-01, 9.942737221717834e-01, 9.949033856391907e-01, 9.954651594161987e-01, 9.959656596183777e-01, 9.964115023612976e-01, 9.96808648109436e-01, 9.971622824668884e-01, 9.974769949913025e-01, 9.977568984031677e-01, 9.980046153068542e-01, 9.982249140739441e-01, 9.984208345413208e-01, 9.985955953598022e-01, 9.987492561340332e-01, 9.988856315612793e-01, 9.990078210830688e-01, 9.99116063117981e-01, 9.99211311340332e-01, 9.992967844009399e-01, 9.993739724159241e-01, 9.994412064552307e-01, 9.995015263557434e-01, 9.995561242103577e-01, 9.996044635772705e-01, 9.996472001075745e-01, 9.996857643127441e-01, 9.997204542160034e-01, 9.997508525848389e-01, 9.99778151512146e-01, 9.998027682304382e-01, 9.998244047164917e-01, 9.998436570167542e-01, 9.99860942363739e-01] +mod.dam.m_flow_nominal=[1e+00, 1e+00] +pre.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +pre.bus.y_actual=[0e+00, 0e+00, 0e+00, 0e+00, 2.265240997076035e-01, 3.319839835166931e-01, 4.17055070400238e-01, 4.919662475585938e-01, 5.481975674629211e-01, 6.011870503425598e-01, 6.40691876411438e-01, 6.770857572555542e-01, 7.11178183555603e-01, 7.384111285209656e-01, 7.633197903633118e-01, 7.86928653717041e-01, 8.08451235294342e-01, 8.264709711074829e-01, 8.424299359321594e-01, 8.572483658790588e-01, 8.710386753082275e-01, 8.837535977363586e-01, 8.953604102134705e-01, 9.059340357780457e-01, 9.161989092826843e-01, 9.258739948272705e-01, 9.346705079078674e-01, 9.425155520439148e-01, 9.4943767786026e-01, 9.555110931396484e-01, 9.608255624771118e-01, 9.65471625328064e-01, 9.695340991020203e-01, 9.730890989303589e-01, 9.762039184570312e-01, 9.789366722106934e-01, 9.813379049301147e-01, 9.834508299827576e-01, 9.853127598762512e-01, 9.869557619094849e-01, 9.884074926376343e-01, 9.896917939186096e-01, 9.908292889595032e-01, 9.91837739944458e-01, 9.927327036857605e-01, 9.935275316238403e-01, 9.942339658737183e-01, 9.948621988296509e-01, 9.954212307929993e-01, 9.959188103675842e-01, 9.96362030506134e-01, 9.96756911277771e-01, 9.971088171005249e-01, 9.97422456741333e-01, 9.977021217346191e-01, 9.979508519172668e-01, 9.981693029403687e-01, 9.983589053153992e-01, 9.985233545303345e-01, 9.986650943756104e-01, 9.987868666648865e-01, 9.988913536071777e-01, 9.989879727363586e-01, 9.990065693855286e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01, 9.990000128746033e-01] +pre.dam.m_flow=[1.009988784790039e-02, 1.062656193971634e-02, 1.403130404651165e-02, 2.255905047059059e-02, 3.78597229719162e-02, 6.110644713044167e-02, 9.255589544773102e-02, 1.303281486034394e-01, 1.724038571119308e-01, 2.171599268913269e-01, 2.633039057254791e-01, 3.098255693912506e-01, 3.559456765651703e-01, 4.010687172412872e-01, 4.44750338792801e-01, 4.866698980331421e-01, 5.266064405441284e-01, 5.64419686794281e-01, 6.000353693962097e-01, 6.334290504455566e-01, 6.646136045455933e-01, 6.93631112575531e-01, 7.205469608306885e-01, 7.454436421394348e-01, 7.684146165847778e-01, 7.895610928535461e-01, 8.08987021446228e-01, 8.267984390258789e-01, 8.430989980697632e-01, 8.57992947101593e-01, 8.7158203125e-01, 8.839636445045471e-01, 8.952315449714661e-01, 9.054735898971558e-01, 9.147734642028809e-01, 9.232087731361389e-01, 9.308525323867798e-01, 9.377719759941101e-01, 9.440306425094604e-01, 9.496864676475525e-01, 9.547936916351318e-01, 9.594022631645203e-01, 9.6355801820755e-01, 9.673030972480774e-01, 9.706760048866272e-01, 9.737119078636169e-01, 9.764429330825806e-01, 9.788981676101685e-01, 9.811044931411743e-01, 9.830859899520874e-01, 9.848648905754089e-01, 9.864611029624939e-01, 9.878928065299988e-01, 9.891764521598816e-01, 9.903269410133362e-01, 9.913547039031982e-01, 9.922612905502319e-01, 9.930509328842163e-01, 9.937379360198975e-01, 9.943317770957947e-01, 9.948431849479675e-01, 9.952830076217651e-01, 9.956614971160889e-01, 9.959869384765625e-01, 9.962670803070068e-01, 9.965085983276367e-01, 9.967172145843506e-01, 9.968976974487305e-01, 9.970541596412659e-01, 9.971901178359985e-01, 9.973085522651672e-01, 9.974116683006287e-01, 9.975017309188843e-01, 9.975804686546326e-01, 9.976493716239929e-01, 9.977098107337952e-01, 9.977627992630005e-01, 9.978091716766357e-01, 9.978498816490173e-01, 9.978857636451721e-01, 9.979174733161926e-01, 9.979451298713684e-01, 9.979695081710815e-01, 9.979912042617798e-01, 9.980103373527527e-01, 9.980270862579346e-01, 9.980419874191284e-01, 9.980554580688477e-01, 9.980671405792236e-01, 9.980775713920593e-01, 9.980869889259338e-01, 9.980952739715576e-01, 9.98102605342865e-01, 9.981092214584351e-01, 9.981151223182678e-01, 9.981203079223633e-01, 9.981249570846558e-01, 9.981291890144348e-01, 9.981328248977661e-01, 9.981361031532288e-01, 9.981390237808228e-01] +pre.dam.m_flow_nominal=[1e+00, 1e+00] +two.bus.y1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +two.bus.y1_actual=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +two.dam.m_flow=[4.687500165800884e-08, 4.687500165800884e-08, 4.687500165800884e-08, 4.687500165800884e-08, 4.687500165800884e-08, 4.687500165800884e-08, 1.206106645668115e-07, 1.23601694212994e-06, 2.207565557910129e-05, 3.205210668966174e-04, 2.063086023554206e-03, 4.232218954712152e-03, 6.593580357730389e-03, 1.033525913953781e-02, 1.61668360233307e-02, 2.507426589727402e-02, 3.835711255669594e-02, 5.760470405220985e-02, 8.45247209072113e-02, 1.204550415277481e-01, 1.653263121843338e-01, 2.160439044237137e-01, 2.647428810596466e-01, 3.059346675872803e-01, 3.459935784339905e-01, 3.86458545923233e-01, 4.268021583557129e-01, 4.665576815605164e-01, 5.053225159645082e-01, 5.427729487419127e-01, 5.786594748497009e-01, 6.12797737121582e-01, 6.450667977333069e-01, 6.753944158554077e-01, 7.037549018859863e-01, 7.301551699638367e-01, 7.546329498291016e-01, 7.772443890571594e-01, 7.980663180351257e-01, 8.171834945678711e-01, 8.346916437149048e-01, 8.506892919540405e-01, 8.65277111530304e-01, 8.785549402236938e-01, 8.90620231628418e-01, 9.01566743850708e-01, 9.114845395088196e-01, 9.204583168029785e-01, 9.285687804222107e-01, 9.358908534049988e-01, 9.424950480461121e-01, 9.484462738037109e-01, 9.538048505783081e-01, 9.586259722709656e-01, 9.629604816436768e-01, 9.668548703193665e-01, 9.7035151720047e-01, 9.734835028648376e-01, 9.763033986091614e-01, 9.7883540391922e-01, 9.811049699783325e-01, 9.83137309551239e-01, 9.849578738212585e-01, 9.865855574607849e-01, 9.880402088165283e-01, 9.893397688865662e-01, 9.905004501342773e-01, 9.915367960929871e-01, 9.924618005752563e-01, 9.932874441146851e-01, 9.940245747566223e-01, 9.94681715965271e-01, 9.952674508094788e-01, 9.957894086837769e-01, 9.962544441223145e-01, 9.966685771942139e-01, 9.970369935035706e-01, 9.973633289337158e-01, 9.976536631584167e-01, 9.979118704795837e-01, 9.981423616409302e-01, 9.983450770378113e-01, 9.985252022743225e-01, 9.986865520477295e-01, 9.988295435905457e-01, 9.989553689956665e-01, 9.990683794021606e-01, 9.991704225540161e-01, 9.992594122886658e-01, 9.993391633033752e-01, 9.994114637374878e-01, 9.994754195213318e-01, 9.995320439338684e-01, 9.995831251144409e-01, 9.99629020690918e-01, 9.996693134307861e-01, 9.9970543384552e-01, 9.997380971908569e-01, 9.997667670249939e-01, 9.997923374176025e-01, 9.998152852058411e-01] +two.dam.m_flow_nominal=[1e+00, 1e+00] +non.m_flow=[1e+00, 1e+00] +non.m_flow_nominal=[1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Fans.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Fans.txt new file mode 100644 index 00000000000..67d33508335 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Fans.txt @@ -0,0 +1,30 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "0, 3, 0, 1, 0, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0", + "nonlinear": "4, 1, 1", + "number of continuous time states": "24", + "numerical Jacobians": "0" +} +time=[0e+00, 2e+02] +arr.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +arr.bus.y1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.552700126325044e-14, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +arr.bus.y1_actual=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +arr.fan[1].m_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.987292245030403e-02, 6.933762878179554e-02, 1.149922162294388e-01, 1.532558351755142e-01, 1.826459318399429e-01, 2.040838152170181e-01, 2.191961705684662e-01, 2.295937240123749e-01, 2.366187274456024e-01, 2.412988096475601e-01, 2.443821579217911e-01, 2.463947832584381e-01, 2.476983517408371e-01, 2.485372126102448e-01, 2.490741610527039e-01, 2.494163662195206e-01, 2.496330887079239e-01, 2.497697323560715e-01, 2.498558759689331e-01, 2.499100416898727e-01, 2.49943733215332e-01, 2.499644011259079e-01, 2.499771863222122e-01, 2.499853372573853e-01, 2.499906718730927e-01, 2.499942034482956e-01, 2.499964386224747e-01, 2.499977350234985e-01, 2.499985098838806e-01, 2.499990016222e-01, 2.499992847442627e-01, 2.499995082616806e-01, 2.499996572732925e-01, 2.499997913837433e-01, 2.499998807907104e-01, 2.5e-01, 2.500001490116119e-01, 2.500002086162567e-01, 2.500002384185791e-01, 2.500003278255463e-01, 2.50000387430191e-01, 2.500002980232239e-01, 2.500002980232239e-01, 2.500002980232239e-01, 2.500002384185791e-01, 2.260756194591522e-01, 1.806382536888123e-01, 1.349905133247375e-01, 9.672701358795166e-02, 6.732277572154986e-02, 6.981958448886888e-02, 1.001490205526349e-01, 1.353989988565442e-01, 1.666379868984222e-01, 1.913481801748276e-01, 2.097030729055405e-01, 2.228026390075684e-01, 2.318963557481766e-01, 2.380823045969009e-01, 2.422253638505936e-01, 2.449663132429123e-01, 2.467616349458694e-01, 2.479279637336731e-01, 2.48680517077446e-01, 2.491632103919983e-01, 2.494711875915527e-01, 2.496666461229324e-01, 2.497903257608414e-01, 2.498685121536255e-01, 2.499177753925323e-01, 2.49948650598526e-01, 2.499679774045944e-01, 2.499800771474838e-01, 2.499876171350479e-01, 2.49992161989212e-01, 2.499947100877762e-01, 2.499959170818329e-01, 2.499964088201523e-01, 2.499973028898239e-01, 2.499983459711075e-01, 2.499992400407791e-01, 2.499997764825821e-01, 2.499998211860657e-01, 2.499996572732925e-01, 2.499987185001373e-01, 2.499978691339493e-01, 2.499979436397552e-01, 2.499983906745911e-01, 2.499992996454239e-01, 2.49999925494194e-01, 2.500002980232239e-01, 2.500002086162567e-01, 2.499999701976776e-01, 2.499997168779373e-01, 2.499997019767761e-01] +arr.m_flow_nominal=[1e+00, 1e+00] +cst.bus.y1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.552700126325044e-14, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +cst.bus.y1_actual=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +cst.fan.m_flow=[-0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, 7.949168980121613e-02, 2.773505151271822e-01, 4.599688649177551e-01, 6.130233407020569e-01, 7.305837273597717e-01, 8.163352608680725e-01, 8.767846822738647e-01, 9.183748960494995e-01, 9.464749097824097e-01, 9.651952385902405e-01, 9.775286316871643e-01, 9.855791330337524e-01, 9.907934069633484e-01, 9.94148850440979e-01, 9.962966442108154e-01, 9.976654648780823e-01, 9.985323548316956e-01, 9.990789294242859e-01, 9.994235038757324e-01, 9.99640166759491e-01, 9.997749328613281e-01, 9.998576045036316e-01, 9.999087452888489e-01, 9.99941349029541e-01, 9.999626874923706e-01, 9.999768137931824e-01, 9.999857544898987e-01, 9.999909400939941e-01, 9.999940395355225e-01, 9.999960064888e-01, 9.999971389770508e-01, 9.999980330467224e-01, 9.999986290931702e-01, 9.999991655349731e-01, 9.999995231628418e-01, 1e+00, 1.000000596046448e+00, 1.000000834465027e+00, 1.000000953674316e+00, 1.000001311302185e+00, 1.000001549720764e+00, 1.000001192092896e+00, 1.000001192092896e+00, 1.000001192092896e+00, 1.000000953674316e+00, 9.043024778366089e-01, 7.22553014755249e-01, 5.399620532989502e-01, 3.869080543518066e-01, 2.692911028861995e-01, 2.792783379554755e-01, 4.005960822105398e-01, 5.41595995426177e-01, 6.66551947593689e-01, 7.653927206993103e-01, 8.388122916221619e-01, 8.912105560302734e-01, 9.275854229927063e-01, 9.523292183876038e-01, 9.689014554023743e-01, 9.798652529716492e-01, 9.870465397834778e-01, 9.917118549346924e-01, 9.947220683097839e-01, 9.966528415679932e-01, 9.978847503662109e-01, 9.986665844917297e-01, 9.991613030433655e-01, 9.99474048614502e-01, 9.996711015701294e-01, 9.99794602394104e-01, 9.998719096183777e-01, 9.999203085899353e-01, 9.999504685401917e-01, 9.999686479568481e-01, 9.999788403511047e-01, 9.999836683273315e-01, 9.999856352806091e-01, 9.999892115592957e-01, 9.999933838844299e-01, 9.999969601631165e-01, 9.999991059303284e-01, 9.999992847442627e-01, 9.999986290931702e-01, 9.999948740005493e-01, 9.999914765357971e-01, 9.99991774559021e-01, 9.999935626983643e-01, 9.999971985816956e-01, 9.999997019767761e-01, 1.000001192092896e+00, 1.000000834465027e+00, 9.999998807907104e-01, 9.999988675117493e-01, 9.999988079071045e-01] +cst.m_flow_nominal=[1e+00, 1e+00] +var.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +var.bus.y1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.552700126325044e-14, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +var.bus.y1_actual=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +var.fan.m_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 7.949168980121613e-02, 2.773505151271822e-01, 4.599688649177551e-01, 6.130233407020569e-01, 7.305837273597717e-01, 8.163352608680725e-01, 8.767846822738647e-01, 9.183748960494995e-01, 9.464749097824097e-01, 9.651952385902405e-01, 9.775286316871643e-01, 9.855791330337524e-01, 9.907934069633484e-01, 9.94148850440979e-01, 9.962966442108154e-01, 9.976654648780823e-01, 9.985323548316956e-01, 9.990789294242859e-01, 9.994235038757324e-01, 9.99640166759491e-01, 9.997749328613281e-01, 9.998576045036316e-01, 9.999087452888489e-01, 9.99941349029541e-01, 9.999626874923706e-01, 9.999768137931824e-01, 9.999857544898987e-01, 9.999909400939941e-01, 9.999940395355225e-01, 9.999960064888e-01, 9.999971389770508e-01, 9.999980330467224e-01, 9.999986290931702e-01, 9.999991655349731e-01, 9.999995231628418e-01, 1e+00, 1.000000596046448e+00, 1.000000834465027e+00, 1.000000953674316e+00, 1.000001311302185e+00, 1.000001549720764e+00, 1.000001192092896e+00, 1.000001192092896e+00, 1.000001192092896e+00, 1.000000953674316e+00, 9.043024778366089e-01, 7.22553014755249e-01, 5.399620532989502e-01, 3.869080543518066e-01, 2.692911028861995e-01, 2.792783379554755e-01, 4.005960822105398e-01, 5.41595995426177e-01, 6.66551947593689e-01, 7.653927206993103e-01, 8.388122916221619e-01, 8.912105560302734e-01, 9.275854229927063e-01, 9.523292183876038e-01, 9.689014554023743e-01, 9.798652529716492e-01, 9.870465397834778e-01, 9.917118549346924e-01, 9.947220683097839e-01, 9.966528415679932e-01, 9.978847503662109e-01, 9.986665844917297e-01, 9.991613030433655e-01, 9.99474048614502e-01, 9.996711015701294e-01, 9.99794602394104e-01, 9.998719096183777e-01, 9.999203085899353e-01, 9.999504685401917e-01, 9.999686479568481e-01, 9.999788403511047e-01, 9.999836683273315e-01, 9.999856352806091e-01, 9.999892115592957e-01, 9.999933838844299e-01, 9.999969601631165e-01, 9.999991059303284e-01, 9.999992847442627e-01, 9.999986290931702e-01, 9.999948740005493e-01, 9.999914765357971e-01, 9.99991774559021e-01, 9.999935626983643e-01, 9.999971985816956e-01, 9.999997019767761e-01, 1.000001192092896e+00, 1.000000834465027e+00, 9.999998807907104e-01, 9.999988675117493e-01, 9.999988079071045e-01] +var.m_flow_nominal=[1e+00, 1e+00] +non.m_flow=[-0e+00, -0e+00] +non.m_flow_nominal=[1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Routing.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Routing.txt new file mode 100644 index 00000000000..40fb7cf994e --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Routing.txt @@ -0,0 +1,27 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +mulMul.ports_a[1].m_flow=[1e+00, 1e+00] +mulMul.ports_b[1].m_flow=[-1e+00, -1e+00] +mulMul.m_flow_nominal=[3e+00, 3e+00] +mulMulCom.ports_a[1].m_flow=[1e+00, 1e+00] +mulMulCom.ports_b[1].m_flow=[-1e+00, -1e+00] +mulMulCom.m_flow_nominal=[3e+00, 3e+00] +mulSin.ports_a[1].m_flow=[1e+00, 1e+00] +mulSin.port_b.m_flow=[-3e+00, -3e+00] +mulSin.m_flow_nominal=[3e+00, 3e+00] +sinMul.port_a.m_flow=[3e+00, 3e+00] +sinMul.ports_b[1].m_flow=[-1e+00, -1e+00] +sinMul.m_flow_nominal=[3e+00, 3e+00] +pas.port_a.m_flow=[1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Sensors.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Sensors.txt new file mode 100644 index 00000000000..4f36840016a --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Sensors.txt @@ -0,0 +1,24 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "0, 0, 0, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +dp.y=[1e+02, 1e+02] +dp.senRelPre.p_rel=[1e+02, 1e+02] +hum.y=[1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02] +hum.toDryAir.XiDry=[1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02, 1.01010100916028e-02] +ent.y=[4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04] +ent.senSpeEnt.h_out=[4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04, 4.53009453125e+04] +tem.y=[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.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] +tem.senTem.T=[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.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] +vol.y=[8.333333134651184e-01, 8.333333134651184e-01] +vol.senVolFlo.V_flow=[8.333333134651184e-01, 8.333333134651184e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Valves.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Valves.txt new file mode 100644 index 00000000000..1083559dd73 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_Components_Validation_Valves.txt @@ -0,0 +1,32 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0, 0", + "number of continuous time states": "10", + "numerical Jacobians": "0" +} +time=[0e+00, 2e+02] +modThr.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +modThr.bus.y_actual=[1e+00, 8.790805339813232e-01, 7.75789737701416e-01, 6.905837059020996e-01, 6.235478520393372e-01, 5.744723677635193e-01, 5.424033999443054e-01, 5.244083404541016e-01, 5.175338983535767e-01, 5.193436145782471e-01, 5.278277397155762e-01, 5.413409471511841e-01, 5.585353970527649e-01, 5.783171653747559e-01, 5.998072624206543e-01, 6.222983002662659e-01, 6.452284455299377e-01, 6.681598424911499e-01, 6.90754771232605e-01, 7.127569317817688e-01, 7.339764833450317e-01, 7.542782425880432e-01, 7.735719680786133e-01, 7.918034195899963e-01, 8.089463710784912e-01, 8.24996292591095e-01, 8.399657607078552e-01, 8.538803458213806e-01, 8.667755126953125e-01, 8.786937594413757e-01, 8.896821141242981e-01, 8.997906446456909e-01, 9.090710282325745e-01, 9.175752401351929e-01, 9.253550171852112e-01, 9.324610233306885e-01, 9.389421343803406e-01, 9.448452591896057e-01, 9.502153396606445e-01, 9.550943374633789e-01, 9.595224857330322e-01, 9.635372757911682e-01, 9.671738147735596e-01, 9.704648852348328e-01, 9.734407663345337e-01, 9.76129412651062e-01, 9.785568118095398e-01, 9.807466268539429e-01, 9.827207922935486e-01, 9.844993948936462e-01, 9.861008524894714e-01, 9.875419139862061e-01, 9.888378977775574e-01, 9.900028109550476e-01, 9.910493493080139e-01, 9.919890761375427e-01, 9.928312301635742e-01, 9.935880303382874e-01, 9.942691922187805e-01, 9.948804378509521e-01, 9.954280853271484e-01, 9.959183931350708e-01, 9.963571429252625e-01, 9.967495799064636e-01, 9.971005320549011e-01, 9.974144697189331e-01, 9.976950883865356e-01, 9.979456663131714e-01, 9.981694221496582e-01, 9.983690977096558e-01, 9.985473155975342e-01, 9.987063407897949e-01, 9.988481998443604e-01, 9.989748597145081e-01, 9.990876913070679e-01, 9.991881251335144e-01, 9.992773532867432e-01, 9.993565678596497e-01, 9.994270801544189e-01, 9.994898438453674e-01, 9.995457530021667e-01, 9.995948672294617e-01, 9.996384382247925e-01, 9.996775388717651e-01, 9.997124671936035e-01, 9.997427463531494e-01, 9.997698664665222e-01, 9.997944831848145e-01, 9.998165369033813e-01, 9.99835729598999e-01, 9.998529553413391e-01, 9.998687505722046e-01, 9.998828172683716e-01, 9.998951554298401e-01, 9.999062418937683e-01, 9.999164342880249e-01, 9.99925434589386e-01, 9.999333620071411e-01, 9.999405145645142e-01, 9.999470114707947e-01, 9.999527931213379e-01] +modThr.val.res1.m_flow=[1e+00, 7.478956580162048e-01, 5.431653261184692e-01, 4.039646685123444e-01, 3.160865902900696e-01, 2.6297527551651e-01, 2.328645288944244e-01, 2.174226939678192e-01, 2.117845416069031e-01, 2.132551372051239e-01, 2.202800661325455e-01, 2.319246679544449e-01, 2.475828230381012e-01, 2.668196856975555e-01, 2.892798781394959e-01, 3.146217465400696e-01, 3.424874246120453e-01, 3.724910914897919e-01, 4.042130410671234e-01, 4.37204122543335e-01, 4.709984362125397e-01, 5.051311850547791e-01, 5.391577482223511e-01, 5.726704001426697e-01, 6.053106784820557e-01, 6.367780566215515e-01, 6.668346524238586e-01, 6.95305347442627e-01, 7.220747470855714e-01, 7.470805644989013e-01, 7.703055739402771e-01, 7.9176926612854e-01, 8.115200400352478e-01, 8.296274542808533e-01, 8.461759090423584e-01, 8.612590432167053e-01, 8.749752044677734e-01, 8.874235153198242e-01, 8.9870285987854e-01, 9.089075922966003e-01, 9.181292653083801e-01, 9.264537692070007e-01, 9.339617490768433e-01, 9.407281279563904e-01, 9.468219876289368e-01, 9.523068070411682e-01, 9.572407603263855e-01, 9.616768956184387e-01, 9.656635522842407e-01, 9.692448377609253e-01, 9.724606275558472e-01, 9.753472208976746e-01, 9.779372811317444e-01, 9.802605509757996e-01, 9.823436737060547e-01, 9.842110276222229e-01, 9.858818054199219e-01, 9.873811006546021e-01, 9.887288212776184e-01, 9.899367690086365e-01, 9.910178780555725e-01, 9.919848442077637e-01, 9.928494095802307e-01, 9.936221241950989e-01, 9.943126440048218e-01, 9.949300289154053e-01, 9.954814910888672e-01, 9.959737062454224e-01, 9.964129328727722e-01, 9.968048930168152e-01, 9.971544742584229e-01, 9.974663257598877e-01, 9.977445602416992e-01, 9.979928135871887e-01, 9.982139468193054e-01, 9.984107613563538e-01, 9.985854625701904e-01, 9.987406730651855e-01, 9.988787174224854e-01, 9.990016222000122e-01, 9.991111159324646e-01, 9.992071986198425e-01, 9.992925524711609e-01, 9.993690252304077e-01, 9.994373917579651e-01, 9.994966983795166e-01, 9.995497465133667e-01, 9.995979070663452e-01, 9.996411204338074e-01, 9.996786117553711e-01, 9.99712347984314e-01, 9.997431635856628e-01, 9.997707605361938e-01, 9.997949004173279e-01, 9.998166561126709e-01, 9.998365044593811e-01, 9.998541474342346e-01, 9.998696446418762e-01, 9.998836517333984e-01, 9.998964071273804e-01, 9.999076128005981e-01] +modThr.val.res3.m_flow=[6.890625172673026e-07, 1.193637475371361e-01, 2.193467170000076e-01, 2.994289398193359e-01, 3.604223132133484e-01, 4.037711620330811e-01, 4.314523637294769e-01, 4.467516839504242e-01, 4.525510370731354e-01, 4.510267972946167e-01, 4.438576996326447e-01, 4.323604106903076e-01, 4.175933301448822e-01, 4.004174768924713e-01, 3.815376758575439e-01, 3.61540287733078e-01, 3.409108817577362e-01, 3.200467228889465e-01, 2.992708384990692e-01, 2.788430750370026e-01, 2.589682936668396e-01, 2.3980313539505e-01, 2.214624583721161e-01, 2.04025536775589e-01, 1.875424087047577e-01, 1.720392107963562e-01, 1.575226038694382e-01, 1.439834982156754e-01, 1.314004063606262e-01, 1.197425127029419e-01, 1.089722588658333e-01, 9.904742985963821e-02, 8.992274850606918e-02, 8.155123889446259e-02, 7.388529926538467e-02, 6.68775886297226e-02, 6.048174574971199e-02, 5.465309321880341e-02, 4.934831708669662e-02, 4.452682286500931e-02, 4.014949128031731e-02, 3.61798107624054e-02, 3.258334845304489e-02, 2.932803519070148e-02, 2.638410031795502e-02, 2.372395247220993e-02, 2.132214047014713e-02, 1.914536394178867e-02, 1.694334298372269e-02, 1.46173695102334e-02, 1.233547739684582e-02, 1.024242118000984e-02, 8.409201167523861e-03, 6.85128616169095e-03, 5.553211085498333e-03, 4.485352430492633e-03, 3.615588182583446e-03, 2.908821450546389e-03, 2.335723023861651e-03, 1.873545232228935e-03, 1.501979422755539e-03, 1.203765044920146e-03, 9.64670383837074e-04, 7.731062942184508e-04, 6.19694881606847e-04, 4.96787833981216e-04, 3.984138311352581e-04, 3.197231271769851e-04, 2.567714836914092e-04, 2.064020081888884e-04, 1.660893321968615e-04, 1.33814275613986e-04, 1.079520297935233e-04, 8.721649646759033e-05, 7.059859490254894e-05, 5.728293035645038e-05, 4.662464198190719e-05, 3.807695247814991e-05, 3.119910979876295e-05, 2.565041177149396e-05, 2.116277937602717e-05, 1.75803779711714e-05, 1.467766014684457e-05, 1.229715689987643e-05, 1.034718752634944e-05, 8.793457709543873e-06, 7.509706847486086e-06, 6.431636393244844e-06, 5.535592663363786e-06, 4.812643510376802e-06, 4.204769538773689e-06, 3.685337787828757e-06, 3.249673682148568e-06, 2.891388476200518e-06, 2.586127720860532e-06, 2.322361069673207e-06, 2.099657876897254e-06, 1.912955212901579e-06, 1.752237949403934e-06, 1.612197706890584e-06, 1.493271042818378e-06] +modThr.val.m_flow_nominal=[1e+00, 1e+00] +modTwo.bus.y=[0e+00, 2.000000029802322e-01, 4.000000059604645e-01, 6.000000238418579e-01, 8.00000011920929e-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] +modTwo.bus.y_actual=[1e+00, 8.790805339813232e-01, 7.75789737701416e-01, 6.905837059020996e-01, 6.235478520393372e-01, 5.744723677635193e-01, 5.424033999443054e-01, 5.244083404541016e-01, 5.175338983535767e-01, 5.193436145782471e-01, 5.278277397155762e-01, 5.413409471511841e-01, 5.585353970527649e-01, 5.783171653747559e-01, 5.998072624206543e-01, 6.222983002662659e-01, 6.452284455299377e-01, 6.681598424911499e-01, 6.90754771232605e-01, 7.127569317817688e-01, 7.339764833450317e-01, 7.542782425880432e-01, 7.735719680786133e-01, 7.918034195899963e-01, 8.089463710784912e-01, 8.24996292591095e-01, 8.399657607078552e-01, 8.538803458213806e-01, 8.667755126953125e-01, 8.786937594413757e-01, 8.896821141242981e-01, 8.997906446456909e-01, 9.090710282325745e-01, 9.175752401351929e-01, 9.253550171852112e-01, 9.324610233306885e-01, 9.389421343803406e-01, 9.448452591896057e-01, 9.502153396606445e-01, 9.550943374633789e-01, 9.595224857330322e-01, 9.635372757911682e-01, 9.671738147735596e-01, 9.704648852348328e-01, 9.734407663345337e-01, 9.76129412651062e-01, 9.785568118095398e-01, 9.807466268539429e-01, 9.827207922935486e-01, 9.844993948936462e-01, 9.861008524894714e-01, 9.875419139862061e-01, 9.888378977775574e-01, 9.900028109550476e-01, 9.910493493080139e-01, 9.919890761375427e-01, 9.928312301635742e-01, 9.935880303382874e-01, 9.942691922187805e-01, 9.948804378509521e-01, 9.954280853271484e-01, 9.959183931350708e-01, 9.963571429252625e-01, 9.967495799064636e-01, 9.971005320549011e-01, 9.974144697189331e-01, 9.976950883865356e-01, 9.979456663131714e-01, 9.981694221496582e-01, 9.983690977096558e-01, 9.985473155975342e-01, 9.987063407897949e-01, 9.988481998443604e-01, 9.989748597145081e-01, 9.990876913070679e-01, 9.991881251335144e-01, 9.992773532867432e-01, 9.993565678596497e-01, 9.994270801544189e-01, 9.994898438453674e-01, 9.995457530021667e-01, 9.995948672294617e-01, 9.996384382247925e-01, 9.996775388717651e-01, 9.997124671936035e-01, 9.997427463531494e-01, 9.997698664665222e-01, 9.997944831848145e-01, 9.998165369033813e-01, 9.99835729598999e-01, 9.998529553413391e-01, 9.998687505722046e-01, 9.998828172683716e-01, 9.998951554298401e-01, 9.999062418937683e-01, 9.999164342880249e-01, 9.99925434589386e-01, 9.999333620071411e-01, 9.999405145645142e-01, 9.999470114707947e-01, 9.999527931213379e-01] +modTwo.val.m_flow=[1e+00, 7.478956580162048e-01, 5.431653261184692e-01, 4.039646685123444e-01, 3.160865902900696e-01, 2.6297527551651e-01, 2.328645288944244e-01, 2.174226939678192e-01, 2.117845416069031e-01, 2.132551372051239e-01, 2.202800661325455e-01, 2.319246679544449e-01, 2.475828230381012e-01, 2.668196856975555e-01, 2.892798781394959e-01, 3.146217465400696e-01, 3.424874246120453e-01, 3.724910914897919e-01, 4.042130410671234e-01, 4.37204122543335e-01, 4.709984362125397e-01, 5.051311850547791e-01, 5.391577482223511e-01, 5.726704001426697e-01, 6.053106784820557e-01, 6.367780566215515e-01, 6.668346524238586e-01, 6.95305347442627e-01, 7.220747470855714e-01, 7.470805644989013e-01, 7.703055739402771e-01, 7.9176926612854e-01, 8.115200400352478e-01, 8.296274542808533e-01, 8.461759090423584e-01, 8.612590432167053e-01, 8.749752044677734e-01, 8.874235153198242e-01, 8.9870285987854e-01, 9.089075922966003e-01, 9.181292653083801e-01, 9.264537692070007e-01, 9.339617490768433e-01, 9.407281279563904e-01, 9.468219876289368e-01, 9.523068070411682e-01, 9.572407603263855e-01, 9.616768956184387e-01, 9.656635522842407e-01, 9.692448377609253e-01, 9.724606275558472e-01, 9.753472208976746e-01, 9.779372811317444e-01, 9.802605509757996e-01, 9.823436737060547e-01, 9.842110276222229e-01, 9.858818054199219e-01, 9.873811006546021e-01, 9.887288212776184e-01, 9.899367690086365e-01, 9.910178780555725e-01, 9.919848442077637e-01, 9.928494095802307e-01, 9.936221241950989e-01, 9.943126440048218e-01, 9.949300289154053e-01, 9.954814910888672e-01, 9.959737062454224e-01, 9.964129328727722e-01, 9.968048930168152e-01, 9.971544742584229e-01, 9.974663257598877e-01, 9.977445602416992e-01, 9.979928135871887e-01, 9.982139468193054e-01, 9.984107613563538e-01, 9.985854625701904e-01, 9.987406730651855e-01, 9.988787174224854e-01, 9.990016222000122e-01, 9.991111159324646e-01, 9.992071986198425e-01, 9.992925524711609e-01, 9.993690252304077e-01, 9.994373917579651e-01, 9.994966983795166e-01, 9.995497465133667e-01, 9.995979070663452e-01, 9.996411204338074e-01, 9.996786117553711e-01, 9.99712347984314e-01, 9.997431635856628e-01, 9.997707605361938e-01, 9.997949004173279e-01, 9.998166561126709e-01, 9.998365044593811e-01, 9.998541474342346e-01, 9.998696446418762e-01, 9.998836517333984e-01, 9.998964071273804e-01, 9.999076128005981e-01] +modTwo.val.m_flow_nominal=[1e+00, 1e+00] +twoThr.bus.y1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +twoThr.bus.y1_actual=[1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +twoThr.val.res1.m_flow=[1e+00, 9.334071278572083e-01, 8.641188740730286e-01, 7.937407493591309e-01, 7.238484621047974e-01, 6.558513045310974e-01, 5.990045070648193e-01, 5.611834526062012e-01, 5.403614044189453e-01, 5.337616801261902e-01, 5.384514927864075e-01, 5.516812205314636e-01, 5.710247159004211e-01, 5.944427847862244e-01, 6.202890276908875e-01, 6.472693681716919e-01, 6.744058132171631e-01, 7.009925842285156e-01, 7.265428900718689e-01, 7.507414221763611e-01, 7.734041810035706e-01, 7.944455146789551e-01, 8.138507604598999e-01, 8.3165442943573e-01, 8.47922682762146e-01, 8.62740695476532e-01, 8.762041330337524e-01, 8.884129524230957e-01, 8.994673490524292e-01, 9.094646573066711e-01, 9.184974431991577e-01, 9.266527891159058e-01, 9.340115189552307e-01, 9.406481385231018e-01, 9.466312527656555e-01, 9.52023446559906e-01, 9.568816423416138e-01, 9.612573981285095e-01, 9.651978015899658e-01, 9.687449932098389e-01, 9.719375371932983e-01, 9.748102426528931e-01, 9.773945212364197e-01, 9.797188639640808e-01, 9.818089008331299e-01, 9.836878180503845e-01, 9.853765368461609e-01, 9.868937730789185e-01, 9.882566928863525e-01, 9.894806742668152e-01, 9.905794858932495e-01, 9.915657043457031e-01, 9.924506545066833e-01, 9.93244469165802e-01, 9.939562678337097e-01, 9.945944547653198e-01, 9.951655268669128e-01, 9.956780672073364e-01, 9.96138870716095e-01, 9.965519905090332e-01, 9.969218373298645e-01, 9.972526431083679e-01, 9.97548520565033e-01, 9.978130459785461e-01, 9.980494379997253e-01, 9.982608556747437e-01, 9.984497427940369e-01, 9.986183643341064e-01, 9.987688660621643e-01, 9.98903214931488e-01, 9.990230798721313e-01, 9.991300106048584e-01, 9.992254376411438e-01, 9.993105530738831e-01, 9.993864297866821e-01, 9.994539618492126e-01, 9.995139241218567e-01, 9.995672106742859e-01, 9.996145963668823e-01, 9.996567964553833e-01, 9.996944069862366e-01, 9.997274279594421e-01, 9.997566938400269e-01, 9.997829794883728e-01, 9.998065233230591e-01, 9.998268485069275e-01, 9.998450875282288e-01, 9.998616576194763e-01, 9.998764991760254e-01, 9.998894333839417e-01, 9.999009966850281e-01, 9.999116063117981e-01, 9.999211430549622e-01, 9.999294281005859e-01, 9.999368786811829e-01, 9.99943733215332e-01, 9.999498128890991e-01, 9.999551177024841e-01, 9.999599456787109e-01, 9.999643564224243e-01, 9.999681711196899e-01] +twoThr.val.res3.m_flow=[6.890625172673026e-07, 1.198841780424118e-01, 2.231033891439438e-01, 3.109214603900909e-01, 3.851138949394226e-01, 4.476020634174347e-01, 4.939699172973633e-01, 5.223386883735657e-01, 5.372079610824585e-01, 5.418171286582947e-01, 5.385468602180481e-01, 5.291871428489685e-01, 5.151311755180359e-01, 4.974899291992188e-01, 4.771665334701538e-01, 4.5491623878479e-01, 4.31374192237854e-01, 4.070723056793213e-01, 3.824562728404999e-01, 3.578976094722748e-01, 3.337014615535736e-01, 3.101129233837128e-01, 2.873226702213287e-01, 2.654735743999481e-01, 2.446677535772324e-01, 2.249727100133896e-01, 2.064268738031387e-01, 1.89044177532196e-01, 1.728186905384063e-01, 1.577288061380387e-01, 1.437410265207291e-01, 1.308130621910095e-01, 1.188962981104851e-01, 1.079378724098206e-01, 9.788243472576141e-02, 8.867353945970535e-02, 8.02549347281456e-02, 7.257163524627686e-02, 6.556963175535202e-02, 5.919793993234634e-02, 5.340693145990372e-02, 4.815004020929337e-02, 4.338307306170464e-02, 3.90646792948246e-02, 3.515634685754776e-02, 3.162223845720291e-02, 2.842921949923038e-02, 2.554667368531227e-02, 2.294631861150265e-02, 2.060218900442123e-02, 1.844007149338722e-02, 1.6168013215065e-02, 1.38202840462327e-02, 1.157632656395435e-02, 9.557577781379223e-03, 7.813064381480207e-03, 6.34667742997407e-03, 5.130770150572069e-03, 4.131928551942117e-03, 3.319656709209085e-03, 2.663156250491738e-03, 2.13450170122087e-03, 1.709797070361674e-03, 1.369136269204319e-03, 1.096180407330394e-03, 8.774817106314003e-04, 7.024799706414342e-04, 5.625657504424453e-04, 4.507200210355222e-04, 3.613155276980251e-04, 2.898461534641683e-04, 2.327065012650564e-04, 1.869945117505267e-04, 1.504124666098505e-04, 1.211568887811154e-04, 9.777071682037786e-05, 7.910146814538166e-05, 6.417348049581051e-05, 5.22012596775312e-05, 4.257765613147058e-05, 3.482537067611702e-05, 2.86630693153711e-05, 2.369305366300978e-05, 1.963780778169166e-05, 1.633408646739554e-05, 1.371636517433217e-05, 1.156656890088925e-05, 9.772977136890404e-06, 8.292442544188816e-06, 7.106150405888911e-06, 6.115966243669391e-06, 5.276376668916782e-06, 4.577760137181031e-06, 4.007757979707094e-06, 3.526047066770843e-06, 3.113284265054972e-06, 2.767686510196654e-06, 2.480327566445339e-06, 2.234978865089943e-06, 2.022936314460821e-06, 1.844291773522855e-06] +twoThr.val.m_flow_nominal=[1e+00, 1e+00] +twoTwo.bus.y1=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +twoTwo.bus.y1_actual=[1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +twoTwo.val.m_flow=[1.001071691513062e+00, 9.349798560142517e-01, 8.00357460975647e-01, 6.45935595035553e-01, 5.058907866477966e-01, 3.951599597930908e-01, 3.223147094249725e-01, 2.823455333709717e-01, 2.627753615379333e-01, 2.568937540054321e-01, 2.610580623149872e-01, 2.732172906398773e-01, 2.921682894229889e-01, 3.171637654304504e-01, 3.47653090953827e-01, 3.830720186233521e-01, 4.227124452590942e-01, 4.656658470630646e-01, 5.108307600021362e-01, 5.569853782653809e-01, 6.028996706008911e-01, 6.474525332450867e-01, 6.897236108779907e-01, 7.290413975715637e-01, 7.649884819984436e-01, 7.973755598068237e-01, 8.261974453926086e-01, 8.515849709510803e-01, 8.737584948539735e-01, 8.929892778396605e-01, 9.09570574760437e-01, 9.23797070980072e-01, 9.359520077705383e-01, 9.462994337081909e-01, 9.550801515579224e-01, 9.625104665756226e-01, 9.687820672988892e-01, 9.740632176399231e-01, 9.785012602806091e-01, 9.822232723236084e-01, 9.853395819664001e-01, 9.879447221755981e-01, 9.901195764541626e-01, 9.919331669807434e-01, 9.934440851211548e-01, 9.947018623352051e-01, 9.957482814788818e-01, 9.966186285018921e-01, 9.973423480987549e-01, 9.97944176197052e-01, 9.984449148178101e-01, 9.988616704940796e-01, 9.992088675498962e-01, 9.994983077049255e-01, 9.997400045394897e-01, 9.999420046806335e-01, 1.000110864639282e+00, 1.000252842903137e+00, 1.000372529029846e+00, 1.000473380088806e+00, 1.000558495521545e+00, 1.000630497932434e+00, 1.000691533088684e+00, 1.000743269920349e+00, 1.000787496566772e+00, 1.000825166702271e+00, 1.000857472419739e+00, 1.000885128974915e+00, 1.000908970832825e+00, 1.000929474830627e+00, 1.000947237014771e+00, 1.000962615013123e+00, 1.000975966453552e+00, 1.000987648963928e+00, 1.00099778175354e+00, 1.001006603240967e+00, 1.001014351844788e+00, 1.001021027565002e+00, 1.00102698802948e+00, 1.001032114028931e+00, 1.001036643981934e+00, 1.001040577888489e+00, 1.001044034957886e+00, 1.001047134399414e+00, 1.001049876213074e+00, 1.001052260398865e+00, 1.001054406166077e+00, 1.00105619430542e+00, 1.001057982444763e+00, 1.001059412956238e+00, 1.001060724258423e+00, 1.001061916351318e+00, 1.001062989234924e+00, 1.001063823699951e+00, 1.001064658164978e+00, 1.001065492630005e+00, 1.001066088676453e+00, 1.0010666847229e+00, 1.001067280769348e+00, 1.001067757606506e+00, 1.001068115234375e+00] +twoTwo.val.m_flow_nominal=[1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxCoolingOnly.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxCoolingOnly.txt new file mode 100644 index 00000000000..01cb58950b7 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxCoolingOnly.txt @@ -0,0 +1,15 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1", + "number of continuous time states": "2", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +VAVBox_1.damVAV.m_flow=[1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01, 1.52911439538002e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxCoolingOnlyControlG36.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxCoolingOnlyControlG36.txt new file mode 100644 index 00000000000..7a7e3764744 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxCoolingOnlyControlG36.txt @@ -0,0 +1,18 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1", + "number of continuous time states": "6", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +VAVBox_1.bus.TAirSup=[2.881499938964844e+02, 2.881499938964844e+02] +VAVBox_1.bus.TAirDis=[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.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] +VAVBox_1.bus.TZon=[3.031499938964844e+02, 3.031499938964844e+02] +VAVBox_1.damVAV.m_flow=[1.52911439538002e-01, 6.630999967455864e-03, 1.109313406050205e-02, 1.497852057218552e-02, 1.827635802328587e-02, 2.174478769302368e-02, 2.541116252541542e-02, 2.926483750343323e-02, 3.331105411052704e-02, 3.755940124392509e-02, 4.19941321015358e-02, 4.656396061182022e-02, 5.122861638665199e-02, 5.592766031622887e-02, 6.059535965323449e-02, 6.52245357632637e-02, 6.979543715715408e-02, 7.42269828915596e-02, 7.736549526453018e-02, 8.010240644216537e-02, 8.27019140124321e-02, 8.5137739777565e-02, 8.742186427116394e-02, 8.956070989370346e-02, 9.156154841184616e-02, 9.343422949314117e-02, 9.518521279096603e-02, 9.682107716798782e-02, 9.835001826286316e-02, 9.977896511554718e-02, 1.011137217283249e-01, 1.023596748709679e-01, 1.035242527723312e-01, 1.046120896935463e-01, 1.056274026632309e-01, 1.065762639045715e-01, 1.074628531932831e-01, 1.082905828952789e-01, 1.090639680624008e-01, 1.097868084907532e-01, 1.104622855782509e-01, 1.110928058624268e-01, 1.116825714707375e-01, 1.12233929336071e-01, 1.127487123012543e-01, 1.132302358746529e-01, 1.13680474460125e-01, 1.141011342406273e-01, 1.144946292042732e-01, 1.14862747490406e-01, 1.152070388197899e-01, 1.155286505818367e-01, 1.158298403024673e-01, 1.161116063594818e-01, 1.163748949766159e-01, 1.166214495897293e-01, 1.168522164225578e-01, 1.17067925632e-01, 1.17269828915596e-01, 1.174589246511459e-01, 1.176359206438065e-01, 1.178012192249298e-01, 1.179562211036682e-01, 1.181013435125351e-01, 1.182369366288185e-01, 1.183640137314796e-01, 1.184830665588379e-01, 1.185943484306335e-01, 1.186985373497009e-01, 1.187962293624878e-01, 1.188877373933792e-01, 1.189730986952782e-01, 1.190532445907593e-01, 1.191283389925957e-01, 1.191984713077545e-01, 1.192642152309418e-01, 1.193259060382843e-01, 1.193835139274597e-01, 1.194374486804008e-01, 1.194880753755569e-01, 1.195355430245399e-01, 1.195797398686409e-01, 1.196212619543076e-01, 1.196602955460548e-01, 1.196966469287872e-01, 1.197307258844376e-01, 1.197627484798431e-01, 1.197926998138428e-01, 1.198206543922424e-01, 1.198468953371048e-01, 1.198716089129448e-01, 1.198945119976997e-01, 1.19916059076786e-01, 1.199363023042679e-01, 1.199551820755005e-01, 1.199728697538376e-01, 1.199894621968269e-01, 1.200050190091133e-01, 1.200195178389549e-01, 1.200331449508667e-01, 1.200459450483322e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxReheatControlG36.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxReheatControlG36.txt new file mode 100644 index 00000000000..018a92e8f27 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Templates_ZoneEquipment_Validation_VAVBoxReheatControlG36.txt @@ -0,0 +1,18 @@ +last-generated=2023-05-24 +statistics-initialization= +{ + "nonlinear": "1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1, 0", + "number of continuous time states": "9", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +VAVBox_1.bus.TAirSup=[2.881499938964844e+02, 2.881499938964844e+02] +VAVBox_1.bus.TAirDis=[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.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] +VAVBox_1.bus.TZon=[3.031499938964844e+02, 3.031499938964844e+02] +VAVBox_1.damVAV.m_flow=[1.52911439538002e-01, 7.93386809527874e-03, 1.822215504944324e-02, 2.834273315966129e-02, 3.308305144309998e-02, 3.728657588362694e-02, 4.162502661347389e-02, 4.594834521412849e-02, 5.020522326231003e-02, 5.435183271765709e-02, 5.832608789205551e-02, 6.212321668863297e-02, 6.573684513568878e-02, 6.916320323944092e-02, 7.24029466509819e-02, 7.54595547914505e-02, 7.833714783191681e-02, 8.104180544614792e-02, 8.358154445886612e-02, 8.596255630254745e-02, 8.819428831338882e-02, 9.028284996747971e-02, 9.223799407482147e-02, 9.406661242246628e-02, 9.577523916959763e-02, 9.73728820681572e-02, 9.886585921049118e-02, 1.00259967148304e-01, 1.015625447034836e-01, 1.027794629335403e-01, 1.039159819483757e-01, 1.049769595265388e-01, 1.05968676507473e-01, 1.068950518965721e-01, 1.077597215771675e-01, 1.085681021213531e-01, 1.093234270811081e-01, 1.100285202264786e-01, 1.106877624988556e-01, 1.113040596246719e-01, 1.118801385164261e-01, 1.124177575111389e-01, 1.129210144281387e-01, 1.133916079998016e-01, 1.138308420777321e-01, 1.142420470714569e-01, 1.146267727017403e-01, 1.149860993027687e-01, 1.15322157740593e-01, 1.15636944770813e-01, 1.15931548178196e-01, 1.162061914801598e-01, 1.164638921618462e-01, 1.16705060005188e-01, 1.169300377368927e-01, 1.171408221125603e-01, 1.173382699489594e-01, 1.175227910280228e-01, 1.176954135298729e-01, 1.178572475910187e-01, 1.180087924003601e-01, 1.181500405073166e-01, 1.182826533913612e-01, 1.18407279253006e-01, 1.185232773423195e-01, 1.186320036649704e-01, 1.187340244650841e-01, 1.188293620944023e-01, 1.189184486865997e-01, 1.190020442008972e-01, 1.19080550968647e-01, 1.191534548997879e-01, 1.192220598459244e-01, 1.192863956093788e-01, 1.193464025855064e-01, 1.19402676820755e-01, 1.19455486536026e-01, 1.195048391819e-01, 1.195509284734726e-01, 1.195942759513855e-01, 1.196349263191223e-01, 1.196726560592651e-01, 1.197082176804543e-01, 1.197416260838509e-01, 1.197725087404251e-01, 1.198015585541725e-01, 1.198289096355438e-01, 1.198545023798943e-01, 1.198781579732895e-01, 1.199006289243698e-01, 1.199217513203621e-01, 1.199411749839783e-01, 1.199595928192139e-01, 1.199769303202629e-01, 1.199930459260941e-01, 1.2000822275877e-01, 1.200225129723549e-01, 1.200358793139458e-01, 1.200481578707695e-01, 1.200598850846291e-01, 1.200709044933319e-01] diff --git a/Buildings/Resources/Scripts/BuildingsPy/conf.yml b/Buildings/Resources/Scripts/BuildingsPy/conf.yml index df2a9b96750..282db9a2ac9 100644 --- a/Buildings/Resources/Scripts/BuildingsPy/conf.yml +++ b/Buildings/Resources/Scripts/BuildingsPy/conf.yml @@ -270,6 +270,18 @@ optimica: comment: See https://github.com/lbl-srg/modelica-buildings/issues/2235 translate: false +- model_name: Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Airflow + optimica: + comment: > + Array size mismatch in modification of the attribute quantity for the variable TZon. + This is a bug in OCT tracked under Modelon#2023022839000276. + translate: false +- model_name: Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Pressure + optimica: + comment: > + Array size mismatch in modification of the attribute quantity for the variable TZon. + This is a bug in OCT tracked under Modelon#2023022839000276. + translate: false - model_name: Buildings.ThermalZones.Detailed.Examples.FFD.ForcedConvection optimica: comment: See https://github.com/lbl-srg/modelica-buildings/issues/2231 diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZBase.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZBase.mos new file mode 100644 index 00000000000..e3d38f620d9 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZBase.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZBase", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZBase"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mos new file mode 100644 index 00000000000..ab6d9d37a77 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilElectricHeating", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZCoilElectricHeating"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mos new file mode 100644 index 00000000000..dff6a331204 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorMultiStage", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZCoilEvaporatorMultiStage"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mos new file mode 100644 index 00000000000..eb46e31a5de --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorVariable", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZCoilEvaporatorVariable"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mos new file mode 100644 index 00000000000..0e4dcc654e5 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilWaterHeating3WVReheat", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZCoilWaterHeating3WVReheat"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mos new file mode 100644 index 00000000000..288d1e302e1 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Airflow", + method="cvode", + tolerance=1e-6, + stopTime=10000, + resultFile="VAVMZControlG36Airflow"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mos new file mode 100644 index 00000000000..0abf6c30e03 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Pressure", + method="cvode", + tolerance=1e-6, + stopTime=10000, + resultFile="VAVMZControlG36Pressure"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mos new file mode 100644 index 00000000000..82467d81e47 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZDedicatedDampersPressure", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZDedicatedDampersPressure"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mos new file mode 100644 index 00000000000..da6ed92788c --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZFanRelief", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZFanRelief"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mos b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mos new file mode 100644 index 00000000000..723a342e506 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.AirHandlersFans.Validation.VAVMZFanSupplyBlowThrough", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVMZFanSupplyBlowThrough"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAV_1.bus.TAirSup", "VAV_1.bus.TAirMix", "VAV_1.bus.TOut"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAV_1.bus.fanSup.V_flow", "VAV_1.bus.VOut_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Coils.mos b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Coils.mos new file mode 100644 index 00000000000..d9d91b7124b --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Coils.mos @@ -0,0 +1,88 @@ +simulateModel("Buildings.Templates.Components.Validation.Coils", + method="cvode", + tolerance=1e-6, + stopTime=200.0, + resultFile="Coils"); +createPlot( + id=1, + subPlot=1, + position={0, 0, 400, 400}, + y={"coiCoo.bus.y", "coiCoo.bus.y_actual", "coiCoo.hex.m1_flow", "coiCoo.hex.m2_flow", "coiCoo.hex.m1_flow_nominal", "coiCoo.hex.m2_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"coiCoo.hex.Q2_flow", "coiCoo.Q_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=2, + subPlot=1, + position={0, 100, 400, 400}, + y={"coiHea.bus.y", "coiHea.bus.y_actual", "coiHea.hex.m1_flow", "coiHea.hex.m2_flow", "coiHea.hex.m1_flow_nominal", "coiHea.hex.m2_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=2, + subPlot=2, + y={"coiHea.hex.Q2_flow", "coiHea.Q_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=3, + subPlot=1, + position={100, 0, 400, 400}, + y={"coiEle.bus.y", "coiEle.hex.m_flow", "coiEle.hex.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=3, + subPlot=2, + y={"coiEle.hex.Q_flow", "coiEle.Q_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=4, + subPlot=1, + position={200, 0, 400, 400}, + y={"coiEva.bus.y", "coiEva.hex.m_flow", "coiEva.hex.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=4, + subPlot=2, + y={"coiEva.hex.QSen_flow", "coiEva.hex.QLat_flow", "coiEva.Q_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=5, + subPlot=1, + position={200, 100, 400, 400}, + y={"coiMul.bus.y", "coiMul.hex.m_flow", "coiMul.hex.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=5, + subPlot=2, + y={"coiMul.hex.QSen_flow", "coiMul.hex.QLat_flow", "coiMul.Q_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=6, + subPlot=1, + position={300, 0, 400, 400}, + y={"non.m_flow", "non.m_flow_nominal"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Dampers.mos b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Dampers.mos new file mode 100644 index 00000000000..17d28c65fd5 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Dampers.mos @@ -0,0 +1,33 @@ +simulateModel("Buildings.Templates.Components.Validation.Dampers", + method="cvode", + tolerance=1e-6, + stopTime=200.0, + resultFile="Dampers"); +createPlot( + id=1, + position={0, 0, 400, 400}, + y={"mod.bus.y", "mod.bus.y_actual", "mod.dam.m_flow", "mod.dam.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=2, + position={100, 0, 400, 400}, + y={"pre.bus.y", "pre.bus.y_actual", "pre.dam.m_flow", "pre.dam.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=3, + position={200, 0, 400, 400}, + y={"two.bus.y1", "two.bus.y1_actual", "two.dam.m_flow", "two.dam.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=4, + position={300, 0, 400, 400}, + y={"non.m_flow", "non.m_flow_nominal"}, + autoscale=true, + grid=true +); diff --git a/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Fans.mos b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Fans.mos new file mode 100644 index 00000000000..116124d4d16 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Fans.mos @@ -0,0 +1,33 @@ +simulateModel("Buildings.Templates.Components.Validation.Fans", + method="cvode", + tolerance=1e-6, + stopTime=200.0, + resultFile="Fans"); +createPlot( + id=1, + position={0, 0, 400, 400}, + y={"arr.bus.y", "arr.bus.y1", "arr.bus.y1_actual", "arr.fan[1].m_flow", "arr.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=2, + position={100, 0, 400, 400}, + y={"cst.bus.y1", "cst.bus.y1_actual", "cst.fan.m_flow", "cst.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=3, + position={200, 0, 400, 400}, + y={"var.bus.y", "var.bus.y1", "var.bus.y1_actual", "var.fan.m_flow", "var.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=4, + position={300, 0, 400, 400}, + y={"non.m_flow", "non.m_flow_nominal"}, + autoscale=true, + grid=true +); diff --git a/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Routing.mos b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Routing.mos new file mode 100644 index 00000000000..ac942cb360a --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Routing.mos @@ -0,0 +1,40 @@ +simulateModel("Buildings.Templates.Components.Validation.Routing", + method="cvode", + tolerance=1e-6, + stopTime=1, + resultFile="Routing"); +createPlot( + id=1, + position={0, 0, 400, 600}, + y={"mulMul.ports_a[1].m_flow", "mulMul.ports_b[1].m_flow", "mulMul.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"mulMulCom.ports_a[1].m_flow", "mulMulCom.ports_b[1].m_flow", "mulMulCom.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=3, + y={"mulSin.ports_a[1].m_flow", "mulSin.port_b.m_flow", "mulSin.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=4, + y={"sinMul.port_a.m_flow", "sinMul.ports_b[1].m_flow", "sinMul.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=5, + y={"pas.port_a.m_flow"}, + autoscale=true, + grid=true +); diff --git a/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Sensors.mos b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Sensors.mos new file mode 100644 index 00000000000..2c5329037ad --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Sensors.mos @@ -0,0 +1,41 @@ +simulateModel("Buildings.Templates.Components.Validation.Sensors", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="Sensors"); +createPlot( + id=1, + subPlot=1, + position={0, 0, 600, 600}, + y={"dp.y", "dp.senRelPre.p_rel"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"hum.y", "hum.toDryAir.XiDry"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=3, + y={"ent.y", "ent.senSpeEnt.h_out"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=4, + y={"tem.y", "tem.senTem.T"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=5, + y={"vol.y", "vol.senVolFlo.V_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Valves.mos b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Valves.mos new file mode 100644 index 00000000000..594dea382df --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Valves.mos @@ -0,0 +1,33 @@ +simulateModel("Buildings.Templates.Components.Validation.Valves", + method="cvode", + tolerance=1e-6, + stopTime=200.0, + resultFile="Valves"); +createPlot( + id=1, + position={0, 0, 400, 400}, + y={"modThr.bus.y", "modThr.bus.y_actual", "modThr.val.res1.m_flow", "modThr.val.res3.m_flow", "modThr.val.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=2, + position={100, 0, 400, 400}, + y={"modTwo.bus.y", "modTwo.bus.y_actual", "modTwo.val.m_flow", "modTwo.val.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=3, + position={200, 0, 400, 400}, + y={"twoThr.bus.y1", "twoThr.bus.y1_actual", "twoThr.val.res1.m_flow", "twoThr.val.res3.m_flow", "twoThr.val.m_flow_nominal"}, + autoscale=true, + grid=true +); +createPlot( + id=4, + position={300, 0, 400, 400}, + y={"twoTwo.bus.y1", "twoTwo.bus.y1_actual", "twoTwo.val.m_flow", "twoTwo.val.m_flow_nominal"}, + autoscale=true, + grid=true +); diff --git a/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mos b/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mos new file mode 100644 index 00000000000..898996d2622 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mos @@ -0,0 +1,12 @@ +simulateModel("Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnly", + method="cvode", + tolerance=1e-6, + stopTime=1.0, + resultFile="VAVBoxCoolingOnly"); +createPlot( + id=1, + position={20, 20, 500, 500}, + y={"VAVBox_1.damVAV.m_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mos b/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mos new file mode 100644 index 00000000000..0dc9eb36750 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnlyControlG36", + method="cvode", + tolerance=1e-6, + stopTime=3600, + resultFile="VAVBoxCoolingOnlyControlG36"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAVBox_1.bus.TAirSup", "VAVBox_1.bus.TAirDis", "VAVBox_1.bus.TZon"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAVBox_1.damVAV.m_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mos b/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mos new file mode 100644 index 00000000000..bb3fae39d39 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mos @@ -0,0 +1,20 @@ +simulateModel("Buildings.Templates.ZoneEquipment.Validation.VAVBoxReheatControlG36", + method="cvode", + tolerance=1e-6, + stopTime=3600, + resultFile="VAVBoxReheatControlG36"); +createPlot( + id=1, + subPlot=1, + position={20, 20, 500, 500}, + y={"VAVBox_1.bus.TAirSup", "VAVBox_1.bus.TAirDis", "VAVBox_1.bus.TZon"}, + autoscale=true, + grid=true +); +createPlot( + id=1, + subPlot=2, + y={"VAVBox_1.damVAV.m_flow"}, + autoscale=true, + grid=true +); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZBase.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZBase.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZBase.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilElectricHeating.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilElectricHeating.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilElectricHeating.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorMultiStage.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorMultiStage.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorMultiStage.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorVariable.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorVariable.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilEvaporatorVariable.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilWaterHeating3WVReheat.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilWaterHeating3WVReheat.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZCoilWaterHeating3WVReheat.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Airflow.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Airflow.mos new file mode 100644 index 00000000000..9db3c5c2164 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Airflow.mos @@ -0,0 +1,7 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Pressure.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Pressure.mos new file mode 100644 index 00000000000..e5e4781e9e9 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZControlG36Pressure.mos @@ -0,0 +1,7 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZDedicatedDampersPressure.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZDedicatedDampersPressure.mos new file mode 100644 index 00000000000..9db3c5c2164 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZDedicatedDampersPressure.mos @@ -0,0 +1,7 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZFanRelief.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZFanRelief.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZFanRelief.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZFanSupplyBlowThrough.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZFanSupplyBlowThrough.mos new file mode 100644 index 00000000000..52b34531c27 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.AirHandlersFans.Validation.VAVMZFanSupplyBlowThrough.mos @@ -0,0 +1,8 @@ +compareVars := + { + "VAV_1.bus.TAirSup", + "VAV_1.bus.TAirMix", + "VAV_1.bus.TOut", + "VAV_1.bus.fanSup.V_flow", + "VAV_1.bus.VOut_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Coils.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Coils.mos new file mode 100644 index 00000000000..9494a9f10b6 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Coils.mos @@ -0,0 +1,38 @@ +compareVars := + { + "coiCoo.bus.y", + "coiCoo.bus.y_actual", + "coiCoo.hex.m1_flow", + "coiCoo.hex.m2_flow", + "coiCoo.hex.m1_flow_nominal", + "coiCoo.hex.m2_flow_nominal", + "coiCoo.hex.Q2_flow", + "coiCoo.Q_flow_nominal", + "coiHea.bus.y", + "coiHea.bus.y_actual", + "coiHea.hex.m1_flow", + "coiHea.hex.m2_flow", + "coiHea.hex.m1_flow_nominal", + "coiHea.hex.m2_flow_nominal", + "coiHea.hex.Q2_flow", + "coiHea.Q_flow_nominal", + "coiEle.bus.y", + "coiEle.hex.m_flow", + "coiEle.hex.m_flow_nominal", + "coiEle.hex.Q_flow", + "coiEle.Q_flow_nominal", + "coiEva.bus.y", + "coiEva.hex.m_flow", + "coiEva.hex.m_flow_nominal", + "coiEva.hex.QSen_flow", + "coiEva.hex.QLat_flow", + "coiEva.Q_flow_nominal", + "coiMul.bus.y", + "coiMul.hex.m_flow", + "coiMul.hex.m_flow_nominal", + "coiMul.hex.QSen_flow", + "coiMul.hex.QLat_flow", + "coiMul.Q_flow_nominal", + "non.m_flow", + "non.m_flow_nominal" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Dampers.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Dampers.mos new file mode 100644 index 00000000000..b4258978a94 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Dampers.mos @@ -0,0 +1,17 @@ +compareVars := + { + "mod.bus.y", + "mod.bus.y_actual", + "mod.dam.m_flow", + "mod.dam.m_flow_nominal", + "pre.bus.y", + "pre.bus.y_actual", + "pre.dam.m_flow", + "pre.dam.m_flow_nominal", + "two.bus.y1", + "two.bus.y1_actual", + "two.dam.m_flow", + "two.dam.m_flow_nominal", + "non.m_flow", + "non.m_flow_nominal" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Fans.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Fans.mos new file mode 100644 index 00000000000..71605cec0ab --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Fans.mos @@ -0,0 +1,19 @@ +compareVars := + { + "arr.bus.y", + "arr.bus.y1", + "arr.bus.y1_actual", + "arr.fan[1].m_flow", + "arr.m_flow_nominal", + "cst.bus.y1", + "cst.bus.y1_actual", + "cst.fan.m_flow", + "cst.m_flow_nominal", + "var.bus.y", + "var.bus.y1", + "var.bus.y1_actual", + "var.fan.m_flow", + "var.m_flow_nominal", + "non.m_flow", + "non.m_flow_nominal" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Routing.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Routing.mos new file mode 100644 index 00000000000..49b0b8415e0 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Routing.mos @@ -0,0 +1,16 @@ +compareVars := + { + "mulMul.ports_a[1].m_flow", + "mulMul.ports_b[1].m_flow", + "mulMul.m_flow_nominal", + "mulMulCom.ports_a[1].m_flow", + "mulMulCom.ports_b[1].m_flow", + "mulMulCom.m_flow_nominal", + "mulSin.ports_a[1].m_flow", + "mulSin.port_b.m_flow", + "mulSin.m_flow_nominal", + "sinMul.port_a.m_flow", + "sinMul.ports_b[1].m_flow", + "sinMul.m_flow_nominal", + "pas.port_a.m_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Sensors.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Sensors.mos new file mode 100644 index 00000000000..9c6bd635cb5 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Sensors.mos @@ -0,0 +1,13 @@ +compareVars := + { + "dp.y", + "dp.senRelPre.p_rel", + "hum.y", + "hum.toDryAir.XiDry", + "ent.y", + "ent.senSpeEnt.h_out", + "tem.y", + "tem.senTem.T", + "vol.y", + "vol.senVolFlo.V_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Valves.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Valves.mos new file mode 100644 index 00000000000..80313a02bd9 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.Components.Validation.Valves.mos @@ -0,0 +1,21 @@ +compareVars := + { + "modThr.bus.y", + "modThr.bus.y_actual", + "modThr.val.res1.m_flow", + "modThr.val.res3.m_flow", + "modThr.val.m_flow_nominal", + "modTwo.bus.y", + "modTwo.bus.y_actual", + "modTwo.val.m_flow", + "modTwo.val.m_flow_nominal", + "twoThr.bus.y1", + "twoThr.bus.y1_actual", + "twoThr.val.res1.m_flow", + "twoThr.val.res3.m_flow", + "twoThr.val.m_flow_nominal", + "twoTwo.bus.y1", + "twoTwo.bus.y1_actual", + "twoTwo.val.m_flow", + "twoTwo.val.m_flow_nominal" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnly.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnly.mos new file mode 100644 index 00000000000..8576bff9fd2 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnly.mos @@ -0,0 +1,4 @@ +compareVars := + { + "VAVBox_1.damVAV.m_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnlyControlG36.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnlyControlG36.mos new file mode 100644 index 00000000000..e5912f579af --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxCoolingOnlyControlG36.mos @@ -0,0 +1,7 @@ +compareVars := + { + "VAVBox_1.bus.TAirSup", + "VAVBox_1.bus.TAirDis", + "VAVBox_1.bus.TZon", + "VAVBox_1.damVAV.m_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxReheatControlG36.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxReheatControlG36.mos new file mode 100644 index 00000000000..e5912f579af --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Templates.ZoneEquipment.Validation.VAVBoxReheatControlG36.mos @@ -0,0 +1,7 @@ +compareVars := + { + "VAVBox_1.bus.TAirSup", + "VAVBox_1.bus.TAirDis", + "VAVBox_1.bus.TZon", + "VAVBox_1.damVAV.m_flow" + }; diff --git a/Buildings/Templates/AirHandlersFans/Components/Controls/G36VAVMultiZone.mo b/Buildings/Templates/AirHandlersFans/Components/Controls/G36VAVMultiZone.mo new file mode 100644 index 00000000000..5deb0e55bef --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Controls/G36VAVMultiZone.mo @@ -0,0 +1,505 @@ +within Buildings.Templates.AirHandlersFans.Components.Controls; +block G36VAVMultiZone + "Guideline 36 controller" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone( + final typ=Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone); + + parameter String idZon[nZon] + "Zone (or terminal unit) names" + annotation(Evaluate=true, + Dialog(group="Configuration")); + + parameter String namGro[:] + "Name of zone groups" + annotation ( + Evaluate=true, + Dialog(group="Configuration")); + + parameter String namGroZon[nZon] + "Name of group which each zone belongs to" + annotation(Evaluate=true, + Dialog(group="Configuration")); + + final parameter Integer nGro(final min=1)= + size(namGro, 1) + "Number of zone groups" + annotation(Evaluate=true, + Dialog(group="Configuration")); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone ashCliZon= + datAll.ashCliZon + "ASHRAE climate zone" + annotation (Dialog(group="Configuration")); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone tit24CliZon= + datAll.tit24CliZon + "California Title 24 climate zone" + annotation (Dialog(group="Configuration")); + + final parameter Boolean isZonInGro[nGro, nZon]= + {{namGro[i]==namGroZon[j] for j in 1:nZon} for i in 1:nGro} + "True if zone belongs to group" + annotation(Evaluate=true); + + final parameter Integer isZonInGroInt[nGro, nZon]= + {{if isZonInGro[i, j] then 1 else 0 for j in 1:nZon} for i in 1:nGro} + "1 if zone belongs to group, 0 otherwise" + annotation(Evaluate=true); + + final parameter Integer isZonInGroIntTra[nZon, nGro]= + {{isZonInGroInt[i, j] for i in 1:size(isZonInGroInt, 1)} for j in 1:size(isZonInGroInt, 2)} + "Transpose of isZonInGroInt: 1 if zone belongs to group, 0 otherwise" + annotation(Evaluate=true); + + final parameter Integer nZonPerGro[nGro](each final min=1) = { + sum(isZonInGroInt[i]) for i in 1:nGro} + "Number of zones that each group contains" + annotation(Evaluate=true); + + parameter Boolean have_perZonRehBox=false + "Set to true if there are any VAV-reheat boxes on perimeter zones" + annotation (Dialog(group="Configuration")); + + /* + * Parameters for Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller + */ + + final parameter Modelica.Units.SI.VolumeFlowRate VOutUnc_flow_nominal= + dat.VOutUnc_flow_nominal + "Uncorrected design outdoor air flow rate, including diversity where applicable"; + final parameter Modelica.Units.SI.VolumeFlowRate VOutTot_flow_nominal= + dat.VOutTot_flow_nominal + "Design total outdoor air flow rate"; + final parameter Modelica.Units.SI.VolumeFlowRate VOutAbsMin_flow_nominal= + dat.VOutAbsMin_flow_nominal + "Design outdoor air flow rate when all zones with CO2 sensors or occupancy sensors are unpopulated"; + final parameter Modelica.Units.SI.VolumeFlowRate VOutMin_flow_nominal= + dat.VOutMin_flow_nominal + "Design minimum outdoor air flow rate when all zones are occupied at their design population, including diversity"; + + final parameter Modelica.Units.SI.PressureDifference dpDamOutMinAbs= + dat.dpDamOutMinAbs + "Differential pressure across the minimum outdoor air damper that provides the absolute minimum outdoor airflow"; + final parameter Modelica.Units.SI.PressureDifference dpDamOutMin_nominal= + dat.dpDamOutMin_nominal + "Differential pressure across the minimum outdoor air damper that provides the design minimum outdoor airflow"; + + final parameter Modelica.Units.SI.PressureDifference pAirSupSet_rel_max= + dat.pAirSupSet_rel_max + "Maximum supply duct static pressure setpoint"; + + final parameter Modelica.Units.SI.PressureDifference pAirRetSet_rel_min= + dat.pAirRetSet_rel_min + "Return fan minimum discharge static pressure setpoint"; + + final parameter Modelica.Units.SI.PressureDifference pAirRetSet_rel_max= + dat.pAirRetSet_rel_max + "Return fan maximum discharge static pressure setpoint"; + + final parameter Real yFanSup_min= + dat.yFanSup_min + "Lowest allowed fan speed if fan is on"; + + final parameter Modelica.Units.SI.Temperature TAirSupSet_min( + displayUnit="degC")=dat.TAirSupSet_min + "Lowest supply air temperature setpoint"; + + final parameter Modelica.Units.SI.Temperature TAirSupSet_max( + displayUnit="degC")=dat.TAirSupSet_max + "Highest supply air temperature setpoint"; + + final parameter Modelica.Units.SI.Temperature TOutRes_min( + displayUnit="degC")=dat.TOutRes_min + "Lowest value of the outdoor air temperature reset range"; + + final parameter Modelica.Units.SI.Temperature TOutRes_max( + displayUnit="degC")=dat.TOutRes_max + "Highest value of the outdoor air temperature reset range"; + + final parameter Real yFanRel_min= + dat.yFanRel_min + "Minimum relief fan speed"; + + final parameter Real yFanRet_min= + dat.yFanRet_min + "Minimum return fan speed"; + + final parameter Modelica.Units.SI.VolumeFlowRate dVFanRet_flow= + dat.dVFanRet_flow + "Airflow differential between supply and return fans to maintain building pressure at setpoint"; + + Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller ctl( + final eneStd=stdEne, + final venStd=stdVen, + final ashCliZon=ashCliZon, + final tit24CliZon=tit24CliZon, + final have_frePro=have_frePro, + final freSta=typFreSta, + final minOADes=typSecOut, + final buiPreCon=buiPreCon, + final ecoHigLimCon=typCtlEco, + final have_hotWatCoi=coiHeaPre.typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating or + coiHeaReh.typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating, + final have_eleHeaCoi=coiHeaPre.typ==Buildings.Templates.Components.Types.Coil.ElectricHeating or + coiHeaReh.typ==Buildings.Templates.Components.Types.Coil.ElectricHeating, + final have_perZonRehBox=have_perZonRehBox, + final VUncDesOutAir_flow=VOutUnc_flow_nominal, + final VDesTotOutAir_flow=VOutTot_flow_nominal, + final VAbsOutAir_flow=VOutAbsMin_flow_nominal, + final VDesOutAir_flow=VOutAbsMin_flow_nominal, + final pMaxSet=pAirSupSet_rel_max, + final supFanSpe_min=yFanSup_min, + final retFanSpe_min=yFanRet_min, + final TSupCoo_min=TAirSupSet_min, + final TSupCoo_max=TAirSupSet_max, + final TOut_min=TOutRes_min, + final TOut_max=TOutRes_max, + final have_CO2Sen=have_CO2Sen, + final dpAbsMinOutDam=dpDamOutMinAbs, + final dpDesMinOutDam=dpDamOutMin_nominal, + final difFloSet=dVFanRet_flow, + final p_rel_RetFan_min=pAirRetSet_rel_min, + final p_rel_RetFan_max=pAirRetSet_rel_max) + "AHU controller" + annotation (Placement(transformation(extent={{-40,-72},{40,72}}))); + + Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.ASHRAE62_1.SumZone + aggZonVen_A621( + final nZon=nZon, + final nGro=nGro, + final zonGroMat=isZonInGroInt, + final zonGroMatTra=isZonInGroIntTra) + if stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1 + "Aggregate zone level ventilation signals - ASHRAE 62.1" + annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + + Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.OutdoorAirFlow.Title24.SumZone + aggZonVen_T24( + final nZon=nZon, + final nGro=nGro, + final zonGroMat=isZonInGroInt, + final have_CO2Sen=have_CO2Sen) + if stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 + "Aggregate zone level ventilation signals - California Title 24" + annotation (Placement(transformation(extent={{-90,-40},{-70,-20}}))); + + Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneStatusDuplicator repSigZon( + final nZon=nZon, + final nZonGro=nGro) + "Replicate zone signals" + annotation (Placement(transformation(extent={{-190,100},{-182,140}}))); + + Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.GroupStatus staGro[nGro]( + final nBuiZon=fill(nZon, nGro), + final nGroZon=nZonPerGro, + final zonGroMsk=isZonInGro) + "Evaluate zone group status" + annotation (Placement(transformation(extent={{-170,100},{-150,140}}))); + + Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.OperationMode opeModSel[nGro]( + final nZon=nZonPerGro) + "Operation mode selection for each zone group" + annotation (Placement(transformation(extent={{-130,104},{-110,136}}))); + + Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator TAirSupSet( + final nout=nZon) + "Pass signal to terminal unit bus" + annotation (Placement(transformation(extent={{60,46},{80,66}}))); + Buildings.Controls.OBC.CDL.Integers.MultiSum reqZonTemRes( + final nin=nZon, + final k=fill(1, nZon)) + "Sum up signals" + annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); + Buildings.Controls.OBC.CDL.Integers.MultiSum reqZonPreRes( + final nin=nZon, + final k=fill(1, nZon)) + "Sum up signals" + annotation (Placement(transformation(extent={{-140,50},{-120,70}}))); + + Buildings.Controls.OBC.CDL.Logical.Sources.Constant u1FreSta(k=false) + "RFE: Freezestat and freezestat reset are currently not modeled" + annotation (Placement(transformation(extent={{-140,-90},{-120,-70}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant u1SofSwiRes(k=false) + "RFE: Freezestat and freezestat reset are currently not modeled" + annotation (Placement(transformation(extent={{-140,-130},{-120,-110}}))); + Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicator y1FanSup_actual( + final nout=nZon) + "Pass signal to terminal unit bus" + annotation (Placement(transformation(extent={{-10,-170},{10,-150}}))); + Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator TAirSup( + final nout=nZon) + "Pass signal to terminal unit bus" + annotation (Placement(transformation(extent={{-10,-130},{10,-110}}))); + Buildings.Controls.OBC.CDL.Routing.IntegerVectorReplicator intVecRep( + final nin=nGro, + final nout=nZon) + "Repeat group signal nZon times" + annotation (Placement(transformation(extent={{-80,110},{-60,130}}))); + Buildings.Controls.OBC.CDL.Integers.MultiSum asgOpeMod[nZon]( + each final nin=nGro, + final k=isZonInGroIntTra) + "Assign group operating mode to each zone belonging to group" + annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); + Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneGroupSystem ahuMod( + final nGro=nGro) + "Compute the AHU operating mode" + annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); +equation + /* Control point connection - start */ + + // Inputs from AHU bus + connect(bus.pAirSup_rel, ctl.dpDuc); + connect(bus.TOut, ctl.TOut); + connect(bus.TAirSup, ctl.TAirSup); + connect(bus.VOut_flow, ctl.VAirOut_flow); + connect(bus.VOutMin_flow, ctl.VAirOut_flow); + + connect(bus.dpAirOutMin, ctl.dpMinOutDam); + connect(bus.hAirOut, ctl.hAirOut); + connect(bus.TAirRet, ctl.TAirRet); + connect(bus.hAirRet, ctl.hAirRet); + connect(bus.pBui_rel, ctl.dpBui); + + connect(bus.TAirMix, ctl.TAirMix); + + connect(bus.fanSup.y1_actual, ctl.u1SupFan); + connect(bus.fanRel.y1_actual, ctl.u1RelFan); + + connect(bus.fanSup.V_flow, ctl.VAirSup_flow); + connect(bus.fanRet.V_flow, ctl.VAirRet_flow); + connect(bus.coiCoo.y_actual, ctl.uCooCoi_actual); + connect(bus.coiHea.y_actual, ctl.uHeaCoi_actual); + + connect(bus.fanSup.y1_actual, y1FanSup_actual.u); + connect(bus.TAirSup, TAirSup.u); + + // Inputs from terminal bus + connect(busTer.yReqZonPreRes, reqZonPreRes.u); + connect(busTer.yReqZonTemRes, reqZonTemRes.u); + + connect(busTer.VAdjPopBreZon_flow, aggZonVen_A621.VAdjPopBreZon_flow); + connect(busTer.VAdjAreBreZon_flow, aggZonVen_A621.VAdjAreBreZon_flow); + connect(busTer.VAirDis_flow, aggZonVen_A621.VZonPri_flow); + connect(busTer.VMinOA_flow, aggZonVen_A621.VMinOA_flow); + + connect(busTer.VZonAbsMin_flow, aggZonVen_T24.VZonAbsMin_flow); + connect(busTer.VZonDesMin_flow, aggZonVen_T24.VZonDesMin_flow); + connect(busTer.yCO2, aggZonVen_T24.uCO2); + + connect(busTer.y1OveOccZon, repSigZon.zonOcc); + connect(busTer.y1OccSch, repSigZon.u1Occ); + connect(busTer.tNexOcc, repSigZon.tNexOcc); + connect(busTer.yCooTim, repSigZon.uCooTim); + connect(busTer.yWarTim, repSigZon.uWarTim); + connect(busTer.yOccHeaHig, repSigZon.u1OccHeaHig); + connect(busTer.yHigOccCoo, repSigZon.u1HigOccCoo); + connect(busTer.yUnoHeaHig, repSigZon.u1UnoHeaHig); + connect(busTer.TZonHeaUnoSet, repSigZon.THeaSetOff); + connect(busTer.yEndSetBac, repSigZon.u1EndSetBac); + connect(busTer.yHigUnoCoo, repSigZon.u1HigUnoCoo); + connect(busTer.TZonCooUnoSet, repSigZon.TCooSetOff); + connect(busTer.yEndSetUp, repSigZon.u1EndSetUp); + connect(busTer.TZon, repSigZon.TZon); + connect(busTer.y1Win, repSigZon.u1Win); + + // Outputs to AHU bus + connect(ctl.yMinOutDam, bus.damOutMin.y); + connect(ctl.y1MinOutDam, bus.damOutMin.y1); + connect(ctl.yRetDam, bus.damRet.y); + connect(ctl.yRelDam, bus.damRel.y); + connect(ctl.yOutDam, bus.damOut.y); + connect(ctl.y1EneCHWPum, bus.y1PumChiWat); + connect(ctl.y1SupFan, bus.fanSup.y1); + connect(ctl.ySupFan, bus.fanSup.y); + connect(ctl.y1RetFan, bus.fanRet.y1); + connect(ctl.yRetFan, bus.fanRet.y); + connect(ctl.y1RelFan, bus.fanRel.y1); + connect(ctl.yRelFan, bus.fanRel.y); + connect(ctl.yCooCoi, bus.coiCoo.y); + connect(ctl.yHeaCoi, bus.coiHea.y); + + connect(ctl.yAla, bus.ala); + + connect(ctl.yChiWatResReq, bus.reqChiWatRes); + connect(ctl.yChiPlaReq, bus.reqChiWatPla); + connect(ctl.yHotWatResReq, bus.reqHeaWatRes); + connect(ctl.yHotWatPlaReq, bus.reqHeaWatPla); + + // Outputs to terminal unit bus + connect(TAirSupSet.y, busTer.TAirSupSet); + connect(TAirSup.y, busTer.TAirSup); + connect(y1FanSup_actual.y, busTer.y1FanSup_actual); + + /* Control point connection - stop */ + + connect(staGro.uGroOcc, opeModSel.u1Occ) + annotation (Line(points={{-148,139},{-134, + 139},{-134,134.4},{-132,134.4}}, color={255,0,255})); + connect(staGro.nexOcc, opeModSel.tNexOcc) annotation (Line(points={{-148,137}, + {-136,137},{-136,132.8},{-132,132.8}}, color={0,0,127})); + connect(staGro.yCooTim, opeModSel.maxCooDowTim) annotation (Line(points={{-148, + 133},{-138,133},{-138,131.2},{-132,131.2}},color={0,0,127})); + connect(staGro.yWarTim, opeModSel.maxWarUpTim) annotation (Line(points={{-148, + 131},{-140,131},{-140,128},{-132,128}}, color={0,0,127})); + connect(staGro.yOccHeaHig, opeModSel.u1OccHeaHig) annotation (Line(points={{-148, + 127},{-136,127},{-136,126.4},{-132,126.4}},color={255,0,255})); + connect(staGro.yHigOccCoo, opeModSel.u1HigOccCoo) annotation (Line(points={{-148, + 125},{-138,125},{-138,129.6},{-132,129.6}},color={255,0,255})); + connect(staGro.yEndSetBac, opeModSel.u1EndSetBac) annotation (Line(points={{-148, + 118},{-140,118},{-140,116.8},{-132,116.8}}, + color={255,0,255})); + connect(staGro.TZonMin, opeModSel.TZonMin) annotation (Line(points={{-148,105}, + {-140,105},{-140,113.6},{-132,113.6}}, color={0,0,127})); + connect(staGro.yHotZon, opeModSel.totHotZon) annotation (Line(points={{-148,115}, + {-142,115},{-142,110.4},{-132,110.4}}, color={255,127,0})); + connect(staGro.ySetUp, opeModSel.u1SetUp) annotation (Line(points={{-148,113},{ + -146,113},{-146,107.2},{-132,107.2}}, color={255,0,255})); + connect(staGro.yEndSetUp, opeModSel.u1EndSetUp) annotation (Line(points={{-148, + 111},{-136,111},{-136,105.6},{-132,105.6}}, color={255,0,255})); + connect(staGro.yOpeWin, opeModSel.uOpeWin) annotation (Line(points={{-148,101}, + {-134,101},{-134,123.2},{-132,123.2}}, color={255,127,0})); + connect(reqZonTemRes.y,ctl. uZonTemResReq) annotation (Line(points={{-118,20}, + {-60,20},{-60,54},{-44,54}}, color={255,127,0})); + connect(reqZonPreRes.y,ctl. uZonPreResReq) + annotation (Line(points={{-118,60},{-60,60},{-60,67.0909},{-44,67.0909}}, + color={255,127,0})); + + connect(repSigZon.y1ZonOcc, staGro.zonOcc) + annotation (Line(points={{-181.2,139},{-172,139}}, + color={255,0,255})); + connect(repSigZon.y1Occ, staGro.u1Occ) + annotation (Line(points={{-181.2,137},{-172,137}}, + color={255,0,255})); + connect(repSigZon.ytNexOcc, staGro.tNexOcc) + annotation (Line(points={{-181.2,135},{-172,135}}, + color={0,0,127})); + connect(repSigZon.yCooTim, staGro.uCooTim) + annotation (Line(points={{-181.2,131},{-172,131}}, + color={0,0,127})); + connect(repSigZon.yWarTim, staGro.uWarTim) + annotation (Line(points={{-181.2,129},{-172,129}}, + color={0,0,127})); + connect(repSigZon.y1OccHeaHig, staGro.u1OccHeaHig) + annotation (Line(points={{-181.2,125},{-172,125}}, + color={255,0,255})); + connect(repSigZon.y1HigOccCoo, staGro.u1HigOccCoo) annotation (Line(points={{-181.2, + 123},{-172,123}}, color={255,0,255})); + connect(repSigZon.y1UnoHeaHig, staGro.u1UnoHeaHig) + annotation (Line(points={{-181.2,119},{-172,119}}, + color={255,0,255})); + connect(repSigZon.yTHeaSetOff, staGro.THeaSetOff) + annotation (Line(points={{-181.2,117},{-172,117}}, + color={0,0,127})); + connect(repSigZon.y1EndSetBac, staGro.u1EndSetBac) + annotation (Line(points={{-181.2,115},{-172,115}}, + color={255,0,255})); + connect(repSigZon.y1HigUnoCoo, staGro.u1HigUnoCoo) + annotation (Line(points={{-181.2,111},{-172,111}}, + color={255,0,255})); + connect(repSigZon.yTCooSetOff, staGro.TCooSetOff) + annotation (Line(points={{-181.2,109},{-172,109}}, + color={0,0,127})); + connect(repSigZon.y1EndSetUp, staGro.u1EndSetUp) + annotation (Line(points={{-181.2,107},{-172,107}}, + color={255,0,255})); + connect(repSigZon.yTZon, staGro.TZon) + annotation (Line(points={{-181.2,103},{-172,103}}, + color={0,0,127})); + connect(repSigZon.y1Win, staGro.u1Win) + annotation (Line(points={{-181.2,101},{-172,101}}, + color={255,0,255})); + connect(staGro.yColZon, opeModSel.totColZon) annotation (Line(points={{-148,122}, + {-136,122},{-136,121.6},{-132,121.6}}, + color={255,127,0})); + connect(staGro.ySetBac, opeModSel.u1SetBac) annotation (Line(points={{-148,120}, + {-138,120},{-138,118.4},{-132,118.4}}, + color={255,0,255})); + connect(aggZonVen_A621.VSumAdjPopBreZon_flow, ctl.VSumAdjPopBreZon_flow) + annotation (Line(points={{-68,8},{-58,8},{-58,40.9091},{-44,40.9091}}, + color={0,0,127})); + connect(aggZonVen_A621.VSumAdjAreBreZon_flow, ctl.VSumAdjAreBreZon_flow) + annotation (Line(points={{-68,4},{-56,4},{-56,37.6364},{-44,37.6364}}, + color={0,0,127})); + connect(aggZonVen_A621.VSumZonPri_flow, ctl.VSumZonPri_flow) annotation (Line( + points={{-68,-4},{-54,-4},{-54,32.7273},{-44,32.7273}}, color={0,0,127})); + connect(aggZonVen_A621.uOutAirFra_max, ctl.uOutAirFra_max) annotation (Line( + points={{-68,-8},{-52,-8},{-52,27.8182},{-44,27.8182}}, color={0,0,127})); + connect(aggZonVen_T24.VSumZonAbsMin_flow, ctl.VSumZonAbsMin_flow) annotation ( + Line(points={{-68,-24},{-50,-24},{-50,21.2727},{-44,21.2727}}, color={0,0,127})); + connect(aggZonVen_T24.VSumZonDesMin_flow, ctl.VSumZonDesMin_flow) annotation ( + Line(points={{-68,-30},{-48,-30},{-48,18},{-44,18}}, color={0,0,127})); + connect(aggZonVen_T24.yMaxCO2, ctl.uCO2Loo_max) annotation (Line(points={{-68,-35}, + {-46,-35},{-46,-3.27273},{-44,-3.27273}}, color={0,0,127})); + connect(ctl.TAirSupSet, TAirSupSet.u) annotation (Line(points={{44,55.6364},{ + 58,55.6364},{58,56}}, color={0,0,127})); + connect(opeModSel.yOpeMod, aggZonVen_A621.uOpeMod) annotation (Line(points={{-108, + 120},{-100,120},{-100,9},{-92,9}}, color={255,127,0})); + connect(opeModSel.yOpeMod, aggZonVen_T24.uOpeMod) annotation (Line(points={{-108, + 120},{-100,120},{-100,-22},{-92,-22}}, color={255,127,0})); + connect(opeModSel.yOpeMod, intVecRep.u) + annotation (Line(points={{-108,120},{-82,120}}, color={255,127,0})); + connect(asgOpeMod.y, busTer.yOpeMod) annotation (Line(points={{-18,120},{200,120}, + {200,0},{220,0}}, color={255,127,0}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}}, + horizontalAlignment=TextAlignment.Left)); + connect(intVecRep.y, asgOpeMod.u) + annotation (Line(points={{-58,120},{-42,120}}, color={255,127,0})); + connect(opeModSel.yOpeMod, ahuMod.uOpeMod) annotation (Line(points={{-108,120}, + {-100,120},{-100,80},{-92,80}}, color={255,127,0})); + connect(ahuMod.yAhuOpeMod, ctl.uAhuOpeMod) annotation (Line(points={{-68,80}, + {-60,80},{-60,70.3636},{-44,70.3636}},color={255,127,0})); + + connect(u1FreSta.y, ctl.u1FreSta) annotation (Line(points={{-118,-80},{-60, + -80},{-60,-26.1818},{-44,-26.1818}}, color={255,0,255})); + connect(u1SofSwiRes.y, ctl.u1SofSwiRes) annotation (Line(points={{-118,-120}, + {-56,-120},{-56,-32.7273},{-44,-32.7273}}, color={255,0,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +
+This is an implementation of the control sequence specified in ASHRAE (2021) +for multiple-zone VAV air handlers. +It contains the following components. +
+
+The AI point for the measured outdoor air flow rate ctl.VOut_flow
+used for minimum outdoor airflow control is connected to both bus.VOutMin_flow
+(dedicated minimum OA damper) and bus.VOut_flow
(single common OA damper).
+Those two variables are exclusive from one another.
+In case of dedicated OA dampers, the total outdoor airflow is not measured,
+hence no bus.VOut_flow
signal is available for that configuration.
+
+This is an open loop controller providing control inputs +for the templates within + +Buildings.Templates.AirHandlersFans. +It is mainly used for testing purposes. +
+")); +end OpenLoop; diff --git a/Buildings/Templates/AirHandlersFans/Components/Controls/package.mo b/Buildings/Templates/AirHandlersFans/Components/Controls/package.mo new file mode 100644 index 00000000000..59d0a99a924 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Controls/package.mo @@ -0,0 +1,12 @@ +within Buildings.Templates.AirHandlersFans.Components; +package Controls "Controllers" + extends Modelica.Icons.VariantsPackage; + +annotation (Documentation(info=" ++All control blocks that form the control sequence of a system +are instantiated into one single class, a so-called control section. +This package contains such control sections. +
+")); +end Controls; diff --git a/Buildings/Templates/AirHandlersFans/Components/Controls/package.order b/Buildings/Templates/AirHandlersFans/Components/Controls/package.order new file mode 100644 index 00000000000..d0ddec1fb52 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Controls/package.order @@ -0,0 +1,2 @@ +G36VAVMultiZone +OpenLoop diff --git a/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo b/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo new file mode 100644 index 00000000000..48a399aa1a3 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo @@ -0,0 +1,69 @@ +within Buildings.Templates.AirHandlersFans.Components.Data; +record OutdoorReliefReturnSection "Record for outdoor/relief/return air section" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.Components.Types.Damper typDamOut + "Outdoor air damper type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Damper typDamOutMin + "Minimum outdoor air damper type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Damper typDamRel + "Relief damper type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Damper typDamRet + "Return damper type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanRel + "Type of relief fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanRet + "Type of return fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter Modelica.Units.SI.MassFlowRate mOutMin_flow_nominal( + final min=0, + start=0.2 * damOut.m_flow_nominal) + "Minimum outdoor air mass flow rate at design conditions" + annotation (Dialog(group="Dampers and economizers", + enable=typDamOutMin<>Buildings.Templates.Components.Types.Damper.None)); + + parameter Buildings.Templates.Components.Data.Damper damOut( + final typ=typDamOut) + "Outdoor air damper" + annotation (Dialog(group="Dampers and economizers", + enable=typDamOut <> Buildings.Templates.Components.Types.Damper.None)); + parameter Buildings.Templates.Components.Data.Damper damOutMin( + final typ=typDamOutMin) + "Minimum outdoor air damper" + annotation (Dialog(group="Dampers and economizers", + enable=typDamOutMin <> Buildings.Templates.Components.Types.Damper.None)); + parameter Buildings.Templates.Components.Data.Damper damRel( + final typ=typDamRel) + "Relief damper" + annotation (Dialog(group="Dampers and economizers", + enable=typDamRel <> Buildings.Templates.Components.Types.Damper.None)); + parameter Buildings.Templates.Components.Data.Damper damRet( + final typ=typDamRet) + "Return damper" + annotation (Dialog(group="Dampers and economizers", + enable=typDamRet <> Buildings.Templates.Components.Types.Damper.None)); + parameter Buildings.Templates.Components.Data.Fan fanRel( + final typ=typFanRel) + "Relief fan" + annotation (Dialog(group="Fans", + enable=typFanRel <>Buildings.Templates.Components.Types.Fan.None)); + parameter Buildings.Templates.Components.Data.Fan fanRet( + final typ=typFanRet) + "Return fan" + annotation (Dialog(group="Fans", + enable=typFanRet <>Buildings.Templates.Components.Types.Fan.None)); + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +the classes within + +Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection. +
+")); +end OutdoorReliefReturnSection; diff --git a/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo b/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo new file mode 100644 index 00000000000..d3fc315f5c7 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo @@ -0,0 +1,25 @@ +within Buildings.Templates.AirHandlersFans.Components.Data; +record PartialController "Record for controller interface class" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.AirHandlersFans.Types.Controller typ + "Type of controller" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanSup + "Type of supply fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanRel + "Type of relief fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanRet + "Type of return fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for the class + +Buildings.Templates.AirHandlersFans.Components.Controls.Interfaces.PartialController. +
+")); +end PartialController; diff --git a/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo b/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo new file mode 100644 index 00000000000..e8fd549c1d0 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo @@ -0,0 +1,154 @@ +within Buildings.Templates.AirHandlersFans.Components.Data; +record VAVMultiZoneController "Record for multiple-zone VAV controller" + extends Buildings.Templates.AirHandlersFans.Components.Data.PartialController; + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection typSecOut + "Type of outdoor air section" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes buiPreCon + "Type of building pressure control system" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen + "Ventilation standard" + annotation(Evaluate=true, Dialog(group="Energy and ventilation standards", enable=false)); + + parameter Modelica.Units.SI.Temperature TAirSupSet_min( + final min=273.15, + displayUnit="degC")=12+273.15 + "Lowest supply air temperature setpoint" + annotation (Dialog(group="Temperature setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone)); + + parameter Modelica.Units.SI.Temperature TAirSupSet_max( + final min=273.15, + displayUnit="degC")=18+273.15 + "Highest supply air temperature setpoint" + annotation (Dialog(group="Temperature setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone)); + + parameter Modelica.Units.SI.Temperature TOutRes_min( + final min=273.15, + displayUnit="degC")=16+273.15 + "Lowest value of the outdoor air temperature reset range" + annotation (Dialog(group="Temperature setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone)); + + parameter Modelica.Units.SI.Temperature TOutRes_max( + final min=273.15, + displayUnit="degC")=21+273.15 + "Highest value of the outdoor air temperature reset range" + annotation (Dialog(group="Temperature setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone)); + + parameter Modelica.Units.SI.VolumeFlowRate VOutUnc_flow_nominal( + start=0) + "Uncorrected design outdoor air flow rate, including diversity where applicable" + annotation (Dialog(group="Ventilation setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + parameter Modelica.Units.SI.VolumeFlowRate VOutTot_flow_nominal( + start=0) + "Design total outdoor air flow rate" + annotation (Dialog(group="Ventilation setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + parameter Modelica.Units.SI.VolumeFlowRate VOutAbsMin_flow_nominal( + start=0) + "Design outdoor air flow rate when all zones with CO2 sensors or occupancy sensors are unpopulated" + annotation (Dialog(group="Ventilation setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + parameter Modelica.Units.SI.VolumeFlowRate VOutMin_flow_nominal( + start=0) + "Design minimum outdoor air flow rate when all zones are occupied at their design population, including diversity" + annotation (Dialog(group="Ventilation setpoints", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + + parameter Modelica.Units.SI.PressureDifference pAirSupSet_rel_max( + final min=0, + displayUnit="Pa", + start=500) + "Duct design maximum static pressure" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone)); + parameter Modelica.Units.SI.PressureDifference dpDamOutMinAbs( + final min=2.4, + displayUnit="Pa", + start=5) + "Differential pressure across the minimum outdoor air damper that provides the absolute minimum outdoor airflow" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 + and typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure)); + parameter Modelica.Units.SI.PressureDifference dpDamOutMin_nominal( + final min=5, + displayUnit="Pa", + start=15) + "Differential pressure across the minimum outdoor air damper that provides the design minimum outdoor airflow" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + typSecOut==Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure)); + + parameter Modelica.Units.SI.PressureDifference pAirRetSet_rel_min( + final min=2.4, + displayUnit="Pa")=10 + "Return fan minimum discharge static pressure setpoint" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + buiPreCon==Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp)); + + parameter Modelica.Units.SI.PressureDifference pAirRetSet_rel_max( + final min=10, + displayUnit="Pa")=40 + "Return fan maximum discharge static pressure setpoint" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + buiPreCon==Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp)); + + parameter Modelica.Units.SI.VolumeFlowRate dVFanRet_flow( + final min=0, + start=0.1) + "Airflow differential between supply and return fans to maintain building pressure at setpoint" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + buiPreCon==Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir)); + + parameter Real yFanSup_min( + final unit="1", + final min=0, + final max=1)= 0.1 + "Lowest allowed fan speed if fan is on" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + typFanSup<>Buildings.Templates.Components.Types.Fan.None)); + + parameter Real yFanRel_min( + final unit="1", + final min=0, + final max=1)=0.1 + "Minimum relief fan speed" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + typFanRel<>Buildings.Templates.Components.Types.Fan.None)); + + parameter Real yFanRet_min( + final unit="1", + final min=0, + final max=1)=0.1 + "Minimum return fan speed" + annotation (Dialog(group="Information provided by testing, adjusting, and balancing contractor", + enable=typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + typFanRet<>Buildings.Templates.Components.Types.Fan.None)); + + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +multiple-zone VAV controllers within + +Buildings.Templates.AirHandlersFans.Components.Controls. +
+")); +end VAVMultiZoneController; diff --git a/Buildings/Templates/AirHandlersFans/Components/Data/package.mo b/Buildings/Templates/AirHandlersFans/Components/Data/package.mo new file mode 100644 index 00000000000..4a93c2540f6 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Data/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.AirHandlersFans.Components; +package Data "Records for design and operating parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + +annotation (Documentation(info=" ++This package provides records for design and operating parameters. +
+")); +end Data; diff --git a/Buildings/Templates/AirHandlersFans/Components/Data/package.order b/Buildings/Templates/AirHandlersFans/Components/Data/package.order new file mode 100644 index 00000000000..567ce4daa32 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Data/package.order @@ -0,0 +1,3 @@ +OutdoorReliefReturnSection +PartialController +VAVMultiZoneController diff --git a/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/None.mo b/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/None.mo new file mode 100644 index 00000000000..0b5ece79689 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/None.mo @@ -0,0 +1,14 @@ +within Buildings.Templates.AirHandlersFans.Components.HeatRecovery; +model None "No heat recovery" + extends + .Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialHeatRecovery( + final typ=Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None); + + annotation (Documentation(info=" ++This model represents a configuration with no heat recovery unit. +It resolves to four fluid ports that are not connected +to each other and for which pressure conditions must be provided. +
+")); +end None; diff --git a/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/package.mo b/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/package.mo new file mode 100644 index 00000000000..845e18618a6 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/package.mo @@ -0,0 +1,8 @@ +within Buildings.Templates.AirHandlersFans.Components; +package HeatRecovery "Models for heat recovery" + extends Modelica.Icons.VariantsPackage; + +annotation (Documentation(info=" +This package contains models for heat recovery units. +")); +end HeatRecovery; diff --git a/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/package.order b/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/package.order new file mode 100644 index 00000000000..b0047fa49f0 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/HeatRecovery/package.order @@ -0,0 +1 @@ +None diff --git a/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialController.mo b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialController.mo new file mode 100644 index 00000000000..397c2c543bc --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialController.mo @@ -0,0 +1,63 @@ +within Buildings.Templates.AirHandlersFans.Components.Interfaces; +partial block PartialController "Interface class for AHU controller" + + parameter Buildings.Templates.AirHandlersFans.Types.Controller typ + "Type of controller" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Integer nZon + "Number of served zones"; + + outer parameter Buildings.Templates.Data.AllSystems datAll + "Top-level (whole building) system parameters"; + outer parameter Buildings.Templates.Components.Types.Fan typFanSup + "Type of supply fan"; + outer parameter Buildings.Templates.Components.Types.Fan typFanRet + "Type of relief/return fan"; + + replaceable parameter + Buildings.Templates.AirHandlersFans.Components.Data.PartialController dat( + final typ=typ, + final typFanSup=typFanSup, + final typFanRet=typFanRet) + "Design and operating parameters" + annotation (Placement(transformation(extent={{190,170},{210,190}}))); + + Buildings.Templates.AirHandlersFans.Interfaces.Bus bus + "AHU control bus" + annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-200,0}), iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-100,0}))); + Buildings.Templates.ZoneEquipment.Interfaces.Bus busTer[nZon] + "Terminal unit control bus" + annotation (Placement(transformation( + extent={{-20,20},{20,-20}}, + rotation=90, + origin={220,0}), iconTransformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={100,0}))); + + annotation ( + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-151,-114},{149,-154}}, + textColor={0,0,255}, + textString="%name")}), Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-200,-200},{220, + 200}})), + Documentation(info=" ++This partial class provides a standard interface for air handler controllers. +
+")); +end PartialController; diff --git a/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialControllerVAVMultizone.mo b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialControllerVAVMultizone.mo new file mode 100644 index 00000000000..998f231451f --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialControllerVAVMultizone.mo @@ -0,0 +1,111 @@ +within Buildings.Templates.AirHandlersFans.Components.Interfaces; +partial block PartialControllerVAVMultizone + "Interface class for multiple-zone VAV controller" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController( + redeclare Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController + dat( + typSecOut=secOutRel.typSecOut, + buiPreCon=buiPreCon, + stdVen=stdVen)); + + outer replaceable + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection + secOutRel "Outdoor/relief/return air section"; + outer replaceable Buildings.Templates.Components.Coils.None coiCoo + "Cooling coil"; + outer replaceable Buildings.Templates.Components.Coils.None coiHeaPre + "Heating coil (preheat position)"; + outer replaceable Buildings.Templates.Components.Coils.None coiHeaReh + "Heating coil (reheat position)"; + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer typCtlEco= + Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb + "Economizer control type" + annotation (Evaluate=true, + Dialog( + group="Economizer", + enable=secOutRel.have_eco)); + + parameter Buildings.Templates.AirHandlersFans.Types.ControlFanReturn typCtlFanRet= + Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured + "Return fan control type" + annotation (Evaluate=true, + Dialog( + group="Configuration", + enable=typFanRet <> Buildings.Templates.Components.Types.Fan.None)); + + parameter Boolean use_TMix=true + "Set to true if mixed air temperature measurement is enabled" + annotation(Dialog( + group="Economizer", + enable=typ<>Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + secOutRel.typ<>Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir)); + + parameter Boolean have_frePro=true + "Set to true to include freeze protection" + annotation(Evaluate=true); + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat typFreSta= + Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeStat.No_freeze_stat + "Option for low limit (freeze) protection" + annotation(Evaluate=true, Dialog(enable=have_frePro)); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection typSecOut= + secOutRel.typSecOut + "Type of outdoor air section" + annotation (Dialog(group="Economizer")); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes buiPreCon= + if secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefDamper + then Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper + elseif secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefFan + then Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefFan + elseif secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReturnFan + then (if typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured + then Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanMeasuredAir + elseif typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure + then Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReturnFanDp + else Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper) + else Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper + "Type of building pressure control system" + annotation (Dialog(group="Economizer")); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard stdEne= + datAll.stdEne + "Energy standard" + annotation(Dialog(enable= + typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone), + Evaluate=true); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen= + datAll.stdVen + "Ventilation standard" + annotation(Dialog(enable= + typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone), + Evaluate=true); + + parameter Boolean have_CO2Sen=false + "Set to true if there are zones with CO2 sensor" + annotation (Dialog(group="Configuration", + enable= + typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone and + typSecOut==Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + +initial equation + if typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone then + // We check the fallback "else" clause. + if buiPreCon==Buildings.Controls.OBC.ASHRAE.G36.Types.BuildingPressureControlTypes.ReliefDamper then + assert(secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefDamper, + "In "+ getInstanceName() + ": "+ + "The system configuration is incompatible with available options for building pressure control."); + end if; + end if; + + annotation (Documentation(info=" ++This partial class provides a standard interface for multiple-zone VAV controllers. +
+")); +end PartialControllerVAVMultizone; diff --git a/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialHeatRecovery.mo b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialHeatRecovery.mo new file mode 100644 index 00000000000..cfe5b146e87 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialHeatRecovery.mo @@ -0,0 +1,69 @@ +within Buildings.Templates.AirHandlersFans.Components.Interfaces; +partial model PartialHeatRecovery "Interface class for heat recovery" + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium" + annotation(__ctrl_flow(enable=false)); + + parameter Buildings.Templates.AirHandlersFans.Types.HeatRecovery typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Boolean allowFlowReversal = true + "= false to simplify equations, assuming, but not enforcing, no flow reversal" + annotation(Dialog(tab="Assumptions"), Evaluate=true, __ctrl_flow(enable=false)); + + Buildings.Templates.AirHandlersFans.Interfaces.Bus bus + if typ <> Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None + "Control bus" annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={0,100}), iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,100}))); + Modelica.Fluid.Interfaces.FluidPort_a port_aOut( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None + "Outdoor air inlet" + annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bOut( + redeclare final package Medium = MediumAir, + m_flow(max=if allowFlowReversal then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None + "Outdoor air outlet" + annotation (Placement(transformation(extent={{110,-70},{90,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_aRel( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None + "Relief/exhaust air inlet" + annotation (Placement(transformation(extent={{90,50},{110,70}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bRel( + redeclare final package Medium = MediumAir, + m_flow(max=if allowFlowReversal then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None + "Relief/exhaust air outlet" + annotation (Placement(transformation(extent={{-90,50},{-110,70}}))); + annotation (Icon(graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={0,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-149,-110},{151,-150}}, + textColor={0,0,255}, + textString="%name")}), Documentation(info=" ++This class provides a standard interface for the +heat recovery unit of an air handler. +
+")); +end PartialHeatRecovery; diff --git a/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialOutdoorReliefReturnSection.mo b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialOutdoorReliefReturnSection.mo new file mode 100644 index 00000000000..b832fd2cdbe --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Interfaces/PartialOutdoorReliefReturnSection.mo @@ -0,0 +1,415 @@ +within Buildings.Templates.AirHandlersFans.Components.Interfaces; +partial model PartialOutdoorReliefReturnSection + "Interface class for outdoor/relief/return air section" + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium" + annotation(__ctrl_flow(enable=false)); + + parameter Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection typ + "Outdoor/relief/return air section type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection typSecOut + "Outdoor air section type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection typSecRel + "Relief/return air section type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Damper typDamOut + "Outdoor air damper type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Damper typDamOutMin + "Minimum outdoor air damper type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Damper typDamRel + "Relief damper type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Damper typDamRet + "Return damper type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Fan typFanRel + "Relief fan type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Fan typFanRet + "Return fan type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_eco + "Set to true in case of economizer function" + annotation (Evaluate=true, Dialog(group="Configuration")); + inner parameter Boolean have_recHea = false + "Set to true in case of heat recovery" + annotation (Evaluate=true, + Dialog(group="Configuration")); + inner parameter Buildings.Templates.AirHandlersFans.Types.ControlFanReturn typCtlFanRet= + Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured + "Return fan control type" + annotation (Evaluate=true, + Dialog( + group="Configuration", + enable=typFanRet<>Buildings.Templates.Components.Types.Fan.None)); + inner parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer typCtlEco= + Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulb + "Economizer control type" + annotation (Evaluate=true, + Dialog( + group="Configuration", + enable=have_eco)); + + parameter + Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection + dat( + final typDamOut=typDamOut, + final typDamOutMin=typDamOutMin, + final typDamRet=typDamRet, + final typDamRel=typDamRel, + final typFanRel=typFanRel, + final typFanRet=typFanRet) + "Design and operating parameters" + annotation (Placement(transformation(extent={{150,110},{170,130}}))); + + final parameter Modelica.Units.SI.MassFlowRate mAirSup_flow_nominal= + dat.damOut.m_flow_nominal + "Supply air mass flow rate"; + final parameter Modelica.Units.SI.MassFlowRate mAirRet_flow_nominal= + dat.damRet.m_flow_nominal + "Return air mass flow rate"; + final parameter Modelica.Units.SI.MassFlowRate mOutMin_flow_nominal= + dat.mOutMin_flow_nominal + "Minimum outdoor air mass flow rate at design conditions"; + + final parameter Modelica.Units.SI.PressureDifference dpDamOut_nominal= + dat.damOut.dp_nominal + "Outdoor air damper pressure drop"; + final parameter Modelica.Units.SI.PressureDifference dpDamOutMin_nominal= + dat.damOutMin.dp_nominal + "Minimum outdoor air damper pressure drop"; + final parameter Modelica.Units.SI.PressureDifference dpDamRel_nominal= + dat.damRel.dp_nominal + "Relief air damper pressure drop"; + final parameter Modelica.Units.SI.PressureDifference dpDamRet_nominal= + dat.damRet.dp_nominal + "Return air damper pressure drop"; + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations"), + __ctrl_flow(enable=false)); + + parameter Boolean allowFlowReversal = true + "= false to simplify equations, assuming, but not enforcing, no flow reversal" + annotation(Dialog(tab="Assumptions"), Evaluate=true, __ctrl_flow(enable=false)); + + Modelica.Fluid.Interfaces.FluidPort_b port_Rel( + redeclare final package Medium = MediumAir, + m_flow(max=if allowFlowReversal then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.MixedAirNoRelief + "Relief (exhaust) air" + annotation (Placement(transformation( + extent={{-190,70},{-170,90}}),iconTransformation(extent={{-810,590},{-790, + 610}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_Out( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + "Outdoor air intake" + annotation (Placement(transformation( + extent={{-190,-90},{-170,-70}}),iconTransformation(extent={{-810,-610},{-790, + -590}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_Sup( + redeclare final package Medium = MediumAir, + m_flow(max=if allowFlowReversal then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + "Supply air" + annotation ( + Placement(transformation(extent={{170,-90},{190,-70}}), + iconTransformation(extent={{790,-610},{810,-590}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_Ret( + redeclare final package Medium =MediumAir, + m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + "Return air" + annotation (Placement(transformation(extent={{170,70},{190,90}}), + iconTransformation(extent={{790,588},{810,608}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bPre( + redeclare final package Medium = MediumAir) + "Optional fluid connector for differential pressure sensor" + annotation (Placement(transformation(extent={{90,130},{70,150}}), + iconTransformation(extent={{390,790},{370,810}}))); + Buildings.Templates.AirHandlersFans.Interfaces.Bus bus "Control bus" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={0,140}), iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,800}))); + + annotation (Icon(coordinateSystem(preserveAspectRatio=false, + extent={{-800,-800}, {800,800}}), + graphics={ + Line( + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None, + points={{440,440},{440,576}}, + color={0,0,0}), + Line( + visible=typFanRel <> Buildings.Templates.Components.Types.Fan.None, + points={{-240,440},{-240,570}}, + color={0,0,0}), + Text( + extent={{-149,-834},{151,-874}}, + textColor={0,0,255}, + textString="%name"), + Bitmap( + visible=typFanRet==Buildings.Templates.Components.Types.Fan.SingleVariable, + extent={{540,500},{340,700}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Housed.svg"), + Bitmap( + visible=typFanRet==Buildings.Templates.Components.Types.Fan.ArrayVariable, + extent={{540,500},{340,700}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Array.svg"), + Bitmap( + visible=typFanRet<>Buildings.Templates.Components.Types.Fan.None, + extent={{358,280},{520,440}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/VFD.svg"), + Bitmap( + visible=typDamRel==Buildings.Templates.Components.Types.Damper.TwoPosition, + extent={{-680,360},{-600,440}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg"), + Bitmap( + visible=typDamRel==Buildings.Templates.Components.Types.Damper.Modulating, + extent={{-680,360},{-600,440}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Bitmap( + extent={{-510,440},{-770,700}}, + visible=typDamRel<>Buildings.Templates.Components.Types.Damper.None, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesOpposed.svg"), + Bitmap( + visible=typFanRel==Buildings.Templates.Components.Types.Fan.SingleVariable, + extent={{-140,500},{-340,700}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Propeller.svg"), + Bitmap( + visible=typFanRel==Buildings.Templates.Components.Types.Fan.ArrayVariable, + extent={{-140,500},{-340,700}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Array.svg"), + Bitmap( + visible=typFanRel<>Buildings.Templates.Components.Types.Fan.None, + extent={{-320,278},{-158,440}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/VFD.svg"), + Bitmap( + visible=typ<>Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir, + extent={{-240,-40},{-160,40}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Bitmap( + extent={{-160,-130},{100,130}}, + visible=typ<>Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg", + origin={-30,-30}, + rotation=-90), + Bitmap( + extent={{-770,-760},{-510,-500}}, + visible=typDamOut<>Buildings.Templates.Components.Types.Damper.None, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg"), + Bitmap( + visible=typDamOut==Buildings.Templates.Components.Types.Damper.TwoPosition, + extent={{-680,-840},{-600,-760}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg"), + Bitmap( + visible=typDamOut==Buildings.Templates.Components.Types.Damper.Modulating, + extent={{-680,-840},{-600,-760}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Bitmap( + extent={{-510,-240},{-770,-500}}, + visible=typDamOutMin<>Buildings.Templates.Components.Types.Damper.None, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg"), + Bitmap( + visible=typDamOutMin==Buildings.Templates.Components.Types.Damper.TwoPosition, + extent={{-680,-240},{-600,-160}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg"), + Bitmap( + visible=typDamOutMin==Buildings.Templates.Components.Types.Damper.Modulating, + extent={{-680,-240},{-600,-160}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Line(points={{-100,700},{800,700}}, color={0,0,0}), + Line( + visible=typ <> Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.MixedAirNoRelief, + points={{-800,500},{-100,500}}, + color={0,0,0}), + Line( + visible=typ==Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.MixedAirNoRelief, + points={{-100,700},{-100,500}}, + color={0,0,0}), + Line(points={{96,500},{796,500}}, color={0,0,0}), + Line(points={{100,-500},{800,-500}},color={0,0,0}), + Line(points={{-800,-500},{-100,-500}},color={0,0,0}), + Line(points={{-800,-700},{800,-700}}, color={0,0,0}), + Line( + visible=typ <> Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir, + points={{100,500},{100,-500}}, + color={0,0,0}), + Line( + visible=typ <> Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir, + points={{-100,500},{-100,-300}}, + color={0,0,0}), + Line( + points={{-800,700},{-100,700}}, + color={0,0,0}, + visible=typ <> Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.MixedAirNoRelief), + Line( + points={{-100,500},{100,500}}, + color={0,0,0}, + visible=typ == Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir), + Line( + points={{-100,-500},{100,-500}}, + color={0,0,0}, + visible=typ == Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir), + Line( + points={{-800,-300},{-100,-300}}, + color={0,0,0}, + visible=typDamOutMin <> Buildings.Templates.Components.Types.Damper.None), + Line( + points={{-100,-300},{-100,-500}}, + color={0,0,0}, + visible=typDamOutMin == Buildings.Templates.Components.Types.Damper.None and + typ <> Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.HundredPctOutdoorAir), + Bitmap( + visible=typSecOut==Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure, + extent={{-680,-142},{-600,-62}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressure.svg"), + Bitmap( + visible=typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow, + extent={{-260,-500},{-60,-300}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateAFMS.svg"), + Bitmap( + visible=typSecOut==Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow, + extent={{-200,-240},{-120,-160}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg"), + Bitmap( + visible=typFanRet<>Buildings.Templates.Components.Types.Fan.None and + typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured, + extent={{580,360},{660,440}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg"), + Line(points={{664,446}}, color={28,108,200}), + Bitmap( + visible=typDamOutMin<>Buildings.Templates.Components.Types.Damper.None, + extent={{-338,-240},{-258,-160}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/Temperature.svg"), + Bitmap( + visible=typDamOutMin <> Buildings.Templates.Components.Types.Damper.None, + extent={{-400,-240},{-200,-440}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg"), + Bitmap( + visible=typDamOutMin<>Buildings.Templates.Components.Types.Damper.None and + (typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb or + typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb), + extent={{-460,-160},{-380,-240}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/SpecificEnthalpy.svg"), + Bitmap( + visible=typDamOutMin <> Buildings.Templates.Components.Types.Damper.None + and (typCtlEco == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb + or typCtlEco == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb), + extent={{-520,-240},{-320,-440}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg"), + Bitmap( + visible=typDamOutMin==Buildings.Templates.Components.Types.Damper.None, + extent={{-340,-840},{-260,-760}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/Temperature.svg"), + Bitmap( + visible=typDamOutMin == Buildings.Templates.Components.Types.Damper.None, + extent={{-400,-760},{-200,-560}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg"), + Bitmap( + visible=typDamOutMin==Buildings.Templates.Components.Types.Damper.None and + (typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb or + typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb), + extent={{-460,-840},{-380,-760}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/SpecificEnthalpy.svg"), + Bitmap( + visible=typDamOutMin == Buildings.Templates.Components.Types.Damper.None + and (typCtlEco == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb + or typCtlEco == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb), + extent={{-520,-760},{-320,-560}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg"), + Bitmap( + visible=typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper, + extent={{-260,-700},{-60,-500}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRateAFMS.svg"), + Bitmap( + visible=typSecOut==Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper, + extent={{-200,-840},{-120,-760}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg"), + Bitmap( + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None + and typCtlFanRet == Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure, + extent={{260,760},{340,840}}, + fileName= + "modelica://Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressure.svg"), + Line( + points={{-160,-700},{-160,-760}}, + color={0,0,0}, + visible=typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper), + Line( + points={{-160,-238},{-160,-300}}, + color={0,0,0}, + visible=typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow), + Polygon( + points={{260,805},{220,805},{220,660},{230,660},{230,795},{260,795},{ + 260,805}}, + lineColor={0,0,0}, + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None + and typCtlFanRet == Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure), + Polygon( + points={{492,605},{625,605},{625,440},{615,440},{615,595},{492,595},{ + 492,605}}, + lineColor={0,0,0}, + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None + and typCtlFanRet == Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured), + Rectangle( + extent={{340,805},{380,795}}, + lineColor={0,0,0}, + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None + and typCtlFanRet == Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure), + Polygon( + points={{-680,-95},{-725,-95},{-725,-340},{-715,-340},{-715,-105},{-680, + -105},{-680,-95}}, + lineColor={0,0,0}, + visible=typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure), + Polygon( + points={{-600,-95},{-555,-95},{-555,-340},{-565,-340},{-565,-105},{-600, + -105},{-600,-95}}, + lineColor={0,0,0}, + visible=typSecOut == Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure)}), + Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-180,-140},{180,140}})), + Documentation(info=" ++This class provides a standard interface for the outdoor/relief/return +air section of an air handler. +Typical components in that section include +
++This class provides a standard interface for the outdoor +air section of an air handler. +Typical components in that section include +
++This class provides a standard interface for the relief/return +air section of an air handler. +Typical components in that section include +
++This package contains interface classes. +
+")); +end Interfaces; diff --git a/Buildings/Templates/AirHandlersFans/Components/Interfaces/package.order b/Buildings/Templates/AirHandlersFans/Components/Interfaces/package.order new file mode 100644 index 00000000000..cd9ee37903c --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/Interfaces/package.order @@ -0,0 +1,6 @@ +PartialController +PartialControllerVAVMultizone +PartialHeatRecovery +PartialOutdoorReliefReturnSection +PartialOutdoorSection +PartialReliefReturnSection diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/MixedAirWithDamper.mo b/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/MixedAirWithDamper.mo new file mode 100644 index 00000000000..37f58c08f48 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/MixedAirWithDamper.mo @@ -0,0 +1,118 @@ +within Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection; +model MixedAirWithDamper "Mixed air system with return air damper" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection( + final typ=Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection.MixedAirWithDamper, + final typSecOut=secOut.typ, + final typSecRel=secRel.typ, + final typDamOut=secOut.typDamOut, + final typDamOutMin=secOut.typDamOutMin, + final typDamRel=secRel.typDamRel, + final typDamRet=damRet.typ, + final typFanRel=secRel.typFanRel, + final typFanRet=secRel.typFanRet, + final have_eco=true, + final have_recHea=recHea.typ<>Buildings.Templates.AirHandlersFans.Types.HeatRecovery.None); + + replaceable + Buildings.Templates.AirHandlersFans.Components.OutdoorSection.SingleDamper + secOut constrainedby + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection( + redeclare final package MediumAir = MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final dat=dat) + "Outdoor air section" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.AirHandlersFans.Components.OutdoorSection.SingleDamper secOut + "Single damper for ventilation and economizer, with airflow measurement station"), + choice(redeclare replaceable Buildings.Templates.AirHandlersFans.Components.OutdoorSection.DedicatedDampersAirflow secOut + "Separate dampers for ventilation and economizer, with airflow measurement station"), + choice(redeclare replaceable Buildings.Templates.AirHandlersFans.Components.OutdoorSection.DedicatedDampersPressure secOut + "Separate dampers for ventilation and economizer, with differential pressure sensor")), + Dialog(group="Configuration"), + Placement(transformation(extent={{-58,-94},{-22,-66}}))); + + replaceable + Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection.ReturnFan + secRel constrainedby + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection( + redeclare final package MediumAir = MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final dat=dat) + "Relief/return air section" + annotation ( + choices( + choice( + redeclare Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection.ReturnFan secRel + "Return fan with modulating relief damper"), + choice( + redeclare Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection.ReliefFan + secRel + "Relief fan with two-position relief damper"), + choice( + redeclare Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection.ReliefDamper + secRel + "Modulating relief damper without fan")), + Dialog(group="Configuration"), + Placement(transformation(extent={{-18,66},{18,94}}))); + + Buildings.Templates.Components.Dampers.Modulating damRet( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damRet, + final text_rotation=90) + "Return damper" + annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,0}))); + + // Currently only the configuration without heat recovery is supported. + replaceable Buildings.Templates.AirHandlersFans.Components.HeatRecovery.None recHea + constrainedby + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialHeatRecovery( + redeclare final package MediumAir = MediumAir, + final allowFlowReversal=allowFlowReversal) + "Heat recovery" + annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + +equation + /* Control point connection - start */ + connect(damRet.bus, bus.damRet); + connect(bus, secRel.bus); + connect(secOut.bus, bus); + connect(recHea.bus, bus); + /* Control point connection - end */ + connect(port_Rel, secRel.port_b) + annotation (Line(points={{-180,80},{-18,80}}, color={0,127,255})); + connect(secRel.port_a, port_Ret) + annotation (Line(points={{18,80},{180,80}}, color={0,127,255})); + connect(secRel.port_bRet, damRet.port_a) + annotation (Line(points={{0,66},{0,10}}, color={0,127,255})); + connect(port_Out, secOut.port_a) + annotation (Line(points={{-180,-80},{-58,-80}}, color={0,127,255})); + connect(secOut.port_b, port_Sup) + annotation (Line(points={{-22,-80},{180,-80}}, color={0,127,255})); + connect(damRet.port_b, port_Sup) + annotation (Line(points={{0,-10},{0,-80},{180,-80}}, color={0,127,255})); + connect(secRel.port_bPre, port_bPre) annotation (Line(points={{8,66},{8,60},{80, + 60},{80,140}}, color={0,127,255})); + connect(recHea.port_aRel, secRel.port_bHeaRec) annotation (Line(points={{-70,6}, + {-60,6},{-60,56},{-4,56},{-4,66}}, color={0,127,255})); + connect(secRel.port_aHeaRec, recHea.port_bRel) annotation (Line(points={{-8,66}, + {-8,60},{-100,60},{-100,6},{-90,6}}, color={0,127,255})); + connect(recHea.port_aOut, secOut.port_bHeaRec) annotation (Line(points={{-90,-6}, + {-100,-6},{-100,-60},{-48,-60},{-48,-66}}, color={0,127,255})); + connect(recHea.port_bOut, secOut.port_aHeaRec) annotation (Line(points={{-70,-6}, + {-60,-6},{-60,-56},{-44,-56},{-44,-66}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with an air economizer. +
+")); +end MixedAirWithDamper; diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/package.mo b/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/package.mo new file mode 100644 index 00000000000..39c3f35acb6 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/package.mo @@ -0,0 +1,20 @@ +within Buildings.Templates.AirHandlersFans.Components; +package OutdoorReliefReturnSection "Models for outdoor/relief/return air section" + extends Modelica.Icons.VariantsPackage; + + + + +annotation (Documentation(info=" ++Components inside that package represent the outdoor/relief/return air section of an +air handler. +They are composed of + +Buildings.Templates.AirHandlersFans.Components.OutdoorSection +and + +Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection. +
+")); +end OutdoorReliefReturnSection; diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/package.order b/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/package.order new file mode 100644 index 00000000000..4409476a142 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorReliefReturnSection/package.order @@ -0,0 +1 @@ +MixedAirWithDamper diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/DedicatedDampersAirflow.mo b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/DedicatedDampersAirflow.mo new file mode 100644 index 00000000000..99d22dad14e --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/DedicatedDampersAirflow.mo @@ -0,0 +1,96 @@ +within Buildings.Templates.AirHandlersFans.Components.OutdoorSection; +model DedicatedDampersAirflow + "Separate dampers for ventilation and economizer, with airflow measurement station" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection( + final typ=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow, + final typDamOut=damOut.typ, + final typDamOutMin=damOutMin.typ); + + Buildings.Templates.Components.Dampers.Modulating damOut( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damOut) + "Economizer outdoor air damper" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,0}))); + Buildings.Templates.Components.Dampers.Modulating damOutMin( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damOutMin) + "Minimum outdoor air damper" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,60}))); + + Buildings.Templates.Components.Sensors.Temperature TOut( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen=true, + final m_flow_nominal=mOutMin_flow_nominal) + "Outdoor air temperature sensor" + annotation (Placement(transformation(extent={{70,50},{90,70}}))); + Buildings.Templates.Components.Sensors.VolumeFlowRate VOutMin_flow( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen=true, + final m_flow_nominal=mOutMin_flow_nominal, + final typ=Buildings.Templates.Components.Types.SensorVolumeFlowRate.AFMS) + "Minimum outdoor air volume flow rate sensor" + annotation (Placement(transformation(extent={{110,50},{130,70}}))); + Buildings.Templates.Components.Sensors.SpecificEnthalpy hAirOut( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen= + typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb or + typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb, + final m_flow_nominal=mOutMin_flow_nominal) + "Outdoor air enthalpy sensor" + annotation (Placement(transformation(extent={{30,50},{50,70}}))); +equation + /* Control point connection - start */ + connect(damOut.bus, bus.damOut); + connect(damOutMin.bus, bus.damOutMin); + connect(TOut.y, bus.TOut); + connect(hAirOut.y, bus.hAirOut); + connect(VOutMin_flow.y, bus.VOutMin_flow); + /* Control point connection - end */ + connect(damOut.port_b, port_b) + annotation (Line(points={{10,0},{180,0}}, color={0,127,255})); + connect(TOut.port_b, VOutMin_flow.port_a) + annotation (Line(points={{90,60},{110,60}},color={0,127,255})); + connect(VOutMin_flow.port_b, port_b) annotation (Line(points={{130,60},{160, + 60},{160,0},{180,0}}, + color={0,127,255})); + connect(damOutMin.port_b, hAirOut.port_a) + annotation (Line(points={{10,60},{30,60}}, color={0,127,255})); + connect(hAirOut.port_b, TOut.port_a) + annotation (Line(points={{50,60},{70,60}}, color={0,127,255})); + connect(port_a, damOut.port_a) + annotation (Line(points={{-180,0},{-10,0}}, color={0,127,255})); + connect(damOutMin.port_a, damOut.port_a) annotation (Line(points={{-10,60},{ + -20,60},{-20,0},{-10,0}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with an air economizer and +minimum OA control with a separate minimum OA damper and airflow measurement. +
+"), Icon(graphics={ + Line( + points={{0,140},{0,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{-180,60},{0,60}}, + color={28,108,200}, + thickness=1)})); +end DedicatedDampersAirflow; diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/DedicatedDampersPressure.mo b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/DedicatedDampersPressure.mo new file mode 100644 index 00000000000..997a78c66e5 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/DedicatedDampersPressure.mo @@ -0,0 +1,98 @@ +within Buildings.Templates.AirHandlersFans.Components.OutdoorSection; +model DedicatedDampersPressure + "Separate dampers for ventilation and economizer, with differential pressure sensor" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection( + final typ=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure, + final typDamOut=damOut.typ, + final typDamOutMin=damOutMin.typ); + + Buildings.Templates.Components.Dampers.Modulating damOut( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damOut) + "Economizer outdoor air damper" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,0}))); + Buildings.Templates.Components.Dampers.TwoPosition damOutMin( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damOutMin) + "Minimum outdoor air damper" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,60}))); + + Buildings.Templates.Components.Sensors.Temperature TOut( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen=true, + final m_flow_nominal=mOutMin_flow_nominal) + "Outdoor air temperature sensor" + annotation (Placement(transformation(extent={{70,50},{90,70}}))); + Buildings.Templates.Components.Sensors.DifferentialPressure dpAirOutMin( + redeclare final package Medium = MediumAir, + final have_sen=true) + "Minimum outdoor air damper differential pressure sensor" + annotation (Placement(transformation(extent={{-10,90},{10,110}}))); + Buildings.Templates.Components.Sensors.SpecificEnthalpy hAirOut( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen= + typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb or + typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb, + final m_flow_nominal=mOutMin_flow_nominal) + "Outdoor air enthalpy sensor" + annotation (Placement(transformation(extent={{30,50},{50,70}}))); +equation + /* Control point connection - start */ + connect(damOut.bus, bus.damOut); + connect(damOutMin.bus, bus.damOutMin); + connect(TOut.y, bus.TOut); + connect(hAirOut.y, bus.hAirOut); + connect(dpAirOutMin.y, bus.dpAirOutMin); + /* Control point connection - end */ + connect(TOut.port_b, port_b) annotation (Line(points={{90,60},{160,60},{160,0}, + {180,0}}, color={0,127,255})); + connect(damOut.port_b, port_b) + annotation (Line(points={{10,0},{180,0}}, color={0,127,255})); + + connect(damOutMin.port_a, dpAirOutMin.port_a) annotation (Line(points={{-10,60}, + {-20,60},{-20,100},{-10,100}}, + color={0,127,255})); + connect(damOutMin.port_b, dpAirOutMin.port_b) annotation (Line(points={{10,60},{ + 20,60},{20,100},{10,100}}, + color={0,127,255})); + connect(damOutMin.port_b, hAirOut.port_a) + annotation (Line(points={{10,60},{30,60}}, color={0,127,255})); + connect(hAirOut.port_b, TOut.port_a) + annotation (Line(points={{50,60},{70,60}}, color={0,127,255})); + connect(port_a, damOut.port_a) + annotation (Line(points={{-180,0},{-10,0}}, color={0,127,255})); + connect(damOut.port_a, damOutMin.port_a) annotation (Line(points={{-10,0},{ + -20,0},{-20,60},{-10,60}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with an air economizer and +minimum OA control with a separate minimum OA damper and differential +pressure control. +
+"), Icon(graphics={ + Line( + points={{0,140},{0,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{-180,60},{0,60}}, + color={28,108,200}, + thickness=1)})); +end DedicatedDampersPressure; diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/SingleDamper.mo b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/SingleDamper.mo new file mode 100644 index 00000000000..655ae764472 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/SingleDamper.mo @@ -0,0 +1,78 @@ +within Buildings.Templates.AirHandlersFans.Components.OutdoorSection; +model SingleDamper + "Single damper for ventilation and economizer, with airflow measurement station" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection( + final typ=Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper, + final typDamOut=damOut.typ, + final typDamOutMin=Buildings.Templates.Components.Types.Damper.None); + + Buildings.Templates.Components.Dampers.Modulating damOut( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damOut) + "Outdoor air damper" + annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,0}))); + + Buildings.Templates.Components.Sensors.VolumeFlowRate VOut_flow( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen=true, + final m_flow_nominal=m_flow_nominal, + final typ=Buildings.Templates.Components.Types.SensorVolumeFlowRate.AFMS) + "Outdoor air volume flow rate sensor" + annotation (Placement(transformation(extent={{80,-10},{100,10}}))); + Buildings.Templates.Components.Sensors.Temperature TOut( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen=true, + final m_flow_nominal=m_flow_nominal) + "Outdoor air temperature sensor" + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Buildings.Templates.Components.Sensors.SpecificEnthalpy hAirOut( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversal, + final have_sen=typCtlEco == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb + or typCtlEco == Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb, + final m_flow_nominal=m_flow_nominal) "Outdoor air enthalpy sensor" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + +equation + /* Control point connection - start */ + connect(damOut.bus, bus.damOut); + connect(TOut.y, bus.TOut); + connect(hAirOut.y, bus.hAirOut); + connect(VOut_flow.y, bus.VOut_flow); + /* Control point connection - end */ + connect(TOut.port_b, VOut_flow.port_a) + annotation (Line(points={{70,0},{80,0}}, color={0,127,255})); + connect(VOut_flow.port_b, port_b) + annotation (Line(points={{100,0},{180,0}}, color={0,127,255})); + + connect(damOut.port_b, hAirOut.port_a) + annotation (Line(points={{10,0},{20,0}}, color={0,127,255})); + connect(hAirOut.port_b, TOut.port_a) + annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); + connect(port_a, damOut.port_a) + annotation (Line(points={{-180,0},{-10,0}}, color={0,127,255})); + annotation (Icon(graphics={ + Line( + points={{0,140},{0,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1)}), Documentation(info=" ++This model represents a configuration with an air economizer +and minimum OA control with a single common damper +and airflow measurement +
+")); +end SingleDamper; diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/package.mo b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/package.mo new file mode 100644 index 00000000000..f221f60f42b --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/package.mo @@ -0,0 +1,15 @@ +within Buildings.Templates.AirHandlersFans.Components; +package OutdoorSection "Models for outdoor air section" + extends Modelica.Icons.VariantsPackage; + + + + + +annotation (Documentation(info=" ++Components inside that package represent the outdoor air section of an +air handler. +
+")); +end OutdoorSection; diff --git a/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/package.order b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/package.order new file mode 100644 index 00000000000..ea94a32dbac --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/OutdoorSection/package.order @@ -0,0 +1,3 @@ +DedicatedDampersAirflow +DedicatedDampersPressure +SingleDamper diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/NoRelief.mo b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/NoRelief.mo new file mode 100644 index 00000000000..d2418b8a804 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/NoRelief.mo @@ -0,0 +1,54 @@ +within Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection; +model NoRelief "No relief branch" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection( + final typ=Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.NoRelief, + final typDamRel=Buildings.Templates.Components.Types.Damper.None, + final typFanRel=Buildings.Templates.Components.Types.Fan.None, + final typFanRet=fanRet.typ); + + replaceable Buildings.Templates.Components.Fans.None fanRet + constrainedby Buildings.Templates.Components.Interfaces.PartialFan( + redeclare final package Medium = MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final dat=dat.fanRet, + final have_senFlo= + typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured, + final text_flip=true) + "Return fan" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Fans.None fanRet + "No fan"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.SingleVariable fanRet + "Single fan - Variable speed"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.ArrayVariable fanRet + "Fan array - Variable speed")), + Dialog(group="Exhaust/relief/return section"), + Placement(transformation(extent={{70,-10},{50,10}}))); + +equation + /* Control point connection - start */ + connect(fanRet.bus, bus.fanRet); + /* Control point connection - end */ + connect(fanRet.port_b, splEco.port_1) + annotation (Line(points={{50,0},{10,0}}, color={0,127,255})); + connect(fanRet.port_a, port_a) + annotation (Line(points={{70,0},{180,0}}, color={0,127,255})); + annotation (Icon(graphics={ + Line( + points={{0,0},{180,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{0,0},{0,-140}}, + color={28,108,200}, + thickness=1)}), Documentation(info=" ++This model represents a configuration with an air economizer +and no relief branch. +The return fan is optional. +
+")); +end NoRelief; diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/NoReturn.mo b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/NoReturn.mo new file mode 100644 index 00000000000..758bf00210f --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/NoReturn.mo @@ -0,0 +1,62 @@ +within Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection; +model NoReturn "No return branch" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection( + final typ=Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.NoReturn, + final typDamRel=damRel.typ, + final typFanRel=Buildings.Templates.Components.Types.Fan.None, + final typFanRet=fanRet.typ); + + Buildings.Templates.Components.Dampers.TwoPosition damRel( + redeclare final package Medium = MediumAir, + final dat=dat.damRel, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final text_flip=true) + "Relief damper" + annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={-150,0}))); + replaceable Buildings.Templates.Components.Fans.SingleVariable fanRet + constrainedby Buildings.Templates.Components.Interfaces.PartialFan( + redeclare final package Medium = MediumAir, + final dat=dat.fanRet, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final have_senFlo= + typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured, + final text_flip=true) + "Return fan" + annotation (choices(choice(redeclare replaceable + Buildings.Templates.Components.Fans.SingleVariable fanRet + "Single fan - Variable speed"), choice(redeclare replaceable + Buildings.Templates.Components.Fans.ArrayVariable fanRet + "Fan array - Variable speed")), + Placement( + transformation(extent={{70,-10},{50,10}}))); + +equation + /* Control point connection - start */ + connect(fanRet.bus, bus.fanRet); + connect(damRel.bus, bus.damRel); + /* Control point connection - end */ + connect(port_b, damRel.port_b) + annotation (Line(points={{-180,0},{-160,0}}, color={0,127,255})); + connect(damRel.port_a, splEco.port_2) + annotation (Line(points={{-140,0},{-10,0}}, color={0,127,255})); + connect(splEco.port_1, fanRet.port_b) + annotation (Line(points={{10,0},{50,0}}, color={0,127,255})); + connect(fanRet.port_a, port_a) + annotation (Line(points={{70,0},{180,0}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with no air economizer +for 100% outdoor air applications (such as DOAS). +
+"), Icon(graphics={ + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1)})); +end NoReturn; diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReliefDamper.mo b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReliefDamper.mo new file mode 100644 index 00000000000..d58972dd50d --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReliefDamper.mo @@ -0,0 +1,45 @@ +within Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection; +model ReliefDamper "Modulating relief damper without fan" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection( + final typ=Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefDamper, + final typDamRel=damRel.typ, + final typFanRel=Buildings.Templates.Components.Types.Fan.None, + final typFanRet=Buildings.Templates.Components.Types.Fan.None); + + Buildings.Templates.Components.Dampers.Modulating damRel( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damRel, + final text_flip=true, + typBla=Buildings.Templates.Components.Types.DamperBlades.Opposed) + "Relief damper" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={-150,0}))); +equation + /* Control point connection - start */ + connect(damRel.bus, bus.damRel); + /* Control point connection - end */ + connect(port_b, damRel.port_b) + annotation (Line(points={{-180,0},{-160,0}}, color={0,127,255})); + connect(damRel.port_a, splEco.port_2) + annotation (Line(points={{-140,0},{-10,0}}, color={0,127,255})); + connect(splEco.port_1, port_a) + annotation (Line(points={{10,0},{180,0}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with an air economizer +and an actuated relief damper (modulating) without fan. +
+"), Icon(graphics={ + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{0,0},{0,-140}}, + color={28,108,200}, + thickness=1)})); +end ReliefDamper; diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReliefFan.mo b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReliefFan.mo new file mode 100644 index 00000000000..db8259aa454 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReliefFan.mo @@ -0,0 +1,64 @@ +within Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection; +model ReliefFan "Relief fan with two-position relief damper" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection( + final typ=Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefFan, + final typDamRel=damRel.typ, + final typFanRel=fanRel.typ, + final typFanRet=Buildings.Templates.Components.Types.Fan.None); + + Buildings.Templates.Components.Dampers.TwoPosition damRel( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final dat=dat.damRel, + final text_flip=true) + "Relief damper" + annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={-150,0}))); + replaceable Buildings.Templates.Components.Fans.SingleVariable fanRel + constrainedby Buildings.Templates.Components.Interfaces.PartialFan( + redeclare final package Medium = MediumAir, + final dat=dat.fanRel, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final have_senFlo=false, + final text_flip=true, + typSin=Buildings.Templates.Components.Types.FanSingle.Propeller) + "Relief fan" + annotation (choices( + choice(redeclare replaceable Buildings.Templates.Components.Fans.SingleVariable fanRet + "Single fan - Variable speed"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.ArrayVariable fanRet + "Fan array - Variable speed")), Placement( + transformation(extent={{-100,-10},{-120,10}}))); +equation + /* Control point connection - start */ + connect(fanRel.bus, bus.fanRel); + connect(damRel.bus, bus.damRel); + /* Control point connection - end */ + connect(port_b, damRel.port_b) + annotation (Line(points={{-180,0},{-160,0}}, color={0,127,255})); + connect(damRel.port_a, fanRel.port_b) + annotation (Line(points={{-140,0},{-120,0}}, color={0,127,255})); + connect(fanRel.port_a, splEco.port_2) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(splEco.port_1, port_a) + annotation (Line(points={{10,0},{180,0}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with an air economizer +and a relief fan with an actuated relief damper (two-position). +
+"), Icon(graphics={ + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{0,0},{0,-140}}, + color={28,108,200}, + thickness=1)})); +end ReliefFan; diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReturnFan.mo b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReturnFan.mo new file mode 100644 index 00000000000..b5fd39c4616 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/ReturnFan.mo @@ -0,0 +1,65 @@ +within Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection; +model ReturnFan "Return fan with modulating relief damper" + extends + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection( + final typ=Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReturnFan, + final typDamRel=damRel.typ, + final typFanRel=Buildings.Templates.Components.Types.Fan.None, + final typFanRet=fanRet.typ); + + Buildings.Templates.Components.Dampers.Modulating damRel( + redeclare final package Medium = MediumAir, + final dat=dat.damRel, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal, + final text_flip=true) + "Relief damper" + annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={-150,0}))); + replaceable Buildings.Templates.Components.Fans.SingleVariable fanRet + constrainedby Buildings.Templates.Components.Interfaces.PartialFan( + redeclare final package Medium = MediumAir, + final dat=dat.fanRet, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final have_senFlo= + typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured, + final text_flip=true) + "Return fan" + annotation (choices(choice(redeclare replaceable + Buildings.Templates.Components.Fans.SingleVariable fanRet + "Single fan - Variable speed"), choice(redeclare replaceable + Buildings.Templates.Components.Fans.ArrayVariable fanRet + "Fan array - Variable speed")), + Placement(transformation(extent={{70,-10},{50,10}}))); + +equation + /* Control point connection - start */ + connect(fanRet.bus, bus.fanRet); + connect(damRel.bus, bus.damRel); + /* Control point connection - end */ + connect(port_b, damRel.port_b) + annotation (Line(points={{-180,0},{-160,0}}, color={0,127,255})); + connect(fanRet.port_b, splEco.port_1) + annotation (Line(points={{50,0},{10,0}}, color={0,127,255})); + connect(damRel.port_a, splEco.port_2) + annotation (Line(points={{-140,0},{-10,0}}, color={0,127,255})); + connect(fanRet.port_a, port_a) + annotation (Line(points={{70,0},{180,0}}, color={0,127,255})); + annotation (Documentation(info=" ++This model represents a configuration with an air economizer +and a return fan with an actuated relief damper (modulating). +
+"), Icon(graphics={ + Line( + points={{-180,0},{180,0}}, + color={28,108,200}, + thickness=1), + Line( + points={{0,0},{0,-140}}, + color={28,108,200}, + thickness=1)})); +end ReturnFan; diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/package.mo b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/package.mo new file mode 100644 index 00000000000..7a4405a1d50 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/package.mo @@ -0,0 +1,15 @@ +within Buildings.Templates.AirHandlersFans.Components; +package ReliefReturnSection "Models for relief/return air section" + extends Modelica.Icons.VariantsPackage; + + + + + +annotation (Documentation(info=" ++Components inside that package represent the relief/return air section of an +air handler. +
+")); +end ReliefReturnSection; diff --git a/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/package.order b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/package.order new file mode 100644 index 00000000000..578eba9e032 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/ReliefReturnSection/package.order @@ -0,0 +1,5 @@ +NoRelief +NoReturn +ReliefDamper +ReliefFan +ReturnFan diff --git a/Buildings/Templates/AirHandlersFans/Components/package.mo b/Buildings/Templates/AirHandlersFans/Components/package.mo new file mode 100644 index 00000000000..3188303effb --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/package.mo @@ -0,0 +1,12 @@ +within Buildings.Templates.AirHandlersFans; +package Components "Package with component models" + extends Modelica.Icons.VariantsPackage; + + annotation (Documentation(info=" ++This package contains component models that are used in + +Buildings.Templates.AirHandlersFans. +
+")); +end Components; diff --git a/Buildings/Templates/AirHandlersFans/Components/package.order b/Buildings/Templates/AirHandlersFans/Components/package.order new file mode 100644 index 00000000000..5e7e1159a72 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Components/package.order @@ -0,0 +1,7 @@ +Controls +HeatRecovery +OutdoorReliefReturnSection +OutdoorSection +ReliefReturnSection +Data +Interfaces diff --git a/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo b/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo new file mode 100644 index 00000000000..ae07f81f1e1 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo @@ -0,0 +1,64 @@ +within Buildings.Templates.AirHandlersFans.Data; +record PartialAirHandler "Record for air handler interface class" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.AirHandlersFans.Types.Configuration typ + "Type of system" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanSup + "Type of supply fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanRet + "Type of return fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.Components.Types.Fan typFanRel + "Type of relief fan" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Boolean have_souChiWat + "Set to true if cooling coil requires fluid ports on the source side" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Boolean have_souHeaWat + "Set to true if heating coil requires fluid ports on the source side" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.AirHandlersFans.Types.Controller typCtl + "Type of controller" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter String id="" + "System tag" + annotation (Dialog(tab="Advanced")); + parameter String id_souChiWat="" + "CHW supply system tag" + annotation (Dialog(tab="Advanced", enable=have_souChiWat)); + parameter String id_souHeaWat="" + "HHW supply system tag" + annotation (Dialog(tab="Advanced", enable=have_souHeaWat)); + + replaceable parameter Buildings.Templates.AirHandlersFans.Components.Data.PartialController + ctl( + final typFanSup=typFanSup, + final typFanRel=typFanRel, + final typFanRet=typFanRet, + final typ=typCtl) + "Controller" + annotation (Dialog(group="Controls")); + + parameter Modelica.Units.SI.MassFlowRate mAirSup_flow_nominal + "Supply air mass flow rate" + annotation (Dialog(enable=typ<>Buildings.Templates.AirHandlersFans.Types.Configuration.ExhaustOnly)); + parameter Modelica.Units.SI.MassFlowRate mAirRet_flow_nominal + "Return air mass flow rate" + annotation (Dialog(enable=typ<>Buildings.Templates.AirHandlersFans.Types.Configuration.SupplyOnly)); + + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for the class + +Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler. +
+
+The tab Advanced
contains some optional parameters that can be used
+for workflow automation, but are not used for simulation.
+
+This record provides the set of sizing and operating parameters for the class + +Buildings.Templates.AirHandlersFans.VAVMultiZone. +
+")); +end VAVMultiZone; diff --git a/Buildings/Templates/AirHandlersFans/Data/package.mo b/Buildings/Templates/AirHandlersFans/Data/package.mo new file mode 100644 index 00000000000..b5d21b2fde9 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Data/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.AirHandlersFans; +package Data "Records for design and operating parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + +annotation (Documentation(info=" ++This package provides records for design and operating parameters. +
+")); +end Data; diff --git a/Buildings/Templates/AirHandlersFans/Data/package.order b/Buildings/Templates/AirHandlersFans/Data/package.order new file mode 100644 index 00000000000..d53cb21682b --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Data/package.order @@ -0,0 +1,2 @@ +PartialAirHandler +VAVMultiZone diff --git a/Buildings/Templates/AirHandlersFans/Interfaces/Bus.mo b/Buildings/Templates/AirHandlersFans/Interfaces/Bus.mo new file mode 100644 index 00000000000..1388e92f03c --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Interfaces/Bus.mo @@ -0,0 +1,42 @@ +within Buildings.Templates.AirHandlersFans.Interfaces; +expandable connector Bus "Control bus for air handler" + extends Modelica.Icons.SignalBus; + + Buildings.Templates.Components.Interfaces.Bus fanSup + "Supply fan points" + annotation (HideResult=false); + Buildings.Templates.Components.Interfaces.Bus fanRel + "Relief fan points" + annotation (HideResult=false); + Buildings.Templates.Components.Interfaces.Bus fanRet + "Return fan points" + annotation (HideResult=false); + + Buildings.Templates.Components.Interfaces.Bus coiHea + "Heating coil (preheat or reheat position, only one coil allowed) points" + annotation (HideResult=false); + Buildings.Templates.Components.Interfaces.Bus coiCoo + "Cooling coil points" + annotation (HideResult=false); + + Buildings.Templates.Components.Interfaces.Bus damOut + "OA damper points" + annotation (HideResult=false); + Buildings.Templates.Components.Interfaces.Bus damOutMin + "Minimum OA damper points" + annotation (HideResult=false); + Buildings.Templates.Components.Interfaces.Bus damRel + "Relief damper points" + annotation (HideResult=false); + Buildings.Templates.Components.Interfaces.Bus damRet + "Return damper points" + annotation (HideResult=false); + + annotation ( + defaultComponentName="bus", Documentation(info=" ++This expandable connector provides a standard interface for +all control signals required by an air handler controller. +
+")); +end Bus; diff --git a/Buildings/Templates/AirHandlersFans/Interfaces/PartialAirHandler.mo b/Buildings/Templates/AirHandlersFans/Interfaces/PartialAirHandler.mo new file mode 100644 index 00000000000..35c39095fa5 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Interfaces/PartialAirHandler.mo @@ -0,0 +1,236 @@ +within Buildings.Templates.AirHandlersFans.Interfaces; +partial model PartialAirHandler "Interface class for air handler" + inner replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium" + annotation(__ctrl_flow(enable=false)); + inner replaceable package MediumChiWat=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "CHW medium" + annotation(Dialog(enable=have_souChiWat), + __ctrl_flow(enable=false)); + inner replaceable package MediumHeaWat=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "HHW medium" + annotation(Dialog(enable=have_souHeaWat), + __ctrl_flow(enable=false)); + + parameter Buildings.Templates.AirHandlersFans.Types.Configuration typ + "Type of system" + annotation (Evaluate=true, Dialog(group="Configuration")); + + inner parameter Integer nZon(min=1) + "Number of served zones" + annotation ( + Evaluate=true, + Dialog(group="Configuration")); + + replaceable parameter + Buildings.Templates.AirHandlersFans.Data.PartialAirHandler dat( + final typ=typ, + final typFanSup=typFanSup, + final typFanRel=typFanRel, + final typFanRet=typFanRet, + final have_souChiWat=have_souChiWat, + final have_souHeaWat=have_souHeaWat) + "Design and operating parameters" + annotation (Placement(transformation(extent={{270,250},{290,270}}))); + + final parameter String id=dat.id + "System tag" + annotation (Dialog(group="Configuration")); + + parameter Boolean have_porRel= + typ==Buildings.Templates.AirHandlersFans.Types.Configuration.ExhaustOnly + "Set to true for relief (exhaust) fluid port" + annotation ( + Evaluate=true, + Dialog( + group="Configuration", + enable=false)); + parameter Boolean have_souChiWat + "Set to true if system uses CHW" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_souHeaWat + "Set to true if system uses HHW" + annotation (Evaluate=true, Dialog(group="Configuration")); + + inner parameter Buildings.Templates.Components.Types.Fan typFanSup + "Type of supply fan" + annotation (Evaluate=true, Dialog(group="Configuration")); + inner parameter Buildings.Templates.Components.Types.Fan typFanRet + "Type of return fan" + annotation (Evaluate=true, Dialog(group="Configuration")); + inner parameter Buildings.Templates.Components.Types.Fan typFanRel + "Type of relief fan" + annotation (Evaluate=true, Dialog(group="Configuration")); + + // Design parameters + final parameter Modelica.Units.SI.MassFlowRate mAirSup_flow_nominal= + dat.mAirSup_flow_nominal + "Supply air mass flow rate" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate mAirRet_flow_nominal= + dat.mAirRet_flow_nominal + "Return air mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal + "Total CHW mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal + "Total HHW mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.HeatFlowRate QChiWat_flow_nominal + "Total CHW heat flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.HeatFlowRate QHeaWat_flow_nominal + "Total HHW heat flow rate" + annotation (Dialog(group="Nominal condition")); + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations"), + __ctrl_flow(enable=false)); + + final parameter Boolean allowFlowReversalAir=true + "= true to allow flow reversal, false restricts to design direction - Air side" + annotation (Dialog(tab="Assumptions"), Evaluate=true, + __ctrl_flow(enable=false)); + parameter Boolean allowFlowReversalLiq=true + "= true to allow flow reversal, false restricts to design direction - CHW and HW side" + annotation (Dialog(tab="Assumptions", enable=have_souChiWat or have_souHeaWat), + Evaluate=true, + __ctrl_flow(enable=false)); + parameter Boolean show_T = false + "= true, if actual temperature at ports of subcomponents is computed" + annotation(Dialog(tab="Advanced",group="Diagnostics"), + __ctrl_flow(enable=false)); + + Modelica.Fluid.Interfaces.FluidPort_a port_Out( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.Configuration.ExhaustOnly + "Outdoor air intake" + annotation (Placement(transformation( + extent={{-310,-210},{-290,-190}}), iconTransformation(extent={{-210, + -110},{-190,-90}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_Sup( + redeclare final package Medium =MediumAir, + m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) if typ + == Buildings.Templates.AirHandlersFans.Types.Configuration.SupplyOnly or typ == + Buildings.Templates.AirHandlersFans.Types.Configuration.SingleDuct + "Supply air" annotation ( + Placement(transformation(extent={{290,-210},{310,-190}}), + iconTransformation(extent={{190,-110},{210,-90}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_SupCol( + redeclare final package Medium =MediumAir, + m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ == Buildings.Templates.AirHandlersFans.Types.Configuration.DualDuct + "Dual duct cold deck air supply" + annotation (Placement(transformation( + extent={{290,-250},{310,-230}}), iconTransformation(extent={{190, + -180},{210,-160}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_SupHot( + redeclare final package Medium =MediumAir, + m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ == Buildings.Templates.AirHandlersFans.Types.Configuration.DualDuct + "Dual duct hot deck air supply" + annotation (Placement( + transformation(extent={{290,-170},{310,-150}}), iconTransformation( + extent={{190,-40},{210,-20}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_Ret( + redeclare final package Medium =MediumAir, + m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.Configuration.SupplyOnly + "Return air" + annotation (Placement(transformation(extent={{290,-90},{310,-70}}), + iconTransformation(extent={{190,90},{210,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_Rel( + redeclare final package Medium = MediumAir, + m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.AirHandlersFans.Types.Configuration.SupplyOnly and have_porRel + "Relief (exhaust) air" + annotation (Placement(transformation(extent={{-310,-90},{-290,-70}}), + iconTransformation(extent={{-210,90}, {-190,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bChiWat( + redeclare final package Medium = MediumChiWat, + m_flow(max=if allowFlowReversalLiq then +Modelica.Constants.inf else 0), + h_outflow(start=MediumChiWat.h_default, nominal=MediumChiWat.h_default)) + if have_souChiWat + "CHW return port" annotation ( + Placement(transformation(extent={{50,-290},{70,-270}}), + iconTransformation(extent={{40,-210},{60,-190}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_aChiWat( + redeclare final package Medium = MediumChiWat, + m_flow(min=if allowFlowReversalLiq then -Modelica.Constants.inf else 0), + h_outflow(start=MediumChiWat.h_default, nominal=MediumChiWat.h_default)) + if have_souChiWat + "CHW supply port" annotation ( + Placement(transformation(extent={{90,-290},{110,-270}}), + iconTransformation(extent={{120,-210},{140,-190}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bHeaWat( + redeclare final package Medium = MediumHeaWat, + m_flow(max=if allowFlowReversalLiq then +Modelica.Constants.inf else 0), + h_outflow(start=MediumHeaWat.h_default, nominal=MediumHeaWat.h_default)) + if have_souHeaWat + "HHW return port" annotation ( + Placement(transformation(extent={{-30,-290},{-10,-270}}), + iconTransformation(extent={{-140,-210},{-120,-190}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_aHeaWat( + redeclare final package Medium = MediumHeaWat, + m_flow(min=if allowFlowReversalLiq then -Modelica.Constants.inf else 0), + h_outflow(start=MediumHeaWat.h_default, nominal=MediumHeaWat.h_default)) + if have_souHeaWat + "HHW supply port" annotation ( + Placement(transformation(extent={{10,-290},{30,-270}}), + iconTransformation(extent={{-60,-210},{-40,-190}}))); + Buildings.Templates.AirHandlersFans.Interfaces.Bus bus + "AHU control bus" + annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-300,0}), iconTransformation( + extent={{-20,-19},{20,19}}, + rotation=90, + origin={-199,160}))); + Buildings.BoundaryConditions.WeatherData.Bus busWea + "Weather bus" + annotation (Placement(transformation(extent={{-20,260},{20,300}}), + iconTransformation(extent={{-20,182},{20,218}}))); + Buildings.Templates.ZoneEquipment.Interfaces.Bus busTer[nZon] + "Terminal unit control bus" + annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=-90, + origin={300,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=-90, + origin={198,160}))); + +annotation ( + Icon(coordinateSystem(preserveAspectRatio=false, + extent={{-200,-200},{200,200}}), graphics={ + Text( + extent={{-155,-218},{145,-258}}, + textColor={0,0,255}, + textString="%name"), Rectangle( + extent={{-200,200},{200,-200}}, + lineColor={0,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), + Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-300,-280},{300, + 280}})), + Documentation(info=" ++This partial class provides a standard interface for air handler templates. +
+")); +end PartialAirHandler; diff --git a/Buildings/Templates/AirHandlersFans/Interfaces/package.mo b/Buildings/Templates/AirHandlersFans/Interfaces/package.mo new file mode 100644 index 00000000000..a48ce851615 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Interfaces/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.AirHandlersFans; +package Interfaces "Interface classes" +extends Modelica.Icons.InterfacesPackage; + +annotation (Documentation(info=" ++This package contains interface classes. +
+")); +end Interfaces; diff --git a/Buildings/Templates/AirHandlersFans/Interfaces/package.order b/Buildings/Templates/AirHandlersFans/Interfaces/package.order new file mode 100644 index 00000000000..bcf5a99f5ac --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Interfaces/package.order @@ -0,0 +1,2 @@ +Bus +PartialAirHandler diff --git a/Buildings/Templates/AirHandlersFans/Types.mo b/Buildings/Templates/AirHandlersFans/Types.mo new file mode 100644 index 00000000000..6b4da8eca3c --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Types.mo @@ -0,0 +1,68 @@ +within Buildings.Templates.AirHandlersFans; +package Types "Package with type definitions" + extends Modelica.Icons.TypesPackage; + type Configuration = enumeration( + SupplyOnly + "Supply only system", + ExhaustOnly + "Exhaust only system", + DualDuct + "Dual duct system with supply and return", + SingleDuct + "Single duct system with supply and return") + "Enumeration to configure the AHU"; + type Controller = enumeration( + G36VAVMultiZone + "Guideline 36 controller for multiple-zone VAV", + OpenLoop + "Open loop controller") + "Enumeration to configure the AHU controller"; + type ControlFanReturn = enumeration( + AirflowMeasured + "Airflow tracking with airflow measurement stations", + BuildingPressure + "Building pressure (via discharge static pressure)") + "Enumeration to configure the return fan control"; + // RFE: Add support for heat recovery. + type HeatRecovery = enumeration( + None + "No heat recovery", + FlatPlate + "Flat plate heat exchanger", + EnthalpyWheel + "Enthalpy wheel", + RunAroundCoil + "Run-around coil") + "Enumeration to configure the heat recovery"; + type OutdoorReliefReturnSection = enumeration( + HundredPctOutdoorAir + "100 % outdoor air system", + MixedAirWithDamper + "Mixed air system with return air damper - Optional economizer function", + MixedAirNoDamper + "Mixed air system without return air damper - No economizer function", + MixedAirNoRelief + "Mixed air system without relief branch - Optional economizer function") + "Enumeration to configure the outdoor/relief/return air section"; + /* RFE: Add support for the following configurations. + Barometric + "Barometric relief damper without fan", + */ + type ReliefReturnSection = enumeration( + NoRelief + "No relief branch", + NoReturn + "No return branch", + ReliefDamper + "Modulating relief damper without fan", + ReliefFan + "Relief fan with two-position relief damper", + ReturnFan + "Return fan with modulating relief damper") + "Enumeration to configure the relief/return air section"; + annotation (Documentation(info=" ++This package contains type definitions. +
+")); +end Types; diff --git a/Buildings/Templates/AirHandlersFans/VAVMultiZone.mo b/Buildings/Templates/AirHandlersFans/VAVMultiZone.mo new file mode 100644 index 00000000000..71637cb745b --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/VAVMultiZone.mo @@ -0,0 +1,771 @@ +within Buildings.Templates.AirHandlersFans; +model VAVMultiZone "Multiple-zone VAV" +/* + HACK: In Dymola only (ticket SR00860858-01), bindings for the parameter record + cannot be made final if propagation from a top-level record (whole building) + is needed. + Instead those parameter declarations are annoted with enable=false + in the record class. +*/ + extends Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler( + nZon(final min=2), + redeclare Buildings.Templates.AirHandlersFans.Data.VAVMultiZone dat( + typCoiHeaPre=coiHeaPre.typ, + typCoiCoo=coiCoo.typ, + typCoiHeaReh=coiHeaReh.typ, + typValCoiHeaPre=coiHeaPre.typVal, + typValCoiCoo=coiCoo.typVal, + typValCoiHeaReh=coiHeaReh.typVal, + typDamOut=secOutRel.typDamOut, + typDamOutMin=secOutRel.typDamOutMin, + typDamRet=secOutRel.typDamRet, + typDamRel=secOutRel.typDamRel, + typSecOut=secOutRel.typSecOut, + typCtl=ctl.typ, + buiPreCon=ctl.buiPreCon, + stdVen=ctl.stdVen), + final typ=Buildings.Templates.AirHandlersFans.Types.Configuration.SingleDuct, + final have_porRel=secOutRel.typ <> Types.OutdoorReliefReturnSection.MixedAirNoRelief, + final have_souChiWat=coiCoo.have_sou, + final have_souHeaWat=coiHeaPre.have_sou or coiHeaReh.have_sou, + final typFanSup=if + fanSupDra.typ <> Buildings.Templates.Components.Types.Fan.None then + fanSupDra.typ elseif fanSupBlo.typ <> Buildings.Templates.Components.Types.Fan.None + then fanSupBlo.typ else Buildings.Templates.Components.Types.Fan.None, + final typFanRel=secOutRel.typFanRel, + final typFanRet=secOutRel.typFanRet, + final mChiWat_flow_nominal=if coiCoo.have_sou then dat.coiCoo.mWat_flow_nominal else 0, + final mHeaWat_flow_nominal=(if coiHeaPre.have_sou then dat.coiHeaPre.mWat_flow_nominal else 0) + + (if coiHeaReh.have_sou then dat.coiHeaReh.mWat_flow_nominal else 0), + final QChiWat_flow_nominal=if coiCoo.have_sou then dat.coiCoo.Q_flow_nominal else 0, + final QHeaWat_flow_nominal=(if coiHeaPre.have_sou then dat.coiHeaPre.Q_flow_nominal else 0) + + (if coiHeaReh.have_sou then dat.coiHeaReh.Q_flow_nominal else 0)); + + final parameter Boolean have_senPreBui= + secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefDamper or + secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefFan or + secOutRel.typSecRel==Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReturnFan and + secOutRel.typCtlFanRet==Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure + "Set to true if building static pressure sensor is used" + annotation (Evaluate=true, Dialog(group="Configuration")); + + /* + RFE: Currently only the configuration with economizer is supported. + Hence, no choices annotation, but still replaceable to access parameter + dialog box of the component. + */ + inner Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.MixedAirWithDamper + secOutRel( + redeclare final package MediumAir = MediumAir, + final typCtlFanRet=ctl.typCtlFanRet, + final typCtlEco=ctl.typCtlEco, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversalAir, + dat( + final mOutMin_flow_nominal=dat.mOutMin_flow_nominal, + final damOut=dat.damOut, + final damOutMin=dat.damOutMin, + final damRel=dat.damRel, + final damRet=dat.damRet, + final fanRel=dat.fanRel, + final fanRet=dat.fanRet)) + "Outdoor/relief/return air section" + annotation ( + Dialog(group="Configuration"), Placement(transformation(extent={{-280,-220}, + {-120,-60}}))); + + Buildings.Templates.Components.Sensors.Temperature TAirMix( + redeclare final package Medium = MediumAir, + final have_sen=ctl.use_TMix, + final typ=Buildings.Templates.Components.Types.SensorTemperature.Averaging, + final m_flow_nominal=mAirSup_flow_nominal, + final allowFlowReversal=allowFlowReversalAir) + "Mixed air temperature sensor" + annotation (Placement( + transformation(extent={{-110,-210},{-90,-190}}))); + + inner replaceable Buildings.Templates.Components.Fans.None fanSupBlo + constrainedby Buildings.Templates.Components.Interfaces.PartialFan( + redeclare final package Medium = MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversalAir, + final dat=dat.fanSup, + final have_senFlo=ctl.typCtlFanRet== + Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured) + "Supply fan - Blow through" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Fans.None fanSupBlo + "No fan"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.SingleVariable fanSupBlo + "Single fan - Variable speed"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.ArrayVariable fanSupBlo + "Fan array - Variable speed")), + Dialog(group="Configuration", + enable=fanSupDra.typ==Buildings.Templates.Components.Types.Fan.None), + Placement(transformation(extent={{-50,-210},{-30,-190}}))); + + Buildings.Templates.Components.Sensors.Temperature TAirCoiHeaLvg( + redeclare final package Medium = MediumAir, + final have_sen=coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None + and coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None, + final typ=Buildings.Templates.Components.Types.SensorTemperature.Averaging, + final m_flow_nominal=mAirSup_flow_nominal, + final allowFlowReversal=allowFlowReversalAir) + "Heating coil leaving air temperature sensor" + annotation ( + Placement(transformation(extent={{40,-210},{60,-190}}))); + + Buildings.Templates.Components.Sensors.Temperature TAirCoiCooLvg( + redeclare final package Medium = MediumAir, + final have_sen=coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None + and coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None, + final typ=Buildings.Templates.Components.Types.SensorTemperature.Averaging, + final m_flow_nominal=mAirSup_flow_nominal, + final allowFlowReversal=allowFlowReversalAir) + "Cooling coil leaving air temperature sensor" + annotation ( + Placement(transformation(extent={{100,-210},{120,-190}}))); + + inner replaceable Buildings.Templates.Components.Fans.SingleVariable fanSupDra + constrainedby Buildings.Templates.Components.Interfaces.PartialFan( + redeclare final package Medium = MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversalAir, + final dat=dat.fanSup, + final have_senFlo=ctl.typCtlFanRet== + Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured) + "Supply fan - Draw through" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Fans.None fanSupDra + "No fan"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.SingleVariable fanSupDra + "Single fan - Variable speed"), + choice(redeclare replaceable Buildings.Templates.Components.Fans.ArrayVariable fanSupDra + "Fan array - Variable speed")), + Dialog(group="Configuration", + enable=fanSupBlo.typ==Buildings.Templates.Components.Types.Fan.None), + Placement(transformation(extent={{172,-210},{192,-190}}))); + + Buildings.Templates.Components.Sensors.Temperature TAirSup( + redeclare final package Medium = MediumAir, + final have_sen=true, + final typ=Buildings.Templates.Components.Types.SensorTemperature.Standard, + final m_flow_nominal=mAirSup_flow_nominal, + final allowFlowReversal=allowFlowReversalAir) + "Supply air temperature sensor" + annotation (Placement( + transformation(extent={{210,-210},{230,-190}}))); + + Buildings.Templates.Components.Sensors.DifferentialPressure pBui_rel( + redeclare final package Medium = MediumAir, + final have_sen=have_senPreBui, + final text_flip=true) + "Building static pressure" + annotation (Placement(transformation(extent={{10,30},{-10,50}}))); + + Buildings.Fluid.Sources.Outside out( + redeclare final package Medium=MediumAir, + final nPorts=3) + "Outdoor conditions" + annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-40,90}))); + Buildings.Fluid.Sources.Boundary_pT bui( + redeclare final package Medium = MediumAir, + final use_p_in=have_senPreBui, + final nPorts=1) + "Building absolute pressure in representative space" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={40,60}))); + + Buildings.Templates.Components.Sensors.Temperature TAirRet( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversalAir, + final have_sen= + secOutRel.have_eco and + (ctl.typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb or + ctl.typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb), + final typ=Buildings.Templates.Components.Types.SensorTemperature.Standard, + final m_flow_nominal=mAirRet_flow_nominal) + "Return air temperature sensor" + annotation ( + Placement(transformation(extent={{220,-90},{200,-70}}))); + + Buildings.Templates.Components.Sensors.SpecificEnthalpy hAirRet( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversalAir, + final have_sen= + secOutRel.have_eco and + ctl.typCtlEco==Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb, + final m_flow_nominal=mAirRet_flow_nominal) + "Return air enthalpy sensor" + annotation ( + Placement(transformation(extent={{250,-90},{230,-70}}))); + + Buildings.Templates.Components.Sensors.DifferentialPressure pAirSup_rel( + redeclare final package Medium = MediumAir, + final have_sen=true) + "Duct static pressure sensor" + annotation ( + Placement(transformation(extent={{250,-230},{270,-210}}))); + + inner replaceable Buildings.Templates.Components.Coils.WaterBasedHeating coiHeaPre( + redeclare final package MediumHeaWat=MediumHeaWat, + redeclare final Buildings.Templates.Components.Valves.TwoWayModulating val) + constrainedby Buildings.Templates.Components.Interfaces.PartialCoil( + final dat=dat.coiHeaPre, + redeclare final package MediumAir=MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversalAir=allowFlowReversalAir, + final allowFlowReversalLiq=allowFlowReversalLiq, + final show_T=show_T) + "Heating coil in preheat position" + annotation ( + choices( + choice( + redeclare replaceable Buildings.Templates.Components.Coils.None coiHeaPre + "No coil"), + choice( + redeclare replaceable Buildings.Templates.Components.Coils.WaterBasedHeating coiHeaPre( + redeclare final package MediumHeaWat=MediumHeaWat, + redeclare final Buildings.Templates.Components.Valves.TwoWayModulating val) + "Hot water coil with two-way valve"), + choice( + redeclare replaceable Buildings.Templates.Components.Coils.ElectricHeating coiHeaPre + "Modulating electric heating coil")), + Dialog(group="Configuration", + enable=coiHeaReh.typ==Buildings.Templates.Components.Types.Coil.None), + Placement(transformation(extent={{10,-210},{30,-190}}))); + + inner replaceable Buildings.Templates.Components.Coils.WaterBasedCooling coiCoo( + redeclare final package MediumChiWat=MediumChiWat, + redeclare final Buildings.Templates.Components.Valves.TwoWayModulating val) + constrainedby Buildings.Templates.Components.Interfaces.PartialCoil( + final dat=dat.coiCoo, + redeclare final package MediumAir=MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversalAir=allowFlowReversalAir, + final allowFlowReversalLiq=allowFlowReversalLiq, + final show_T=show_T) + "Cooling coil" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Coils.None coiCoo + "No coil"), + choice(redeclare replaceable Buildings.Templates.Components.Coils.WaterBasedCooling coiCoo( + redeclare final package MediumChiWat=MediumChiWat, + redeclare final Buildings.Templates.Components.Valves.TwoWayModulating val) + "Chilled water coil with two-way valve")), + Dialog(group="Configuration"), + Placement(transformation(extent={{70,-210},{90,-190}}))); + inner replaceable Buildings.Templates.Components.Coils.None coiHeaReh + constrainedby Buildings.Templates.Components.Interfaces.PartialCoil( + final dat=dat.coiHeaReh, + redeclare final package MediumAir=MediumAir, + final energyDynamics=energyDynamics, + final allowFlowReversalAir=allowFlowReversalAir, + final allowFlowReversalLiq=allowFlowReversalLiq, + final show_T=show_T) + "Heating coil in reheat position" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Coils.None coiHeaReh + "No coil"), + choice(redeclare replaceable Buildings.Templates.Components.Coils.WaterBasedHeating coiHeaReh( + redeclare final package MediumHeaWat=MediumHeaWat) + "Hot water coil"), + choice( + redeclare replaceable Buildings.Templates.Components.Coils.ElectricHeating coiHeaReh + "Modulating electric heating coil")), + Dialog(group="Configuration", + enable=coiHeaPre.typ==Buildings.Templates.Components.Types.Coil.None and + ctl.typ<>Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone), + Placement(transformation(extent={{130,-210},{150,-190}}))); + Buildings.Fluid.FixedResistances.Junction junHeaWatSup( + redeclare final package Medium = MediumHeaWat, + final m_flow_nominal=mHeaWat_flow_nominal*{1,-1,-1}, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + dp_nominal=fill(0, 3), + final portFlowDirection_1=if allowFlowReversalLiq then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Entering, + final portFlowDirection_2=if allowFlowReversalLiq then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Leaving, + final portFlowDirection_3=if allowFlowReversalLiq then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Leaving) if have_souHeaWat + "HHW supply junction" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={20,-260}))); + Buildings.Fluid.FixedResistances.Junction junHeaWatRet( + redeclare final package Medium = MediumHeaWat, + final m_flow_nominal=mHeaWat_flow_nominal*{1,-1,1}, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + dp_nominal=fill(0, 3), + final portFlowDirection_1=if allowFlowReversalLiq then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Entering, + final portFlowDirection_2=if allowFlowReversalLiq then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Entering, + final portFlowDirection_3=if allowFlowReversalLiq then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Leaving) if have_souHeaWat + "HHW return junction" annotation ( + Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={-20,-240}))); + inner replaceable Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone ctl + constrainedby + Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone( + final dat=dat.ctl, + final nZon=nZon) + "Control selections" + annotation ( + Dialog(group="Controls"), + Placement(transformation(extent={{-220,-10},{-200,10}}))); + +initial equation + assert(typFanSup<>Buildings.Templates.Components.Types.Fan.None, + "In "+ getInstanceName() + ": "+ + "The template is configured with no supply fan, which is not supported."); + assert(not (fanSupBlo.typ<>Buildings.Templates.Components.Types.Fan.None and + fanSupDra.typ<>Buildings.Templates.Components.Types.Fan.None), + "In "+ getInstanceName() + ": "+ + "The template is configured with both a blow-through fan and a draw-through fan, which is not supported."); +equation + /* Control point connection - start */ + connect(TAirMix.y, bus.TAirMix); + connect(TAirCoiHeaLvg.y, bus.TAirCoiHeaLvg); + connect(TAirSup.y, bus.TAirSup); + connect(pAirSup_rel.y, bus.pAirSup_rel); + connect(hAirRet.y, bus.hAirRet); + connect(TAirRet.y, bus.TAirRet); + connect(fanSupDra.bus, bus.fanSup); + connect(fanSupBlo.bus, bus.fanSup); + connect(coiHeaPre.bus, bus.coiHea); + connect(coiCoo.bus, bus.coiCoo); + connect(coiHeaReh.bus, bus.coiHea); + connect(secOutRel.bus, bus); + connect(bui.p_in, bus.pBui); + connect(pBui_rel.y, bus.pBui_rel); + /* Control point connection - stop */ + + connect(port_aChiWat, coiCoo.port_aSou) annotation (Line(points={{100,-280},{ + 100,-268},{85,-268},{85,-210}}, + color={0,127,255})); + connect(coiCoo.port_bSou, port_bChiWat) annotation (Line(points={{75,-210},{ + 75,-268},{60,-268},{60,-280}}, + color={0,127,255})); + connect(busWea,coiCoo.busWea) annotation (Line( + points={{0,280},{0,100},{76,100},{76,-190}}, + color={255,204,51}, + thickness=0.5)); + connect(TAirMix.port_b, fanSupBlo.port_a) + annotation (Line(points={{-90,-200},{-50,-200}}, color={0,127,255})); + connect(coiHeaReh.port_b, fanSupDra.port_a) + annotation (Line(points={{150,-200},{172,-200}}, color={0,127,255})); + connect(busWea, out.weaBus) annotation (Line( + points={{0,280},{0,100},{-39.8,100}}, + color={255,204,51}, + thickness=0.5)); + connect(pBui_rel.port_b, out.ports[1]) annotation (Line(points={{-10,40},{-40, + 40},{-40,80},{-41.3333,80}}, + color={0,127,255})); + connect(bui.ports[1], pBui_rel.port_a) annotation (Line(points={{40,50},{40,40}, + {10,40}}, color={0,127,255})); + + connect(ctl.busTer, busTer) annotation (Line( + points={{-200,0},{300,0}}, + color={255,204,51}, + thickness=0.5), Text( + string="%second", + index=1, + extent={{6,3},{6,3}}, + horizontalAlignment=TextAlignment.Left)); + connect(ctl.bus, bus) annotation (Line( + points={{-220,0},{-300,0}}, + color={255,204,51}, + thickness=0.5), Text( + string="%second", + index=1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + connect(port_Ret, hAirRet.port_a) + annotation (Line(points={{300,-80},{250,-80}}, color={0,127,255})); + connect(hAirRet.port_b, TAirRet.port_a) + annotation (Line(points={{230,-80},{220,-80}}, color={0,127,255})); + connect(coiHeaPre.port_b, TAirCoiHeaLvg.port_a) + annotation (Line(points={{30,-200},{40,-200}}, color={0,127,255})); + connect(TAirCoiHeaLvg.port_b, coiCoo.port_a) + annotation (Line(points={{60,-200},{70,-200}}, color={0,127,255})); + connect(coiCoo.port_b, TAirCoiCooLvg.port_a) + annotation (Line(points={{90,-200},{100,-200}}, color={0,127,255})); + connect(TAirCoiCooLvg.port_b, coiHeaReh.port_a) + annotation (Line(points={{120,-200},{130,-200}}, color={0,127,255})); + connect(secOutRel.port_Sup, TAirMix.port_a) + annotation (Line(points={{-120,-200},{-110,-200}}, color={0,127,255})); + connect(secOutRel.port_bPre, out.ports[2]) annotation (Line(points={{-162,-60}, + {-162,80},{-40,80}}, color={0,127,255})); + connect(port_Rel, secOutRel.port_Rel) + annotation (Line(points={{-300,-80},{-280,-80}}, color={0,127,255})); + connect(port_Out, secOutRel.port_Out) + annotation (Line(points={{-300,-200},{-280,-200}}, color={0,127,255})); + connect(TAirSup.port_b, port_Sup) + annotation (Line(points={{230,-200},{300,-200}}, color={0,127,255})); + connect(TAirSup.port_b, pAirSup_rel.port_a) annotation (Line(points={{230,-200}, + {240,-200},{240,-220},{250,-220}}, color={0,127,255})); + connect(fanSupDra.port_b, TAirSup.port_a) + annotation (Line(points={{192,-200},{210,-200}}, color={0,127,255})); + connect(port_aHeaWat, junHeaWatSup.port_1) + annotation (Line(points={{20,-280},{20,-270}}, color={0,127,255})); + connect(port_bHeaWat, junHeaWatRet.port_2) + annotation (Line(points={{-20,-280},{-20,-250}}, color={0,127,255})); + connect(junHeaWatSup.port_3, coiHeaReh.port_aSou) annotation (Line(points={{ + 30,-260},{145,-260},{145,-210}}, color={0,127,255})); + connect(coiHeaReh.port_bSou, junHeaWatRet.port_3) annotation (Line(points={{135, + -210},{135,-240},{-10,-240}}, color={0,127,255})); + connect(coiHeaPre.port_bSou, junHeaWatRet.port_1) annotation (Line(points={{15, + -210},{15,-220},{-20,-220},{-20,-230}}, color={0,127,255})); + connect(junHeaWatSup.port_2, coiHeaPre.port_aSou) annotation (Line(points={{20,-250}, + {20,-220},{25,-220},{25,-210}}, color={0,127,255})); + connect(out.ports[3], pAirSup_rel.port_b) annotation (Line(points={{-38.6667, + 80},{280,80},{280,-220},{270,-220}}, + color={0,127,255})); + connect(secOutRel.port_Ret, TAirRet.port_b) annotation (Line(points={{-120,-80.2}, + {40,-80.2},{40,-80},{200,-80}}, color={0,127,255})); + connect(fanSupBlo.port_b, coiHeaPre.port_a) + annotation (Line(points={{-30,-200},{10,-200}}, color={0,127,255})); + annotation ( + defaultComponentName="VAV", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-200,120},{200,80}}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + fillColor={0,127,127}, + lineColor={0,127,127}), + Rectangle( + extent={{-200,-80},{200,-120}}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + fillColor={0,127,127}, + lineColor={0,127,127}), + Ellipse( + extent={{110,-80},{150,-120}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Sphere, + fillColor={0,100,199}, + visible=typFanSup <> Buildings.Templates.Components.Types.Fan.None), + Polygon( + points={{130,-81},{130,-119},{149,-100},{130,-81}}, + lineColor={0,0,0}, + pattern=LinePattern.None, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={255,255,255}, + visible=typFanSup <> Buildings.Templates.Components.Types.Fan.None), + Ellipse( + extent={{-20,120},{20,80}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Sphere, + fillColor={0,100,199}, + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None + or typFanRel <> Buildings.Templates.Components.Types.Fan.None), + Polygon( + points={{0,119},{0,81},{-19,100},{0,119}}, + lineColor={0,0,0}, + pattern=LinePattern.None, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={255,255,255}, + visible=typFanRet <> Buildings.Templates.Components.Types.Fan.None + or typFanRel <> Buildings.Templates.Components.Types.Fan.None), + Rectangle( + extent={{48,-80},{78,-120}}, + lineColor={0,0,0}, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid, + lineThickness=0.5, + visible=coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None), + Line( + points={{78,-80},{48,-120}}, + color={0,0,0}, + thickness=0.5, + visible=coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None), + Rectangle( + extent={{-78,-80},{-48,-120}}, + lineColor={0,0,0}, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid, + lineThickness=0.5, + visible=coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None + or coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None), + Line( + points={{-48,-80},{-78,-120}}, + color={0,0,0}, + thickness=0.5, + visible=coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None + or coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None), + Line( + points={{-160,-80},{-180,-120}}, + color={0,0,0}, + thickness=0.5), + Ellipse( + extent={{-174,-96},{-166,-104}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={0,0,0}), + Line( + points={{-160,120},{-180,80}}, + color={0,0,0}, + thickness=0.5), + Ellipse( + extent={{-174,104},{-166,96}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={0,0,0}), + Rectangle( + extent={{-80,20},{80,-20}}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + fillColor={0,127,127}, + lineColor={0,127,127}, + origin={-130,0}, + rotation=-90), + Line( + points={{20,10},{-20,-10}}, + color={0,0,0}, + thickness=0.5, + origin={-130,0}, + rotation=360), + Ellipse( + extent={{-134,4},{-126,-4}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={0,0,0}), + Line( + points={{50,-200},{50,-120}}, + color={28,108,200}, + pattern=LinePattern.Dash, + thickness=5, + visible=have_souChiWat), + Line( + points={{-50,-200},{-50,-120}}, + color={238,46,47}, + thickness=5, + visible=have_souHeaWat), + Line( + points={{130,-200},{130,-194},{76,-194},{76,-120}}, + color={28,108,200}, + thickness=5, + visible=have_souChiWat), + Line( + points={{-130,-200},{-130,-194},{-76,-194},{-76,-120}}, + color={238,46,47}, + thickness=5, + visible=have_souHeaWat, + pattern=LinePattern.Dash)}), +Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-300,-280},{300,280}}), + graphics={ + Line(points={{300,-70},{-120,-70}}, color={0,0,0}), + Line(points={{300,-90},{-120,-90}}, color={0,0,0}), + Line(points={{300,-210},{-120,-210}}, color={0,0,0}), + Line(points={{300,-190},{-120,-190}}, color={0,0,0}), + Line( + visible=have_senPreBui, + points={{-16,40},{-10,40}}, + color={0,0,0}, + thickness=1), + Line( + visible=have_senPreBui, + points={{16,40},{10,40}}, + color={0,0,0}, + thickness=1), + Text( + visible=have_senPreBui, + extent={{18,46},{60,34}}, + textColor={0,0,0}, + horizontalAlignment=TextAlignment.Left, + fontName="sans-serif", + textString="REPRESENTATIVE SPACE INSIDE BUILDING"), + Text( + visible=have_senPreBui, + extent={{-60,46},{-18,34}}, + textColor={0,0,0}, + horizontalAlignment=TextAlignment.Right, + fontName="sans-serif", + textString="REFERENCE OUTSIDE BUILDING"), + Polygon(points={{251,-220},{251,-206},{250,-206},{250,-221},{256,-221},{ + 256,-220},{251,-220}}, lineColor={0,0,0}), + Rectangle(extent={{264,-220},{270,-221}}, lineColor={0,0,0})}), + Documentation(info=" ++This template represents a multiple-zone VAV air handler for +a single duct system serving at least two terminal units. +
+
+The possible configuration options are enumerated in the table below.
+The user may refer to ASHRAE (2021) for further details.
+The first option displayed in bold characters corresponds to the default configuration.
+
Configuration parameter | Options | Notes |
---|---|---|
Outdoor air section | +
+Single damper for ventilation and economizer, with airflow measurement station +Separate dampers for ventilation and economizer, with airflow measurement station +Separate dampers for ventilation and economizer, with differential pressure sensor + |
++ |
Relief/return air section | +
+Return fan with modulating relief damper +Modulating relief damper without fan +Relief fan with two-position relief damper + |
+Nonactuated barometric relief is currently not supported. | +
Supply fan - Blow-through position | +
+No fan +Single fan - Variable speed +Fan array - Variable speed + |
+At least one supply fan must be specified, either in blow-through
+or draw-through position. Those two configurations are exclusive from
+one another. +ASHRAE Guideline 36 does not have any particular logic yet for handling fan arrays. +If a fan array is selected, all of the fans are currently controlled together at +the same speed, regardless of the number of VFDs. + |
+
Heating coil - Preheat position | +
+Hot water coil with two-way valve +Modulating electric heating coil +No coil + |
++ |
Cooling coil | +
+Chilled water coil with two-way valve +No coil + |
++ |
Heating coil - Reheat position | ++No coil + | ++ASHRAE Guideline 36 does not support heating coils in reheat position +yet. + | +
Supply fan - Draw-through position | +
+Single fan - Variable speed +Fan array - Variable speed +No fan + |
+At least one supply fan must be specified, either in blow-through
+or draw-through position. Those two configurations are exclusive from
+one another. +ASHRAE Guideline 36 does not have any particular logic yet for handling fan arrays. +If a fan array is selected, all of the fans are currently controlled together at +the same speed, regardless of the number of VFDs. + |
+
Return fan | +
+Single fan - Variable speed +Fan array - Variable speed +No fan + |
+The relief fan and the return fan are both optional and +they are exclusive from one another. | +
Relief fan | +
+No fan +Single fan - Variable speed +Fan array - Variable speed + |
+The relief fan and the return fan are both optional and +they are exclusive from one another. | +
Controller | ++ASHRAE Guideline 36 controller + | ++An open loop controller is also available for validation purposes only. + | +
Exhaust fan | ++Not available: see note + | +All exhaust fans that normally operate with the air handler must +be configured separately, by means of a dedicated template. + + | +
Heat recovery | ++Not available: see note + | +Currently no heat recovery equipment is supported. + + | +
+The duct static pressure sensors use the outdoor absolute pressure +as an approximation of the reference pressure in the mechanical room +where the air handler is located. +
+
+When a building static pressure measurement is required by the control
+sequence
+(ctl.typCtlFanRet=AirHandlersFans.Types.ControlFanReturn.BuildingPressure
),
+the corresponding sensor pBui_rel
is instantiated
+within the current class.
+In this case, an additional variable pBui
needs to be
+connected to the control bus to pass in the value of the absolute pressure
+in a representative space of the building.
+This is a modeling requirement, the actual control point remains the
+relative building static pressure.
+
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Outdoor air section | No economizer |
Relief/return air section | No economizer |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Heating coil | Modulating electric heating coil - Preheat position |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Cooling coil | Evaporator coil with multi-stage compressor |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Cooling coil | Evaporator coil with variable speed compressor |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Heating coil | Hot water coil - Three-way modulating valve - Reheat position |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Heating coil | Hot water coil - Two-way modulating valve - Preheat position |
Cooling coil | Chilled water coil - Two-way modulating valve |
Controller | Guideline 36 controller - Return fan with airflow tracking control |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Heating coil | Hot water coil - Two-way modulating valve - Preheat position |
Cooling coil | Chilled water coil - Two-way modulating valve |
Controller | Guideline 36 controller - Return fan with building pressure control |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Outdoor air section | Separate dedicated OA dampers with differential pressure sensor |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Relief/return air section | Relief fan with two-position relief damper |
Return fan | No fan |
Relief fan | Single fan - Variable speed |
+This is a configuration model with the same default options as
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+except for the following options.
+
Component | Configuration |
---|---|
Supply fan | Single fan - Variable speed - Blow-through position |
+This package contains models used for validation purposes. +
+")); +end AirHandlersFans; diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/AirHandlersFans/package.order b/Buildings/Templates/AirHandlersFans/Validation/UserProject/AirHandlersFans/package.order new file mode 100644 index 00000000000..26399a7d0a3 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/AirHandlersFans/package.order @@ -0,0 +1,10 @@ +VAVMZBase +VAVMZCoilElectricHeating +VAVMZCoilEvaporatorMultiStage +VAVMZCoilEvaporatorVariable +VAVMZCoilWaterHeating3WVReheat +VAVMZControlG36Airflow +VAVMZControlG36Pressure +VAVMZDedicatedDampersPressure +VAVMZFanRelief +VAVMZFanSupplyBlowThrough diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/AllSystems.mo b/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/AllSystems.mo new file mode 100644 index 00000000000..7f5ee5c2e4f --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/AllSystems.mo @@ -0,0 +1,110 @@ +within Buildings.Templates.AirHandlersFans.Validation.UserProject.Data; +class AllSystems "Top-level (whole building) system parameters" + extends Buildings.Templates.Data.AllSystems; + + /* + The construct below where a replaceable model is used inside the `outer` + component declaration is for validation purposes only, where various configuration + classes are tested with the same instance name `VAV_1`. + It is needed here because + - the `inner` instance must be a subtype of the `outer` component, and + - the `outer` component references only the subcomponents from its own type + (as opposed to all the subcomponents from the `inner` type), and + - modification of an outer declaration is prohibited. + The standard export workflow should use an explicit reference to the configuration + class for each MZVAV model instance. + */ + replaceable model VAV = + Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler + "Model of MZVAV"; + + outer VAV VAV_1 + "Instance of MZVAV model"; + + parameter Buildings.Templates.AirHandlersFans.Data.VAVMultiZone dat_VAV_1( + final typ=VAV_1.typ, + final typFanSup=VAV_1.typFanSup, + final typFanRet=VAV_1.typFanRet, + final typFanRel=VAV_1.typFanRel, + final have_souChiWat=VAV_1.have_souChiWat, + final have_souHeaWat=VAV_1.have_souHeaWat, + final typCoiHeaPre=VAV_1.coiHeaPre.typ, + final typCoiCoo=VAV_1.coiCoo.typ, + final typCoiHeaReh=VAV_1.coiHeaReh.typ, + final typValCoiHeaPre=VAV_1.coiHeaPre.typVal, + final typValCoiCoo=VAV_1.coiCoo.typVal, + final typValCoiHeaReh=VAV_1.coiHeaReh.typVal, + final typDamOut=VAV_1.secOutRel.typDamOut, + final typDamOutMin=VAV_1.secOutRel.typDamOutMin, + final typDamRet=VAV_1.secOutRel.typDamRet, + final typDamRel=VAV_1.secOutRel.typDamRel, + final typCtl=VAV_1.ctl.typ, + final typSecOut=VAV_1.ctl.typSecOut, + final buiPreCon=VAV_1.ctl.buiPreCon, + final stdVen=VAV_1.ctl.stdVen, + id="VAV_1", + damOut(dp_nominal=15), + damOutMin(dp_nominal=15), + damRel(dp_nominal=15), + damRet(dp_nominal=15), + mOutMin_flow_nominal=0.2, + fanSup(m_flow_nominal=1, dp_nominal=500), + fanRel(m_flow_nominal=1, dp_nominal=200), + fanRet(m_flow_nominal=1, dp_nominal=200), + coiHeaPre( + cap_nominal=1e4, + dpAir_nominal=100, + dpWat_nominal=0.5e4, + dpValve_nominal=0.3e4, + mWat_flow_nominal=1e4/4186/10, + TAirEnt_nominal=273.15, + TWatEnt_nominal=50 + 273.15), + coiHeaReh( + cap_nominal=1e4, + dpAir_nominal=100, + dpWat_nominal=0.5e4, + dpValve_nominal=0.3e4, + mWat_flow_nominal=1e4/4186/10, + TAirEnt_nominal=273.15, + TWatEnt_nominal=50 + 273.15), + coiCoo( + cap_nominal=1e4, + dpAir_nominal=100, + dpWat_nominal=3e4, + dpValve_nominal=2e4, + mWat_flow_nominal=1e4/4186/5, + TAirEnt_nominal=30 + 273.15, + TWatEnt_nominal=7 + 273.15, + wAirEnt_nominal=0.012), + ctl( + VOutUnc_flow_nominal=0.4, + VOutTot_flow_nominal=0.5, + VOutAbsMin_flow_nominal=0.3, + VOutMin_flow_nominal=0.4, + dpDamOutMinAbs=10, + dpDamOutMin_nominal=15, + pAirSupSet_rel_max=500, + pAirRetSet_rel_min=10, + pAirRetSet_rel_max=40, + yFanSup_min=0.1, + yFanRel_min=0.1, + yFanRet_min=0.1, + dVFanRet_flow=0.1, + TAirSupSet_min=12+273.15, + TAirSupSet_max=18+273.15, + TOutRes_min=16+273.15, + TOutRes_max=21+273.15)) + "Parameters for system VAV_1" + annotation (Dialog(group="Air handlers and fans")); + +annotation ( + defaultComponentPrefixes = "inner parameter", + defaultComponentName = "datAll", + Documentation(info=" ++This class provides the set of sizing and operating parameters for +the whole HVAC system. +It is aimed for validation purposes only. +
+")); +end AllSystems; diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/package.mo b/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/package.mo new file mode 100644 index 00000000000..2ad36748e54 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates.AirHandlersFans.Validation.UserProject; +package Data "Package with classes for storing system parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + +annotation (Documentation(info=" ++This package provides records for design and operating parameters +that are used for validation purposes. +
+")); +end Data; diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/package.order b/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/package.order new file mode 100644 index 00000000000..3831742ec60 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/Data/package.order @@ -0,0 +1 @@ +AllSystems diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/VAVBoxControlPoints.mo b/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/VAVBoxControlPoints.mo new file mode 100644 index 00000000000..2bd0aa1a9cd --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/VAVBoxControlPoints.mo @@ -0,0 +1,116 @@ +within Buildings.Templates.AirHandlersFans.Validation.UserProject.ZoneEquipment; +block VAVBoxControlPoints "Emulation of VAV box control points" + extends Modelica.Blocks.Icons.Block; + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen + "Ventilation standard" + annotation(Evaluate=true); + + Buildings.Templates.ZoneEquipment.Interfaces.Bus bus + "Terminal unit control bus" + annotation (Placement(transformation( + extent={{-20,20},{20,-20}}, + rotation=90, + origin={200,0}), iconTransformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={100,0}))); + + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant tNexOcc(final k=3600) + "Time next occupancy" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant VAirDis_flow(final k=1) + annotation (Placement(transformation(extent={{-140,-50},{-120,-30}}))); + Buildings.Controls.OBC.CDL.Integers.Sources.Constant yReqZonTemRes(final k=1) + "Request" + annotation (Placement(transformation(extent={{-140,-110},{-120,-90}}))); + Buildings.Controls.OBC.CDL.Integers.Sources.Constant yReqZonPreRes(final k=1) + "Request" + annotation (Placement(transformation(extent={{-140,-150},{-120,-130}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TAirDis(final k=303.15) + "Discharge temperature" + annotation (Placement(transformation(extent={{-140,30},{-120,50}}))); + + Controls.OBC.CDL.Integers.Sources.Constant uOpeMod( + k=Buildings.Controls.OBC.ASHRAE.G36.Types.OperationModes.occupied) + "Operating mode" + annotation (Placement(transformation(extent={{40,10},{60,30}}))); + Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneStatus sta + "Evaluate zone temperature status" + annotation (Placement(transformation(extent={{100,-74},{120,-46}}))); + Controls.OBC.CDL.Continuous.Sources.Constant cooDowTim(final k=1800) + "Cooling down time" + annotation (Placement(transformation(extent={{40,-50},{60,-30}}))); + Controls.OBC.CDL.Continuous.Sources.Constant warUpTim(final k=1800) + "Warm-up time" + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints setMinOA_T24( + VOccMin_flow=2.5e-3, + VAreMin_flow=3e-3, + VMin_flow=5e-3) if stdVen== + Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24 + "Zone level calculation of the minimum outdoor airflow setpoint" + annotation (Placement(transformation(extent={{100,-20},{120,0}}))); + Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints setMinOA_62_1( + VAreBreZon_flow=3e-3, + VPopBreZon_flow=2.5e-3, + VMin_flow=5.5e-3) if stdVen== + Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1 + "Zone level calculation of the minimum outdoor airflow setpoint" + annotation (Placement(transformation(extent={{100,20},{120,40}}))); +equation + connect(tNexOcc.y, bus.tNexOcc); + connect(TAirDis.y, bus.TAirDis); + connect(VAirDis_flow.y, bus.VAirDis_flow); + connect(yReqZonTemRes.y, bus.yReqZonTemRes); + connect(yReqZonPreRes.y, bus.yReqZonPreRes); + + connect(bus.y1Win, setMinOA_62_1.u1Win); + connect(bus.TZon, setMinOA_62_1.TZon); + connect(bus.TAirDis, setMinOA_62_1.TDis); + + connect(setMinOA_62_1.VAdjPopBreZon_flow, bus.VAdjPopBreZon_flow); + connect(setMinOA_62_1.VOccZonMin_flow, bus.VOccZonMin_flow); + connect(setMinOA_62_1.VAdjAreBreZon_flow, bus.VAdjAreBreZon_flow); + connect(setMinOA_62_1.VMinOA_flow, bus.VMinOA_flow); + + connect(setMinOA_T24.VZonAbsMin_flow, bus.VZonAbsMin_flow); + connect(setMinOA_T24.VZonDesMin_flow, bus.VZonDesMin_flow); + connect(setMinOA_T24.VOccZonMin_flow, bus.VOccZonMin_flow); + connect(setMinOA_T24.yCO2, bus.yCO2); + connect(setMinOA_T24.VMinOA_flow, bus.VMinOA_flow); + + connect(cooDowTim.y, sta.cooDowTim); + connect(warUpTim.y, sta.warUpTim); + connect(bus.u1Win, sta.u1Win); + connect(bus.TZon, sta.TZon); + connect(bus.TZonHeaOccSet, sta.TOccHeaSet); + connect(bus.TZonCooOccSet, sta.TOccCooSet); + connect(bus.TZonHeaUnoSet, sta.TUnoHeaSet); + connect(bus.TZonCooUnoSet, sta.TUnoCooSet); + + connect(sta.yCooTim, bus.yCooTim); + connect(sta.yWarTim, bus.yWarTim); + connect(sta.yOccHeaHig, bus.yOccHeaHig); + connect(sta.yHigOccCoo, bus.yHigOccCoo); + connect(sta.yUnoHeaHig, bus.yUnoHeaHig); + connect(sta.yEndSetBac, bus.yEndSetBac); + connect(sta.yHigUnoCoo, bus.yHigUnoCoo); + connect(sta.yEndSetUp, bus.yEndSetUp); + + connect(uOpeMod.y, setMinOA_62_1.uOpeMod) annotation (Line(points={{62,20},{80, + 20},{80,35},{98,35}}, color={255,127,0})); + annotation ( + defaultComponentName="conPoiDum", + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, + {100,100}})), Diagram(coordinateSystem(preserveAspectRatio= + false, extent={{-200,-180},{200,180}})), + Documentation(info=" ++This class generates signals typically provided by the terminal +unit controller. +It is aimed for validation purposes only. +
+")); +end VAVBoxControlPoints; diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/package.mo b/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/package.mo new file mode 100644 index 00000000000..6a04fc9bac6 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/package.mo @@ -0,0 +1,8 @@ +within Buildings.Templates.AirHandlersFans.Validation.UserProject; +package ZoneEquipment "Zone equipment" +annotation (Documentation(info=" ++This package contains models used for validation purposes. +
+")); +end ZoneEquipment; diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/package.order b/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/package.order new file mode 100644 index 00000000000..2fe1821bfb4 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/ZoneEquipment/package.order @@ -0,0 +1 @@ +VAVBoxControlPoints diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/package.mo b/Buildings/Templates/AirHandlersFans/Validation/UserProject/package.mo new file mode 100644 index 00000000000..b1f1b846f2d --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates.AirHandlersFans.Validation; +package UserProject "Package with configured models" + extends Modelica.Icons.VariantsPackage; + + +annotation (Documentation(info=" ++This package contains models used for validation purposes. +
+")); +end UserProject; diff --git a/Buildings/Templates/AirHandlersFans/Validation/UserProject/package.order b/Buildings/Templates/AirHandlersFans/Validation/UserProject/package.order new file mode 100644 index 00000000000..fceaa312fe3 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/UserProject/package.order @@ -0,0 +1,3 @@ +AirHandlersFans +ZoneEquipment +Data diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZBase.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZBase.mo new file mode 100644 index 00000000000..b5bfcaa39fc --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZBase.mo @@ -0,0 +1,181 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZBase + "Validation model for multiple-zone VAV - Base model with open loop controls" + extends Modelica.Icons.Example; + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium"; + replaceable package MediumChiWat=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Cooling medium (such as CHW)"; + replaceable package MediumHeaWat=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Heating medium (such as HHW)"; + + inner parameter UserProject.Data.AllSystems datAll( + sysUni=Buildings.Templates.Types.Units.SI, + redeclare replaceable model VAV = UserProject.AirHandlersFans.VAVMZBase, + stdEne=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1, + stdVen=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1, + ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_3B) + "Design and operating parameters" + annotation (Placement(transformation(extent={{90,92},{110,112}}))); + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.FixedInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, + Dialog(tab = "Dynamics", group="Conservation equations")); + + inner replaceable UserProject.AirHandlersFans.VAVMZBase VAV_1 constrainedby + Buildings.Templates.AirHandlersFans.VAVMultiZone( + final dat=datAll.dat_VAV_1, + redeclare final package MediumAir = MediumAir, + redeclare final package MediumChiWat = MediumChiWat, + final energyDynamics=energyDynamics) + "Air handling unit" + annotation (Placement(transformation(extent={{-20,-50},{20,-10}}))); + Buildings.Fluid.Sources.Boundary_pT bouOut( + redeclare final package Medium =MediumAir, + nPorts=2) + "Boundary conditions for outdoor environment" + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + Buildings.Fluid.Sources.Boundary_pT bouBui( + redeclare final package Medium =MediumAir, + nPorts=3) + "Boundary conditions for indoor environment" + annotation (Placement(transformation(extent={{90,-40},{70,-20}}))); + Fluid.FixedResistances.PressureDrop res( + redeclare final package Medium=MediumAir, + m_flow_nominal=1, dp_nominal=100) + annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); + Fluid.FixedResistances.PressureDrop res1( + redeclare final package Medium = MediumAir, + m_flow_nominal=1, + dp_nominal=100) + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Fluid.Sensors.Pressure pBui(redeclare final package Medium = MediumAir) + "Building absolute pressure in representative space" + annotation (Placement(transformation(extent={{80,0},{60,20}}))); + BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam= + Modelica.Utilities.Files.loadResource( + "modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos")) + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + Fluid.FixedResistances.PressureDrop res2( + redeclare final package Medium = MediumAir, + m_flow_nominal=1, + dp_nominal=100) + annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); + Fluid.FixedResistances.PressureDrop res3( + redeclare final package Medium = MediumAir, + m_flow_nominal=1, + dp_nominal=100) + annotation (Placement(transformation(extent={{50,-30},{30,-10}}))); + Fluid.Sources.Boundary_pT bouHeaWat( + redeclare final package Medium = MediumHeaWat, + nPorts=2) if VAV_1.have_souHeaWat + "Boundary conditions for HHW distribution system" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + Fluid.Sources.Boundary_pT bouChiWat( + redeclare final package Medium = MediumChiWat, + nPorts=2) if VAV_1.have_souChiWat + "Boundary conditions for CHW distribution system" + annotation (Placement(transformation(extent={{-100,-110},{-80,-90}}))); + UserProject.ZoneEquipment.VAVBoxControlPoints sigVAVBox[VAV_1.nZon]( + each final stdVen=datAll.stdVen) + if VAV_1.ctl.typ==Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone + "Control signals from VAV box" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); + ZoneEquipment.Validation.UserProject.BASControlPoints sigBAS( + final nZon=VAV_1.nZon) + "BAS control points" + annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); + ZoneEquipment.Validation.UserProject.ZoneControlPoints sigZon[VAV_1.nZon] + "Zone control points" + annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); +protected + Interfaces.Bus busAHU + "Gateway bus" + annotation ( + Placement( + transformation(extent={{-40,-10},{0,30}}),iconTransformation( + extent={{-258,-26},{-238,-6}}))); + +equation + connect(bouHeaWat.ports[1], VAV_1.port_aHeaWat) + annotation (Line(points={{-80,-71},{-5,-71},{-5,-50}}, color={0,127,255})); + connect(bouChiWat.ports[2], VAV_1.port_bChiWat) + annotation (Line(points={{-80,-99},{5,-99},{5,-50}}, color={0,127,255})); + connect(VAV_1.port_bHeaWat, bouHeaWat.ports[2]) annotation (Line(points={{-13,-50}, + {-13,-68},{-80,-68},{-80,-69}}, color={0,127,255})); + connect(VAV_1.port_aChiWat, bouChiWat.ports[1]) annotation (Line(points={{13,-50}, + {13,-102},{-80,-102},{-80,-101}}, + color={0,127,255})); + connect(bouOut.ports[1], res.port_a) annotation (Line(points={{-80,-31},{-60, + -31},{-60,-40},{-50,-40}}, + color={0,127,255})); + connect(res.port_b, VAV_1.port_Out) + annotation (Line(points={{-30,-40},{-20,-40}}, color={0,127,255})); + connect(VAV_1.port_Sup, res1.port_a) + annotation (Line(points={{20,-40},{30,-40}}, color={0,127,255})); + connect(res1.port_b, bouBui.ports[1]) annotation (Line(points={{50,-40},{60, + -40},{60,-31.3333},{70,-31.3333}}, + color={0,127,255})); + connect(bouBui.ports[2], pBui.port) + annotation (Line(points={{70,-30},{70,0}}, color={0,127,255})); + connect(weaDat.weaBus, VAV_1.busWea) annotation (Line( + points={{-80,0},{0,0},{0,-10}}, + color={255,204,51}, + thickness=0.5)); + connect(busAHU, VAV_1.bus) annotation (Line( + points={{-20,10},{-20,-14},{-19.9,-14}}, + color={255,204,51}, + thickness=0.5)); + connect(VAV_1.port_Rel, res2.port_a) + annotation (Line(points={{-20,-20},{-30,-20}}, + color={0,127,255})); + connect(res2.port_b, bouOut.ports[2]) annotation (Line(points={{-50,-20},{-60, + -20},{-60,-29},{-80,-29}}, + color={0,127,255})); + connect(VAV_1.port_Ret, res3.port_b) + annotation (Line(points={{20,-20},{30,-20}}, + color={0,127,255})); + connect(res3.port_a, bouBui.ports[3]) annotation (Line(points={{50,-20},{60, + -20},{60,-28.6667},{70,-28.6667}}, + color={0,127,255})); + connect(pBui.p, busAHU.pBui) annotation (Line(points={{59,10},{-20,10}}, + color={0,0,127}), Text( + string="%second", + index=1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + connect(sigVAVBox.bus, VAV_1.busTer) annotation (Line( + points={{-80,30},{19.8,30},{19.8,-14}}, + color={255,204,51}, + thickness=0.5)); + + connect(sigBAS.busTer, VAV_1.busTer) annotation (Line( + points={{-80,90},{19.8,90},{19.8,-14}}, + color={255,204,51}, + thickness=0.5)); + connect(sigZon.bus, VAV_1.busTer) annotation (Line( + points={{-80,60},{19.8,60},{19.8,-14}}, + color={255,204,51}, + thickness=0.5)); + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZBase.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZBase. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+"), + Diagram(coordinateSystem(extent={{-120,-120},{120,120}}))); +end VAVMZBase; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mo new file mode 100644 index 00000000000..05489522f95 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mo @@ -0,0 +1,24 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZCoilElectricHeating "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll(redeclare model VAV = + UserProject.AirHandlersFans.VAVMZCoilElectricHeating), + redeclare + UserProject.AirHandlersFans.VAVMZCoilElectricHeating VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilElectricHeating.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZCoilElectricHeating. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZCoilElectricHeating; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mo new file mode 100644 index 00000000000..66260e59974 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mo @@ -0,0 +1,28 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZCoilEvaporatorMultiStage "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll( + redeclare model VAV = + UserProject.AirHandlersFans.VAVMZCoilEvaporatorMultiStage, + dat_VAV_1(coiCoo(redeclare + Buildings.Fluid.DXSystems.Cooling.AirSource.Data.DoubleSpeed.Lennox_SCA240H4B + datCoi))), + redeclare + UserProject.AirHandlersFans.VAVMZCoilEvaporatorMultiStage VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorMultiStage.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZCoilEvaporatorMultiStage. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZCoilEvaporatorMultiStage; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mo new file mode 100644 index 00000000000..b3c9987849d --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mo @@ -0,0 +1,24 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZCoilEvaporatorVariable "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll( + redeclare model VAV = + UserProject.AirHandlersFans.VAVMZCoilEvaporatorVariable), + redeclare UserProject.AirHandlersFans.VAVMZCoilEvaporatorVariable VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilEvaporatorVariable.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZCoilEvaporatorVariable. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZCoilEvaporatorVariable; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mo new file mode 100644 index 00000000000..f632c559322 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mo @@ -0,0 +1,24 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZCoilWaterHeating3WVReheat "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll( + redeclare model VAV = + UserProject.AirHandlersFans.VAVMZCoilWaterHeating3WVReheat), + redeclare UserProject.AirHandlersFans.VAVMZCoilWaterHeating3WVReheat VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZCoilWaterHeating3WVReheat.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZCoilWaterHeating3WVReheat. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZCoilWaterHeating3WVReheat; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mo new file mode 100644 index 00000000000..39fe7bb9555 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mo @@ -0,0 +1,21 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZControlG36Airflow "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll(redeclare model VAV = + UserProject.AirHandlersFans.VAVMZControlG36Airflow), + redeclare UserProject.AirHandlersFans.VAVMZControlG36Airflow VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Airflow.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=10000), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZControlG36Airflow. +It is intended to check whether the template model is well-defined for +this particular system configuration. +
+")); +end VAVMZControlG36Airflow; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mo new file mode 100644 index 00000000000..0f14e2881b5 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mo @@ -0,0 +1,22 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZControlG36Pressure + "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll(redeclare model VAV = + UserProject.AirHandlersFans.VAVMZControlG36Pressure), + redeclare UserProject.AirHandlersFans.VAVMZControlG36Pressure VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZControlG36Pressure.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=10000), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZControlG36Pressure. +It is intended to check whether the template model is well-defined for +this particular system configuration. +
+")); +end VAVMZControlG36Pressure; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mo new file mode 100644 index 00000000000..4fe88738898 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mo @@ -0,0 +1,24 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZDedicatedDampersPressure "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll( + redeclare model VAV = + UserProject.AirHandlersFans.VAVMZDedicatedDampersPressure), + redeclare UserProject.AirHandlersFans.VAVMZDedicatedDampersPressure VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZDedicatedDampersPressure.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZDedicatedDampersPressure. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZDedicatedDampersPressure; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mo new file mode 100644 index 00000000000..749111ec6b0 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mo @@ -0,0 +1,25 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZFanRelief "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll( + redeclare model VAV = + UserProject.AirHandlersFans.VAVMZFanRelief), + redeclare + UserProject.AirHandlersFans.VAVMZFanRelief VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanRelief.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZFanRelief. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZFanRelief; diff --git a/Buildings/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mo b/Buildings/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mo new file mode 100644 index 00000000000..c8149489f49 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mo @@ -0,0 +1,24 @@ +within Buildings.Templates.AirHandlersFans.Validation; +model VAVMZFanSupplyBlowThrough "Validation model for multiple-zone VAV" + extends VAVMZBase( + datAll( + redeclare model VAV = + UserProject.AirHandlersFans.VAVMZFanSupplyBlowThrough), + redeclare UserProject.AirHandlersFans.VAVMZFanSupplyBlowThrough VAV_1); + + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/AirHandlersFans/Validation/VAVMZFanSupplyBlowThrough.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans.VAVMZFanSupplyBlowThrough. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+")); +end VAVMZFanSupplyBlowThrough; diff --git a/Buildings/Templates/AirHandlersFans/Validation/package.mo b/Buildings/Templates/AirHandlersFans/Validation/package.mo new file mode 100644 index 00000000000..351edd40126 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/package.mo @@ -0,0 +1,26 @@ +within Buildings.Templates.AirHandlersFans; +package Validation "Package with validation models" + extends Modelica.Icons.ExamplesPackage; + + annotation ( + preferredView="info", + Documentation(info=" ++This package contains models validating the templates within + +Buildings.Templates.AirHandlersFans +for various system configurations. +
++Each system configuration is specified by extending the original template class +to create a so-called configuration class (under + +Buildings.Templates.AirHandlersFans.Validation.UserProject.AirHandlersFans), +that is instantiated in the validation model. +
++The models also illustrate parameter propagation from a top-level +HVAC system record. +
+")); +end Validation; diff --git a/Buildings/Templates/AirHandlersFans/Validation/package.order b/Buildings/Templates/AirHandlersFans/Validation/package.order new file mode 100644 index 00000000000..ef10535e0c8 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/Validation/package.order @@ -0,0 +1,11 @@ +VAVMZBase +VAVMZCoilElectricHeating +VAVMZCoilEvaporatorMultiStage +VAVMZCoilEvaporatorVariable +VAVMZCoilWaterHeating3WVReheat +VAVMZControlG36Airflow +VAVMZControlG36Pressure +VAVMZDedicatedDampersPressure +VAVMZFanRelief +VAVMZFanSupplyBlowThrough +UserProject diff --git a/Buildings/Templates/AirHandlersFans/package.mo b/Buildings/Templates/AirHandlersFans/package.mo new file mode 100644 index 00000000000..ecce01041c4 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates; +package AirHandlersFans "Air handlers and fans" + extends Modelica.Icons.Package; + + annotation (Documentation(info=" ++This package contains templates for air handlers and fans. +
+")); +end AirHandlersFans; diff --git a/Buildings/Templates/AirHandlersFans/package.order b/Buildings/Templates/AirHandlersFans/package.order new file mode 100644 index 00000000000..0aab08bf782 --- /dev/null +++ b/Buildings/Templates/AirHandlersFans/package.order @@ -0,0 +1,6 @@ +VAVMultiZone +Components +Data +Types +Validation +Interfaces diff --git a/Buildings/Templates/Components/Coils/ElectricHeating.mo b/Buildings/Templates/Components/Coils/ElectricHeating.mo new file mode 100644 index 00000000000..d164cc58b10 --- /dev/null +++ b/Buildings/Templates/Components/Coils/ElectricHeating.mo @@ -0,0 +1,38 @@ +within Buildings.Templates.Components.Coils; +model ElectricHeating "Modulating electric heating coil" + extends Buildings.Templates.Components.Interfaces.PartialCoil( + final typ=Buildings.Templates.Components.Types.Coil.ElectricHeating, + final typVal=Buildings.Templates.Components.Types.Valve.None); + + Buildings.Fluid.HeatExchangers.HeaterCooler_u hex( + redeclare final package Medium = MediumAir, + final Q_flow_nominal=dat.Q_flow_nominal, + final m_flow_nominal=dat.mAir_flow_nominal, + final dp_nominal=dat.dpAir_nominal, + final energyDynamics=energyDynamics, + final tau=tau, + final allowFlowReversal=allowFlowReversalAir, + final show_T=show_T) + "Heat exchanger" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(port_a, hex.port_a) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(hex.port_b, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + connect(bus.y, hex.u) annotation (Line( + points={{0,100},{0,20},{-20,20},{-20,6},{-12,6}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + annotation (Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This is a model for a modulating electric heating coil. +
+")); +end ElectricHeating; diff --git a/Buildings/Templates/Components/Coils/EvaporatorMultiStage.mo b/Buildings/Templates/Components/Coils/EvaporatorMultiStage.mo new file mode 100644 index 00000000000..6b776830a48 --- /dev/null +++ b/Buildings/Templates/Components/Coils/EvaporatorMultiStage.mo @@ -0,0 +1,70 @@ +within Buildings.Templates.Components.Coils; +model EvaporatorMultiStage + "Evaporator coil with multi-stage compressor" + extends Buildings.Templates.Components.Interfaces.PartialCoil( + final typ=Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage, + final typVal=Buildings.Templates.Components.Types.Valve.None); + + parameter Boolean have_dryCon = true + "Set to true for air-cooled condenser, false for evaporative condenser"; + + Buildings.Fluid.DXSystems.Cooling.AirSource.MultiStage hex( + redeclare final package Medium = MediumAir, + final datCoi=dat.datCoi, + final dp_nominal=dpAir_nominal, + final energyDynamics=energyDynamics, + final tau=tau, + final allowFlowReversal=allowFlowReversalAir, + final show_T=show_T) + "Heat exchanger" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + + Modelica.Blocks.Routing.RealPassThrough TWetBul if not have_dryCon + annotation (Placement(transformation(extent={{-50,50},{-30,70}}))); + Modelica.Blocks.Routing.RealPassThrough TDry if have_dryCon + annotation (Placement(transformation(extent={{-50,10},{-30,30}}))); +equation + connect(port_a, hex.port_a) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(hex.port_b, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + connect(busWea.TWetBul, TWetBul.u) annotation (Line( + points={{-60,100},{-60,60},{-52,60}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + connect(busWea.TDryBul, TDry.u) annotation (Line( + points={{-60,100},{-60,20},{-52,20}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + connect(TWetBul.y, hex.TOut) annotation (Line(points={{-29,60},{-20,60},{-20,3}, + {-11,3}}, color={0,0,127})); + connect(TDry.y, hex.TOut) annotation (Line(points={{-29,20},{-20,20},{-20,3}, + {-11,3}}, color={0,0,127})); + connect(bus.y, hex.stage) annotation (Line( + points={{0,100},{0,20},{-14,20},{-14,8},{-11,8}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + annotation ( + Diagram( + coordinateSystem(preserveAspectRatio=false)), Documentation(info=" +
+This is a model for a direct expansion cooling coil with a
+multi-stage compressor.
+The compressor stage is selected with the control
+signal y
(integer between 0
and the number
+of stages).
+
+This is a model for a direct expansion cooling coil with a
+variable speed compressor.
+The compressor speed is modulated with the fractional speed
+signal y
(real between 0
and 1
).
+
+This is a direct fluid pass-through model to represent +a configuration with no coil. +
+")); +end None; diff --git a/Buildings/Templates/Components/Coils/WaterBasedCooling.mo b/Buildings/Templates/Components/Coils/WaterBasedCooling.mo new file mode 100644 index 00000000000..b590090b630 --- /dev/null +++ b/Buildings/Templates/Components/Coils/WaterBasedCooling.mo @@ -0,0 +1,132 @@ +within Buildings.Templates.Components.Coils; +model WaterBasedCooling "Chilled water coil" + extends Buildings.Templates.Components.Interfaces.PartialCoil( + final typ=Buildings.Templates.Components.Types.Coil.WaterBasedCooling, + final typVal=val.typ, + redeclare final package MediumSou = MediumChiWat); + + replaceable package MediumChiWat=Buildings.Media.Water + "Source side medium"; + + final parameter Modelica.Units.SI.MassFlowRate mWat_flow_nominal= + dat.mWat_flow_nominal + "Liquid mass flow rate"; + final parameter Modelica.Units.SI.PressureDifference dpWat_nominal= + dat.dpWat_nominal + "Liquid pressure drop across coil"; + final parameter Modelica.Units.SI.PressureDifference dpValve_nominal= + dat.dpValve_nominal + "Nominal pressure drop across fully open valve"; + + replaceable Buildings.Templates.Components.Valves.TwoWayModulating val constrainedby + Buildings.Templates.Components.Interfaces.PartialValve( + redeclare final package Medium = MediumChiWat, + final energyDynamics=energyDynamics, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversalLiq, + final show_T=show_T, + final dat=datVal) + "Valve" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Valves.ThreeWayModulating val + "Three-way modulating valve"), + choice(redeclare replaceable Buildings.Templates.Components.Valves.TwoWayModulating val + "Two-way modulating valve")), + Placement(transformation(extent={{-10,10},{10,-10}}, + rotation=-90, + origin={-40,-60}))); + + replaceable Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU hex( + configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow, + final use_Q_flow_nominal=true, + final Q_flow_nominal=Q_flow_nominal, + final T_a1_nominal=dat.TWatEnt_nominal, + final T_a2_nominal=dat.TAirEnt_nominal, + final w_a2_nominal=dat.wAirEnt_nominal, + final dp1_nominal=if val.typ==Buildings.Templates.Components.Types.Valve.None + then dpWat_nominal else 0, + final dp2_nominal=dpAir_nominal) + constrainedby Buildings.Fluid.Interfaces.PartialFourPortInterface( + redeclare final package Medium1 = MediumChiWat, + redeclare final package Medium2 = MediumAir, + final m1_flow_nominal=mWat_flow_nominal, + final m2_flow_nominal=mAir_flow_nominal, + final allowFlowReversal1=allowFlowReversalLiq, + final allowFlowReversal2=allowFlowReversalAir, + final show_T=show_T) + "Heat exchanger" + annotation ( + __ctrl_flow(enable=false), + Placement(transformation(extent={{10,4},{-10,-16}}))); + + Buildings.Fluid.FixedResistances.Junction jun( + redeclare final package Medium = MediumChiWat, + final m_flow_nominal=mWat_flow_nominal*{1,-1,-1}, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + dp_nominal=fill(0, 3), + final portFlowDirection_1=if allowFlowReversal then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Entering, + final portFlowDirection_2=if allowFlowReversal then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Leaving, + final portFlowDirection_3=if allowFlowReversal then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Leaving) + if typVal==Buildings.Templates.Components.Types.Valve.ThreeWayModulating + "Junction" + annotation ( + Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={40,-60}))); + Buildings.Templates.Components.Routing.PassThroughFluid pas( + redeclare final package Medium = MediumChiWat, + final allowFlowReversal=allowFlowReversalLiq) + if typVal <> Buildings.Templates.Components.Types.Valve.ThreeWayModulating + "Direct pass through" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={60,-60}))); +equation + connect(port_a,hex. port_a2) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(hex.port_b2, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + connect(val.port_a, hex.port_b1) annotation (Line(points={{-40,-50},{-40,-12}, + {-10,-12}}, color={0,127,255})); + connect(val.port_b, port_bSou) + annotation (Line(points={{-40,-70},{-40,-100}}, color={0,127,255})); + connect(val.portByp_a, jun.port_3) + annotation (Line(points={{-30,-60},{30,-60}}, color={0,127,255})); + connect(jun.port_2, hex.port_a1) + annotation (Line(points={{40,-50},{40,-12},{10,-12}}, color={0,127,255})); + connect(port_aSou, jun.port_1) + annotation (Line(points={{40,-100},{40,-70}}, color={0,127,255})); + connect(port_aSou, pas.port_a) annotation (Line(points={{40,-100},{40,-80},{60, + -80},{60,-70}}, color={0,127,255})); + connect(pas.port_b, hex.port_a1) + annotation (Line(points={{60,-50},{60,-12},{10,-12}}, color={0,127,255})); + connect(val.bus, bus) annotation (Line( + points={{-50,-60},{-60,-60},{-60,20},{0,20},{0,100}}, + color={255,204,51}, + thickness=0.5), Text( + string="%second", + index=1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + annotation ( + Icon( + coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +
+This is a model for a chilled water coil with an optional
+modulating valve.
+The valve position is modulated with the fractional opening
+signal y
(real between 0
and 1
).
+If no valve is used, no signal is required.
+
+This is a model for a hot water coil with an optional
+modulating valve.
+The valve position is modulated with the fractional opening
+signal y
(real between 0
and 1
).
+If no valve is used, no signal is required.
+
+This package contains models for heating and cooling coils. +
+")); +end Coils; diff --git a/Buildings/Templates/Components/Coils/package.order b/Buildings/Templates/Components/Coils/package.order new file mode 100644 index 00000000000..7701041b9a7 --- /dev/null +++ b/Buildings/Templates/Components/Coils/package.order @@ -0,0 +1,6 @@ +ElectricHeating +EvaporatorMultiStage +EvaporatorVariableSpeed +None +WaterBasedCooling +WaterBasedHeating diff --git a/Buildings/Templates/Components/Dampers/Modulating.mo b/Buildings/Templates/Components/Dampers/Modulating.mo new file mode 100644 index 00000000000..fcd9854cd17 --- /dev/null +++ b/Buildings/Templates/Components/Dampers/Modulating.mo @@ -0,0 +1,53 @@ +within Buildings.Templates.Components.Dampers; +model Modulating "Modulating damper" + extends Buildings.Templates.Components.Interfaces.PartialDamper( + final typ=Buildings.Templates.Components.Types.Damper.Modulating, + typBla=Buildings.Templates.Components.Types.DamperBlades.Parallel); + + Buildings.Fluid.Actuators.Dampers.Exponential dam( + redeclare final package Medium = Medium, + final m_flow_nominal=m_flow_nominal, + final dpDamper_nominal=dp_nominal, + final dpFixed_nominal=dat.dpFixed_nominal, + final use_inputFilter=use_inputFilter, + final riseTime=riseTime, + final init=init, + final y_start=y_start, + final allowFlowReversal=allowFlowReversal, + final show_T=show_T) + "Exponential damper" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(port_a, dam.port_a) annotation (Line(points={{-100,0},{-56,0},{-56,0}, + {-10,0}}, color={0,127,255})); + connect(dam.port_b, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + connect(dam.y_actual, bus.y_actual) annotation (Line(points={{5,7},{40,7},{40, + 96},{0,96},{0,100}}, color={0,0,127})); + connect(bus.y, dam.y) annotation (Line( + points={{0,100},{0,12}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + annotation (Documentation(info=" ++This is a model for a modulating damper. +
+y
(real).y = 0
corresponds to fully closed.
+y = 1
corresponds to fully open.
+y_actual
(real) is returned.y_actual = 0
corresponds to fully closed.
+y_actual = 1
corresponds to fully open.
++This is a direct fluid pass-through model to represent +a configuration with no damper. +
+")); +end None; diff --git a/Buildings/Templates/Components/Dampers/PressureIndependent.mo b/Buildings/Templates/Components/Dampers/PressureIndependent.mo new file mode 100644 index 00000000000..e41684b515a --- /dev/null +++ b/Buildings/Templates/Components/Dampers/PressureIndependent.mo @@ -0,0 +1,54 @@ +within Buildings.Templates.Components.Dampers; +model PressureIndependent "Pressure independent damper" + extends Buildings.Templates.Components.Interfaces.PartialDamper( + final typ=Buildings.Templates.Components.Types.Damper.PressureIndependent, + final typBla=Buildings.Templates.Components.Types.DamperBlades.VAV); + + Buildings.Fluid.Actuators.Dampers.PressureIndependent dam( + redeclare final package Medium = Medium, + final m_flow_nominal=m_flow_nominal, + final dpDamper_nominal=dp_nominal, + final dpFixed_nominal=dat.dpFixed_nominal, + final use_inputFilter=use_inputFilter, + final riseTime=riseTime, + final init=init, + final y_start=y_start, + final allowFlowReversal=allowFlowReversal, + final show_T=show_T) + "Pressure independent damper" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(dam.port_b, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + connect(dam.y_actual, bus.y_actual) + annotation (Line(points={{5,7},{40,7},{40,96},{0,96},{0,100}}, + color={0,0,127})); + connect(port_a, dam.port_a) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(bus.y, dam.y) annotation (Line( + points={{0,100},{0,12}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + annotation (Documentation(info=" ++This is a model for a pressure independent damper. +
+y
(real).y = 0
corresponds to zero airflow.
+y = 1
corresponds to the maximum airflow.
+y_actual
(real) is returned.y_actual = 0
corresponds to fully closed.
+y_actual = 1
corresponds to fully open.
++This is a model for a two-position damper. +
+y1
.y1 = 0
corresponds to fully closed.
+y1 = 1
corresponds to fully open.
+y1_actual
and
+closed end switch status y0_actual
(Booleans)
+are returned.y1_actual = false
corresponds to fully closed.
+y1_actual = true
corresponds to fully open.
+And the opposite for y0_actual
.
++This package contains models for dampers. +
+")); +end Dampers; diff --git a/Buildings/Templates/Components/Dampers/package.order b/Buildings/Templates/Components/Dampers/package.order new file mode 100644 index 00000000000..8548dedfa36 --- /dev/null +++ b/Buildings/Templates/Components/Dampers/package.order @@ -0,0 +1,4 @@ +Modulating +None +PressureIndependent +TwoPosition diff --git a/Buildings/Templates/Components/Data/Coil.mo b/Buildings/Templates/Components/Data/Coil.mo new file mode 100644 index 00000000000..805ef2eda79 --- /dev/null +++ b/Buildings/Templates/Components/Data/Coil.mo @@ -0,0 +1,134 @@ +within Buildings.Templates.Components.Data; +record Coil "Record for coil model" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.Components.Types.Coil typ + "Equipment type" + annotation (Dialog(group="Configuration", enable=false), Evaluate=true); + parameter Buildings.Templates.Components.Types.Valve typVal + "Type of valve" + annotation (Dialog(group="Configuration", enable=false), Evaluate=true); + parameter Boolean have_sou + "Set to true for fluid ports on the source side" + annotation (Dialog(group="Configuration"), Evaluate=true); + + /* +For evaporator coils this is also provided by the performance data record. +The coil model shall generate a warning in case the design value exceeds +the maximum value from the performance data record. +*/ + parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal( + final min=0, + start=if typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed then + datCoi.sta[datCoi.nSta].nomVal.m_flow_nominal + else 1) + "Air mass flow rate" + annotation ( + Dialog(group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Coil.None and + typ<>Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage and + typ<>Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed)); + parameter Modelica.Units.SI.PressureDifference dpAir_nominal( + final min=0, + displayUnit="Pa", + start=if typ==Buildings.Templates.Components.Types.Coil.None then 0 else + 100) + "Air pressure drop" + annotation ( + Dialog(group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Coil.None)); + parameter Modelica.Units.SI.MassFlowRate mWat_flow_nominal( + final min=0, + start=if typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating then + Q_flow_nominal / 4186 / 10 elseif + typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling then + -Q_flow_nominal / 4186 / 5 else + 0) + "Liquid mass flow rate" + annotation ( + Dialog(group="Nominal condition", enable=have_sou)); + parameter Modelica.Units.SI.PressureDifference dpWat_nominal( + final min=0, + displayUnit="Pa", + start=if typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating then + 0.5e4 elseif typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling then + 3e4 else + 0) + "Liquid pressure drop across coil" + annotation(Dialog(group="Nominal condition", + enable=have_sou)); + parameter Modelica.Units.SI.PressureDifference dpValve_nominal( + final min=0, + displayUnit="Pa", + start=if typVal==Buildings.Templates.Components.Types.Valve.None then 0 + else dpWat_nominal / 2) + "Liquid pressure drop across fully open valve" + annotation(Dialog(group="Nominal condition", + enable=have_sou and typVal<>Buildings.Templates.Components.Types.Valve.None)); + parameter Modelica.Units.SI.HeatFlowRate cap_nominal( + start=if typ==Buildings.Templates.Components.Types.Coil.None then 0 + elseif typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed then + datCoi.sta[datCoi.nSta].nomVal.Q_flow_nominal + elseif typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling then -1E4 + else 1E4) + "Coil capacity" + annotation(Dialog(group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Coil.None and + typ<>Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage and + typ<>Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed)); + /* +For evaporator coils this is also provided by the performance data record. +The coil model shall generate a warning in case the design value exceeds +the maximum value from the performance data record. +*/ + final parameter Modelica.Units.SI.HeatFlowRate Q_flow_nominal= + if typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating or + typ==Buildings.Templates.Components.Types.Coil.ElectricHeating then abs(cap_nominal) + else -1 * abs(cap_nominal) + "Nominal heat flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TWatEnt_nominal( + final min=273.15, + displayUnit="degC", + start=if typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating then 50+273.15 + elseif typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling then 7+273.15 + else 273.15) + "Nominal entering liquid temperature" + annotation (Dialog( + group="Nominal condition", + enable=have_sou)); + parameter Modelica.Units.SI.Temperature TAirEnt_nominal( + final min=243.15, + displayUnit="degC", + start=if typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling then 30+273.15 + else 273.15) + "Nominal entering air temperature" + annotation (Dialog( + group="Nominal condition", + enable=have_sou)); + parameter Modelica.Units.SI.MassFraction wAirEnt_nominal( + final min=0, + start=0.01) + "Nominal entering air humidity ratio" + annotation (Dialog( + group="Nominal condition", + enable=typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling)); + replaceable parameter + Buildings.Fluid.DXSystems.Cooling.AirSource.Data.SingleSpeed.Carrier_Centurion_50PG06 datCoi + constrainedby + Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.DXCoil + "Performance data record of evaporator coil" + annotation(choicesAllMatching=true, Dialog( + enable=typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed)); + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +the classes within + +Buildings.Templates.Components.Coils. +
+")); +end Coil; diff --git a/Buildings/Templates/Components/Data/Damper.mo b/Buildings/Templates/Components/Data/Damper.mo new file mode 100644 index 00000000000..6f89ad08e79 --- /dev/null +++ b/Buildings/Templates/Components/Data/Damper.mo @@ -0,0 +1,40 @@ +within Buildings.Templates.Components.Data; +record Damper "Record for damper model" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.Components.Types.Damper typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal( + final min=0, + start=1) + "Air mass flow rate" + annotation ( + Dialog(group="Mechanical", + enable=typ<>Buildings.Templates.Components.Types.Damper.None)); + parameter Modelica.Units.SI.PressureDifference dp_nominal( + final min=0, + displayUnit="Pa", + start=if typ==Buildings.Templates.Components.Types.Damper.None then 0 + elseif typ==Buildings.Templates.Components.Types.Damper.PressureIndependent then 50 + else 15) + "Air pressure drop" + annotation ( + Dialog(group="Mechanical", + enable=typ<>Buildings.Templates.Components.Types.Damper.None)); + parameter Modelica.Units.SI.PressureDifference dpFixed_nominal( + final min=0, + displayUnit="Pa")=0 + "Air pressure drop of fixed elements in series with damper" + annotation ( + Dialog(group="Mechanical", enable=false)); + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +the classes within + +Buildings.Templates.Components.Dampers. +
+")); +end Damper; diff --git a/Buildings/Templates/Components/Data/Fan.mo b/Buildings/Templates/Components/Data/Fan.mo new file mode 100644 index 00000000000..0222046de79 --- /dev/null +++ b/Buildings/Templates/Components/Data/Fan.mo @@ -0,0 +1,48 @@ +within Buildings.Templates.Components.Data; +record Fan "Record for fan model" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.Components.Types.Fan typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Integer nFan( + final min=0, + start=if typ==Buildings.Templates.Components.Types.Fan.None then 0 else 1) + "Number of fans" + annotation (Evaluate=true, Dialog(group="Configuration", + enable=typ==Buildings.Templates.Components.Types.Fan.ArrayVariable)); + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal( + final min=0, + start=1) + "Air mass flow rate" + annotation ( + Dialog(group="Nominal condition", + enable=typ <> Buildings.Templates.Components.Types.Fan.None)); + parameter Modelica.Units.SI.PressureDifference dp_nominal( + final min=0, + displayUnit="Pa", + start=if typ==Buildings.Templates.Components.Types.Fan.None then 1 + else 500) + "Total pressure rise" + annotation ( + Dialog(group="Nominal condition", + enable=typ <> Buildings.Templates.Components.Types.Fan.None)); + replaceable parameter Buildings.Fluid.Movers.Data.Generic per( + pressure( + V_flow={0, 1, 2} * m_flow_nominal / 1.2 / max(1, nFan), + dp={1.5, 1, 0} * dp_nominal)) + constrainedby Buildings.Fluid.Movers.Data.Generic + "Performance data" + annotation ( + choicesAllMatching=true, + Dialog(enable=typ <> Buildings.Templates.Components.Types.Fan.None), + Placement(transformation(extent={{-90,-88},{-70,-68}}))); + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +the classes within + +Buildings.Templates.Components.Fans. +
+")); +end Fan; diff --git a/Buildings/Templates/Components/Data/Valve.mo b/Buildings/Templates/Components/Data/Valve.mo new file mode 100644 index 00000000000..24c7c4ae01a --- /dev/null +++ b/Buildings/Templates/Components/Data/Valve.mo @@ -0,0 +1,44 @@ +within Buildings.Templates.Components.Data; +record Valve "Record for valve model" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.Components.Types.Valve typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal( + final min=0, + start=1) + "Nominal mass flow rate of fully open valve" + annotation(Dialog(group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Valve.None)); + parameter Modelica.Units.SI.PressureDifference dpValve_nominal( + final min=0, + displayUnit="Pa", + start=0) + "Nominal pressure drop of fully open valve" + annotation(Dialog(group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Valve.None)); + parameter Modelica.Units.SI.PressureDifference dpFixed_nominal( + final min=0, + displayUnit="Pa")=0 + "Nominal pressure drop of pipes and other equipment in flow leg" + annotation(Dialog(group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Valve.None)); + parameter Modelica.Units.SI.PressureDifference dpFixedByp_nominal( + final min=0, + displayUnit="Pa")=dpFixed_nominal + "Nominal pressure drop in the bypass line" + annotation(Dialog(group="Nominal condition", + enable=typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating)); + + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +the classes within + +Buildings.Templates.Components.Valves. +
+")); +end Valve; diff --git a/Buildings/Templates/Components/Data/package.mo b/Buildings/Templates/Components/Data/package.mo new file mode 100644 index 00000000000..7d696a7f433 --- /dev/null +++ b/Buildings/Templates/Components/Data/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.Components; +package Data "Records for design and operating parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + +annotation (Documentation(info=" ++This package provides records for design and operating parameters. +
+")); +end Data; diff --git a/Buildings/Templates/Components/Data/package.order b/Buildings/Templates/Components/Data/package.order new file mode 100644 index 00000000000..96dad205471 --- /dev/null +++ b/Buildings/Templates/Components/Data/package.order @@ -0,0 +1,4 @@ +Coil +Damper +Fan +Valve diff --git a/Buildings/Templates/Components/Fans/ArrayVariable.mo b/Buildings/Templates/Components/Fans/ArrayVariable.mo new file mode 100644 index 00000000000..c83b441d196 --- /dev/null +++ b/Buildings/Templates/Components/Fans/ArrayVariable.mo @@ -0,0 +1,133 @@ +within Buildings.Templates.Components.Fans; +model ArrayVariable "Fan array - Variable speed" + extends Buildings.Templates.Components.Interfaces.PartialFan( + final typ=Buildings.Templates.Components.Types.Fan.ArrayVariable); + + Buildings.Fluid.Movers.SpeedControlled_y fan[nFan]( + redeclare each final package Medium=Medium, + each final inputType=Buildings.Fluid.Types.InputType.Continuous, + each final per=dat.per, + each final energyDynamics=energyDynamics, + each final tau=tau, + each use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + each final allowFlowReversal=allowFlowReversal) + "Fan array" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + + Buildings.Controls.OBC.CDL.Routing.RealScalarReplicator repSig( + final nout=nFan) + "Replicate signal" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,30}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal sigSta + "Start/stop signal" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-46,80}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply sigCon + "Resulting control signal" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-40,50}))); + Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold evaSta[nFan]( + each t=1E-2, + each h=0.5E-2) "Evaluate fan status" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,-40}))); + Buildings.Fluid.Delays.DelayFirstOrder volInl( + redeclare final package Medium=Medium, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + final m_flow_nominal=m_flow_nominal, + tau=1, + final nPorts=nFan+1) + "Fluid volume at inlet" + annotation (Placement(transformation(extent={{-90,0},{-70,20}}))); + Buildings.Fluid.Delays.DelayFirstOrder volOut( + redeclare final package Medium = Medium, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + final m_flow_nominal=m_flow_nominal, + tau=1, + final nPorts=nFan+1) + "Fluid volume at outet" + annotation (Placement(transformation(extent={{50,0},{70,20}}))); + Buildings.Controls.OBC.CDL.Logical.MultiAnd evaStaArr( + final nin=nFan) + "Evaluate fan array status" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,-70}))); +equation + connect(repSig.y, fan.y) + annotation (Line(points={{-2.22045e-15,18},{-2.22045e-15,25},{0,25},{0,12}}, + color={0,0,127})); + connect(sigSta.y, sigCon.u2) + annotation (Line(points={{-46,68},{-46,62}}, color={0,0,127})); + connect(sigCon.y, repSig.u) annotation (Line(points={{-40,38},{-40,30},{-20, + 30},{-20,50},{0,50},{0,46},{2.22045e-15,46},{2.22045e-15,42}}, + color={0,0,127})); + connect(fan.y_actual, evaSta.u) annotation (Line(points={{11,7},{20,7},{20,-20}, + {2.22045e-15,-20},{2.22045e-15,-28}}, + color={0,0,127})); + connect(volInl.ports[1:nFan], fan.port_a) + annotation (Line(points={{-80,0},{-10,0}}, color={0,127,255})); + connect(fan.port_b, volOut.ports[1:nFan]) + annotation (Line(points={{10,0},{60,0}}, color={0,127,255})); + connect(volOut.ports[nFan+1], V_flow.port_a) + annotation (Line(points={{60,0},{70,0}}, color={0,127,255})); + connect(volInl.ports[nFan+1], port_a) + annotation (Line(points={{-80,0},{-100,0}}, color={0,127,255})); + connect(evaSta.y, evaStaArr.u) annotation (Line(points={{-2.22045e-15,-52},{-2.22045e-15, + -55},{2.22045e-15,-55},{2.22045e-15,-58}}, color={255,0,255})); + connect(evaStaArr.y, bus.y1_actual) annotation (Line(points={{0,-82},{0,-90},{40, + -90},{40,96},{0,96},{0,100}}, color={255,0,255}), Text( + string="%second", + index=1, + extent={{-3,-6},{-3,-6}}, + horizontalAlignment=TextAlignment.Right)); + connect(bus.y1, sigSta.u) annotation (Line( + points={{0,100},{0,96},{-46,96},{-46,92}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + connect(bus.y, sigCon.u1) annotation (Line( + points={{0,100},{0,66},{-34,66},{-34,62}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + annotation (Placement(transformation(extent={{-10,-10},{10,10}})), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This is a model for a parallel arrangement of identical variable speed fans +(or fan array). +
+y1
(VFD Run).
+y
(real).y = 0
corresponds to 0 Hz.
+y = 1
corresponds to the maximum speed set in the VFD.
+y1_actual
(Boolean) is returned.y1_actual = true
means that all fans are On.
++This is a direct fluid pass-through model to represent +a configuration with no fan. +
+")); +end None; diff --git a/Buildings/Templates/Components/Fans/SingleConstant.mo b/Buildings/Templates/Components/Fans/SingleConstant.mo new file mode 100644 index 00000000000..0495c9c17c3 --- /dev/null +++ b/Buildings/Templates/Components/Fans/SingleConstant.mo @@ -0,0 +1,73 @@ +within Buildings.Templates.Components.Fans; +model SingleConstant "Single fan - Constant speed" + extends Buildings.Templates.Components.Interfaces.PartialFan( + final nFan=1, + final typ=Buildings.Templates.Components.Types.Fan.SingleConstant); + + Buildings.Fluid.Movers.SpeedControlled_y fan( + redeclare final package Medium =Medium, + final inputType=Buildings.Fluid.Types.InputType.Continuous, + final per=dat.per, + final energyDynamics=energyDynamics, + final tau=tau, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversal) + "Fan" + annotation ( + Placement(transformation(extent={{-10,-10},{10,10}}))); + + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal sigSta + "Start/stop signal" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,50}))); + Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold evaSta( + t=1E-2, + h=0.5E-2) + "Evaluate fan status" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,-50}))); +equation + connect(sigSta.y, fan.y) + annotation (Line(points={{-2.22045e-15,38},{0,12}}, color={0,0,127})); + connect(port_a, fan.port_a) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(fan.y_actual, evaSta.u) annotation (Line(points={{11,7},{20,7},{20,-20}, + {2.22045e-15,-20},{2.22045e-15,-38}}, + color={0,0,127})); + connect(bus.y1, sigSta.u) annotation (Line( + points={{0,100},{2.22045e-15,62}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + connect(evaSta.y, bus.y1_actual) annotation (Line(points={{0,-62},{0,-80},{60, + -80},{60,96},{0,96},{0,100}}, color={255,0,255}), Text( + string="%second", + index=1, + extent={{-3,-6},{-3,-6}}, + horizontalAlignment=TextAlignment.Right)); + connect(fan.port_b, V_flow.port_a) + annotation (Line(points={{10,0},{70,0}}, color={0,127,255})); + annotation (Placement(transformation(extent={{-10,-10},{10,10}})), + Icon( + coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This is a model for a constant speed fan. +
+y1
(starter contact).
+y1_actual
(Boolean) is returned.
+y1_actual = true
means that the fan is On.
++This is a model for a variable speed fan (with VFD). +
+y1
(VFD Run).
+y
(real).y = 0
corresponds to 0 Hz.
+y = 1
corresponds to the maximum speed set in the VFD.
+y1_actual
(Boolean) is returned.y1_actual = true
means that the fan is on.
++This package contains models for fans. +
+")); +end Fans; diff --git a/Buildings/Templates/Components/Fans/package.order b/Buildings/Templates/Components/Fans/package.order new file mode 100644 index 00000000000..05ba6d437f8 --- /dev/null +++ b/Buildings/Templates/Components/Fans/package.order @@ -0,0 +1,4 @@ +ArrayVariable +None +SingleConstant +SingleVariable diff --git a/Buildings/Templates/Components/Interfaces/Bus.mo b/Buildings/Templates/Components/Interfaces/Bus.mo new file mode 100644 index 00000000000..760cddbef48 --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/Bus.mo @@ -0,0 +1,12 @@ +within Buildings.Templates.Components.Interfaces; +expandable connector Bus "Control bus" + extends Modelica.Icons.SignalBus; + + annotation ( + defaultComponentName="bus", Documentation(info=" ++This expandable connector provides a standard interface for +all control signals of the component models. +
+")); +end Bus; diff --git a/Buildings/Templates/Components/Interfaces/PartialCoil.mo b/Buildings/Templates/Components/Interfaces/PartialCoil.mo new file mode 100644 index 00000000000..04bc99e62ef --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/PartialCoil.mo @@ -0,0 +1,222 @@ +within Buildings.Templates.Components.Interfaces; +partial model PartialCoil "Interface class for coil" + extends Buildings.Fluid.Interfaces.PartialTwoPortInterface( + redeclare final package Medium=MediumAir, + final m_flow_nominal=mAir_flow_nominal, + final allowFlowReversal=allowFlowReversalAir) + annotation(__ctrl_flow(enable=false)); + + replaceable package MediumAir=Buildings.Media.Air + "Air medium" + annotation(__ctrl_flow(enable=false)); + /* + The following definition is needed only for Dymola that does not allow + port_aSou and port_bSou to be instantiated without redeclaring their medium + to a non-partial class (which is done only in the derived class). + */ + replaceable package MediumSou=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Source-side medium" + annotation(Dialog(enable=false), __ctrl_flow(enable=false)); + + parameter Buildings.Templates.Components.Types.Coil typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Buildings.Templates.Components.Types.Valve typVal + "Type of valve" + annotation (Dialog(group="Configuration")); + final parameter Boolean have_sou= + typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating or + typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling + "Set to true for fluid ports on the source side" + annotation (Evaluate=true, Dialog(group="Configuration")); + final parameter Boolean have_weaBus= + typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed + "Set to true to use a weather bus" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Buildings.Templates.Components.Data.Coil dat( + final have_sou=have_sou, + final typ=typ, + final typVal=typVal) + "Design and operating parameters" + annotation ( + Placement(transformation(extent={{70,70},{90,90}})), + __ctrl_flow(enable=false)); + + final parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal( + final min=0) = dat.mAir_flow_nominal + "Air mass flow rate"; + final parameter Modelica.Units.SI.PressureDifference dpAir_nominal( + final min=0, + displayUnit="Pa") = dat.dpAir_nominal + "Air pressure drop"; + final parameter Modelica.Units.SI.HeatFlowRate Q_flow_nominal= + dat.Q_flow_nominal + "Nominal heat flow rate"; + + parameter Modelica.Units.SI.Time tau=20 + "Time constant at nominal flow" + annotation (Dialog(tab="Dynamics", group="Nominal condition", + enable=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState and ( + typ==Buildings.Templates.Components.Types.Coil.ElectricHeating or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed)), + __ctrl_flow(enable=false)); + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations", + enable=typ==Buildings.Templates.Components.Types.Coil.ElectricHeating or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed), + __ctrl_flow(enable=false)); + + parameter Boolean allowFlowReversalAir=true + "= true to allow flow reversal, false restricts to design direction - Air side" + annotation (Dialog(tab="Assumptions"), Evaluate=true, + __ctrl_flow(enable=false)); + parameter Boolean allowFlowReversalLiq=true + "= true to allow flow reversal, false restricts to design direction - CHW and HW side" + annotation (Dialog(tab="Assumptions", + enable=typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling or + typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating), + Evaluate=true, + __ctrl_flow(enable=false)); + + Modelica.Fluid.Interfaces.FluidPort_a port_aSou( + redeclare final package Medium = MediumSou, + m_flow(min=if allowFlowReversalLiq then -Modelica.Constants.inf else 0), + h_outflow(start=MediumSou.h_default, nominal=MediumSou.h_default)) + if have_sou + "Fluid connector a (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{30,-110},{50,-90}}), + iconTransformation(extent={{40,-110},{60,-90}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bSou( + redeclare final package Medium = MediumSou, + m_flow(max=if allowFlowReversalLiq then +Modelica.Constants.inf else 0), + h_outflow(start = MediumSou.h_default, nominal = MediumSou.h_default)) + if have_sou + "Fluid connector b (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{-30,-110},{-50,-90}}), + iconTransformation(extent={{-40,-110},{-60,-90}}))); + Buildings.BoundaryConditions.WeatherData.Bus busWea if have_weaBus + "Weather bus" + annotation (Placement( + transformation(extent={{-80,80},{-40,120}}), iconTransformation(extent={{-50,90}, + {-30,110}}))); + Buildings.Templates.Components.Interfaces.Bus bus + if typ <> Buildings.Templates.Components.Types.Coil.None + "Control bus" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={0,100}), iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,100}))); + +protected + parameter Buildings.Templates.Components.Data.Valve datVal( + final typ=typVal, + final m_flow_nominal=dat.mWat_flow_nominal, + final dpValve_nominal=dat.dpValve_nominal, + final dpFixed_nominal=if typVal <> Buildings.Templates.Components.Types.Valve.None + then dat.dpWat_nominal else 0) + "Local record for control valve with lumped flow resistance"; +initial equation + if typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed then + assert(mAir_flow_nominal<=dat.datCoi.sta[dat.datCoi.nSta].nomVal.m_flow_nominal, + "In "+ getInstanceName() + ": "+ + "The coil design airflow ("+String(mAir_flow_nominal)+ + ") exceeds the maximum airflow provided in the performance data record ("+ + String(dat.datCoi.sta[dat.datCoi.nSta].nomVal.m_flow_nominal)+").", + level=AssertionLevel.warning); + assert(abs(Q_flow_nominal)<=abs(dat.datCoi.sta[dat.datCoi.nSta].nomVal.Q_flow_nominal), + "In "+ getInstanceName() + ": "+ + "The coil design capacity ("+String(Q_flow_nominal)+ + ") exceeds the maximum capacity provided in the performance data record ("+ + String(dat.datCoi.sta[dat.datCoi.nSta].nomVal.Q_flow_nominal)+").", + level=AssertionLevel.warning); + end if; + + annotation ( + Icon( + graphics={ + Bitmap( + visible=typ <> Buildings.Templates.Components.Types.Coil.None and + typVal == Buildings.Templates.Components.Types.Valve.TwoWayModulating, + extent={{-140,-300},{60,-100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Valves/TwoWay.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage or + typ==Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Coils/Cooling.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Coil.WaterBasedCooling, + extent={{-100,-500},{100,-300}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Coils/ChilledWaterSupplyReturn.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating or + typ==Buildings.Templates.Components.Types.Coil.ElectricHeating, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Coils/Heating.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating, + extent={{-100,-500},{100,-300}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Coils/HotWaterSupplyReturn.svg"), + Line( + visible=typ<>Buildings.Templates.Components.Types.Coil.None and + typVal<>Buildings.Templates.Components.Types.Valve.None, + points={{-100,-200},{-40,-200}}, color={0,0,0}), + Line( + visible=typ<>Buildings.Templates.Components.Types.Coil.None, + points={{-40,-240},{-40,-320}}, + color={0,0,0}, + thickness=5), + Line( visible=typ <> Buildings.Templates.Components.Types.Coil.None, + points={{-40,-160},{-40,-100}}, + color={0,0,0}, + thickness=5), + Line( visible=typ <> Buildings.Templates.Components.Types.Coil.None and + typVal == Buildings.Templates.Components.Types.Valve.None, + points={{-40,-160},{-40,-240}}, + color={0,0,0}, + thickness=5), + Line( + visible=typ<>Buildings.Templates.Components.Types.Coil.None, + points={{40,-100},{40,-320}}, + color={0,0,0}, + thickness=5), + Line( + visible=typ<>Buildings.Templates.Components.Types.Coil.None and + (typVal==Buildings.Templates.Components.Types.Valve.ThreeWayModulating or + typVal==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition), + points={{0,-200},{40,-200}}, + color={0,0,0}, + thickness=5), + Bitmap( + visible=typ<>Buildings.Templates.Components.Types.Coil.None and + (typVal==Buildings.Templates.Components.Types.Valve.TwoWayModulating or + typVal==Buildings.Templates.Components.Types.Valve.ThreeWayModulating), + extent={{-180,-238},{-100,-158}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Bitmap( + visible=typ <> Buildings.Templates.Components.Types.Coil.None and + typVal == Buildings.Templates.Components.Types.Valve.ThreeWayModulating, + extent={{-140,-300},{60,-100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Valves/ThreeWay.svg")}, + coordinateSystem(preserveAspectRatio=false)), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This partial class provides a standard interface for coil models. +
+")); +end PartialCoil; diff --git a/Buildings/Templates/Components/Interfaces/PartialDamper.mo b/Buildings/Templates/Components/Interfaces/PartialDamper.mo new file mode 100644 index 00000000000..0400ba1cd73 --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/PartialDamper.mo @@ -0,0 +1,102 @@ +within Buildings.Templates.Components.Interfaces; +partial model PartialDamper "Interface class for damper" + extends Buildings.Fluid.Interfaces.PartialTwoPortInterface( + final m_flow_nominal=dat.m_flow_nominal) + annotation(__ctrl_flow(enable=false)); + + parameter Buildings.Templates.Components.Types.Damper typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Buildings.Templates.Components.Data.Damper dat(final typ=typ) + "Design and operating parameters" + annotation (Placement(transformation(extent={{70,70},{90,90}}))); + + final parameter Modelica.Units.SI.PressureDifference dp_nominal= + dat.dp_nominal + "Damper pressure drop"; + + parameter Boolean use_inputFilter=true + "= true, if opening is filtered with a 2nd order CriticalDamping filter" + annotation(Dialog(tab="Dynamics", group="Filtered opening", + enabel=typ<>Buildings.Templates.Components.Types.Damper.None)); + parameter Modelica.Units.SI.Time riseTime=120 + "Rise time of the filter (time to reach 99.6 % of an opening step)" + annotation (Dialog( + tab="Dynamics", + group="Filtered opening", + enable=use_inputFilter and typ<>Buildings.Templates.Components.Types.Damper.None)); + parameter Modelica.Blocks.Types.Init init=Modelica.Blocks.Types.Init.InitialOutput + "Type of initialization (no init/steady state/initial state/initial output)" + annotation(Dialog(tab="Dynamics", group="Filtered opening", + enable=use_inputFilter and typ<>Buildings.Templates.Components.Types.Damper.None)); + parameter Real y_start=1 "Initial position of actuator" + annotation(Dialog(tab="Dynamics", group="Filtered opening", + enable=use_inputFilter and typ<>Buildings.Templates.Components.Types.Damper.None)); + + parameter Buildings.Templates.Components.Types.DamperBlades typBla= + Buildings.Templates.Components.Types.DamperBlades.Parallel + "Type of blades" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Integer text_rotation = 0 + "Text rotation angle in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Boolean text_flip = false + "True to flip text horizontally in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + + Buildings.Templates.Components.Interfaces.Bus bus + if typ <> Buildings.Templates.Components.Types.Damper.None + and typ <> Buildings.Templates.Components.Types.Damper.Barometric and typ + <> Buildings.Templates.Components.Types.Damper.NoPath + "Control bus" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={0,100}), + iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,100}))); + + annotation ( + Icon( + graphics={ + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Damper.TwoPosition, + extent=if text_flip then {{40,-240},{-40,-160}} else {{-40,-240},{40,-160}}, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Damper.Modulating or + typ==Buildings.Templates.Components.Types.Damper.PressureIndependent, + extent=if text_flip then {{40,-240},{-40,-160}} else {{-40,-240},{40,-160}}, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Bitmap( + extent={{-130,-160},{130,100}}, + visible=typ<>Buildings.Templates.Components.Types.Damper.None and + typBla==Buildings.Templates.Components.Types.DamperBlades.Opposed, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesOpposed.svg"), + Bitmap( + extent={{-130,-160},{130,100}}, + visible=typ<>Buildings.Templates.Components.Types.Damper.None and + typBla==Buildings.Templates.Components.Types.DamperBlades.Parallel, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesParallel.svg"), + Bitmap( + extent={{-130,-160},{130,100}}, + visible=typ<>Buildings.Templates.Components.Types.Damper.None and + typBla==Buildings.Templates.Components.Types.DamperBlades.VAV, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Dampers/BladesVAV.svg")}, + coordinateSystem(preserveAspectRatio=false, + extent={{-100,-100},{100,100}})), + Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}})), + Documentation(info=" ++This partial class provides a standard interface for damper models. +
+")); + +end PartialDamper; diff --git a/Buildings/Templates/Components/Interfaces/PartialFan.mo b/Buildings/Templates/Components/Interfaces/PartialFan.mo new file mode 100644 index 00000000000..b5c8580aef5 --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/PartialFan.mo @@ -0,0 +1,133 @@ +within Buildings.Templates.Components.Interfaces; +partial model PartialFan "Interface class for fan" + extends Buildings.Fluid.Interfaces.PartialTwoPortInterface( + final m_flow_nominal=dat.m_flow_nominal) + annotation(__ctrl_flow(enable=false)); + + parameter Buildings.Templates.Components.Types.Fan typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_senFlo = false + "Set to true for air flow measurement" + annotation (Evaluate=true, Dialog(group="Configuration", + enable=typ<>Buildings.Templates.Components.Types.Fan.None)); + + parameter Modelica.Units.SI.Time tau=1 + "Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic" + annotation (Dialog( + tab="Dynamics", + group="Nominal condition", + enable=typ<>Buildings.Templates.Components.Types.Fan.None and + energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState), + __ctrl_flow(enable=false)); + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, + Dialog(tab = "Dynamics", group="Conservation equations", + enable=typ<>Buildings.Templates.Components.Types.Fan.None), + __ctrl_flow(enable=false)); + + parameter Buildings.Templates.Components.Types.FanSingle typSin= + Buildings.Templates.Components.Types.FanSingle.Housed + "Type of single fan" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Integer text_rotation = 0 + "Text rotation angle in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Boolean text_flip = false + "True to flip text horizontally in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + + parameter Buildings.Templates.Components.Data.Fan dat( + final typ=typ, + final nFan=nFan) + "Design and operating parameters" + annotation(Placement(transformation(extent={{70,70},{90,90}})), + __ctrl_flow(enable=false)); + + parameter Integer nFan( + final min=0, + start=0) + "Number of fans" + annotation (Dialog(group="Configuration", + enable=typ==Buildings.Templates.Components.Types.Fan.ArrayVariable)); + final parameter Modelica.Units.SI.PressureDifference dp_nominal=dat.dp_nominal + "Total pressure rise"; + + Buildings.Templates.Components.Interfaces.Bus bus + if typ <> Buildings.Templates.Components.Types.Fan.None + "Control bus" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={0,100}), iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,100}))); + Buildings.Templates.Components.Sensors.VolumeFlowRate V_flow( + redeclare final package Medium = Medium, + final have_sen=have_senFlo, + final m_flow_nominal=m_flow_nominal, + final typ=Buildings.Templates.Components.Types.SensorVolumeFlowRate.AFMS) + "Air volume flow rate sensor" + annotation ( + Placement(transformation(extent={{70,-10},{90,10}}))); +equation + /* Control point connection - start */ + connect(V_flow.y, bus.V_flow); + /* Control point connection - stop */ + connect(port_b, V_flow.port_b) + annotation (Line(points={{100,0},{90,0}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Line( visible=typ == Buildings.Templates.Components.Types.Fan.SingleVariable + or typ == Buildings.Templates.Components.Types.Fan.ArrayVariable, + points={{0,-30},{0,-160}}, + color={0,0,0}), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Fan.ArrayVariable, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Array.svg"), + Bitmap( + visible=(typ==Buildings.Templates.Components.Types.Fan.SingleVariable or + typ==Buildings.Templates.Components.Types.Fan.SingleConstant) and + typSin==Buildings.Templates.Components.Types.FanSingle.Housed, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Housed.svg"), + Bitmap( + visible=(typ==Buildings.Templates.Components.Types.Fan.SingleVariable or + typ==Buildings.Templates.Components.Types.Fan.SingleConstant) and + typSin==Buildings.Templates.Components.Types.FanSingle.Plug, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Plug.svg"), + Bitmap( + visible=(typ==Buildings.Templates.Components.Types.Fan.SingleVariable or + typ==Buildings.Templates.Components.Types.Fan.SingleConstant) and + typSin==Buildings.Templates.Components.Types.FanSingle.Propeller, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Fans/Propeller.svg"), + Bitmap( + visible=have_senFlo and typ<>Buildings.Templates.Components.Types.Fan.None, + extent=if text_flip then {{-140,-240},{-220,-160}} else {{-220,-240},{-140,-160}}, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/VolumeFlowRate.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Fan.SingleVariable or + typ==Buildings.Templates.Components.Types.Fan.ArrayVariable, + extent=if text_flip then {{100,-360},{-100,-160}} else {{-100,-360},{100,-160}}, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/VFD.svg"), + Polygon( + points={{-185,-160},{-185,5},{-100,5},{-100,-5},{-175,-5},{-175,-160}, + {-185,-160}}, + lineColor={0,0,0}, + visible=have_senFlo and typ <> Buildings.Templates.Components.Types.Fan.None)}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This partial class provides a standard interface for fan models. +
+")); +end PartialFan; diff --git a/Buildings/Templates/Components/Interfaces/PartialSensor.mo b/Buildings/Templates/Components/Interfaces/PartialSensor.mo new file mode 100644 index 00000000000..24dd22ed63b --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/PartialSensor.mo @@ -0,0 +1,57 @@ +within Buildings.Templates.Components.Interfaces; +partial model PartialSensor "Interface class for sensor" + extends Buildings.Fluid.Interfaces.PartialTwoPortInterface + annotation(__ctrl_flow(enable=false)); + + parameter Boolean have_sen=true + "Set to true for sensor, false for direct pass through" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean isDifPreSen=false + "Set to true for differential pressure sensor, false for any other sensor" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Integer text_rotation = 0 + "Text rotation angle in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Boolean text_flip = false + "True to flip text horizontally in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y if have_sen + "Connector for measured value" + annotation (Placement(iconVisible=false, + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={0,120}))); + +equation + if isDifPreSen and (not have_sen) then + // Zero flow equations for connectors + port_a.m_flow = 0; + port_b.m_flow = 0; + + // No contribution of specific quantities + port_a.h_outflow = 0; + port_b.h_outflow = 0; + port_a.Xi_outflow = zeros(Medium.nXi); + port_b.Xi_outflow = zeros(Medium.nXi); + port_a.C_outflow = zeros(Medium.nC); + port_b.C_outflow = zeros(Medium.nC); + end if; + + annotation ( + Icon(coordinateSystem(preserveAspectRatio=false), + graphics={ + Line( + visible=(not have_sen) and (not isDifPreSen), + points={{-100,0},{100,0}}, + color={28,108,200}, + thickness=1)}), + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This partial class provides a standard interface for sensor models. +
+")); +end PartialSensor; diff --git a/Buildings/Templates/Components/Interfaces/PartialValve.mo b/Buildings/Templates/Components/Interfaces/PartialValve.mo new file mode 100644 index 00000000000..7c25a2cbba5 --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/PartialValve.mo @@ -0,0 +1,134 @@ +within Buildings.Templates.Components.Interfaces; +partial model PartialValve "Interface class for valve" + extends Buildings.Fluid.Interfaces.PartialTwoPortInterface( + final m_flow_nominal=dat.m_flow_nominal) + annotation(__ctrl_flow(enable=false)); + + parameter Buildings.Templates.Components.Types.Valve typ + "Equipment type" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Buildings.Templates.Components.Data.Valve dat(final typ=typ) + "Design and operating parameters" + annotation (Placement(transformation(extent={{70,70},{90,90}})), + __ctrl_flow(enable=false)); + + final parameter Modelica.Units.SI.PressureDifference dpValve_nominal= + dat.dpValve_nominal + "Nominal pressure drop of fully open valve"; + final parameter Modelica.Units.SI.PressureDifference dpFixed_nominal= + dat.dpFixed_nominal + "Nominal pressure drop of pipes and other equipment in flow leg"; + final parameter Modelica.Units.SI.PressureDifference dpFixedByp_nominal= + dat.dpFixedByp_nominal + "Nominal pressure drop in the bypass line"; + + parameter Boolean use_inputFilter=true + "= true, if opening is filtered with a 2nd order CriticalDamping filter" + annotation(Dialog(tab="Dynamics", group="Filtered opening", + enable=typ<>Buildings.Templates.Components.Types.Valve.None)); + parameter Modelica.Units.SI.Time riseTime=120 + "Rise time of the filter (time to reach 99.6 % of an opening step)" + annotation (Dialog( + tab="Dynamics", + group="Filtered opening", + enable=use_inputFilter and typ<>Buildings.Templates.Components.Types.Valve.None)); + parameter Modelica.Blocks.Types.Init init=Modelica.Blocks.Types.Init.InitialOutput + "Type of initialization (no init/steady state/initial state/initial output)" + annotation(Dialog(tab="Dynamics", group="Filtered opening", + enable=use_inputFilter and typ<>Buildings.Templates.Components.Types.Valve.None)); + parameter Real y_start=1 "Initial position of actuator" + annotation(Dialog(tab="Dynamics", group="Filtered opening", + enable=use_inputFilter and typ<>Buildings.Templates.Components.Types.Valve.None)); + + parameter Modelica.Units.SI.Time tau=10 + "Time constant at nominal flow" + annotation (Dialog(tab="Dynamics", group="Nominal condition", + enable=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState and ( + typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition)), + __ctrl_flow(enable=false)); + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations", + enable=typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition), + __ctrl_flow(enable=false)); + + parameter Integer text_rotation = 0 + "Text rotation angle in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Boolean text_flip = false + "True to flip text horizontally in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + + Modelica.Fluid.Interfaces.FluidPort_a portByp_a( + redeclare final package Medium = Medium, + p(start=Medium.p_default), + m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + h_outflow(start=Medium.h_default, nominal=Medium.h_default)) + if typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating + "Fluid connector with bypass line" + annotation (Placement(transformation(extent={{-10,-110},{10,-90}}))); + Buildings.Templates.Components.Interfaces.Bus bus + if typ<>Buildings.Templates.Components.Types.Valve.None + "Control bus" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={0,100}), iconTransformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,100}))); + annotation ( + Icon(graphics={ + Line( + points={{-100,0},{-40,0}}, + color={0,0,0}, + thickness=5), + Line( + points={{40,0},{100,0}}, + color={0,0,0}, + thickness=5), + Line( + visible=typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating, + points={{0,-100},{0,-40}}, + color={0,0,0}, + thickness=5), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Valve.TwoWayModulating or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating, + extent=if text_flip then {{40,60},{-40,140}} else {{-40,60},{40,140}}, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/Modulating.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition, + extent=if text_flip then {{40,60},{-40,140}} else {{-40,60},{40,140}}, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Actuators/TwoPosition.svg"), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition or + typ==Buildings.Templates.Components.Types.Valve.TwoWayModulating, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Valves/TwoWay.svg", + rotation=-90), + Bitmap( + visible=typ==Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition or + typ==Buildings.Templates.Components.Types.Valve.ThreeWayModulating, + extent={{-100,-100},{100,100}}, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Valves/ThreeWay.svg", + rotation=-90), + Line( + visible=typ<>Buildings.Templates.Components.Types.Valve.None, + points={{0,60},{0,0}}, color={0,0,0})}), + Documentation(info=" ++This partial class provides a standard interface for valve models. +
+")); +end PartialValve; diff --git a/Buildings/Templates/Components/Interfaces/package.mo b/Buildings/Templates/Components/Interfaces/package.mo new file mode 100644 index 00000000000..537e7dc3ba8 --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.Components; +package Interfaces "Interface classes" + extends Modelica.Icons.InterfacesPackage; + + annotation (Documentation(info=" ++This package contains interface classes. +
+")); +end Interfaces; diff --git a/Buildings/Templates/Components/Interfaces/package.order b/Buildings/Templates/Components/Interfaces/package.order new file mode 100644 index 00000000000..9c481d0f47a --- /dev/null +++ b/Buildings/Templates/Components/Interfaces/package.order @@ -0,0 +1,6 @@ +Bus +PartialCoil +PartialDamper +PartialFan +PartialSensor +PartialValve diff --git a/Buildings/Templates/Components/Routing/MultipleToMultiple.mo b/Buildings/Templates/Components/Routing/MultipleToMultiple.mo new file mode 100644 index 00000000000..e23e8ac3d7c --- /dev/null +++ b/Buildings/Templates/Components/Routing/MultipleToMultiple.mo @@ -0,0 +1,229 @@ +within Buildings.Templates.Components.Routing; +model MultipleToMultiple + "Multiple inlet ports, multiple outlet ports" + + replaceable package Medium = + Modelica.Media.Interfaces.PartialMedium "Medium in the component" + annotation (choices( + choice(redeclare package Medium = Buildings.Media.Air "Moist air"), + choice(redeclare package Medium = Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater ( + property_T=293.15, + X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + parameter Integer nPorts_a + "Number of inlet ports" + annotation(Evaluate=true, Dialog(group="Configuration")); + parameter Integer nPorts_b = nPorts_a + "Number of outlet ports" + annotation(Evaluate=true, Dialog(group="Configuration", enable=not have_comLeg)); + parameter Boolean have_comLeg = false + "Set to true for common leg between inlet and outlet ports (headered connection)" + annotation(Evaluate=true, Dialog(group="Configuration")); + + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal(min=0) + "Nominal mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Time tau=10 + "Time constant at nominal flow" + annotation (Dialog(tab="Dynamics", group="Nominal condition")); + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations")); + + parameter Boolean allowFlowReversal=true + "= true to allow flow reversal, false restricts to design direction (ports_a -> ports_b)" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + // Diagnostics + parameter Boolean show_T = false + "Set to true if actual temperature at port is computed" + annotation ( + Dialog(tab="Advanced", group="Diagnostics"), HideResult=true); + + parameter Integer icon_extend = 0 + "Extend lines by this amount in x-direction in icon layer: >0 at outlet, <0 at inlet" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Integer icon_dy = 100 + "Distance in y-direction between each branch in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Buildings.Templates.Components.Types.IconPipe icon_pipe = + Buildings.Templates.Components.Types.IconPipe.Supply + "Pipe symbol" + annotation(Dialog(tab="Graphics", enable=false)); + + Modelica.Fluid.Interfaces.FluidPorts_a ports_a[nPorts_a]( + redeclare each final package Medium = Medium, + each m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + each h_outflow(start=Medium.h_default, nominal=Medium.h_default)) + "Fluid connector a (positive design flow direction is from ports_a to ports_b)" + annotation (Placement(transformation(extent={{-110,-40},{-90,40}}), + iconTransformation(extent={{-110,-40},{-90,40}}))); + Modelica.Fluid.Interfaces.FluidPorts_b ports_b[nPorts_b]( + redeclare each final package Medium = Medium, + each m_flow(max=if allowFlowReversal then +Modelica.Constants.inf else 0), + each h_outflow(start=Medium.h_default, nominal=Medium.h_default)) + "Fluid connectors b (positive design flow direction is from ports_a to ports_b)" + annotation (Placement(transformation(extent={{90,-40},{110,40}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_aComLeg( + redeclare final package Medium=Medium, + m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + h_outflow(start=Medium.h_default, nominal=Medium.h_default)) + if have_comLeg "Common leg port - Case with common leg" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}), + iconTransformation(extent={{-10,-10},{10,10}}))); + + PassThroughFluid pasDed[nPorts_a]( + redeclare each final package Medium=Medium) if not have_comLeg + "Dedicated fluid pass-through if dedicated arrangement" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + + Medium.ThermodynamicState sta_a[nPorts_a]= + Medium.setState_phX(ports_a.p, + noEvent(actualStream(ports_a.h_outflow)), + noEvent(actualStream(ports_a.Xi_outflow))) + if show_T "Medium properties in ports_a"; + + Medium.ThermodynamicState sta_b[nPorts_b]= + Medium.setState_phX(ports_b.p, + noEvent(actualStream(ports_b.h_outflow)), + noEvent(actualStream(ports_b.Xi_outflow))) + if show_T "Medium properties in ports_b"; + + Fluid.Delays.DelayFirstOrder del( + redeclare final package Medium=Medium, + final tau=tau, + final m_flow_nominal=m_flow_nominal, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final prescribedHeatFlowRate=false, + final nPorts=nPorts_a+nPorts_b+1) + if have_controlVolume and have_comLeg + "Fluid volume to break algebraic loop - Case with common leg" + annotation (Placement(transformation(extent={{-10,-20},{10,0}}))); + + PassThroughFluid pasSteInl(redeclare final package Medium = Medium) + if have_comLeg and not have_controlVolume + "Fluid pass-through in lieu of control volume - Case with common leg" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + PassThroughFluid pasSteOut(redeclare final package Medium = Medium) + if have_comLeg and not have_controlVolume + "Fluid pass-through in lieu of control volume - Case with common leg" + annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); + +protected + parameter Boolean have_controlVolume= + energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState + "Boolean flag used to remove conditional components" + annotation(Evaluate=true); + +initial equation + if not have_comLeg then + assert(nPorts_a==nPorts_b, + "In "+ getInstanceName() + ": "+ + "In the absence of a common leg (dedicated connection), the number of inlet ports (" + + String(nPorts_a) + ") must be equal to the number of outlet ports (" + + String(nPorts_b) +")"); + end if; +equation + for i in 1:nPorts_a loop + connect(ports_a[i], pasSteInl.port_a) annotation (Line(points={{-100,0},{-80,0}, + {-80,-60},{-60,-60}}, color={0,127,255})); + end for; + for i in 1:nPorts_b loop + connect(pasSteOut.port_b, ports_b[i]) annotation (Line(points={{60,-60},{80,-60}, + {80,0},{100,0}}, color={0,127,255})); + end for; + connect(ports_a, pasDed.port_a) annotation (Line(points={{-100,0},{-20,0},{-20, + 20},{-10,20}}, color={0,127,255})); + connect(pasDed.port_b, ports_b) annotation (Line(points={{10,20},{20,20},{20,0}, + {100,0}}, color={0,127,255})); + connect(del.ports[nPorts_a+nPorts_b+1], port_aComLeg) annotation (Line(points={{0,-20}, + {0,-20},{0,-60}}, + color={0,127,255})); + connect(ports_a, del.ports[1:nPorts_a]) + annotation (Line(points={{-100,0},{-20,0},{-20, + -20},{0,-20}}, color={0,127,255})); + connect(del.ports[(nPorts_a+1):(nPorts_a+nPorts_b)], ports_b) + annotation (Line(points={{0,-20},{20,-20},{20,0},{100,0}}, + color={0,127,255})); + connect(pasSteInl.port_b, port_aComLeg) + annotation (Line(points={{-40,-60},{0,-60}}, color={0,127,255})); + connect(port_aComLeg, pasSteOut.port_a) + annotation (Line(points={{0,-60},{40,-60}}, color={0,127,255})); + + + annotation ( + defaultComponentName="rou", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Text( extent={{-149,-114},{151,-154}}, + textColor={0,0,255}, + textString="%name"), + Line( points={{-100 + min(0,icon_extend), 0}, {100 + max(0, icon_extend),0}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts_a>=2, + points=if have_comLeg then + {{-100 + min(0,icon_extend), icon_dy}, {-40,icon_dy}, {-40, 0}} + else {{-100 + min(0,icon_extend),icon_dy}, {100 + max(0, icon_extend),icon_dy}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts_a>=3, + points=if have_comLeg then + {{-100 + min(0,icon_extend), 2*icon_dy}, {-40, 2*icon_dy}, {-40, icon_dy}} + else {{-100 + min(0,icon_extend),2*icon_dy}, {100 + max(0, icon_extend),2*icon_dy}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts_a>=4, + points=if have_comLeg then + {{-100 + min(0,icon_extend), 3*icon_dy}, {-40, 3*icon_dy}, {-40, 2*icon_dy}} + else {{-100 + min(0,icon_extend),3*icon_dy}, {100 + max(0, icon_extend),3*icon_dy}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts_b>=2 and have_comLeg, + points={{40, 0}, {40, icon_dy}, {100 + max(0, icon_extend), icon_dy}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts_b>=3 and have_comLeg, + points={{40, icon_dy}, {40, 2*icon_dy}, {100 + max(0, icon_extend), 2*icon_dy}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts_b>=4 and have_comLeg, + points={{40, 2*icon_dy}, {40, 3*icon_dy}, {100 + max(0, icon_extend), 3*icon_dy}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash)}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" ++This is a model of a many-to-many fluid connector with an +optional control volume, and an optional mixing port (common leg). +It is typically used to connect parallel pumps with parallel +chillers or boilers. +Selecting a mixing port allows modeling a headered pumping arrangement. +Without any mixing port, a dedicated pumping arrangement is modeled. +
+")); +end MultipleToMultiple; diff --git a/Buildings/Templates/Components/Routing/MultipleToSingle.mo b/Buildings/Templates/Components/Routing/MultipleToSingle.mo new file mode 100644 index 00000000000..df088e2bfe3 --- /dev/null +++ b/Buildings/Templates/Components/Routing/MultipleToSingle.mo @@ -0,0 +1,167 @@ +within Buildings.Templates.Components.Routing; +model MultipleToSingle "Multiple inlet port, single outlet ports" + replaceable package Medium = + Modelica.Media.Interfaces.PartialMedium "Medium in the component" + annotation (choices( + choice(redeclare package Medium = Buildings.Media.Air "Moist air"), + choice(redeclare package Medium = Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater ( + property_T=293.15, + X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + parameter Integer nPorts + "Number of ports" + annotation(Evaluate=true, Dialog(group="Configuration")); + + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal(min=0) + "Nominal mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Time tau=10 + "Time constant at nominal flow" + annotation (Dialog(tab="Dynamics", group="Nominal condition")); + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations")); + + parameter Boolean allowFlowReversal=true + "Set to true to allow flow reversal, false restricts to design direction (ports_a -> port_b)" + annotation (Evaluate=true, Dialog(tab="Assumptions")); + // Diagnostics + parameter Boolean show_T = false + "Set to true if actual temperature at port is computed" + annotation ( + Dialog(tab="Advanced", group="Diagnostics"), + HideResult=true); + + parameter Integer icon_offset = 0 + "Offset in y-direction between inlet and outlet in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Integer icon_dy = 100 + "Distance in y-direction between each branch in icon layer" + annotation(Dialog(tab="Graphics", enable=false)); + parameter Buildings.Templates.Components.Types.IconPipe icon_pipe = + Buildings.Templates.Components.Types.IconPipe.Supply + "Pipe symbol" + annotation(Dialog(tab="Graphics", enable=false)); + + Modelica.Fluid.Interfaces.FluidPorts_a ports_a[nPorts]( + redeclare each final package Medium = Medium, + each m_flow(min=if allowFlowReversal then -Modelica.Constants.inf else 0), + each h_outflow(start=Medium.h_default, nominal=Medium.h_default)) + "Fluid connector a (positive design flow direction is from ports_a to port_b)" + annotation (Placement(transformation(extent={{-110,-40},{-90,40}}), + iconTransformation(extent={{-110,-40},{-90,40}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b( + redeclare final package Medium = Medium, + m_flow(max=if allowFlowReversal then +Modelica.Constants.inf else 0), + h_outflow(start=Medium.h_default, nominal=Medium.h_default)) + "Fluid connectors b (positive design flow direction is from ports_a to port_b)" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + + Fluid.Delays.DelayFirstOrder del( + redeclare final package Medium = Medium, + final tau=tau, + final m_flow_nominal=m_flow_nominal, + final energyDynamics=energyDynamics, + final allowFlowReversal=allowFlowReversal, + final prescribedHeatFlowRate=false, + final nPorts=nPorts+1) + if have_controlVolume + "Fluid volume to break algebraic loop" + annotation (Placement(transformation(extent={{-10,-20},{10,0}}))); + PassThroughFluid pasSte( + redeclare final package Medium=Medium) + if not have_controlVolume + "Fluid pass-through in lieu of control volume" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + + Medium.ThermodynamicState sta_a[nPorts]= + Medium.setState_phX(ports_a.p, + noEvent(actualStream(ports_a.h_outflow)), + noEvent(actualStream(ports_a.Xi_outflow))) + if show_T "Medium properties in ports_a"; + Medium.ThermodynamicState sta_b= + Medium.setState_phX(port_b.p, + noEvent(actualStream(port_b.h_outflow)), + noEvent(actualStream(port_b.Xi_outflow))) + if show_T "Medium properties in port_b"; + +protected + parameter Boolean have_controlVolume= + energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState + "Boolean flag used to remove conditional components" + annotation(Evaluate=true); + +equation + for i in 1:nPorts loop + connect(ports_a[i], pasSte.port_a) annotation (Line(points={{-100,0},{-20,0},{ + -20,20},{-10,20}}, color={0,127,255})); + end for; + connect(ports_a, del.ports[1:nPorts]) annotation (Line(points={{-100,0},{-20,0}, + {-20,-20},{0,-20}}, + color={0,127,255})); + connect(del.ports[nPorts+1], port_b) annotation (Line(points={{0,-20},{20,-20}, + {20,0},{100,0}}, color={0,127,255})); + connect(pasSte.port_b, port_b) annotation (Line(points={{10,20},{20,20},{20,0}, + {100,0}}, color={0,127,255})); + annotation ( + defaultComponentName="rou", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Text( extent={{-149,-114},{151,-154}}, + textColor={0,0,255}, + textString="%name"), + Line( points={{-100, icon_offset}, {0, icon_offset}, {0,0}, {100,0}}, + color={0,0,0}, + thickness=5, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash), + Line( visible=nPorts>=2, + points=if icon_offset*icon_dy>=0 then + {{0,icon_offset},{0,icon_offset+icon_dy},{-100,icon_offset+icon_dy}} + elseif icon_offset>0 and icon_offset+icon_dy<0 or icon_offset<0 and icon_offset+icon_dy>0 then + {{0,0},{0,icon_offset+icon_dy},{-100,icon_offset+icon_dy}} + else {{0,icon_offset+icon_dy},{-100,icon_offset+icon_dy}}, + color={0,0,0}, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash, + thickness=5), + Line( visible=nPorts>=3, + points=if icon_offset*icon_dy>=0 then + {{0, icon_offset+icon_dy},{0, icon_offset+2*icon_dy},{-100, icon_offset+2*icon_dy}} + elseif icon_offset>0 and icon_offset+2*icon_dy<0 or icon_offset<0 and icon_offset+2*icon_dy>0 then + {{0, 0},{0, icon_offset+2*icon_dy},{-100, icon_offset+2*icon_dy}} + else {{0, icon_offset+2*icon_dy},{-100, icon_offset+2*icon_dy}}, + color={0,0,0}, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash, + thickness=5), + Line( visible=nPorts>=4, + points=if icon_offset*icon_dy>=0 then + {{0, icon_offset+2*icon_dy},{0, icon_offset+3*icon_dy},{-100, icon_offset+3*icon_dy}} + elseif icon_offset>0 and icon_offset+3*icon_dy<0 or icon_offset<0 and icon_offset+3*icon_dy>0 then + {{0, 0},{0, icon_offset+3*icon_dy},{-100, icon_offset+3*icon_dy}} + else {{0, icon_offset+3*icon_dy},{-100, icon_offset+3*icon_dy}}, + color={0,0,0}, + pattern=if icon_pipe==Buildings.Templates.Components.Types.IconPipe.Supply + then LinePattern.Solid else LinePattern.Dash, + thickness=5)}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" ++This is a model of a many-to-one fluid connector with an +optional control volume. +It is typically used to represent an outlet manifold or +multiple junctions converging into a single pipe. +
+")); +end MultipleToSingle; diff --git a/Buildings/Templates/Components/Routing/PassThroughFluid.mo b/Buildings/Templates/Components/Routing/PassThroughFluid.mo new file mode 100644 index 00000000000..410acee7d08 --- /dev/null +++ b/Buildings/Templates/Components/Routing/PassThroughFluid.mo @@ -0,0 +1,28 @@ +within Buildings.Templates.Components.Routing; +model PassThroughFluid "Direct fluid pass-through" + extends Buildings.Fluid.Interfaces.PartialTwoPort; + +equation + connect(port_a, port_b) annotation (Line(points={{-100,0},{0,0},{0,0},{100,0}}, + color={0,127,255})); + annotation ( + defaultComponentName="pas", + Icon(coordinateSystem(preserveAspectRatio=false), + graphics={Line( + points={{-100,0},{100,0}}, + color={28,108,200}, + thickness=1)}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This is a model of a direct fluid pass-through used for +templating purposes. +
+", revisions=" ++This is a model of a one-to-many fluid connector with an +optional control volume. +It is typically used to represent an inlet manifold or +a single pipe diverging into multiple junctions. +
+")); +end SingleToMultiple; diff --git a/Buildings/Templates/Components/Routing/package.mo b/Buildings/Templates/Components/Routing/package.mo new file mode 100644 index 00000000000..1559f82ce92 --- /dev/null +++ b/Buildings/Templates/Components/Routing/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates.Components; +package Routing "Connection models for fluid routing" + extends Modelica.Icons.VariantsPackage; + +annotation (Documentation(info=" ++This package contains models that allow connecting component +fluid ports together with various routing arrangements. +
+")); +end Routing; diff --git a/Buildings/Templates/Components/Routing/package.order b/Buildings/Templates/Components/Routing/package.order new file mode 100644 index 00000000000..cb417ce6c69 --- /dev/null +++ b/Buildings/Templates/Components/Routing/package.order @@ -0,0 +1,4 @@ +MultipleToMultiple +MultipleToSingle +PassThroughFluid +SingleToMultiple diff --git a/Buildings/Templates/Components/Sensors/DifferentialPressure.mo b/Buildings/Templates/Components/Sensors/DifferentialPressure.mo new file mode 100644 index 00000000000..55206014d71 --- /dev/null +++ b/Buildings/Templates/Components/Sensors/DifferentialPressure.mo @@ -0,0 +1,55 @@ +within Buildings.Templates.Components.Sensors; +model DifferentialPressure "Differential pressure sensor" + extends Buildings.Templates.Components.Interfaces.PartialSensor( + y(final unit="Pa", displayUnit="Pa"), + final m_flow_nominal=0, + final isDifPreSen=true); + + Buildings.Fluid.Sensors.RelativePressure senRelPre( + redeclare final package Medium=Medium) if have_sen + "Relative pressure sensor" + annotation (Placement(transformation(extent={{-10,10},{10,-10}}))); +equation + connect(port_a, senRelPre.port_a) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(senRelPre.p_rel, y) + annotation (Line(points={{0,9},{0,120}}, color={0,0,127})); + connect(senRelPre.port_b, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Bitmap( + extent=if text_flip then {{40,-40},{-40,40}} else {{-40,-40},{40,40}}, + visible=have_sen, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressure.svg"), + Bitmap( + extent=if text_flip then {{-30,-70},{-110,10}} else {{-110,-70},{-30,10}}, + visible=have_sen, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureHigh.svg"), + Bitmap( + extent=if text_flip then {{110,-70},{30,10}} else {{30,-70},{110,10}}, + visible=have_sen, + rotation=text_rotation, + fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/DifferentialPressureLow.svg")}), + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +
+This is a model for a differential pressure sensor that can be
+enabled or disabled with the Boolean parameter have_sen
.
+If disabled, the control input variable y
is removed
+and the model simply consists of two fluid ports that are not connected
+to each other and for which the following equations are used.
+So the model must still be provided with pressure conditions
+at each port.
+
+// Zero flow equations
+port_(a|b).m_flow = 0;
+// No contribution of specific quantities
+port_(a|b).h_outflow = 0;
+port_(a|b).Xi_outflow = zeros(Medium.nXi);
+port_(a|b).C_outflow = zeros(Medium.nC);
+
+"));
+end DifferentialPressure;
diff --git a/Buildings/Templates/Components/Sensors/HumidityRatio.mo b/Buildings/Templates/Components/Sensors/HumidityRatio.mo
new file mode 100644
index 00000000000..1178cabf263
--- /dev/null
+++ b/Buildings/Templates/Components/Sensors/HumidityRatio.mo
@@ -0,0 +1,58 @@
+within Buildings.Templates.Components.Sensors;
+model HumidityRatio "Humidity ratio sensor"
+ extends Buildings.Templates.Components.Interfaces.PartialSensor(
+ y(final unit="kg/kg"),
+ final isDifPreSen=false);
+
+ Buildings.Fluid.Sensors.MassFractionTwoPort senMasFra(
+ redeclare final package Medium=Medium,
+ final m_flow_nominal=m_flow_nominal,
+ final allowFlowReversal=allowFlowReversal) if have_sen
+ "Mass fraction sensor"
+ annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
+ Buildings.Utilities.Psychrometrics.ToDryAir toDryAir if have_sen
+ "Conversion into kg/kg dry air"
+ annotation (Placement(
+ transformation(
+ extent={{-10,-10},{10,10}},
+ rotation=90,
+ origin={0,30})));
+
+ Buildings.Templates.Components.Routing.PassThroughFluid pas(
+ redeclare final package Medium = Medium,
+ final allowFlowReversal=allowFlowReversal) if not have_sen "Pass through"
+ annotation (Placement(transformation(extent={{-10,-50},{10,-30}})));
+equation
+ connect(port_a, senMasFra.port_a)
+ annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255}));
+ connect(senMasFra.port_b, port_b)
+ annotation (Line(points={{10,0},{100,0}}, color={0,127,255}));
+ connect(senMasFra.X, toDryAir.XiTotalAir)
+ annotation (Line(points={{0,11},{0,19}}, color={0,0,127}));
+
+ connect(port_a, pas.port_a) annotation (Line(points={{-100,0},{-80,0},{-80,-40},
+ {-10,-40}}, color={0,127,255}));
+ connect(pas.port_b, port_b) annotation (Line(points={{10,-40},{80,-40},{80,0},
+ {100,0}}, color={0,127,255}));
+ connect(toDryAir.XiDry, y)
+ annotation (Line(points={{0,41},{0,120}}, color={0,0,127}));
+ annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={
+ Bitmap(
+ extent={{-100,-160},{100,40}},
+ visible=have_sen,
+ fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/ProbeStandard.svg"),
+ Bitmap(
+ extent=if text_flip then {{40,-240},{-40,-160}} else {{-40,-240},{40,-160}},
+ visible=have_sen,
+ rotation=text_rotation,
+ fileName="modelica://Buildings/Resources/Images/Templates/Components/Sensors/HumidityRatio.svg")}),
+ Diagram(coordinateSystem(preserveAspectRatio=false)),
+ Documentation(info="
+
+This is a model for a humidity ratio (in kg/kg dry air) sensor that can be
+enabled or disabled with the Boolean parameter have_sen
.
+If disabled, the control input variable y
is removed
+and the model is a direct fluid pass-through.
+
+This is a model for a specific enthalpy sensor that can be
+enabled or disabled with the Boolean parameter have_sen
.
+If disabled, the control input variable y
is removed
+and the model is a direct fluid pass-through.
+
+This is a model for a dry bulb temperature sensor that can be
+enabled or disabled with the Boolean parameter have_sen
.
+If disabled, the control input variable y
is removed
+and the model is a direct fluid pass-through.
+
+This is a model for a volume flow rate sensor that can be
+enabled or disabled with the Boolean parameter have_sen
.
+If disabled, the control input variable y
is removed
+and the model is a direct fluid pass-through.
+
+This package contains models for sensors. +
+")); +end Sensors; diff --git a/Buildings/Templates/Components/Sensors/package.order b/Buildings/Templates/Components/Sensors/package.order new file mode 100644 index 00000000000..2417b06398e --- /dev/null +++ b/Buildings/Templates/Components/Sensors/package.order @@ -0,0 +1,5 @@ +DifferentialPressure +HumidityRatio +SpecificEnthalpy +Temperature +VolumeFlowRate diff --git a/Buildings/Templates/Components/Types.mo b/Buildings/Templates/Components/Types.mo new file mode 100644 index 00000000000..a864929df7a --- /dev/null +++ b/Buildings/Templates/Components/Types.mo @@ -0,0 +1,136 @@ +within Buildings.Templates.Components; +package Types "Package with type definitions" + extends Modelica.Icons.TypesPackage; + type Chiller = enumeration( + AirCooled + "Air-cooled compression chiller", + WaterCooled + "Water-cooled compression chiller") + "Enumeration to specify the type of chiller"; + type Coil = enumeration( + ElectricHeating + "Modulating electric heating coil", + EvaporatorMultiStage + "Evaporator coil with multi-stage compressor", + EvaporatorVariableSpeed + "Evaporator coil with variable speed compressor", + None + "No coil", + WaterBasedCooling + "Chilled water coil", + WaterBasedHeating + "Hot water coil") + "Enumeration to configure the coil"; + type Cooler = enumeration( + None + "No external cooler (typically for air-cooled chillers)", + CoolingTowerClosed + "Closed-circuit cooling tower", + CoolingTowerOpen + "Open-circuit cooling tower", + DryCooler + "Dry cooler") + "Enumeration to configure the condenser water cooling equipment"; + type Damper = enumeration( + NoPath + "No fluid path", + Barometric + "Barometric damper", + Modulating + "Modulating damper", + None + "No damper", + PressureIndependent + "Pressure independent damper", + TwoPosition + "Two-position damper") + "Enumeration to configure the damper"; + type DamperBlades = enumeration( + Opposed + "Opposed blades", + Parallel + "Parallel blades", + VAV + "VAV damper") + "Enumeration to specify the type of damper blades"; + type Fan = enumeration( + None + "No fan", + SingleConstant + "Single fan - Constant speed", + SingleVariable + "Single fan - Variable speed", + ArrayVariable + "Fan array - Variable speed") + "Enumeration to configure the fan"; + type FanSingle = enumeration( + Housed + "Housed centrifugal fan", + Plug + "Plug fan", + Propeller + "Propeller fan") + "Enumeration to specify the type of single fan"; + type IconPipe = enumeration( + None + "No line", + Return + "Return pipe - Dashed line", + Supply + "Supply pipe - Solid line") + "Enumeration to specify the pipe symbol"; + type Sensor = enumeration( + DifferentialPressure + "Differential pressure", + HumidityRatio + "Humidity ratio", + PPM + "PPM", + RelativeHumidity + "Relative humidity", + SpecificEnthalpy + "Specific enthalpy", + Temperature + "Temperature", + VolumeFlowRate + "Volume flow rate") + "Enumeration to configure the sensor"; + type SensorTemperature = enumeration( + Standard + "Standard sensor", + Averaging + "Averaging sensor", + InWell + "Sensor in well") + "Enumeration to specify the type of temperature sensor"; + type SensorVolumeFlowRate = enumeration( + AFMS + "Airflow measuring station", + FlowCross + "Flow cross", + FlowMeter + "Flow meter") + "Enumeration to specify the type of volume flow rate sensor"; + // RFE: Add support for PICV. + type Valve = enumeration( + None + "No valve", + PumpedCoilThreeWay + "Pumped coil with three-way valve", + PumpedCoilTwoWay + "Pumped coil with two-way valve", + ThreeWayModulating + "Three-way modulating valve", + ThreeWayTwoPosition + "Three-way two-position valve", + TwoWayModulating + "Two-way modulating valve", + TwoWayTwoPosition + "Two-way two-position valve") + "Enumeration to configure the valve"; + annotation (Documentation(info=" ++This package contains type definitions. +
+")); +end Types; diff --git a/Buildings/Templates/Components/Validation/Coils.mo b/Buildings/Templates/Components/Validation/Coils.mo new file mode 100644 index 00000000000..5c4c4af962c --- /dev/null +++ b/Buildings/Templates/Components/Validation/Coils.mo @@ -0,0 +1,289 @@ +within Buildings.Templates.Components.Validation; +model Coils "Validation model for coil components" + extends Modelica.Icons.Example; + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium"; + replaceable package MediumLiq=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "HW or CHW medium"; + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.FixedInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations")); + + Fluid.Sources.Boundary_pT bouAirEntCoo( + redeclare final package Medium = MediumAir, + X={coiCoo.dat.wAirEnt_nominal/(1 + coiCoo.dat.wAirEnt_nominal),1 - coiCoo.dat.wAirEnt_nominal + /(1 + coiCoo.dat.wAirEnt_nominal)}, + p=bouAirLvg.p + coiCoo.dat.dpAir_nominal, + T=coiCoo.dat.TAirEnt_nominal, + nPorts=2) "Boundary conditions for entering air" + annotation (Placement(transformation(extent={{-90,110},{-70,130}}))); + Fluid.Sources.Boundary_pT bouChiWatEnt( + redeclare final package Medium = MediumLiq, + p=bouLiqLvg.p + coiCoo.dat.dpWat_nominal + coiCoo.dat.dpValve_nominal, + T=coiCoo.dat.TWatEnt_nominal, + nPorts=1) "Boundary conditions for entering CHW" + annotation (Placement(transformation(extent={{110,70},{90,90}}))); + Fluid.Sources.Boundary_pT bouLiqLvg( + redeclare final package Medium =MediumLiq, nPorts=2) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); + Fluid.Sources.Boundary_pT bouAirLvg( + redeclare final package Medium =MediumAir, nPorts=6) "Boundary conditions for leaving air" + annotation (Placement(transformation(extent={{110,110},{90,130}}))); + + Buildings.Templates.Components.Coils.WaterBasedCooling coiCoo( + redeclare final package MediumAir=MediumAir, + redeclare final package MediumChiWat=MediumLiq, + dat( + mAir_flow_nominal=1, + dpAir_nominal=200, + mWat_flow_nominal=1, + dpWat_nominal=2E4, + dpValve_nominal=coiCoo.dat.dpWat_nominal, + cap_nominal=-5E4, + TWatEnt_nominal=280.15, + TAirEnt_nominal=308.15, + wAirEnt_nominal=0.017), + final energyDynamics=energyDynamics, + redeclare replaceable + Buildings.Templates.Components.Valves.TwoWayModulating val(y_start=0) + "Two-way modulating valve") "Water-based cooling coil" + annotation (Placement(transformation(extent={{10,110},{30,130}}))); + Interfaces.Bus bus "Control bus" + annotation (Placement(transformation(extent={{-20,120},{20, + 160}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Continuous.Sources.Ramp y(height=1, + duration=10) "Coil/valve control signal" + annotation (Placement(transformation(extent={{-90,150},{-70,170}}))); + + Buildings.Templates.Components.Coils.WaterBasedHeating coiHea( + redeclare final package MediumAir = MediumAir, + redeclare final package MediumHeaWat=MediumLiq, + dat( + mAir_flow_nominal=1, + dpAir_nominal=200, + mWat_flow_nominal=1, + dpWat_nominal=2E4, + dpValve_nominal=coiCoo.dat.dpWat_nominal, + cap_nominal=5E4, + TWatEnt_nominal=323.15, + TAirEnt_nominal=263.15), + final energyDynamics=energyDynamics, + redeclare replaceable + Buildings.Templates.Components.Valves.TwoWayModulating val(y_start=0) + "Two-way modulating valve") "Water-based heating" + annotation (Placement(transformation(extent={{10,30},{30,50}}))); + Interfaces.Bus bus1 "Control bus" + annotation (Placement(transformation(extent={{-20,40},{20,80}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Fluid.Sources.Boundary_pT bouAirEntHea( + redeclare final package Medium = MediumAir, + p=bouAirLvg.p + coiHea.dat.dpAir_nominal, + T=coiHea.dat.TAirEnt_nominal, + nPorts=2) "Boundary conditions for entering air" + annotation (Placement(transformation(extent={{-90,30},{-70,50}}))); + Fluid.Sources.Boundary_pT bouHeaWatEnt( + redeclare final package Medium = MediumLiq, + p=bouLiqLvg.p + coiHea.dat.dpWat_nominal + coiHea.dat.dpValve_nominal, + T=coiHea.dat.TWatEnt_nominal, + nPorts=1) "Boundary conditions for entering HW" + annotation (Placement(transformation(extent={{110,10},{90,30}}))); + + Buildings.Templates.Components.Coils.ElectricHeating coiEle( + redeclare final package MediumAir = MediumAir, + dat( + mAir_flow_nominal=1, + dpAir_nominal=200, + cap_nominal=5E4), + final energyDynamics=energyDynamics) "Electric heating" + annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); + Interfaces.Bus bus2 "Control bus" + annotation (Placement(transformation(extent={{-20,-40},{20,0}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Buildings.Templates.Components.Coils.EvaporatorVariableSpeed coiEva( + redeclare final package MediumAir = MediumAir, + dat(dpAir_nominal=200), + final energyDynamics=energyDynamics) "Variable speed evaporator coil" + annotation (Placement(transformation(extent={{10,-110},{30,-90}}))); + BoundaryConditions.WeatherData.Bus + weaBus "Weather data bus" annotation (Placement(transformation(extent={{-50, + -110},{-10,-70}}), iconTransformation(extent={{190,-10},{210,10}}))); + Interfaces.Bus bus3 "Control bus" + annotation (Placement(transformation(extent={{-20,-100},{20,-60}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TOut(k=coiEva.dat.datCoi.sta[1].nomVal.TConIn_nominal) + "Outdoor temperature" + annotation (Placement(transformation(extent={{-130,-110},{-110,-90}}))); + Controls.OBC.CDL.Continuous.Sources.Constant XOut(k=0.015) + "Water mass fraction in outdoor air" + annotation (Placement(transformation(extent={{-130,-150},{-110,-130}}))); + Utilities.Psychrometrics.TWetBul_TDryBulXi wetBul( + redeclare final package Medium = MediumAir) + "Compute wet bulb temperature" + annotation (Placement(transformation(extent={{-60,-130},{-40,-110}}))); + Controls.OBC.CDL.Continuous.Sources.Constant pOut(k=101325) + "Outdoor pressure" + annotation (Placement(transformation(extent={{-130,-190},{-110,-170}}))); + Fluid.Sources.Boundary_pT bouAirEntCoo1( + redeclare final package Medium = MediumAir, + use_Xi_in=true, + p=bouAirLvg.p + coiEva.dat.dpAir_nominal, + T=coiEva.dat.datCoi.sta[1].nomVal.TEvaIn_nominal, + nPorts=2) "Boundary conditions for entering air" + annotation (Placement(transformation(extent={{-90,-70},{-70,-50}}))); + Utilities.Psychrometrics.X_pTphi x_pTphi(use_p_in=false) + "Compute wet bulb temperature" + annotation (Placement(transformation(extent={{-88,-10},{-68,10}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TAirEnt(k=coiEva.dat.datCoi.sta[1].nomVal.TEvaIn_nominal) + "Entering air temperature" + annotation (Placement(transformation(extent={{-130,10},{-110,30}}))); + Controls.OBC.CDL.Continuous.Sources.Constant phiAirEnt(k=coiEva.dat.datCoi.sta[1].nomVal.phiIn_nominal) + "Enetring air relative humidity" + annotation (Placement(transformation(extent={{-130,-30},{-110,-10}}))); + Buildings.Templates.Components.Coils.EvaporatorMultiStage coiMul( + redeclare final package MediumAir = MediumAir, + dat( + redeclare + Buildings.Fluid.DXSystems.Cooling.AirSource.Data.DoubleSpeed.Lennox_SCA240H4B + datCoi, + dpAir_nominal=200), + final energyDynamics=energyDynamics) "Multiple stage evaporator coil" + annotation (Placement(transformation(extent={{10,-170},{30,-150}}))); + Controls.OBC.CDL.Integers.Sources.TimeTable y1( + table=[0,0; 1,1; 2,2], + timeScale=50, + period=200) "Coil/valve control signal" + annotation (Placement(transformation(extent={{-80,-190},{-60,-170}}))); + Interfaces.Bus bus4 "Control bus" + annotation (Placement(transformation(extent={{-20,-160},{20,-120}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Fluid.FixedResistances.PressureDrop res( + redeclare final package Medium = MediumAir, + final m_flow_nominal=coiCoo.dat.mAir_flow_nominal, + final dp_nominal=coiCoo.dat.dpAir_nominal) "Flow resistance" + annotation (Placement(transformation(extent={{-30,170},{-10,190}}))); + Buildings.Templates.Components.Coils.None non( + redeclare final package MediumAir =MediumAir) "No coilamper" + annotation (Placement(transformation(extent={{10,170},{30,190}}))); +equation + connect(bouAirEntCoo.ports[1], coiCoo.port_a) annotation (Line(points={{-70,119}, + {-30,119},{-30,120},{10,120}}, color={0,127,255})); + connect(coiCoo.port_b, bouAirLvg.ports[1]) annotation (Line(points={{30,120}, + {60,120},{60,118.333},{90,118.333}}, + color={0,127,255})); + connect(bouChiWatEnt.ports[1], coiCoo.port_aSou) + annotation (Line(points={{90,80},{25,80},{25,110}}, + color={0,127,255})); + connect(bouLiqLvg.ports[1], coiCoo.port_bSou) + annotation (Line(points={{-70,79},{15,79},{15,110}}, + color={0,127,255})); + connect(y.y, bus.y) annotation (Line(points={{-68,160},{0,160},{0,140}}, + color={0,0,127})); + connect(bus, coiCoo.bus) annotation (Line( + points={{0,140},{20,140},{20,130}}, + color={255,204,51}, + thickness=0.5)); + connect(coiHea.bus, bus1) annotation (Line( + points={{20,50},{20,60},{0,60}}, + color={255,204,51}, + thickness=0.5)); + connect(y.y, bus1.y) + annotation (Line(points={{-68,160},{0,160},{0,60}}, color={0,0,127})); + connect(bouAirEntHea.ports[1], coiHea.port_a) annotation (Line(points={{-70,39}, + {-16,39},{-16,40},{10,40}}, color={0,127,255})); + connect(coiHea.port_b, bouAirLvg.ports[2]) annotation (Line(points={{30,40},{60, + 40},{60,119},{90,119}}, color={0,127,255})); + connect(bouHeaWatEnt.ports[1], coiHea.port_aSou) + annotation (Line(points={{90,20},{25,20},{25,30}}, color={0,127,255})); + connect(coiHea.port_bSou, bouLiqLvg.ports[2]) annotation (Line(points={{15,30}, + {15,20},{-20,20},{-20,81},{-70,81}}, color={0,127,255})); + connect(bouAirEntHea.ports[2], coiEle.port_a) annotation (Line(points={{-70,41}, + {-40,41},{-40,-40},{10,-40}}, color={0,127,255})); + connect(coiEle.bus, bus2) annotation (Line( + points={{20,-30},{20,-20},{0,-20}}, + color={255,204,51}, + thickness=0.5)); + connect(coiEle.port_b, bouAirLvg.ports[3]) annotation (Line(points={{30,-40}, + {64,-40},{64,119.667},{90,119.667}}, color={0,127,255})); + connect(y.y, bus2.y) + annotation (Line(points={{-68,160},{0,160},{0,-20}}, color={0,0,127})); + connect(coiEva.port_b, bouAirLvg.ports[4]) annotation (Line(points={{30,-100}, + {68,-100},{68,118},{90,118},{90,120.333}}, + color={0,127,255})); + connect(bus3, coiEva.bus) annotation (Line( + points={{0,-80},{20,-80},{20,-90}}, + color={255,204,51}, + thickness=0.5)); + connect(weaBus, coiEva.busWea) annotation (Line( + points={{-30,-90},{16,-90}}, + color={255,204,51}, + thickness=0.5)); + connect(y.y, bus3.y) annotation (Line(points={{-68,160},{0,160},{0,-80}}, + color={0,0,127})); + connect(TOut.y, weaBus.TDryBul) annotation (Line(points={{-108,-100},{-70,-100}, + {-70,-90},{-30,-90}}, color={0,0,127})); + connect(TOut.y, wetBul.TDryBul) annotation (Line(points={{-108,-100},{-70,-100}, + {-70,-112},{-61,-112}}, color={0,0,127})); + connect(pOut.y, wetBul.p) annotation (Line(points={{-108,-180},{-100,-180},{-100, + -128},{-61,-128}}, color={0,0,127})); + connect(wetBul.TWetBul, weaBus.TWetBul) annotation (Line(points={{-39,-120},{-32, + -120},{-32,-90},{-30,-90}}, + color={0,0,127})); + connect(XOut.y, wetBul.Xi[1]) annotation (Line(points={{-108,-140},{-84,-140}, + {-84,-120},{-61,-120}}, color={0,0,127})); + connect(bouAirEntCoo1.ports[1], coiEva.port_a) annotation (Line(points={{-70,-61}, + {-14,-61},{-14,-100},{10,-100}}, + color={0,127,255})); + connect(phiAirEnt.y, x_pTphi.phi) annotation (Line(points={{-108,-20},{-100,-20}, + {-100,-6},{-90,-6}}, color={0,0,127})); + connect(TAirEnt.y, x_pTphi.T) annotation (Line(points={{-108,20},{-100,20},{-100, + 0},{-90,0}}, color={0,0,127})); + connect(x_pTphi.X[1], bouAirEntCoo1.Xi_in[1]) annotation (Line(points={{-67,0}, + {-60,0},{-60,-20},{-96,-20},{-96,-64},{-92,-64}}, color={0,0,127})); + connect(coiMul.port_b, bouAirLvg.ports[5]) annotation (Line(points={{30,-160}, + {72,-160},{72,121},{90,121}}, color={0,127,255})); + connect(bouAirEntCoo1.ports[2], coiMul.port_a) annotation (Line(points={{-70,-59}, + {-70,-60},{-14,-60},{-14,-160},{10,-160}}, color={0,127,255})); + connect(weaBus, coiMul.busWea) annotation (Line( + points={{-30,-90},{-30,-150},{16,-150}}, + color={255,204,51}, + thickness=0.5)); + connect(y1.y[1], bus4.y) annotation (Line(points={{-58,-180},{0,-180},{0,-140}}, + color={255,127,0})); + connect(coiMul.bus, bus4) annotation (Line(points={{20,-150},{20,-140},{ + 0,-140}}, + color={255,127,0})); + connect(res.port_b, non.port_a) annotation (Line(points={{-10,180},{-2,180},{-2, + 180},{10,180}}, color={0,127,255})); + connect(non.port_b, bouAirLvg.ports[6]) annotation (Line(points={{30,180},{90, + 180},{90,121.667}}, color={0,127,255})); + connect(bouAirEntCoo.ports[2], res.port_a) annotation (Line(points={{-70,121}, + {-40,121},{-40,180},{-30,180}}, color={0,127,255})); +annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Coils.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=200), + Diagram(coordinateSystem(extent={{-140,-200},{140,200}})), + Documentation(info=" ++This model validates the models within + +Buildings.Templates.Components.Coils +by exposing them to a fixed pressure difference on +the air side. +Models representing a water-based coil with valve +are also exposed to a fixed pressure difference on the +water side, and a varying valve opening from fully closed +to fully open position. +Other coil models are controlled with a signal varying +from 0 to 1. +
+")); +end Coils; diff --git a/Buildings/Templates/Components/Validation/Dampers.mo b/Buildings/Templates/Components/Validation/Dampers.mo new file mode 100644 index 00000000000..f27632b1d1f --- /dev/null +++ b/Buildings/Templates/Components/Validation/Dampers.mo @@ -0,0 +1,119 @@ +within Buildings.Templates.Components.Validation; +model Dampers "Validation model for damper components" + extends Modelica.Icons.Example; + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium"; + + Fluid.Sources.Boundary_pT bouAirEnt( + redeclare final package Medium = MediumAir, + p=bouAirLvg.p + mod.dat.dp_nominal, + nPorts=4) "Boundary conditions for entering air" + annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); + Fluid.Sources.Boundary_pT bouAirLvg( + redeclare final package Medium =MediumAir, nPorts=4) "Boundary conditions for leaving air" + annotation (Placement(transformation(extent={{110,50},{90,70}}))); + + Buildings.Templates.Components.Dampers.Modulating mod( + y_start=0, + redeclare final package Medium = MediumAir, + dat(m_flow_nominal=1, + dp_nominal=50)) "Modulating damper" + annotation (Placement(transformation(extent={{10,50},{30,70}}))); + Interfaces.Bus bus + "Control bus" + annotation (Placement(transformation(extent={{-20,60},{20,100}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Continuous.Sources.Ramp y(height=1, + duration=10) "Damper control signal" + annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); + + Buildings.Templates.Components.Dampers.PressureIndependent pre( + y_start=0, + redeclare final package Medium = MediumAir, + dat(m_flow_nominal=1, dp_nominal=50)) + "Pressure independent damper" + annotation (Placement(transformation(extent={{10,-10},{30,10}}))); + Interfaces.Bus bus1 + "Control bus" + annotation (Placement(transformation(extent={{-20,0},{20,40}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Buildings.Templates.Components.Dampers.TwoPosition two( + y_start=0, + redeclare final package Medium = MediumAir, + dat(m_flow_nominal=1, dp_nominal=50)) "Two-position damper" + annotation (Placement(transformation(extent={{10,-70},{30,-50}}))); + Interfaces.Bus bus2 + "Control bus" + annotation (Placement(transformation(extent={{-20,-60},{20,-20}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Logical.Sources.TimeTable y1( + table=[0,0; 1,1], + timeScale=10, + period=200) "Damper control signal" + annotation (Placement(transformation(extent={{-90,-30},{-70,-10}}))); + Buildings.Templates.Components.Dampers.None non( + redeclare final package Medium = MediumAir) "No damper" + annotation (Placement(transformation(extent={{10,-110},{30,-90}}))); + Fluid.FixedResistances.PressureDrop res( + redeclare final package Medium = MediumAir, + final m_flow_nominal=mod.dat.m_flow_nominal, + final dp_nominal=mod.dat.dp_nominal) "Flow resistance" + annotation (Placement(transformation(extent={{-30,-110},{-10,-90}}))); +equation + connect(bouAirEnt.ports[1], mod.port_a) + annotation (Line(points={{-70,58.5},{-70,60},{10,60}}, + color={0,127,255})); + connect(mod.port_b, bouAirLvg.ports[1]) + annotation (Line(points={{30,60},{60,60},{60,58.5},{90,58.5}}, + color={0,127,255})); + connect(y.y, bus.y) annotation (Line(points={{-68,100},{0,100},{0,80}}, + color={0,0,127})); + connect(bus, mod.bus) annotation (Line( + points={{0,80},{20,80},{20,70}}, + color={255,204,51}, + thickness=0.5)); + connect(bouAirEnt.ports[2], pre.port_a) annotation (Line(points={{-70,59.5},{-38, + 59.5},{-38,0},{10,0}}, color={0,127,255})); + connect(pre.port_b, bouAirLvg.ports[2]) annotation (Line(points={{30,0},{60,0}, + {60,59.5},{90,59.5}}, color={0,127,255})); + connect(bus1, pre.bus) annotation (Line( + points={{0,20},{20,20},{20,10}}, + color={255,204,51}, + thickness=0.5)); + connect(y.y, bus1.y) + annotation (Line(points={{-68,100},{0,100},{0,20}}, + color={0,0,127})); + connect(bouAirEnt.ports[3], two.port_a) annotation (Line(points={{-70,60.5},{-38, + 60.5},{-38,-60},{10,-60}}, color={0,127,255})); + connect(two.port_b, bouAirLvg.ports[3]) annotation (Line(points={{30,-60},{60, + -60},{60,60.5},{90,60.5}}, color={0,127,255})); + connect(bus2, two.bus) annotation (Line( + points={{0,-40},{20,-40},{20,-50}}, + color={255,204,51}, + thickness=0.5)); + connect(y1.y[1], bus2.y1) + annotation (Line(points={{-68,-20},{0,-20},{0,-40}}, color={255,0,255})); + connect(non.port_b, bouAirLvg.ports[4]) annotation (Line(points={{30,-100},{60, + -100},{60,61.5},{90,61.5}}, color={0,127,255})); + connect(bouAirEnt.ports[4], res.port_a) annotation (Line(points={{-70,61.5},{-40, + 61.5},{-40,-100},{-30,-100}}, color={0,127,255})); + connect(res.port_b, non.port_a) + annotation (Line(points={{-10,-100},{10,-100}}, color={0,127,255})); +annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Dampers.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=200), + Diagram(coordinateSystem(extent={{-140,-140},{140,140}})), + Documentation(info=" ++This model validates the models within + +Buildings.Templates.Components.Dampers +by exposing them to a fixed pressure difference +and a control signal varying from 0 to 1. +
+")); +end Dampers; diff --git a/Buildings/Templates/Components/Validation/Fans.mo b/Buildings/Templates/Components/Validation/Fans.mo new file mode 100644 index 00000000000..a6d3934fa04 --- /dev/null +++ b/Buildings/Templates/Components/Validation/Fans.mo @@ -0,0 +1,147 @@ +within Buildings.Templates.Components.Validation; +model Fans "Validation model for fans components" + extends Modelica.Icons.Example; + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium"; + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.FixedInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations")); + + Fluid.Sources.Boundary_pT bou( + redeclare final package Medium = MediumAir, + nPorts=8) "Boundary conditions" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Buildings.Templates.Components.Fans.ArrayVariable arr( + redeclare final package Medium=MediumAir, + have_senFlo=true, + final energyDynamics=energyDynamics, + dat(m_flow_nominal=1, dp_nominal=1000), + nFan=4) + "Fan array" + annotation (Placement(transformation(extent={{-10,70},{10,90}}))); + Fluid.FixedResistances.PressureDrop res( + redeclare final package Medium=MediumAir, + final m_flow_nominal=arr.dat.m_flow_nominal, + final dp_nominal=arr.dat.dp_nominal) + "Ducts and coils equivalent flow resistance" + annotation (Placement(transformation(extent={{40,70},{60,90}}))); + Controls.OBC.CDL.Continuous.Sources.Ramp y(height=1, duration=10) + "Fan control signal" + annotation (Placement(transformation(extent={{-80,110},{-60,130}}))); + Interfaces.Bus bus "Control bus" + annotation (Placement(transformation(extent={{-40,100},{0,140}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Logical.Sources.TimeTable y1( + table=[0,0; 1,1], + timeScale=10, + period=100) "Fan start/stop signal" + annotation (Placement(transformation(extent={{-80,150},{-60,170}}))); + Buildings.Templates.Components.Fans.SingleVariable var( + redeclare final package Medium=MediumAir, + have_senFlo=true, + final energyDynamics=energyDynamics, + dat(m_flow_nominal=1, dp_nominal=1000)) "Variable speed fan" + annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + Interfaces.Bus bus1 "Control bus" + annotation (Placement(transformation(extent={{-40,0},{0,40}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Buildings.Templates.Components.Fans.SingleConstant cst( + redeclare final package Medium=MediumAir, + have_senFlo=true, + final energyDynamics=energyDynamics, + dat(m_flow_nominal=1, dp_nominal=1000)) "Constant speed fan" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + Fluid.FixedResistances.PressureDrop res1( + redeclare final package Medium = MediumAir, + final m_flow_nominal=cst.dat.m_flow_nominal, + final dp_nominal=cst.dat.dp_nominal) + "Ducts and coils equivalent flow resistance" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + Fluid.FixedResistances.PressureDrop res2( + redeclare final package Medium = MediumAir, + final m_flow_nominal=var.dat.m_flow_nominal, + final dp_nominal=var.dat.dp_nominal) + "Ducts and coils equivalent flow resistance" + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + Interfaces.Bus bus2 + "Control bus" annotation (Placement(transformation(extent={{-40,-80},{0,-40}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Buildings.Templates.Components.Fans.None non( + redeclare final package Medium = MediumAir) + "No fan" + annotation (Placement(transformation(extent={{-10,-150},{10,-130}}))); + Fluid.FixedResistances.PressureDrop res3( + redeclare final package Medium = MediumAir, + final m_flow_nominal=1, + final dp_nominal=1000) + "Ducts and coils equivalent flow resistance" + annotation (Placement(transformation(extent={{40,-150},{60,-130}}))); +equation + connect(bou.ports[1], arr.port_a) annotation (Line(points={{-60,-1.75},{-60,80}, + {-10,80}}, color={0,127,255})); + connect(res.port_b, bou.ports[2]) annotation (Line(points={{60,80},{80,80},{80, + -1.25},{-60,-1.25}}, color={0,127,255})); + connect(arr.port_b, res.port_a) + annotation (Line(points={{10,80},{40,80}}, color={0,127,255})); + connect(y.y, bus.y) annotation (Line(points={{-58,120},{-20,120}}, + color={0,0,127})); + connect(bus, arr.bus) annotation (Line( + points={{-20,120},{0,120},{0,90}}, + color={255,204,51}, + thickness=0.5)); + connect(y1.y[1], bus.y1) annotation (Line(points={{-58,160},{-20,160},{-20,120}}, + color={255,0,255})); + connect(y1.y[1], bus1.y1) annotation (Line(points={{-58,160},{-20,160},{-20,20}}, + color={255,0,255})); + connect(cst.port_b, res1.port_a) annotation (Line(points={{10,-20},{40,-20}}, + color={0,127,255})); + connect(bou.ports[3], cst.port_a) annotation (Line(points={{-60,-0.75},{-60,-20}, + {-10,-20}}, color={0,127,255})); + connect(res1.port_b, bou.ports[4]) annotation (Line(points={{60,-20},{80,-20}, + {80,-0.25},{-60,-0.25}}, color={0,127,255})); + connect(res2.port_b, bou.ports[5]) annotation (Line(points={{60,-80},{80,-80}, + {80,0.25},{-60,0.25}}, + color={0,127,255})); + connect(bou.ports[6], var.port_a) annotation (Line(points={{-60,0.75},{-60,-80}, + {-10,-80}}, color={0,127,255})); + connect(var.port_b, res2.port_a) + annotation (Line(points={{10,-80},{40,-80}}, color={0,127,255})); + connect(bus2, var.bus) annotation (Line( + points={{-20,-60},{0,-60},{0,-70}}, + color={255,204,51}, + thickness=0.5)); + connect(bus1, cst.bus) annotation (Line( + points={{-20,20},{0,20},{0,-10}}, + color={255,204,51}, + thickness=0.5)); + connect(y.y, bus2.y) annotation (Line(points={{-58,120},{-40,120},{-40,-60},{-20, + -60}}, color={0,0,127})); + connect(bou.ports[7], non.port_a) annotation (Line(points={{-60,1.25},{-60,-140}, + {-10,-140}}, color={0,127,255})); + connect(non.port_b, res3.port_a) annotation (Line(points={{10,-140},{25,-140}, + {25,-140},{40,-140}}, color={0,127,255})); + connect(res3.port_b, bou.ports[8]) annotation (Line(points={{60,-140},{80,-140}, + {80,1.75},{-60,1.75}}, color={0,127,255})); + connect(y1.y[1], bus2.y1) annotation (Line(points={{-58,160},{-20,160},{-20,-60}}, + color={255,0,255})); +annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Fans.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=200), + Diagram(coordinateSystem(extent={{-140,-180},{140,180}})), + Documentation(info=" ++This model validates the models within + +Buildings.Templates.Components.Fans +by exposing them to a control signal varying from 0 to 1 +and connecting them to an air loop with a fixed flow resistance, which +is sized based on the nominal operating point of the fan model. +
+")); +end Fans; diff --git a/Buildings/Templates/Components/Validation/Routing.mo b/Buildings/Templates/Components/Validation/Routing.mo new file mode 100644 index 00000000000..782e491b3ef --- /dev/null +++ b/Buildings/Templates/Components/Validation/Routing.mo @@ -0,0 +1,165 @@ +within Buildings.Templates.Components.Validation; +model Routing "Validation model for routing components" + extends Modelica.Icons.Example; + + replaceable package Medium=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Medium"; + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.FixedInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations")); + + Fluid.Sources.Boundary_pT bouLiqEnt( + redeclare final package Medium = Medium, + p=bouLiqLvg.p + min(res.dp_nominal), + nPorts=3) "Boundary conditions for entering liquid" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + Fluid.Sources.Boundary_pT bouLiqLvg(redeclare final package Medium = Medium, + nPorts=3) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{80,70},{60,90}}))); + Fluid.FixedResistances.PressureDrop res[3]( + redeclare final package Medium = Medium, + each m_flow_nominal=1, + each dp_nominal=1000) "Flow resistance" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + Buildings.Templates.Components.Routing.MultipleToMultiple mulMul( + redeclare final package Medium = Medium, + final energyDynamics=energyDynamics, + nPorts_a=3, + m_flow_nominal=3) "Multiple to multiple without common leg" + annotation (Placement(transformation(extent={{0,70},{20,90}}))); + Fluid.Sources.Boundary_pT bouLiqEnt1( + redeclare final package Medium = Medium, + p=bouLiqLvg.p + min(res1.dp_nominal) + min(res2.dp_nominal), + nPorts=3) "Boundary conditions for entering liquid" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + Fluid.Sources.Boundary_pT bouLiqLvg1(redeclare final package Medium = Medium, + nPorts=3) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{80,30},{60,50}}))); + Fluid.FixedResistances.PressureDrop res1 + [3]( + redeclare final package Medium = Medium, + each m_flow_nominal=1, + each dp_nominal=1000) "Flow resistance" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + Buildings.Templates.Components.Routing.MultipleToMultiple mulMulCom( + redeclare final package Medium = Medium, + final energyDynamics=energyDynamics, + nPorts_a=3, + have_comLeg=true, + m_flow_nominal=3) "Multiple to multiple with common leg" + annotation (Placement(transformation(extent={{0,30},{20,50}}))); + Fluid.FixedResistances.PressureDrop res2[3]( + redeclare final package Medium = Medium, + each m_flow_nominal=1, + each dp_nominal=1000) "Flow resistance" + annotation (Placement(transformation(extent={{30,30},{50,50}}))); + Fluid.Sources.Boundary_pT bouLiqEnt2( + redeclare final package Medium = Medium, + p=bouLiqLvg.p + min(res3.dp_nominal), + nPorts=3) "Boundary conditions for entering liquid" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Fluid.Sources.Boundary_pT bouLiqLvg2(redeclare final package Medium = Medium, + nPorts=1) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{80,-10},{60,10}}))); + Fluid.FixedResistances.PressureDrop res3 + [3]( + redeclare final package Medium = Medium, + each m_flow_nominal=1, + each dp_nominal=1000) "Flow resistance" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Buildings.Templates.Components.Routing.MultipleToSingle mulSin( + redeclare final package Medium = Medium, + final energyDynamics=energyDynamics, + nPorts=3, + m_flow_nominal=3) "Multiple to single" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Fluid.Sources.Boundary_pT bouLiqEnt3( + redeclare final package Medium = Medium, + p=bouLiqLvg.p + min(res5.dp_nominal), + nPorts=1) "Boundary conditions for entering liquid" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + Fluid.Sources.Boundary_pT bouLiqLvg3(redeclare final package Medium = Medium, + nPorts=3) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{80,-50},{60,-30}}))); + Buildings.Templates.Components.Routing.SingleToMultiple sinMul( + redeclare final package Medium = Medium, + final energyDynamics=energyDynamics, + nPorts=3, + m_flow_nominal=3) "Single to multiple" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + Fluid.FixedResistances.PressureDrop res5[3]( + redeclare final package Medium = Medium, + each m_flow_nominal=1, + each dp_nominal=1000) "Flow resistance" + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Fluid.Sources.Boundary_pT bouLiqEnt4( + redeclare final package Medium = Medium, + p=bouLiqLvg.p + res4.dp_nominal, + nPorts=1) "Boundary conditions for entering liquid" + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + Fluid.Sources.Boundary_pT bouLiqLvg4(redeclare final package Medium = Medium, + nPorts=1) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{80,-90},{60,-70}}))); + Buildings.Templates.Components.Routing.PassThroughFluid pas(redeclare final + package Medium = Medium) "Pass through" + annotation (Placement(transformation(extent={{0,-90},{20,-70}}))); + Fluid.FixedResistances.PressureDrop res4( + redeclare final package Medium = Medium, + m_flow_nominal=1, + dp_nominal=1000) "Flow resistance" + annotation (Placement(transformation(extent={{-40,-90},{-20,-70}}))); +equation + connect(res.port_b, mulMul.ports_a) + annotation (Line(points={{-20,80},{0,80}}, color={0,127,255})); + connect(mulMul.ports_b, bouLiqLvg.ports) + annotation (Line(points={{20,80},{60,80}}, color={0,127,255})); + connect(bouLiqEnt.ports, res.port_a) + annotation (Line(points={{-60,80},{-40,80}}, color={0,127,255})); + connect(res1.port_b, mulMulCom.ports_a) + annotation (Line(points={{-20,40},{0,40}}, color={0,127,255})); + connect(bouLiqEnt1.ports, res1.port_a) + annotation (Line(points={{-60,40},{-40,40}}, color={0,127,255})); + connect(mulMulCom.ports_b, res2.port_a) + annotation (Line(points={{20,40},{30,40}}, color={0,127,255})); + connect(res2.port_b, bouLiqLvg1.ports) annotation (Line(points={{50,40},{56,40}, + {56,40},{60,40}}, color={0,127,255})); + connect(res3.port_b, mulSin.ports_a) + annotation (Line(points={{-20,0},{0,0}}, color={0,127,255})); + connect(bouLiqEnt2.ports,res3. port_a) + annotation (Line(points={{-60,0},{-40,0}}, color={0,127,255})); + connect(mulSin.port_b, bouLiqLvg2.ports[1]) + annotation (Line(points={{20,0},{60,0}}, color={0,127,255})); + connect(bouLiqEnt3.ports[1], sinMul.port_a) annotation (Line(points={{-60,-40}, + {-30,-40},{-30,-40},{0,-40}}, color={0,127,255})); + connect(sinMul.ports_b, res5.port_a) + annotation (Line(points={{20,-40},{30,-40}}, color={0,127,255})); + connect(res5.port_b, bouLiqLvg3.ports) + annotation (Line(points={{50,-40},{60,-40}}, color={0,127,255})); + connect(pas.port_b, bouLiqLvg4.ports[1]) annotation (Line(points={{20,-80},{40, + -80},{40,-80},{60,-80}}, color={0,127,255})); + connect(bouLiqEnt4.ports[1], res4.port_a) + annotation (Line(points={{-60,-80},{-40,-80}}, color={0,127,255})); + connect(res4.port_b, pas.port_a) + annotation (Line(points={{-20,-80},{0,-80}}, color={0,127,255})); +annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Routing.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), + Diagram(coordinateSystem(extent={{-100,-120},{100,120}})), + Documentation(info=" ++This model validates the models within + +Buildings.Templates.Components.Routing +by exposing them to a fixed pressure difference. +
+")); +end Routing; diff --git a/Buildings/Templates/Components/Validation/Sensors.mo b/Buildings/Templates/Components/Validation/Sensors.mo new file mode 100644 index 00000000000..0aee73ad70d --- /dev/null +++ b/Buildings/Templates/Components/Validation/Sensors.mo @@ -0,0 +1,111 @@ +within Buildings.Templates.Components.Validation; +model Sensors "Validation model for sensor components" + extends Modelica.Icons.Example; + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium"; + + Fluid.Sources.Boundary_pT bouAirEnt( + redeclare final package Medium = MediumAir, + p=bouAirLvg.p + res.dp_nominal, + nPorts=6) "Boundary conditions for entering air" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + Fluid.Sources.Boundary_pT bouAirLvg(redeclare final package Medium = + MediumAir, nPorts=6) "Boundary conditions for leaving air" + annotation (Placement(transformation(extent={{80,30},{60,50}}))); + Buildings.Templates.Components.Sensors.HumidityRatio hum(redeclare final + package Medium = MediumAir, m_flow_nominal=1) "Humidity ratio" + annotation (Placement(transformation(extent={{0,30},{20,50}}))); + Fluid.FixedResistances.PressureDrop res( + redeclare final package Medium = MediumAir, + final m_flow_nominal=1, + final dp_nominal=100) "Flow resistance" + annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); + Fluid.FixedResistances.PressureDrop res1( + redeclare final package Medium = MediumAir, + final m_flow_nominal=1, + final dp_nominal=100) "Flow resistance" + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); + Buildings.Templates.Components.Sensors.SpecificEnthalpy ent(redeclare final + package Medium = MediumAir, m_flow_nominal=1) "Specific enthalpy" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Buildings.Templates.Components.Sensors.DifferentialPressure dp(redeclare + final package Medium = MediumAir) "Differential pressure" + annotation (Placement(transformation(extent={{0,60},{20,80}}))); + Fluid.FixedResistances.PressureDrop res2( + redeclare final package Medium = MediumAir, + final m_flow_nominal=1, + final dp_nominal=100) "Flow resistance" + annotation (Placement(transformation(extent={{-30,-50},{-10,-30}}))); + Buildings.Templates.Components.Sensors.Temperature tem(redeclare final + package Medium = MediumAir, m_flow_nominal=1) "Temperature" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + Buildings.Templates.Components.Sensors.VolumeFlowRate vol(redeclare final + package Medium = MediumAir, m_flow_nominal=1, + typ=Buildings.Templates.Components.Types.SensorVolumeFlowRate.AFMS) "Volume flow rate" + annotation (Placement(transformation(extent={{0,-90},{20,-70}}))); + Fluid.FixedResistances.PressureDrop res3( + redeclare final package Medium = MediumAir, + final m_flow_nominal=1, + final dp_nominal=100) "Flow resistance" + annotation (Placement(transformation(extent={{-30,-90},{-10,-70}}))); + Buildings.Templates.Components.Sensors.DifferentialPressure noDp(redeclare + final package Medium = MediumAir, have_sen=false) + "No differential pressure sensor" + annotation (Placement(transformation(extent={{0,90},{20,110}}))); +equation + connect(bouAirEnt.ports[1], res.port_a) + annotation (Line(points={{-60,38.3333},{-50,38.3333},{-50,40},{-30,40}}, + color={0,127,255})); + connect(res.port_b, hum.port_a) + annotation (Line(points={{-10,40},{0,40}}, color={0,127,255})); + connect(hum.port_b, bouAirLvg.ports[1]) annotation (Line(points={{20,40},{50, + 40},{50,38.3333},{60,38.3333}}, + color={0,127,255})); + connect(res1.port_b, ent.port_a) + annotation (Line(points={{-10,0},{0,0}}, color={0,127,255})); + connect(ent.port_b, bouAirLvg.ports[2]) annotation (Line(points={{20,0},{40,0}, + {40,39},{60,39}}, color={0,127,255})); + connect(bouAirEnt.ports[2], res1.port_a) annotation (Line(points={{-60,39},{-40, + 39},{-40,0},{-30,0}}, color={0,127,255})); + connect(bouAirEnt.ports[3], dp.port_a) annotation (Line(points={{-60,39.6667}, + {-40,39.6667},{-40,70},{0,70}}, + color={0,127,255})); + connect(dp.port_b, bouAirLvg.ports[3]) annotation (Line(points={{20,70},{40, + 70},{40,39.6667},{60,39.6667}}, + color={0,127,255})); + connect(res2.port_b, tem.port_a) + annotation (Line(points={{-10,-40},{0,-40}}, color={0,127,255})); + connect(res3.port_b, vol.port_a) + annotation (Line(points={{-10,-80},{0,-80}}, color={0,127,255})); + connect(tem.port_b, bouAirLvg.ports[4]) annotation (Line(points={{20,-40},{40, + -40},{40,40.3333},{60,40.3333}}, color={0,127,255})); + connect(vol.port_b, bouAirLvg.ports[5]) annotation (Line(points={{20,-80},{40, + -80},{40,41},{60,41}}, color={0,127,255})); + connect(bouAirEnt.ports[4], res2.port_a) annotation (Line(points={{-60, + 40.3333},{-60,38},{-40,38},{-40,-40},{-30,-40}}, + color={0,127,255})); + connect(bouAirEnt.ports[5], res3.port_a) annotation (Line(points={{-60,41},{-40, + 41},{-40,-80},{-30,-80}}, color={0,127,255})); + + connect(bouAirEnt.ports[6], noDp.port_a) annotation (Line(points={{-60, + 41.6667},{-40,41.6667},{-40,100},{0,100}}, + color={0,127,255})); + connect(noDp.port_b, bouAirLvg.ports[6]) annotation (Line(points={{20,100},{ + 40,100},{40,41.6667},{60,41.6667}}, + color={0,127,255})); +annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Sensors.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), + Diagram(coordinateSystem(extent={{-100,-120},{100,120}})), + Documentation(info=" ++This model validates the models within + +Buildings.Templates.Components.Sensors. +
+")); +end Sensors; diff --git a/Buildings/Templates/Components/Validation/Valves.mo b/Buildings/Templates/Components/Validation/Valves.mo new file mode 100644 index 00000000000..d0704c1e8b0 --- /dev/null +++ b/Buildings/Templates/Components/Validation/Valves.mo @@ -0,0 +1,150 @@ +within Buildings.Templates.Components.Validation; +model Valves "Validation model for valve components" + extends Modelica.Icons.Example; + + replaceable package MediumLiq=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Liquid medium"; + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.FixedInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations")); + + Fluid.Sources.Boundary_pT bouLiqEnt( + redeclare final package Medium = MediumLiq, + p=bouLiqLvg.p + modThr.dat.dpValve_nominal + modThr.dat.dpFixed_nominal, + nPorts=6) "Boundary conditions for entering liquid" + annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); + Fluid.Sources.Boundary_pT bouLiqLvg( + redeclare final package Medium =MediumLiq, nPorts=4) + "Boundary conditions for leaving liquid" + annotation (Placement(transformation(extent={{110,70},{90,90}}))); + + Buildings.Templates.Components.Valves.ThreeWayModulating modThr( + redeclare final package Medium = MediumLiq, + final energyDynamics=energyDynamics, + dat( + m_flow_nominal=1, + dpValve_nominal=5000, + dpFixed_nominal=5000)) + "Three-way modulating valve" + annotation (Placement(transformation(extent={{10,70},{30,90}}))); + Interfaces.Bus bus + "Control bus" + annotation (Placement(transformation(extent={{-20,80},{20,120}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Continuous.Sources.Ramp y(height=1, + duration=10) "Damper control signal" + annotation (Placement(transformation(extent={{-90,110},{-70,130}}))); + + Buildings.Templates.Components.Valves.ThreeWayTwoPosition twoThr( + redeclare final package Medium = MediumLiq, + final energyDynamics=energyDynamics, + dat( + m_flow_nominal=1, + dpValve_nominal=5000, + dpFixed_nominal=5000)) "Three-way two position valve" + annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); + Interfaces.Bus bus1 + "Control bus" + annotation (Placement(transformation(extent={{-20,-40},{20,0}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + + Buildings.Templates.Components.Valves.TwoWayModulating modTwo( + redeclare final package Medium = MediumLiq, + final energyDynamics=energyDynamics, + dat( + m_flow_nominal=1, + dpValve_nominal=5000, + dpFixed_nominal=5000)) "Two-way modulating valve" + annotation (Placement(transformation(extent={{10,10},{30,30}}))); + Interfaces.Bus bus2 + "Control bus" + annotation (Placement(transformation(extent={{-20,20},{20,60}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); + Controls.OBC.CDL.Logical.Sources.TimeTable y1( + table=[0,0; 1,1], + timeScale=10, + period=200) "Damper control signal" + annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + Buildings.Templates.Components.Valves.TwoWayTwoPosition twoTwo( + redeclare final package Medium = MediumLiq, + final energyDynamics=energyDynamics, + dat( + m_flow_nominal=1, + dpValve_nominal=5000, + dpFixed_nominal=5000)) "Two-way two-position valve" + annotation (Placement(transformation(extent={{10,-110},{30,-90}}))); + Interfaces.Bus bus3 + "Control bus" + annotation (Placement(transformation(extent={{-20,-100},{20,-60}}), + iconTransformation(extent={{-250,-32},{-210,8}}))); +equation + connect(bouLiqEnt.ports[1], modThr.port_a) + annotation (Line(points={{-70,78.3333},{-30,78.3333},{-30,80},{10,80}}, + color={0,127,255})); + connect(modThr.port_b,bouLiqLvg. ports[1]) + annotation (Line(points={{30,80},{60,80},{60,78.5},{90,78.5}}, + color={0,127,255})); + connect(y.y, bus.y) annotation (Line(points={{-68,120},{0,120},{0,100}}, + color={0,0,127})); + connect(bus, modThr.bus) annotation (Line( + points={{0,100},{20,100},{20,90}}, + color={255,204,51}, + thickness=0.5)); + connect(bouLiqEnt.ports[3], twoThr.port_a) annotation (Line(points={{-70, + 79.6667},{-32,79.6667},{-32,-40},{10,-40}}, + color={0,127,255})); + connect(twoThr.port_b, bouLiqLvg.ports[2]) annotation (Line(points={{30,-40}, + {60,-40},{60,79.5},{90,79.5}}, + color={0,127,255})); + connect(bus1, twoThr.bus) annotation (Line( + points={{0,-20},{20,-20},{20,-30}}, + color={255,204,51}, + thickness=0.5)); + connect(bouLiqEnt.ports[2], modTwo.port_a) annotation (Line(points={{-70,79}, + {-30,79},{-30,20},{10,20}}, color={0,127,255})); + connect(modTwo.port_b, bouLiqLvg.ports[3]) annotation (Line(points={{30,20},{ + 60,20},{60,80.5},{90,80.5}}, + color={0,127,255})); + connect(bus2, modTwo.bus) annotation (Line( + points={{0,40},{20,40},{20,30}}, + color={255,204,51}, + thickness=0.5)); + connect(y.y, bus2.y) + annotation (Line(points={{-68,120},{0,120},{0,40}}, + color={0,0,127})); + connect(y1.y[1], bus1.y1) + annotation (Line(points={{-68,0},{0,0},{0,-20}}, color={255,0,255})); + connect(bus3, twoTwo.bus) annotation (Line( + points={{0,-80},{20,-80},{20,-90}}, + color={255,204,51}, + thickness=0.5)); + connect(y1.y[1],bus3. y1) + annotation (Line(points={{-68,0},{0,0},{0,-80}}, color={255,0,255})); + connect(bouLiqEnt.ports[4], twoTwo.port_a) annotation (Line(points={{-70, + 80.3333},{-40,80.3333},{-40,-100},{10,-100},{10,-100}}, + color={0,127,255})); + connect(twoTwo.port_b, bouLiqLvg.ports[4]) annotation (Line(points={{30,-100}, + {80,-100},{80,81.5},{90,81.5}}, color={0,127,255})); + connect(bouLiqEnt.ports[5], modThr.portByp_a) annotation (Line(points={{-70, + 81},{-36,81},{-36,60},{20,60},{20,70}}, color={0,127,255})); + connect(bouLiqEnt.ports[6], twoThr.portByp_a) annotation (Line(points={{-70, + 81.6667},{-38,81.6667},{-38,-60},{20,-60},{20,-50}}, color={0,127,255})); +annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/Components/Validation/Valves.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=200), + Diagram(coordinateSystem(extent={{-140,-140},{140,140}})), + Documentation(info=" ++This model validates the models within + +Buildings.Templates.Components.Valves +by exposing them to a fixed pressure difference +and a control signal varying from 0 to 1. +
+")); +end Valves; diff --git a/Buildings/Templates/Components/Validation/package.mo b/Buildings/Templates/Components/Validation/package.mo new file mode 100644 index 00000000000..4ffc83e61b6 --- /dev/null +++ b/Buildings/Templates/Components/Validation/package.mo @@ -0,0 +1,12 @@ +within Buildings.Templates.Components; +package Validation "Package with validation models" + extends Modelica.Icons.ExamplesPackage; + + annotation (Documentation(info=" ++This package contains validation models for the classes within + +Buildings.Templates.Components. +
+")); +end Validation; diff --git a/Buildings/Templates/Components/Validation/package.order b/Buildings/Templates/Components/Validation/package.order new file mode 100644 index 00000000000..07f6cebf6fd --- /dev/null +++ b/Buildings/Templates/Components/Validation/package.order @@ -0,0 +1,6 @@ +Coils +Dampers +Fans +Routing +Sensors +Valves diff --git a/Buildings/Templates/Components/Valves/None.mo b/Buildings/Templates/Components/Valves/None.mo new file mode 100644 index 00000000000..1c0915145ec --- /dev/null +++ b/Buildings/Templates/Components/Valves/None.mo @@ -0,0 +1,17 @@ +within Buildings.Templates.Components.Valves; +model None "No valve" + extends Buildings.Templates.Components.Interfaces.PartialValve( + final typ=Buildings.Templates.Components.Types.Valve.None); + +equation + connect(port_a, port_b) + annotation (Line(points={{-100,0},{100,0},{100,0}}, color={0,127,255})); + annotation ( + defaultComponentName="val", + Documentation(info=" ++This is a direct fluid pass-through model to represent +a configuration with no valve. +
+")); +end None; diff --git a/Buildings/Templates/Components/Valves/ThreeWayModulating.mo b/Buildings/Templates/Components/Valves/ThreeWayModulating.mo new file mode 100644 index 00000000000..c5e591ed284 --- /dev/null +++ b/Buildings/Templates/Components/Valves/ThreeWayModulating.mo @@ -0,0 +1,76 @@ +within Buildings.Templates.Components.Valves; +model ThreeWayModulating "Three-way modulating valve" + extends Buildings.Templates.Components.Interfaces.PartialValve( + final typ=Buildings.Templates.Components.Types.Valve.ThreeWayModulating); + + replaceable Buildings.Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear val + constrainedby Buildings.Fluid.Actuators.BaseClasses.PartialThreeWayValve( + redeclare final package Medium=Medium, + final m_flow_nominal=m_flow_nominal, + final dpValve_nominal=dpValve_nominal, + final dpFixed_nominal={dpFixed_nominal, dpFixedByp_nominal}, + final energyDynamics=energyDynamics, + final tau=tau, + final use_inputFilter=use_inputFilter, + final riseTime=riseTime, + final init=init, + final y_start=y_start, + final portFlowDirection_1=if allowFlowReversal then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Entering, + final portFlowDirection_2=if allowFlowReversal then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Leaving, + final portFlowDirection_3=if allowFlowReversal then + Modelica.Fluid.Types.PortFlowDirection.Bidirectional + else Modelica.Fluid.Types.PortFlowDirection.Entering) + "Valve" + annotation ( + __ctrl_flow(enable=false), + choicesAllMatching=true, + Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0))); +equation + connect(port_a, val.port_1) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(val.port_2, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + connect(val.port_3, portByp_a) + annotation (Line(points={{0,-10},{0,-100}}, color={0,127,255})); + connect(bus.y, val.y) annotation (Line( + points={{0,100},{0,12}}, + color={255,204,51}, + thickness=0.5), Text( + string="%first", + index=-1, + extent={{-3,6},{-3,6}}, + horizontalAlignment=TextAlignment.Right)); + connect(val.y_actual, bus.y_actual) annotation (Line(points={{5,7},{40,7},{40, + 96},{0,96},{0,100}}, color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}}, + horizontalAlignment=TextAlignment.Left)); + annotation ( + defaultComponentName="val", + Documentation(info=" ++This is a model for a three-way modulating valve. +
+y
(real).y = 0
corresponds to full bypass.
+y = 1
corresponds to zero bypass.
+y_actual
(real) is returned.y_actual = 0
corresponds to full bypass.
+y_actual = 1
corresponds to zero bypass.
++This is a model for a three-way two-position (directional) valve. +
+y1
.y1 = false
corresponds to full bypass.
+y1 = true
corresponds to zero bypass.
+y1_actual
and
+closed end switch status y0_actual
(Booleans)
+are returned.y1_actual = false
corresponds to full bypass.
+y1_actual = true
corresponds to zero bypass.
+And the opposite for y0_actual
.
++This is a model for a two-way modulating valve. +
+y
(real).y = 0
corresponds to fully closed.
+y = 1
corresponds to fully open.
+y_actual
(real) is returned.y_actual = 0
corresponds to fully closed.
+y_actual = 1
corresponds to fully open.
++This is a model for a two-way two-position (isolation) valve. +
+y1
.y1 = false
corresponds to fully closed.
+y1 = true
corresponds to fully open.
+y1_actual
and
+closed end switch status y0_actual
(Booleans)
+are returned.y1_actual = false
corresponds to fully closed.
+y1_actual = true
corresponds to fully open.
+And the opposite for y0_actual
.
++This package contains models for valves. +
+")); +end Valves; diff --git a/Buildings/Templates/Components/Valves/package.order b/Buildings/Templates/Components/Valves/package.order new file mode 100644 index 00000000000..286524eef49 --- /dev/null +++ b/Buildings/Templates/Components/Valves/package.order @@ -0,0 +1,5 @@ +None +ThreeWayModulating +ThreeWayTwoPosition +TwoWayModulating +TwoWayTwoPosition diff --git a/Buildings/Templates/Components/package.mo b/Buildings/Templates/Components/package.mo new file mode 100644 index 00000000000..578bf36a983 --- /dev/null +++ b/Buildings/Templates/Components/package.mo @@ -0,0 +1,12 @@ +within Buildings.Templates; +package Components "Package with component models" + extends Modelica.Icons.VariantsPackage; + + annotation (Documentation(info=" ++This package contains component models that are used in + +Buildings.Templates. +
+")); +end Components; diff --git a/Buildings/Templates/Components/package.order b/Buildings/Templates/Components/package.order new file mode 100644 index 00000000000..fc2da254c48 --- /dev/null +++ b/Buildings/Templates/Components/package.order @@ -0,0 +1,10 @@ +Coils +Dampers +Fans +Routing +Sensors +Valves +Data +Types +Validation +Interfaces diff --git a/Buildings/Templates/Data/AllSystems.mo b/Buildings/Templates/Data/AllSystems.mo new file mode 100644 index 00000000000..4d42327a38b --- /dev/null +++ b/Buildings/Templates/Data/AllSystems.mo @@ -0,0 +1,71 @@ +within Buildings.Templates.Data; +class AllSystems "Top-level (whole building) system parameters" + +// parameter Buildings.Templates.Types.Buildings typBui +// "Building type"; +// +// parameter String namPro +// "Project name"; +// +// parameter Modelica.Units.SI.Area areFlo +// "Project floor area"; + + parameter Buildings.Templates.Types.Units sysUni + "Unit system"; + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard stdEne + "Energy standard" + annotation(Evaluate=true); + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen + "Ventilation standard" + annotation(Evaluate=true); + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone ashCliZon( + start=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A) + "ASHRAE climate zone" + annotation (Dialog( + enable=stdEne==Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1)); + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone tit24CliZon( + start=Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_1) + "California Title 24 climate zone" + annotation (Dialog( + enable=stdEne==Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24)); + +// parameter String note +// "Notes"; + +annotation ( + defaultComponentPrefixes = "inner parameter", + defaultComponentName = "datAll", + Documentation(info=" ++This class provides the set of sizing and operating parameters for the whole HVAC system. +
+"), + Icon(graphics={ + Text( + textColor={0,0,255}, + extent={{-150,60},{150,100}}, + textString="%name"), + Rectangle( + origin={0,-25}, + lineColor={64,64,64}, + fillColor={85,255,255}, + fillPattern=FillPattern.Solid, + extent={{-100.0,-75.0},{100.0,75.0}}, + radius=25.0), + Line( + points={{-100,0},{100,0}}, + color={64,64,64}), + Line( + origin={0,-50}, + points={{-100.0,0.0},{100.0,0.0}}, + color={64,64,64}), + Line( + origin={0,-25}, + points={{0.0,75.0},{0.0,-75.0}}, + color={64,64,64})})); + +end AllSystems; diff --git a/Buildings/Templates/Data/package.mo b/Buildings/Templates/Data/package.mo new file mode 100644 index 00000000000..c54d152b531 --- /dev/null +++ b/Buildings/Templates/Data/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates; +package Data "Package with classes for storing system parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + + annotation (Documentation(info=" ++This package provides classes for storing system parameters +at the top-level of a simulation model. +
+")); +end Data; diff --git a/Buildings/Templates/Data/package.order b/Buildings/Templates/Data/package.order new file mode 100644 index 00000000000..3831742ec60 --- /dev/null +++ b/Buildings/Templates/Data/package.order @@ -0,0 +1 @@ +AllSystems diff --git a/Buildings/Templates/Types.mo b/Buildings/Templates/Types.mo new file mode 100644 index 00000000000..995622aed3a --- /dev/null +++ b/Buildings/Templates/Types.mo @@ -0,0 +1,33 @@ +within Buildings.Templates; +package Types "Package with type definitions" + extends Modelica.Icons.TypesPackage; + + type Buildings = enumeration( + Education "Buildings used for academic or technical classroom instruction", + FoodSales "Buildings used for retail or wholesale of food", + FoodServices "Buildings used for preparation and sale of food and beverages for consumption", + HealthCare "Buildings used as diagnostic and treatment facilities for inpatient care", + Lodging "Buildings used to offer multiple accommodations for short-term or long-term residents", + MercantileRetail "Buildings used for the sale and display of goods other than food", + MercantileMall "Shopping malls comprised of multiple connected establishments", + Office "Buildings used for general office space, professional office, or administrative offices", + PublicAssembly "Buildings in which people gather for social or recreational activities", + PublicOrderSafety "Buildings used for the preservation of law and order or public safety", + ReligiousWorkshop "Buildings in which people gather for religious activities", + Service "Buildings in which some types of services is provided", + WarehouseStorage "Buildings used to store goods, manufactured products, merchandise, raw materials, or personal belongings", + Other "All other miscellaneous buildings that do not fit into any other category", + Vacant "Buildings in which more floor space was vacant than was used for any single commercial activity") + "Enumeration to specify the building type"; + type Units = enumeration( + SI + "SI - International units", + IP + "IP - Imperial units") + "Enumeration to specify the system of units"; + annotation (Documentation(info=" ++This package contains type definitions. +
+")); +end Types; diff --git a/Buildings/Templates/UsersGuide.mo b/Buildings/Templates/UsersGuide.mo new file mode 100644 index 00000000000..e556264e84b --- /dev/null +++ b/Buildings/Templates/UsersGuide.mo @@ -0,0 +1,202 @@ +within Buildings.Templates; +package UsersGuide "Templates user guide" + extends Modelica.Icons.Information; + class Conventions + "Conventions" + extends Modelica.Icons.Information; + annotation ( + preferredView="info", + Documentation( + info=" +
+Inside a template class, the connect clauses involving control points
+typically do not have
+any graphical annotation and are therefore not rendered as
+connection lines in the diagram view.
+Those connect clauses are grouped together in a dedicated section of
+the equation section of each class, namely
+/* Control point connection - (start | stop) */
.
+
+We adopt the definition hereafter from ASHRAE (2021). +
++A set of components is a system if they share a load in +common (i.e., collectively act as a source to downstream +equipment, such as a set of chillers in a lead/lag relation- +ship serving air handlers). +
+
+The following abbreviations are used in that package.
+
Abbreviation | Description |
---|---|
AI | Analog input (integer or real) |
AFMS | Airflow measuring station |
AHU | Air handling unit |
AO | Analog output (integer or real) |
CHW | Chilled water |
CW | Condenser water |
DHW | Domestic hot water |
DI | Digital input (Boolean) |
DO | Digital output (Boolean) |
DOAS | Dedicated outdoor air system |
DP | Differential pressure |
HHW | Heating hot water |
OA | Outdoor air |
VAV | Variable air volume |
VFD | Variable frequency drive |
+This user guide describes how to use the templates. +
++The templates are defined at the system level, such as an air handler +or a terminal unit (refer to + +Buildings.Templates.UsersGuide.Conventions +for the definition of a system). +A template is a self-contained model that can be reconfigured +by redeclaring some of its components or modifying some +structural parameters. +Such configuration does not require any further modification +of the template. +In particular, all connect clauses between replaceable components +are resolved internally without user intervention. +The same applies to sensors that are required for a specific control +option and instantiated only when that option is selected. +
++Currently, there is no template that represents a complete HVAC system +from the plant to the zone equipment. +In order to create a simulation model for a complete HVAC system, +one must +
++When assembling a model for a complete HVAC system, +the user must ensure that the control +sequence selected for one subsystem is compatible +with that selected for another subsystem. +For example, the AHU controller may require reset requests +that originate from the zone equipment controller. +If the controller selected for the zone equipment does not +generate such requests, the simulation model will be singular. +Selecting controllers from the same reference—e.g., +ASHRAE (2021)—is the safest way +to ensure consistency throughout the HVAC system model. +
+
+Each template contains an instance dat
of a record class that
+contains all design and operating parameters for parameterizing
+the subcomponents of the template.
+For example, the multiple-zone VAV template
+
+Buildings.Templates.AirHandlersFans.VAVMultiZone
+contains an instance of the record class
+
+Buildings.Templates.AirHandlersFans.Data.VAVMultiZone
+which contains the parameters for configuring the heating coil component,
+as an instance of the record class
+
+Buildings.Templates.Components.Data.Coil.
+All design and operating parameters should be assigned through this record instance
+and are propagated down to each subcomponent.
+
+In addition to these parameters, the record class also contains the configuration +parameters that define the system layout and control options. +These configuration parameters are bound to the values that are assigned via +the template's parameter dialog. +In this way, only the set of parameters needed for the particular system layout +for which the template is configured is displayed in the parameter dialog. +Note that these configuration parameters are disabled in the record class +to avoid any modification by the user and preserve the bindings with the +template parameters. +
++When creating a model for a complete HVAC system with multiple instances of +different templates, the class + +Buildings.Templates.Data.AllSystems +can be used at the top level of the model to assign all design and operating parameters. +This class allows the use of Modelica outer components to retrieve the configuration +parameter values for each template instance based on the instance name. +Thus, it is the avatar in the modeling environment of an HVAC project datasheet. +The validation models within + +Buildings.Templates.AirHandlersFans.Validation +illustrate the use of this class. +
++This is an implementation of the control sequence specified in +ASHRAE (2021) +for cooling-only VAV terminal units. +It contains the following components. +
++This is an implementation of the control sequence specified in +ASHRAE (2021) +for VAV terminal units with reheat. +It contains the following components. +
++This is an open loop controller providing control inputs +for the templates within + +Buildings.Templates.ZoneEquipment. +It is mainly used for testing purposes. +
+")); +end OpenLoop; diff --git a/Buildings/Templates/ZoneEquipment/Components/Controls/package.mo b/Buildings/Templates/ZoneEquipment/Components/Controls/package.mo new file mode 100644 index 00000000000..9c700c3b5bd --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Controls/package.mo @@ -0,0 +1,14 @@ +within Buildings.Templates.ZoneEquipment.Components; +package Controls + extends Modelica.Icons.VariantsPackage; + + + +annotation (Documentation(info=" ++All control blocks that form the control sequence of a system +are instantiated into one single class, a so-called control section. +This package contains such control sections. +
+")); +end Controls; diff --git a/Buildings/Templates/ZoneEquipment/Components/Controls/package.order b/Buildings/Templates/ZoneEquipment/Components/Controls/package.order new file mode 100644 index 00000000000..dffcc2fc361 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Controls/package.order @@ -0,0 +1,3 @@ +G36VAVBoxCoolingOnly +G36VAVBoxReheat +OpenLoop diff --git a/Buildings/Templates/ZoneEquipment/Components/Data/PartialController.mo b/Buildings/Templates/ZoneEquipment/Components/Data/PartialController.mo new file mode 100644 index 00000000000..a57988fd610 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Data/PartialController.mo @@ -0,0 +1,16 @@ +within Buildings.Templates.ZoneEquipment.Components.Data; +record PartialController "Record for controller interface class" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.ZoneEquipment.Types.Controller typ + "Type of controller" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for the class + +Buildings.Templates.ZoneEquipment.Components.Controls.Interfaces.PartialController. +
+")); +end PartialController; diff --git a/Buildings/Templates/ZoneEquipment/Components/Data/VAVBoxController.mo b/Buildings/Templates/ZoneEquipment/Components/Data/VAVBoxController.mo new file mode 100644 index 00000000000..64095d869e1 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Data/VAVBoxController.mo @@ -0,0 +1,101 @@ +within Buildings.Templates.ZoneEquipment.Components.Data; +record VAVBoxController "Record for VAV terminal unit controller" + extends Buildings.Templates.ZoneEquipment.Components.Data.PartialController; + + parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen + "Ventilation standard" + annotation (Dialog(group="Energy and ventilation standards", enable=false)); + + parameter Modelica.Units.SI.VolumeFlowRate VOutMinOcc_flow( + final min=0, + start=1) + "Zone minimum outdoor airflow for occupants" + annotation (Dialog(group="Ventilation", enable= + (typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly) and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + parameter Modelica.Units.SI.VolumeFlowRate VOutMinAre_flow( + final min=0, + start=1) + "Zone minimum outdoor airflow for building area" + annotation (Dialog(group="Ventilation", enable= + (typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly) and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + parameter Real VOutAre_flow( + final unit = "m3/s", + final min=0) + "Area component of the breathing zone outdoor airflow" + annotation(Dialog(group="Ventilation", + enable=(typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly) and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + parameter Real VOutOcc_flow( + final unit = "m3/s", + final min=0) + "Population component of the breathing zone outdoor airflow" + annotation(Dialog(group="Ventilation", + enable=(typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly) and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + parameter Real effAirDisHea( + final unit="1", + final min=0, + final max=1)=0.8 + "Zone air distribution effectiveness during heating" + annotation(Dialog(group="Ventilation", + enable=(typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly) and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + parameter Real effAirDisCoo( + final unit="1", + final min=0, + final max=1)=1.0 + "Zone air distribution effectiveness during cooling" + annotation(Dialog(group="Ventilation", + enable=(typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly) and + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + parameter Modelica.Units.SI.TemperatureDifference dTAirDisHea_max( + final min=0, + displayUnit="K")=11 + "Zone maximum discharge air temperature above heating setpoint" + annotation (Dialog(group="Temperature", + enable=typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat)); + parameter Modelica.Units.SI.VolumeFlowRate VAirCooSet_flow_max( + final min=0, + start=1) + "Zone maximum cooling airflow setpoint" + annotation (Dialog(group="Airflow")); + + /* RFE #1913: This should be an optional entry. If no value is scheduled, + Vmin should be calculated automatically and dynamically to meet ventilation requirements. + */ + parameter Modelica.Units.SI.VolumeFlowRate VAirSet_flow_min( + final min=0, + start=0.1 * VAirCooSet_flow_max) + "Zone minimum airflow setpoint" + annotation (Dialog(group="Airflow")); + + parameter Modelica.Units.SI.VolumeFlowRate VAirHeaSet_flow_max( + final min=0, + start=0.3 * VAirCooSet_flow_max) + "Zone maximum heating airflow setpoint" + annotation (Dialog(group="Airflow", + enable=(typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly or + typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat))); + + parameter Modelica.Units.SI.VolumeFlowRate VAirHeaSet_flow_min( + final min=0)=0 + "Zone minimum heating airflow setpoint" + annotation (Dialog(group="Airflow", + enable=typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat)); + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for +VAV box controllers within + +Buildings.Templates.ZoneEquipment.Components.Controls. +
+")); +end VAVBoxController; diff --git a/Buildings/Templates/ZoneEquipment/Components/Data/package.mo b/Buildings/Templates/ZoneEquipment/Components/Data/package.mo new file mode 100644 index 00000000000..b7fe5946e0e --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Data/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates.ZoneEquipment.Components; +package Data + extends Modelica.Icons.MaterialPropertiesPackage; + + +annotation (Documentation(info=" ++This package provides records for design and operating parameters. +
+")); +end Data; diff --git a/Buildings/Templates/ZoneEquipment/Components/Data/package.order b/Buildings/Templates/ZoneEquipment/Components/Data/package.order new file mode 100644 index 00000000000..867bb54d1f9 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Data/package.order @@ -0,0 +1,2 @@ +PartialController +VAVBoxController diff --git a/Buildings/Templates/ZoneEquipment/Components/Interfaces/ControllerG36VAVBox.mo b/Buildings/Templates/ZoneEquipment/Components/Interfaces/ControllerG36VAVBox.mo new file mode 100644 index 00000000000..cea01689116 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Interfaces/ControllerG36VAVBox.mo @@ -0,0 +1,290 @@ +within Buildings.Templates.ZoneEquipment.Components.Interfaces; +block ControllerG36VAVBox "Guideline 36 controller for VAV terminal unit" + extends + Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox; + + parameter Boolean have_occSen=false + "Set to true if the zone has occupancy sensor" + annotation (Evaluate=true, Dialog(group="Configuration")); + + parameter Boolean have_winSen=false + "Set to true if the zone has window status sensor" + annotation (Evaluate=true, Dialog(group="Configuration")); + + final parameter Boolean have_hotWatCoi= + coiHea.typ==Buildings.Templates.Components.Types.Coil.WaterBasedHeating + "Set to true if the system has hot water coil" + annotation (Evaluate=true, Dialog(group="Configuration")); + + final parameter Modelica.Units.SI.VolumeFlowRate VAirCooSet_flow_max= + dat.VAirCooSet_flow_max + "Zone maximum cooling airflow setpoint"; + + final parameter Modelica.Units.SI.VolumeFlowRate VAirSet_flow_min= + dat.VAirSet_flow_min + "Zone minimum airflow setpoint"; + + final parameter Modelica.Units.SI.VolumeFlowRate VAirHeaSet_flow_max= + dat.VAirHeaSet_flow_max + "Zone maximum heating airflow setpoint"; + + final parameter Modelica.Units.SI.VolumeFlowRate VAirHeaSet_flow_min= + dat.VAirHeaSet_flow_min + "Zone minimum heating airflow setpoint"; + + final parameter Modelica.Units.SI.TemperatureDifference dTAirDisHea_max( + displayUnit="K")= + dat.dTAirDisHea_max + "Zone maximum discharge air temperature above heating setpoint"; + + final parameter Modelica.Units.SI.VolumeFlowRate VOutMinOcc_flow( + final min=0, + start=1)=dat.VOutMinOcc_flow + "Zone minimum outdoor airflow for occupants" + annotation (Dialog(enable= + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + final parameter Modelica.Units.SI.VolumeFlowRate VOutMinAre_flow( + final min=0, + start=1)=dat.VOutMinAre_flow + "Zone minimum outdoor airflow for building area" + annotation (Dialog(enable= + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24)); + + final parameter Real VOutAre_flow( + final unit = "m3/s")= + dat.VOutAre_flow + "Outdoor air flow rate per unit area" + annotation (Dialog(enable= + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + + final parameter Real VOutOcc_flow( + final unit = "m3/s")= + dat.VOutOcc_flow + "Outdoor air flow rate per occupant" + annotation (Dialog(enable= + stdVen==Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1)); + + final parameter Real effAirDisHea= + dat.effAirDisHea + "Zone air distribution effectiveness during heating"; + + final parameter Real effAirDisCoo= + dat.effAirDisCoo + "Zone air distribution effectiveness during cooling"; + + Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller ctlReh( + final venStd=stdVen, + final have_winSen=have_winSen, + final have_occSen=have_occSen, + final have_CO2Sen=have_CO2Sen, + final have_hotWatCoi=have_hotWatCoi, + final VOccMin_flow=VOutMinOcc_flow, + final VAreMin_flow=VOutMinAre_flow, + final VAreBreZon_flow=VOutAre_flow, + final VPopBreZon_flow=VOutOcc_flow, + final VMin_flow=VAirSet_flow_min, + final VCooMax_flow=VAirCooSet_flow_max, + final VHeaMin_flow=VAirHeaSet_flow_min, + final VHeaMax_flow=VAirHeaSet_flow_max, + final dTDisZonSetMax=dTAirDisHea_max, + final zonDisEff_cool=effAirDisCoo, + final zonDisEff_heat=effAirDisHea) if typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat + "Terminal unit with reheat controller" + annotation (Placement(transformation(extent={{0,-20},{20,20}}))); + + Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller ctlCoo( + final venStd=stdVen, + final have_winSen=have_winSen, + final have_occSen=have_occSen, + final have_CO2Sen=have_CO2Sen, + final VOccMin_flow=VOutMinOcc_flow, + final VAreMin_flow=VOutMinAre_flow, + final VAreBreZon_flow=VOutAre_flow, + final VPopBreZon_flow=VOutOcc_flow, + final VMin_flow=VAirSet_flow_min, + final VCooMax_flow=VAirCooSet_flow_max, + final zonDisEff_cool=effAirDisCoo, + final zonDisEff_heat=effAirDisHea) if typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly + "Terminal unit cooling only controller" + annotation (Placement(transformation(extent={{0,40},{20,80}}))); + + Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints TZonSet( + final have_occSen=have_occSen, + final have_winSen=have_winSen) + "Compute zone temperature setpoints" + annotation (Placement(transformation(extent={{-60,-20},{-40,20}}))); + + Buildings.Controls.OBC.ASHRAE.G36.ZoneGroups.ZoneStatus zonSta( + final have_winSen=have_winSen) + "Evaluate zone temperature status" + annotation (Placement(transformation(extent={{0,-120},{20,-92}}))); + + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooDowWarUpTim(k=3600) + "RFE: Optimal start (using global OA temperature not associated with any AHU) not implemented" + annotation (Placement(transformation(extent={{-60,-110},{-40,-90}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant setAdj(k=0) + "RFE: Setpoint adjustment by the occupant is not implemented in the template" + annotation (Placement(transformation(extent={{-160,170},{-140,190}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant cooSetAdj(k=0) + "RFE: Setpoint adjustment by the occupant is not implemented in the template" + annotation (Placement(transformation(extent={{-160,130},{-140,150}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant heaSetAdj(k=0) + "RFE: Setpoint adjustment by the occupant is not implemented in the template" + annotation (Placement(transformation(extent={{-160,90},{-140,110}}))); + Buildings.Controls.OBC.CDL.Integers.Sources.Constant uCooDemLimLev(k=0) + "RFE: Setpoint adjustment by demand limit is not implemented in the template" + annotation (Placement(transformation(extent={{-120,170},{-100,190}}))); + Buildings.Controls.OBC.CDL.Integers.Sources.Constant uHeaDemLimLev(k=0) + "RFE: Setpoint adjustment by demand limit is not implemented in the template" + annotation (Placement(transformation(extent={{-120,130},{-100,150}}))); + +equation + /* Control point connection - start */ + + // Inputs from bus + connect(bus.TZon, ctlReh.TZon); + connect(bus.y1Win, ctlReh.u1Win); + connect(bus.y1Occ, ctlReh.u1Occ); + connect(bus.ppmCO2, ctlReh.ppmCO2); + connect(bus.ppmCO2Set, ctlReh.ppmCO2Set); + connect(bus.yOpeMod, ctlReh.uOpeMod); + connect(bus.TAirDis, ctlReh.TDis); + connect(bus.VAirDis_flow, ctlReh.VDis_flow); + connect(bus.TAirSup, ctlReh.TSup); + connect(bus.TAirSupSet, ctlReh.TSupSet); + connect(bus.y1FanSup_actual, ctlReh.u1Fan); + connect(bus.y1PlaHeaWat, ctlReh.u1HotPla); + connect(bus.yOveFloSet, ctlReh.oveFloSet); + connect(bus.yOveDamPos, ctlReh.oveDamPos); + connect(bus.y1OveHeaOff, ctlReh.uHeaOff); + + connect(bus.TZon, ctlCoo.TZon); + connect(bus.y1Win, ctlCoo.u1Win); + connect(bus.y1Occ, ctlCoo.u1Occ); + connect(bus.ppmCO2, ctlCoo.ppmCO2); + connect(bus.ppmCO2Set, ctlCoo.ppmCO2Set); + connect(bus.yOpeMod, ctlCoo.uOpeMod); + connect(bus.TAirDis, ctlCoo.TDis); + connect(bus.VAirDis_flow, ctlCoo.VDis_flow); + connect(bus.TAirSup, ctlCoo.TSup); + connect(bus.y1FanSup_actual, ctlCoo.u1Fan); + connect(bus.yOveFloSet, ctlCoo.oveFloSet); + connect(bus.yOveDamPos, ctlCoo.oveDamPos); + + connect(bus.y1Occ, TZonSet.u1Occ); + connect(bus.y1Win, TZonSet.u1Win); + + connect(bus.y1Win, zonSta.u1Win); + connect(bus.TZon, zonSta.TZon); + connect(bus.TZonCooOccSet, zonSta.TOccCooSet); + connect(bus.TZonCooUnoSet, zonSta.TUnoCooSet); + connect(bus.TZonHeaOccSet, zonSta.TOccHeaSet); + connect(bus.TZonHeaUnoSet, zonSta.TUnoHeaSet); + + connect(bus.yOpeMod, TZonSet.uOpeMod); + connect(bus.dTSetAdj, TZonSet.setAdj); + connect(bus.dTHeaSetAdj, TZonSet.heaSetAdj); + connect(bus.uCooDemLimLev, TZonSet.uCooDemLimLev); + connect(bus.uHeaDemLimLev, TZonSet.uHeaDemLimLev); + connect(bus.TZonCooOccSet, TZonSet.TOccCooSet); + connect(bus.TZonCooUnoSet, TZonSet.TUnoCooSet); + connect(bus.TZonHeaOccSet, TZonSet.TOccHeaSet); + connect(bus.TZonHeaUnoSet, TZonSet.TUnoHeaSet); + + // Outputs to bus + connect(ctlReh.yDam, bus.damVAV.y); + connect(ctlReh.yVal, bus.coiHea.y); + connect(ctlReh.VAdjPopBreZon_flow, bus.VAdjPopBreZon_flow); + connect(ctlReh.VAdjAreBreZon_flow, bus.VAdjAreBreZon_flow); + connect(ctlReh.VMinOA_flow, bus.VMinOA_flow); + connect(ctlReh.VZonAbsMin_flow, bus.VZonAbsMin_flow); + connect(ctlReh.VZonDesMin_flow, bus.VZonDesMin_flow); + connect(ctlReh.yCO2, bus.yCO2); + + connect(ctlReh.yZonTemResReq, bus.yReqZonTemRes); + connect(ctlReh.yZonPreResReq, bus.yReqZonPreRes); + + connect(ctlCoo.yDam, bus.damVAV.y); + connect(ctlCoo.VAdjPopBreZon_flow, bus.VAdjPopBreZon_flow); + connect(ctlCoo.VAdjAreBreZon_flow, bus.VAdjAreBreZon_flow); + connect(ctlCoo.VMinOA_flow, bus.VMinOA_flow); + connect(ctlCoo.VZonAbsMin_flow, bus.VZonAbsMin_flow); + connect(ctlCoo.VZonDesMin_flow, bus.VZonDesMin_flow); + connect(ctlCoo.yCO2, bus.yCO2); + + connect(ctlCoo.yZonTemResReq, bus.yZonTemResReq); + connect(ctlCoo.yZonPreResReq, bus.yZonPreResReq); + + connect(zonSta.yCooTim, bus.yCooTim); + connect(zonSta.yWarTim, bus.yWarTim); + connect(zonSta.yOccHeaHig, bus.yOccHeaHig); + connect(zonSta.yHigOccCoo, bus.yHigOccCoo); + connect(zonSta.yUnoHeaHig, bus.yUnoHeaHig); + connect(zonSta.yEndSetBac, bus.yEndSetBac); + connect(zonSta.yHigUnoCoo, bus.yHigUnoCoo); + connect(zonSta.yEndSetUp, bus.yEndSetUp); + + /* Control point connection - end */ + + connect(TZonSet.TCooSet, ctlReh.TCooSet) annotation (Line(points={{-38,8},{-22, + 8},{-22,17},{-2,17}}, color={0,0,127})); + connect(TZonSet.THeaSet, ctlReh.THeaSet) annotation (Line(points={{-38,0},{-20, + 0},{-20,15},{-2,15}}, color={0,0,127})); + connect(uCooDemLimLev.y, TZonSet.uCooDemLimLev) annotation (Line(points={{-98, + 180},{-70,180},{-70,-8},{-62,-8}}, color={255,127,0})); + connect(uHeaDemLimLev.y, TZonSet.uHeaDemLimLev) annotation (Line(points={{-98, + 140},{-74,140},{-74,-11},{-62,-11}}, color={255,127,0})); + connect(cooSetAdj.y, TZonSet.cooSetAdj) annotation (Line(points={{-138,140},{-134, + 140},{-134,-2},{-62,-2}}, color={0,0,127})); + connect(heaSetAdj.y, TZonSet.heaSetAdj) annotation (Line(points={{-138,100},{-136, + 100},{-136,-4},{-62,-4}}, color={0,0,127})); + connect(setAdj.y, TZonSet.setAdj) annotation (Line(points={{-138,180},{-132,180}, + {-132,0},{-62,0}}, color={0,0,127})); + connect(TZonSet.TCooSet, ctlCoo.TCooSet) annotation (Line(points={{-38,8},{-22, + 8},{-22,76},{-2,76}}, color={0,0,127})); + connect(TZonSet.THeaSet, ctlCoo.THeaSet) annotation (Line(points={{-38,0},{-20, + 0},{-20,74},{-2,74}}, color={0,0,127})); + connect(cooDowWarUpTim.y, zonSta.cooDowTim) annotation (Line(points={{-38,-100}, + {-20,-100},{-20,-95},{-2,-95}}, color={0,0,127})); + connect(cooDowWarUpTim.y, zonSta.warUpTim) annotation (Line(points={{-38,-100}, + {-20,-100},{-20,-98},{-2,-98}}, color={0,0,127})); + annotation ( + defaultComponentName="ctl", + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This is an implementation of the control sequence specified in +ASHRAE (2021) +for VAV terminal units with reheat. +It contains the following components. +
++This partial class provides a standard interface for terminal unit controllers. +
+")); +end PartialController; diff --git a/Buildings/Templates/ZoneEquipment/Components/Interfaces/PartialControllerVAVBox.mo b/Buildings/Templates/ZoneEquipment/Components/Interfaces/PartialControllerVAVBox.mo new file mode 100644 index 00000000000..6e6a7319868 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Interfaces/PartialControllerVAVBox.mo @@ -0,0 +1,29 @@ +within Buildings.Templates.ZoneEquipment.Components.Interfaces; +partial block PartialControllerVAVBox + "Interface class for VAV terminal unit controller" + extends + Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController( + redeclare + Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController dat( + stdVen=stdVen)); + + parameter Boolean have_CO2Sen=false + "Set to true if the zone has CO2 sensor" + annotation (Evaluate=true, Dialog(group="Configuration")); + + final parameter Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard stdVen= + datAll.stdVen + "Ventilation standard"; + + outer replaceable Buildings.Templates.Components.Dampers.Modulating damVAV + "VAV damper"; + + outer replaceable Buildings.Templates.Components.Coils.None coiHea + "Heating coil"; + + annotation (Documentation(info=" ++This partial class provides a standard interface for VAV terminal unit controllers. +
+")); +end PartialControllerVAVBox; diff --git a/Buildings/Templates/ZoneEquipment/Components/Interfaces/package.mo b/Buildings/Templates/ZoneEquipment/Components/Interfaces/package.mo new file mode 100644 index 00000000000..8ba343cf95a --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Interfaces/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.ZoneEquipment.Components; +package Interfaces "Interface classes" + extends Modelica.Icons.InterfacesPackage; + +annotation (Documentation(info=" ++This package contains interface classes. +
+")); +end Interfaces; diff --git a/Buildings/Templates/ZoneEquipment/Components/Interfaces/package.order b/Buildings/Templates/ZoneEquipment/Components/Interfaces/package.order new file mode 100644 index 00000000000..21147f5a483 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/Interfaces/package.order @@ -0,0 +1,3 @@ +ControllerG36VAVBox +PartialController +PartialControllerVAVBox diff --git a/Buildings/Templates/ZoneEquipment/Components/package.mo b/Buildings/Templates/ZoneEquipment/Components/package.mo new file mode 100644 index 00000000000..e2d4d885c44 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/package.mo @@ -0,0 +1,12 @@ +within Buildings.Templates.ZoneEquipment; +package Components "Package with component models" + extends Modelica.Icons.VariantsPackage; + + annotation (Documentation(info=" ++This package contains component models that are used in + +Buildings.Templates.ZoneEquipment. +
+")); +end Components; diff --git a/Buildings/Templates/ZoneEquipment/Components/package.order b/Buildings/Templates/ZoneEquipment/Components/package.order new file mode 100644 index 00000000000..0f343567d12 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Components/package.order @@ -0,0 +1,3 @@ +Controls +Data +Interfaces diff --git a/Buildings/Templates/ZoneEquipment/Data/PartialAirTerminal.mo b/Buildings/Templates/ZoneEquipment/Data/PartialAirTerminal.mo new file mode 100644 index 00000000000..1af4f02e133 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Data/PartialAirTerminal.mo @@ -0,0 +1,53 @@ +within Buildings.Templates.ZoneEquipment.Data; +record PartialAirTerminal "Record for air terminal unit interface class" + extends Modelica.Icons.Record; + + parameter Buildings.Templates.ZoneEquipment.Types.Configuration typ + "Type of system" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Boolean have_souChiWat + "Set to true if system uses CHW" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Boolean have_souHeaWat + "Set to true if system uses HHW" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + parameter Buildings.Templates.ZoneEquipment.Types.Controller typCtl + "Type of controller" + annotation (Evaluate=true, Dialog(group="Configuration", enable=false)); + + parameter String id="" + "System tag" + annotation (Dialog(group="Advanced")); + parameter String id_souAir="" + "Air supply system tag" + annotation (Dialog(group="Advanced")); + parameter String id_souChiWat="" + "CHW supply system tag" + annotation (Dialog(group="Advanced", enable=have_souChiWat)); + parameter String id_souHeaWat="" + "HHW supply system tag" + annotation (Dialog(group="Advanced", enable=have_souHeaWat)); + + parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal( + final min=0, + start=1) + "Discharge air mass flow rate" + annotation (Dialog(group="Nominal condition")); + + replaceable parameter Buildings.Templates.ZoneEquipment.Components.Data.PartialController + ctl(final typ=typCtl) + "Controller" + annotation (Dialog(group="Controls")); + + annotation (Documentation(info=" ++This record provides the set of sizing and operating parameters for the class + +Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal. +
+
+The tab Advanced
contains some optional parameters that can be used
+for workflow automation, but are not used for simulation.
+
+This record provides the set of sizing and operating parameters for the classes + +Buildings.Templates.ZoneEquipment.VAVBoxCoolingOnly +and + +Buildings.Templates.ZoneEquipment.VAVBoxReheat. +
+")); +end VAVBox; diff --git a/Buildings/Templates/ZoneEquipment/Data/package.mo b/Buildings/Templates/ZoneEquipment/Data/package.mo new file mode 100644 index 00000000000..eefbc1f3581 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Data/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates.ZoneEquipment; +package Data "Records for design and operating parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + + +annotation (Documentation(info=" ++This package provides records for design and operating parameters. +
+")); +end Data; diff --git a/Buildings/Templates/ZoneEquipment/Data/package.order b/Buildings/Templates/ZoneEquipment/Data/package.order new file mode 100644 index 00000000000..32666beced3 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Data/package.order @@ -0,0 +1,2 @@ +PartialAirTerminal +VAVBox diff --git a/Buildings/Templates/ZoneEquipment/Interfaces/Bus.mo b/Buildings/Templates/ZoneEquipment/Interfaces/Bus.mo new file mode 100644 index 00000000000..c79569ce68a --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Interfaces/Bus.mo @@ -0,0 +1,20 @@ +within Buildings.Templates.ZoneEquipment.Interfaces; +expandable connector Bus "Control bus for zone equipment" + extends Modelica.Icons.SignalBus; + + Buildings.Templates.Components.Interfaces.Bus damVAV + "VAV damper points" + annotation (HideResult=false); + + Buildings.Templates.Components.Interfaces.Bus coiHea + "Heating coil points" + annotation (HideResult=false); + + annotation ( + defaultComponentName="bus", Documentation(info=" ++This expandable connector provides a standard interface for +all control signals required by a terminal unit controller. +
+")); +end Bus; diff --git a/Buildings/Templates/ZoneEquipment/Interfaces/PartialAirTerminal.mo b/Buildings/Templates/ZoneEquipment/Interfaces/PartialAirTerminal.mo new file mode 100644 index 00000000000..5b5bcc8aba6 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Interfaces/PartialAirTerminal.mo @@ -0,0 +1,168 @@ +within Buildings.Templates.ZoneEquipment.Interfaces; +partial model PartialAirTerminal + "Interface class for air terminal unit" + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium" + annotation(__ctrl_flow(enable=false)); + replaceable package MediumHeaWat=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "HHW medium" + annotation(Dialog(enable=have_souHeaWat), __ctrl_flow(enable=false)); + + parameter Buildings.Templates.ZoneEquipment.Types.Configuration typ + "Type of system" + annotation (Evaluate=true, Dialog(group="Configuration")); + + final parameter String id=dat.id + "System tag" + annotation (Dialog(group="Configuration")); + + parameter Boolean have_souChiWat + "Set to true if system uses CHW" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_souHeaWat + "Set to true if system uses HHW" + annotation (Evaluate=true, Dialog(group="Configuration")); + + replaceable parameter Buildings.Templates.ZoneEquipment.Data.PartialAirTerminal dat( + final typ=typ, + final have_souChiWat=have_souChiWat, + final have_souHeaWat=have_souHeaWat) + "Design and operating parameters" + annotation (Placement(transformation(extent={{270,250},{290,270}}))); + + // Design parameters + final parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal= + dat.mAir_flow_nominal + "Discharge air mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.MassFlowRate mAirPri_flow_nominal + "Primary air mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal + "Total CHW mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal + "Total HHW mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.HeatFlowRate QChiWat_flow_nominal + "Total CHW heat flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.HeatFlowRate QHeaWat_flow_nominal + "Total HHW heat flow rate" + annotation (Dialog(group="Nominal condition")); + + parameter Modelica.Fluid.Types.Dynamics energyDynamics= + Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state" + annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Conservation equations"), + __ctrl_flow(enable=false)); + final parameter Boolean allowFlowReversalAir=true + "= true to allow flow reversal, false restricts to design direction - Air side" + annotation (Dialog(tab="Assumptions"), Evaluate=true, + __ctrl_flow(enable=false)); + parameter Boolean allowFlowReversalLiq=true + "= true to allow flow reversal, false restricts to design direction - CHW and HW side" + annotation (Dialog(tab="Assumptions", enable=have_souChiWat or have_souHeaWat), + Evaluate=true, + __ctrl_flow(enable=false)); + parameter Boolean show_T = false + "= true, if actual temperature at ports of subcomponents is computed" + annotation(Dialog(tab="Advanced",group="Diagnostics"), + __ctrl_flow(enable=false)); + + Modelica.Fluid.Interfaces.FluidPort_a port_Sup( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ <> Buildings.Templates.ZoneEquipment.Types.Configuration.DualDuct + "Supply air from AHU" + annotation ( + Placement(transformation(extent={{-310,-210},{-290,-190}}), + iconTransformation(extent={{-210,-10},{-190,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_SupCol( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ == Buildings.Templates.ZoneEquipment.Types.Configuration.DualDuct + "Dual duct cold deck air supply from AHU" + annotation (Placement(transformation( + extent={{-310,-250},{-290,-230}}), iconTransformation(extent={{-210,-110}, + {-190,-90}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_SupHot( + redeclare final package Medium = MediumAir, + m_flow(min=if allowFlowReversalAir then -Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ == Buildings.Templates.ZoneEquipment.Types.Configuration.DualDuct + "Dual duct hot deck air supply from AHU" + annotation (Placement( + transformation(extent={{-310,-170},{-290,-150}}), iconTransformation( + extent={{-210,90},{-190,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_Dis( + redeclare final package Medium =MediumAir, + m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + "Discharge air" + annotation (Placement(transformation(extent={{290,-210},{310,-190}}), + iconTransformation(extent={{190,-10},{210,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_Ret( + redeclare final package Medium =MediumAir, + m_flow(max=if allowFlowReversalAir then +Modelica.Constants.inf else 0), + h_outflow(start=MediumAir.h_default, nominal=MediumAir.h_default)) + if typ == Buildings.Templates.ZoneEquipment.Types.Configuration.FanPowered + or typ == Buildings.Templates.ZoneEquipment.Types.Configuration.Induction + "Return air" + annotation (Placement( + transformation(extent={{290,-90},{310,-70}}), iconTransformation( + extent={{190,90},{210,110}}))); + + Modelica.Fluid.Interfaces.FluidPort_a port_aHeaWat( + redeclare final package Medium = MediumHeaWat, + m_flow(min=if allowFlowReversalLiq then -Modelica.Constants.inf else 0), + h_outflow(start=MediumHeaWat.h_default, nominal=MediumHeaWat.h_default)) + if have_souHeaWat + "HHW supply port" annotation ( + Placement(transformation(extent={{10,-290},{30,-270}}), + iconTransformation(extent={{40,-210},{60,-190}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bHeaWat( + redeclare final package Medium = MediumHeaWat, + m_flow(max=if allowFlowReversalLiq then +Modelica.Constants.inf else 0), + h_outflow(start=MediumHeaWat.h_default, nominal=MediumHeaWat.h_default)) + if have_souHeaWat + "HHW return port" annotation ( + Placement(transformation(extent={{-30,-290},{-10,-270}}), + iconTransformation(extent={{-60,-210},{-40,-190}}))); + + Buildings.Templates.ZoneEquipment.Interfaces.Bus bus + "Terminal unit control bus" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-300,0}), iconTransformation( + extent={{-20,-19},{20,19}}, + rotation=90, + origin={-199,160}))); + + annotation ( + Icon(coordinateSystem(preserveAspectRatio=false, + extent={{-200,-200},{200,200}}), graphics={ + Text( + extent={{-155,-218},{145,-258}}, + textColor={0,0,255}, + textString="%name"), Rectangle( + extent={{-200,200},{200,-200}}, + lineColor={0,0,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), + Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-300,-280},{300, + 280}})), + Documentation(info=" ++This partial class provides a standard interface for air terminal unit templates. +
+")); +end PartialAirTerminal; diff --git a/Buildings/Templates/ZoneEquipment/Interfaces/VAVBox.mo b/Buildings/Templates/ZoneEquipment/Interfaces/VAVBox.mo new file mode 100644 index 00000000000..4ede1463082 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Interfaces/VAVBox.mo @@ -0,0 +1,178 @@ +within Buildings.Templates.ZoneEquipment.Interfaces; +model VAVBox "Interface class for VAV terminal unit" + extends Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal( + redeclare Buildings.Templates.ZoneEquipment.Data.VAVBox dat( + typCoiHea=coiHea.typ, + typValCoiHea=coiHea.typVal, + typDamVAV=damVAV.typ, + typCtl=ctl.typ, + stdVen=ctl.stdVen), + final have_souChiWat=false, + final have_souHeaWat=coiHea.have_sou, + final mAirPri_flow_nominal=mAir_flow_nominal, + final mChiWat_flow_nominal=0, + final mHeaWat_flow_nominal=if coiHea.have_sou then dat.coiHea.mWat_flow_nominal else 0, + final QChiWat_flow_nominal=0, + final QHeaWat_flow_nominal=if coiHea.have_sou then dat.coiHea.Q_flow_nominal else 0); + + inner replaceable Buildings.Templates.Components.Coils.WaterBasedHeating coiHea( + redeclare final package MediumHeaWat = MediumHeaWat, + redeclare final Buildings.Templates.Components.Valves.TwoWayModulating val) + constrainedby Buildings.Templates.Components.Interfaces.PartialCoil( + redeclare final package MediumAir = MediumAir, + final dat=datCoiHea, + final energyDynamics=energyDynamics, + final allowFlowReversalAir=allowFlowReversalAir, + final allowFlowReversalLiq=allowFlowReversalLiq, + final show_T=show_T) + "Heating coil" + annotation ( + choices( + choice(redeclare replaceable Buildings.Templates.Components.Coils.WaterBasedHeating coiHea( + redeclare final package MediumHeaWat = MediumHeaWat, + redeclare final Buildings.Templates.Components.Valves.TwoWayModulating val) + "Hot water coil with two-way valve"), + choice(redeclare replaceable Buildings.Templates.Components.Coils.ElectricHeating coiHea + "Modulating electric heating coil")), + Dialog(group="Heating coil"), + Placement(transformation(extent={{-10,-210},{10,-190}}))); + + inner replaceable Buildings.Templates.Components.Dampers.Modulating damVAV + constrainedby Buildings.Templates.Components.Interfaces.PartialDamper( + redeclare final package Medium = MediumAir, + use_inputFilter=energyDynamics<>Modelica.Fluid.Types.Dynamics.SteadyState, + final allowFlowReversal=allowFlowReversalAir, + final show_T=show_T, + final dat=datDamVAV) + "VAV damper" + annotation (Dialog(group="VAV damper"), + Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-120,-200}))); + + inner replaceable Buildings.Templates.ZoneEquipment.Components.Controls.OpenLoop ctl + constrainedby + Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox( + final dat=dat.ctl) + "Control selections" + annotation ( + Dialog(group="Controller"), + Placement(transformation(extent={{-10,-10},{10,10}}))); + + Buildings.Templates.Components.Sensors.Temperature TAirDis( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversalAir, + final have_sen=ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly, + final m_flow_nominal=mAir_flow_nominal, + final typ=Buildings.Templates.Components.Types.SensorTemperature.Standard) + "Discharge air temperature sensor" + annotation (Placement(transformation(extent={{90,-210},{110,-190}}))); + Buildings.Templates.Components.Sensors.VolumeFlowRate VAirDis_flow( + redeclare final package Medium = MediumAir, + final allowFlowReversal=allowFlowReversalAir, + final have_sen=ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat or + ctl.typ==Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly, + final m_flow_nominal=mAir_flow_nominal, + final typ=Buildings.Templates.Components.Types.SensorVolumeFlowRate.FlowCross) + "Airflow sensor" + annotation (Placement(transformation(extent={{-200,-210},{-180,-190}}))); +protected + parameter Buildings.Templates.Components.Data.Damper datDamVAV( + final typ=damVAV.typ, + final m_flow_nominal=dat.damVAV.m_flow_nominal, + final dp_nominal=dat.damVAV.dp_nominal, + final dpFixed_nominal=if damVAV.typ == Buildings.Templates.Components.Types.Damper.None + then 0 else dat.coiHea.dpAir_nominal) + "Local record for VAV damper with lumped flow resistance"; + parameter Buildings.Templates.Components.Data.Coil datCoiHea( + final typ=coiHea.typ, + final typVal=coiHea.typVal, + final have_sou=coiHea.have_sou, + final mAir_flow_nominal=dat.coiHea.mAir_flow_nominal, + final mWat_flow_nominal=dat.coiHea.mWat_flow_nominal, + final dpWat_nominal=dat.coiHea.dpWat_nominal, + final dpValve_nominal=dat.coiHea.dpValve_nominal, + final cap_nominal=dat.coiHea.cap_nominal, + final TWatEnt_nominal=dat.coiHea.TWatEnt_nominal, + final TAirEnt_nominal=dat.coiHea.TAirEnt_nominal, + final dpAir_nominal=if damVAV.typ == Buildings.Templates.Components.Types.Damper.None + then dat.coiHea.dpAir_nominal else 0) + "Local record for coil with lumped flow resistance"; +equation + /* Control point connection - start */ + connect(damVAV.bus, bus.damVAV); + connect(coiHea.bus, bus.coiHea); + connect(TAirDis.y, bus.TAirDis); + connect(VAirDis_flow.y, bus.VAirDis_flow); + /* Control point connection - end */ + connect(port_aHeaWat, coiHea.port_aSou) annotation (Line(points={{20,-280},{ + 20,-260},{5,-260},{5,-210}}, color={0,127,255})); + connect(coiHea.port_bSou, port_bHeaWat) annotation (Line(points={{-5,-210},{-5, + -260},{-20,-260},{-20,-280}}, color={0,127,255})); + connect(damVAV.port_b,coiHea. port_a) + annotation (Line(points={{-110,-200},{-10,-200}}, color={0,127,255})); + connect(bus,ctl. bus) annotation (Line( + points={{-300,0},{-10,0}}, + color={255,204,51}, + thickness=0.5)); + connect(coiHea.port_b, TAirDis.port_a) + annotation (Line(points={{10,-200},{90,-200}}, color={0,127,255})); + connect(TAirDis.port_b, port_Dis) + annotation (Line(points={{110,-200},{300,-200}}, color={0,127,255})); + + connect(port_Sup, VAirDis_flow.port_a) + annotation (Line(points={{-300,-200},{-200,-200}}, color={0,127,255})); + connect(VAirDis_flow.port_b, damVAV.port_a) + annotation (Line(points={{-180,-200},{-130,-200}}, color={0,127,255})); + annotation (Diagram(graphics={ + Line(points={{300,-190},{-300,-190}}, color={0,0,0}), + Line(points={{300,-210},{-300,-210}}, color={0,0,0})}), + defaultComponentName="VAVBox", + Documentation(info=" ++This partial class provides a standard interface for VAV terminal unit templates. +
+"), + Icon(graphics={ + Rectangle( + extent={{-200,20},{200,-20}}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + fillColor={0,127,127}, + lineColor={0,127,127}), + Ellipse( + extent={{-134,4},{-126,-4}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={0,0,0}), + Line( + points={{-120,20},{-140,-20}}, + color={0,0,0}, + thickness=0.5), + Line( + points={{50,-200},{50,-194},{14,-194},{14,-20}}, + color={238,46,47}, + thickness=5, + visible=have_souHeaWat), + Line( + points={{-50,-200},{-50,-194},{-12,-194},{-12,-20}}, + color={238,46,47}, + thickness=5, + visible=have_souHeaWat, + pattern=LinePattern.Dash), + Rectangle( + extent={{-14,20},{16,-20}}, + lineColor={0,0,0}, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid, + lineThickness=0.5, + visible=coiHea.typ <> Buildings.Templates.Components.Types.Coil.None), + Line( + points={{16,20},{-14,-20}}, + color={0,0,0}, + thickness=0.5, + visible=coiHea.typ <> Buildings.Templates.Components.Types.Coil.None)})); +end VAVBox; diff --git a/Buildings/Templates/ZoneEquipment/Interfaces/package.mo b/Buildings/Templates/ZoneEquipment/Interfaces/package.mo new file mode 100644 index 00000000000..83df1077371 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Interfaces/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.ZoneEquipment; +package Interfaces "Interface classes" + extends Modelica.Icons.InterfacesPackage; + +annotation (Documentation(info=" ++This package contains interface classes. +
+")); +end Interfaces; diff --git a/Buildings/Templates/ZoneEquipment/Interfaces/package.order b/Buildings/Templates/ZoneEquipment/Interfaces/package.order new file mode 100644 index 00000000000..66d204a68a4 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Interfaces/package.order @@ -0,0 +1,3 @@ +Bus +PartialAirTerminal +VAVBox diff --git a/Buildings/Templates/ZoneEquipment/Types.mo b/Buildings/Templates/ZoneEquipment/Types.mo new file mode 100644 index 00000000000..846b24d41ac --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Types.mo @@ -0,0 +1,29 @@ +within Buildings.Templates.ZoneEquipment; +package Types "Package with type definitions" + extends Modelica.Icons.TypesPackage; + type Configuration = enumeration( + DualDuct + "Dual duct system", + FanPowered + "Fan-powered system", + Induction + "Induction system", + VAVBoxCoolingOnly + "VAV terminal unit cooling only", + VAVBoxReheat + "VAV terminal unit with reheat") + "Enumeration to configure the terminal unit"; + type Controller = enumeration( + G36VAVBoxCoolingOnly + "Guideline 36 controller for VAV terminal unit cooling only", + G36VAVBoxReheat + "Guideline 36 controller for VAV terminal unit with reheat", + OpenLoop + "Open loop controller") + "Enumeration to configure the terminal unit controller"; + annotation (Documentation(info=" ++This package contains type definitions. +
+")); +end Types; diff --git a/Buildings/Templates/ZoneEquipment/VAVBoxCoolingOnly.mo b/Buildings/Templates/ZoneEquipment/VAVBoxCoolingOnly.mo new file mode 100644 index 00000000000..25d5cf7fba5 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/VAVBoxCoolingOnly.mo @@ -0,0 +1,46 @@ +within Buildings.Templates.ZoneEquipment; +model VAVBoxCoolingOnly "VAV terminal unit cooling only" + extends Buildings.Templates.ZoneEquipment.Interfaces.VAVBox( + final typ=Buildings.Templates.ZoneEquipment.Types.Configuration.VAVBoxCoolingOnly, + redeclare final Buildings.Templates.Components.Coils.None coiHea, + redeclare replaceable Buildings.Templates.ZoneEquipment.Components.Controls.G36VAVBoxCoolingOnly + ctl "Guideline 36 controller for VAV terminal unit cooling only"); + + annotation ( + defaultComponentName="VAVBox", + Documentation(info=" ++This template represents a cooling-only VAV terminal unit +(or shut off box). +
+
+The possible configuration options are enumerated in the table below.
+The user may refer to ASHRAE (2021) for further details.
+The first option displayed in bold characters corresponds to the default configuration.
+
Configuration parameter | Options | Notes |
---|---|---|
VAV damper | +
+Modulating damper + |
++ |
Controller | ++ASHRAE Guideline 36 controller + | ++An open loop controller is also available for validation purposes only. + | +
+This template represents a VAV terminal unit with reheat. +
+
+The possible configuration options are enumerated in the table below.
+The user may refer to ASHRAE (2021) for further details.
+The first option displayed in bold characters corresponds to the default configuration.
+
Configuration parameter | Options | Notes |
---|---|---|
VAV damper | ++Modulating damper + | ++ |
Reheat coil | +
+Hot water coil with two-way valve +Modulating electric heating coil + |
++ |
Controller | ++ASHRAE Guideline 36 controller + | ++An open loop controller is also available for validation purposes only. + | +
+This class generates signals typically provided by the AHU controller. +It is aimed for validation purposes only. +
+")); +end VAVMZControlPoints; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/AirHandlersFans/package.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/AirHandlersFans/package.mo new file mode 100644 index 00000000000..7a4c2181fc9 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/AirHandlersFans/package.mo @@ -0,0 +1,9 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject; +package AirHandlersFans "Air handlers and fans" + +annotation (Documentation(info=" ++This package contains models used for validation purposes. +
+")); +end AirHandlersFans; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/AirHandlersFans/package.order b/Buildings/Templates/ZoneEquipment/Validation/UserProject/AirHandlersFans/package.order new file mode 100644 index 00000000000..37a691c0513 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/AirHandlersFans/package.order @@ -0,0 +1 @@ +VAVMZControlPoints diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/BASControlPoints.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/BASControlPoints.mo new file mode 100644 index 00000000000..0f22f35818e --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/BASControlPoints.mo @@ -0,0 +1,71 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject; +block BASControlPoints "Emulation of control points from the BAS" + extends Modelica.Blocks.Icons.Block; + + parameter Integer nZon = 2 + "Number of served zones"; + + Interfaces.Bus busTer[nZon] + "Terminal unit control bus" annotation (Placement(transformation( + extent={{-20,20},{20,-20}}, + rotation=90, + origin={200,0}), iconTransformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={100,0}))); + Controls.OBC.CDL.Logical.Sources.Constant y1OccSch[nZon]( + each k=true) + "Scheduled occupancy" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + Controls.OBC.CDL.Integers.Sources.Constant yOveFloSet[nZon](each k=0) + "Override flow setpoint, 1: set to zero; 2: set to cooling maximum; 3: set to minimum; 4: set to heating maximum" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + Controls.OBC.CDL.Logical.Sources.Constant y1OveHeaOff[nZon]( + each k=false) + "Override heating coil valve position, true: close valve" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); + Controls.OBC.CDL.Integers.Sources.Constant yOveDamPos[nZon](each k=0) + "Override damper position, 1: set to close; 2: set to open" + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TZonHeaOccSet[nZon]( + each k=293.15) + "Occupied heating setpoint" + annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TZonCooOccSet[nZon]( + each k=297.15) + "Occupied cooling setpoint" + annotation (Placement(transformation(extent={{-100,10},{-80,30}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TZonHeaUnoSet[nZon]( + each k=285.15) + "Unoccupied heating setpoint" + annotation (Placement(transformation(extent={{-100,-30},{-80,-10}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TZonCooUnoSet[nZon]( + each k=303.15) + "Unoccupied cooling setpoint" + annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); + Controls.OBC.CDL.Continuous.Sources.Constant ppmCO2Set[nZon]( + each k=1000) + "Zone CO2 concentration setpoint" + annotation (Placement(transformation(extent={{-100,-110},{-80,-90}}))); +equation + connect(y1OccSch.y, busTer.y1OccSch); + connect(yOveFloSet.y, busTer.yOveFloSet); + connect(yOveDamPos.y, busTer.yOveDamPos); + connect(y1OveHeaOff.y, busTer.y1OveHeaOff); + + connect(TZonHeaOccSet.y, busTer.TZonHeaOccSet); + connect(TZonCooOccSet.y, busTer.TZonCooOccSet); + connect(TZonHeaUnoSet.y, busTer.TZonHeaUnoSet); + connect(TZonCooUnoSet.y, busTer.TZonCooUnoSet); + connect(ppmCO2Set.y, busTer.ppmCO2Set); + annotation ( + defaultComponentName="sigBAS", + Diagram(coordinateSystem(preserveAspectRatio= + false, extent={{-200,-180},{200,180}})), + Documentation(info=" ++This class generates signals typically provided by the BAS. +It is aimed for validation purposes only. +
+")); +end BASControlPoints; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/AllSystems.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/AllSystems.mo new file mode 100644 index 00000000000..de87888e4a9 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/AllSystems.mo @@ -0,0 +1,68 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject.Data; +class AllSystems "Top-level (whole building) system parameters" + extends Buildings.Templates.Data.AllSystems(stdVen=Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1, + stdEne=Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1); + + /* + The construct below where a replaceable model is used inside the `outer` + component declaration is for validation purposes only, where various configuration + classes are tested with the same instance name `VAV_1`. + It is needed here because + - the `inner` instance must be a subtype of the `outer` component, and + - the `outer` component references only the subcomponents from its own type + (as opposed to all the subcomponents from the `inner` type), and + - modification of an outer declaration is prohibited. + The standard export workflow should use an explicit reference to the configuration + class for each MZVAV model instance. + */ + replaceable model VAVBox = + Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal + "Model of VAV box"; + + outer VAVBox VAVBox_1 + "Instance of VAV box model"; + + parameter Buildings.Templates.ZoneEquipment.Data.VAVBox dat_VAVBox_1( + final typ=VAVBox_1.typ, + final have_souChiWat=VAVBox_1.have_souChiWat, + final have_souHeaWat=VAVBox_1.have_souHeaWat, + final typCtl=VAVBox_1.ctl.typ, + final typDamVAV=VAVBox_1.damVAV.typ, + final typCoiHea=VAVBox_1.coiHea.typ, + final typValCoiHea=VAVBox_1.coiHea.typVal, + final stdVen=VAVBox_1.ctl.stdVen, + id="VAVBox_1", + id_souAir="VAV_1", + damVAV(dp_nominal=50), + coiHea( + cap_nominal=1e3, + dpAir_nominal=70, + dpWat_nominal=0.1e4, + dpValve_nominal=0.05e4, + mWat_flow_nominal=1e3/4186/10, + TAirEnt_nominal=285.15, + TWatEnt_nominal=323.15), + ctl( + final stdVen=VAVBox_1.ctl.stdVen, + VAirCooSet_flow_max=0.1, + VAirHeaSet_flow_max=0.03, + VOutMinOcc_flow=2.5e-3, + VOutMinAre_flow=3e-3, + VOutOcc_flow=2.5e-3, + VOutAre_flow=3e-3, + VAirSet_flow_min=0.01)) + "Parameters for system VAVBox_1" + annotation ( + Dialog(group="Zone equipment")); + + annotation ( + defaultComponentPrefixes = "inner parameter", + defaultComponentName = "datAll", + Documentation(info=" ++This record provides the set of sizing and operating parameters for +the whole HVAC system. +It is aimed for validation purposes only. +
+")); +end AllSystems; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/package.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/package.mo new file mode 100644 index 00000000000..7bd66c6b4e4 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/package.mo @@ -0,0 +1,11 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject; +package Data "Package with classes for storing system parameters" + extends Modelica.Icons.MaterialPropertiesPackage; + +annotation (Documentation(info=" ++This package provides records for design and operating parameters +that are used for validation purposes. +
+")); +end Data; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/package.order b/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/package.order new file mode 100644 index 00000000000..3831742ec60 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/Data/package.order @@ -0,0 +1 @@ +AllSystems diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/PlantControlPoints.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/PlantControlPoints.mo new file mode 100644 index 00000000000..43eed095514 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/PlantControlPoints.mo @@ -0,0 +1,39 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject; +block PlantControlPoints + "Emulation of control points from plant" + extends Modelica.Blocks.Icons.Block; + + parameter Integer nZon = 2 + "Number of served zones"; + + Buildings.Controls.OBC.CDL.Logical.Sources.Constant y1PlaHeaWat[nZon]( + each k=true) "Heating hot water plant status" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Interfaces.Bus busTer[nZon] + "Terminal unit control bus" annotation (Placement(transformation( + extent={{-20,20},{20,-20}}, + rotation=90, + origin={200,0}), iconTransformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={100,0}))); +equation + + connect(y1PlaHeaWat.y, busTer.y1PlaHeaWat) annotation (Line(points={{22,0},{ + 200,0}}, color={255,0,255}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}}, + horizontalAlignment=TextAlignment.Left)); + annotation ( + defaultComponentName="sigPla", + Diagram(coordinateSystem(preserveAspectRatio= + false, extent={{-200,-180},{200,180}})), + Documentation(info=" ++This class generates signals typically provided by the HHW and CHW plant +controller. +It is aimed for validation purposes only. +
+")); +end PlantControlPoints; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneControlPoints.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneControlPoints.mo new file mode 100644 index 00000000000..b5b68009b9e --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneControlPoints.mo @@ -0,0 +1,50 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject; +block ZoneControlPoints "Emulation of control points from zone sensors and thermostats" + extends Modelica.Blocks.Icons.Block; + + Interfaces.Bus bus + "Terminal unit control bus" + annotation (Placement( + transformation( + extent={{-20,20},{20,-20}}, + rotation=90, + origin={200,0}), iconTransformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={100,0}))); + + Buildings.Controls.OBC.CDL.Logical.Sources.Constant y1Occ(k=true) + "Occupancy sensor status" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Controls.OBC.CDL.Logical.Sources.Constant y1Win(k=true) + "Window switch status" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TZon(k=303.15) + "Zone temperature" + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + Controls.OBC.CDL.Logical.Sources.Constant y1OveOccZon( + k=false) + "Zone occupancy override" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Controls.OBC.CDL.Continuous.Sources.Constant ppmCO2(k=1000) + "Zone CO2 concentration" + annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); + +equation + connect(y1Occ.y, bus.y1Occ); + connect(y1Win.y, bus.y1Win); + connect(TZon.y, bus.TZon); + connect(ppmCO2.y, bus.ppmCO2); + connect(y1OveOccZon.y, bus.y1OveOccZon); + + annotation ( + defaultComponentName="sigZon", + Diagram(coordinateSystem(preserveAspectRatio= + false, extent={{-200,-180},{200,180}})), + Documentation(info=" ++This class generates signals typically provided by the zone equipment. +It is aimed for validation purposes only. +
+")); +end ZoneControlPoints; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/VAVBoxCoolingOnly.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/VAVBoxCoolingOnly.mo new file mode 100644 index 00000000000..a32296acd66 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/VAVBoxCoolingOnly.mo @@ -0,0 +1,17 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject.ZoneEquipment; +model VAVBoxCoolingOnly "Configuration of VAV terminal unit cooling only" + extends Buildings.Templates.ZoneEquipment.VAVBoxCoolingOnly( + redeclare replaceable Buildings.Templates.ZoneEquipment.Components.Controls.OpenLoop ctl + "Open loop control"); + annotation ( + defaultComponentName="ter", + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" ++This is a configuration model with the same default options as + +Buildings.Templates.ZoneEquipment.VAVBoxCoolingOnly. +
+")); +end VAVBoxCoolingOnly; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/VAVBoxCoolingOnlyControlG36.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/VAVBoxCoolingOnlyControlG36.mo new file mode 100644 index 00000000000..0ae28c5d8a8 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/VAVBoxCoolingOnlyControlG36.mo @@ -0,0 +1,22 @@ +within Buildings.Templates.ZoneEquipment.Validation.UserProject.ZoneEquipment; +model VAVBoxCoolingOnlyControlG36 + "Configuration of VAV terminal unit cooling only" + extends Buildings.Templates.ZoneEquipment.VAVBoxCoolingOnly; + + annotation ( + defaultComponentName="ter", + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +
+This is a configuration model with the same default options as
+
+Buildings.Templates.ZoneEquipment.VAVBoxReheat
+except for the following options.
+
Component | Configuration |
---|---|
Controller | Guideline 36 controller |
+This is a configuration model with the same default options as
+
+Buildings.Templates.ZoneEquipment.VAVBoxReheat
+except for the following options.
+
Component | Configuration |
---|---|
Controller | Guideline 36 controller |
+This package contains models used for validation purposes. +
+")); +end ZoneEquipment; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/package.order b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/package.order new file mode 100644 index 00000000000..ec909c75cf9 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/ZoneEquipment/package.order @@ -0,0 +1,3 @@ +VAVBoxCoolingOnly +VAVBoxCoolingOnlyControlG36 +VAVBoxReheatControlG36 diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/package.mo b/Buildings/Templates/ZoneEquipment/Validation/UserProject/package.mo new file mode 100644 index 00000000000..06b5503be30 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates.ZoneEquipment.Validation; +package UserProject "Package with configured models" + extends Modelica.Icons.VariantsPackage; + +annotation (Documentation(info=" ++This package contains models used for validation purposes. +
+")); +end UserProject; diff --git a/Buildings/Templates/ZoneEquipment/Validation/UserProject/package.order b/Buildings/Templates/ZoneEquipment/Validation/UserProject/package.order new file mode 100644 index 00000000000..93ffb0bb8e3 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/UserProject/package.order @@ -0,0 +1,6 @@ +BASControlPoints +PlantControlPoints +ZoneControlPoints +AirHandlersFans +ZoneEquipment +Data diff --git a/Buildings/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mo b/Buildings/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mo new file mode 100644 index 00000000000..bb0f08cf278 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mo @@ -0,0 +1,117 @@ +within Buildings.Templates.ZoneEquipment.Validation; +model VAVBoxCoolingOnly "Validation model for VAV terminal unit cooling only" + extends Modelica.Icons.Example; + + replaceable package MediumAir=Buildings.Media.Air + constrainedby Modelica.Media.Interfaces.PartialMedium + "Air medium"; + replaceable package MediumHeaWat=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Heating medium (such as HHW)"; + + inner parameter UserProject.Data.AllSystems datAll( + sysUni=Buildings.Templates.Types.Units.SI, + ashCliZon=Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_3B, + redeclare replaceable model VAVBox = + UserProject.ZoneEquipment.VAVBoxCoolingOnly) + "System parameters" + annotation (Placement(transformation(extent={{90,92},{110,112}}))); + + Fluid.Sources.Boundary_pT bouPri( + redeclare final package Medium = MediumAir, + p=MediumAir.p_default + 200, + nPorts=1) "Boundary conditions for primary air distribution system" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + Fluid.FixedResistances.PressureDrop res( + redeclare final package Medium = MediumAir, + m_flow_nominal=1, + dp_nominal=100) + annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); + Fluid.FixedResistances.PressureDrop res1( + redeclare final package Medium = MediumAir, + m_flow_nominal=1, + dp_nominal=100) + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Fluid.Sources.Boundary_pT bouBui( + redeclare final package Medium = MediumAir, + nPorts=1) "Boundary conditions for indoor environment" + annotation (Placement(transformation(extent={{80,-50},{60,-30}}))); + + inner replaceable UserProject.ZoneEquipment.VAVBoxCoolingOnly VAVBox_1( + final dat=datAll.dat_VAVBox_1, + redeclare final package MediumAir = MediumAir, + redeclare final package MediumHeaWat = MediumHeaWat) + "Terminal unit" + annotation (Placement(transformation(extent={{-20,-60},{20,-20}}))); + + Fluid.Sources.Boundary_pT bouHeaWat( + redeclare final package Medium = MediumHeaWat, + nPorts=2) if VAVBox_1.have_souHeaWat + "Boundary conditions for HHW distribution system" + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + UserProject.AirHandlersFans.VAVMZControlPoints sigAirHan if VAVBox_1.ctl.typ == + Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly or + VAVBox_1.ctl.typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat + "Control signals from AHU" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + UserProject.ZoneControlPoints sigZon + if VAVBox_1.ctl.typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly + or VAVBox_1.ctl.typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat + "Control signals from zone-level equipment" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + UserProject.PlantControlPoints sigPla if VAVBox_1.ctl.typ == + Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly or + VAVBox_1.ctl.typ == Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat + "Control signals from AHU" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + UserProject.BASControlPoints sigBAS + "BAS control points" + annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); +equation + connect(bouPri.ports[1], res.port_a) + annotation (Line(points={{-60,-40},{-50,-40}}, + color={0,127,255})); + connect(bouBui.ports[1], res1.port_b) + annotation (Line(points={{60,-40},{50,-40}}, + color={0,127,255})); + connect(res.port_b, VAVBox_1.port_Sup) + annotation (Line(points={{-30,-40},{-20,-40}}, color={0,127,255})); + connect(VAVBox_1.port_Dis, res1.port_a) + annotation (Line(points={{20,-40},{30,-40}}, color={0,127,255})); + connect(VAVBox_1.port_aHeaWat, bouHeaWat.ports[1]) annotation (Line(points={{5,-60}, + {5,-82},{-60,-82},{-60,-81}}, color={0,127,255})); + connect(VAVBox_1.port_bHeaWat, bouHeaWat.ports[2]) + annotation (Line(points={{-5,-60},{-5,-79},{-60,-79}}, color={0,127,255})); + connect(sigZon.bus, VAVBox_1.bus) annotation (Line( + points={{-60,0},{-20,0},{-20,-24},{-19.9,-24}}, + color={255,204,51}, + thickness=0.5)); + connect(sigAirHan.busTer[1], VAVBox_1.bus) annotation (Line( + points={{-60,30},{-20,30},{-20,-24},{-19.9,-24}}, + color={255,204,51}, + thickness=0.5)); + connect(sigPla.busTer[1], VAVBox_1.bus) annotation (Line( + points={{-60,60},{-19.9,60},{-19.9,-24}}, + color={255,204,51}, + thickness=0.5)); + connect(sigBAS.busTer[1], VAVBox_1.bus) annotation (Line( + points={{-60,90},{-19.9,90},{-19.9,-24}}, + color={255,204,51}, + thickness=0.5)); + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnly.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=1), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.ZoneEquipment.Validation.UserProject.ZoneEquipment.VAVBoxCoolingOnly. +It is intended to check whether the template model is well-defined for +this particular system configuration. +However, due to the open-loop controls a correct physical behavior +is not expected and the plotted variables are for non-regression testing only. +
+"), + Diagram(coordinateSystem(extent={{-120,-120},{120,120}}))); +end VAVBoxCoolingOnly; diff --git a/Buildings/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mo b/Buildings/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mo new file mode 100644 index 00000000000..29247a55157 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mo @@ -0,0 +1,22 @@ +within Buildings.Templates.ZoneEquipment.Validation; +model VAVBoxCoolingOnlyControlG36 + "Validation model for VAV terminal unit cooling only" + extends VAVBoxCoolingOnly( + datAll( + redeclare model VAVBox = + UserProject.ZoneEquipment.VAVBoxCoolingOnlyControlG36), + redeclare UserProject.ZoneEquipment.VAVBoxCoolingOnlyControlG36 VAVBox_1); + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxCoolingOnlyControlG36.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=3600), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.ZoneEquipment.Validation.UserProject.ZoneEquipment.VAVBoxCoolingOnlyControlG36. +It is intended to check whether the template model is well-defined for +this particular system configuration. +
+")); +end VAVBoxCoolingOnlyControlG36; diff --git a/Buildings/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mo b/Buildings/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mo new file mode 100644 index 00000000000..9cb8c23cbf8 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mo @@ -0,0 +1,21 @@ +within Buildings.Templates.ZoneEquipment.Validation; +model VAVBoxReheatControlG36 "Validation model for VAV terminal unit with reheat" + extends VAVBoxCoolingOnly( + datAll( + redeclare model VAVBox = + UserProject.ZoneEquipment.VAVBoxReheatControlG36), + redeclare UserProject.ZoneEquipment.VAVBoxReheatControlG36 VAVBox_1); + annotation ( + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Templates/ZoneEquipment/Validation/VAVBoxReheatControlG36.mos" + "Simulate and plot"), + experiment(Tolerance=1e-6, StopTime=3600), Documentation(info=" ++This is a validation model for the configuration represented by + +Buildings.Templates.ZoneEquipment.Validation.UserProject.ZoneEquipment.VAVBoxReheatControlG36. +It is intended to check whether the template model is well-defined for +this particular system configuration. +
+")); +end VAVBoxReheatControlG36; diff --git a/Buildings/Templates/ZoneEquipment/Validation/package.mo b/Buildings/Templates/ZoneEquipment/Validation/package.mo new file mode 100644 index 00000000000..4bdfd1da9ad --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/package.mo @@ -0,0 +1,22 @@ +within Buildings.Templates.ZoneEquipment; +package Validation "Package with validation models" + extends Modelica.Icons.ExamplesPackage; + + annotation ( + preferredView="info", + Documentation(info=" ++This package contains models validating the templates within + +Buildings.Templates.ZoneEquipment +for various system configurations. +
++Each system configuration is specified by extending the original template class +to create a so-called configuration class (under + +Buildings.Templates.ZoneEquipment.Validation.UserProject.ZoneEquipment), +that is instantiated in the validation model. +
+")); +end Validation; diff --git a/Buildings/Templates/ZoneEquipment/Validation/package.order b/Buildings/Templates/ZoneEquipment/Validation/package.order new file mode 100644 index 00000000000..1afdeec2e50 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/Validation/package.order @@ -0,0 +1,4 @@ +VAVBoxCoolingOnly +VAVBoxCoolingOnlyControlG36 +VAVBoxReheatControlG36 +UserProject diff --git a/Buildings/Templates/ZoneEquipment/package.mo b/Buildings/Templates/ZoneEquipment/package.mo new file mode 100644 index 00000000000..ad011651305 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/package.mo @@ -0,0 +1,10 @@ +within Buildings.Templates; +package ZoneEquipment "Zone equipment" + extends Modelica.Icons.Package; + +annotation (Documentation(info=" ++This package contains templates for zone equipment (HVAC terminal units). +
+")); +end ZoneEquipment; diff --git a/Buildings/Templates/ZoneEquipment/package.order b/Buildings/Templates/ZoneEquipment/package.order new file mode 100644 index 00000000000..90615915645 --- /dev/null +++ b/Buildings/Templates/ZoneEquipment/package.order @@ -0,0 +1,7 @@ +VAVBoxCoolingOnly +VAVBoxReheat +Components +Data +Types +Validation +Interfaces diff --git a/Buildings/Templates/package.mo b/Buildings/Templates/package.mo new file mode 100644 index 00000000000..c4f771eb327 --- /dev/null +++ b/Buildings/Templates/package.mo @@ -0,0 +1,20 @@ +within Buildings; +package Templates "Package with templates for various HVAC systems" + extends Modelica.Icons.Package; + + annotation (Documentation(info=" ++This package contains templates for common HVAC systems. +A template is defined as a user-configurable model that can represent various +configurations of the same system. The templates include closed-loop controls as +implemented within + +Buildings.Controls.OBC. +
+"), Icon(graphics={Text( + extent={{-100,100},{100,-100}}, + textColor={0,0,0}, + fontName="monospace", + textStyle={TextStyle.Bold}, + textString="T")})); +end Templates; diff --git a/Buildings/Templates/package.order b/Buildings/Templates/package.order new file mode 100644 index 00000000000..9c28253a22a --- /dev/null +++ b/Buildings/Templates/package.order @@ -0,0 +1,6 @@ +UsersGuide +AirHandlersFans +Components +ZoneEquipment +Data +Types diff --git a/Buildings/package.mo b/Buildings/package.mo index 85bd2f49ceb..9549c03423c 100644 --- a/Buildings/package.mo +++ b/Buildings/package.mo @@ -217,6 +217,15 @@ Version 10.0.0 is ... xxx The following new libraries have been added:Buildings.Templates + | +Package that contains templates for HVAC systems with control sequences + based on ASHRAE Guideline 36. + Currently limited to VAV systems, the package is under active development + and will be further expanded with templates for primary systems and various + types of zone equipment. + | +
Buildings.ThermalZones.ISO13790 | Package that contains models for reduced building physics of thermal zones
@@ -820,16 +829,6 @@ have been improved in a
#3277. |
Buildings.Controls.OBC.CDL.Continuous.Sources.Sin - | -Renamed block from Sine to Sin
- to use consistent naming with
- Buildings.Controls.OBC.CDL.Continuous.Sin .- This is for - #3339. - This change is supported in the conversion script. - |
-
Buildings.Controls.OBC.CDL.Routing.RealExtractor | Removed parameter allowOutOfRange and outOfRangeValue and output the element with the nearest valid index
diff --git a/Buildings/package.order b/Buildings/package.order
index 2f79ab027f2..dbc4ec10240 100644
--- a/Buildings/package.order
+++ b/Buildings/package.order
@@ -9,6 +9,7 @@ Fluid
HeatTransfer
Media
Occupants
+Templates
ThermalZones
Utilities
Types
|