diff --git a/AixLib/.copiedFiles.txt b/AixLib/.copiedFiles.txt index 9db1d605d0..4b6408bc75 100644 --- a/AixLib/.copiedFiles.txt +++ b/AixLib/.copiedFiles.txt @@ -199,6 +199,10 @@ AixLib\Controls\SetPoints\Examples\package.order AixLib\Controls\SetPoints\HotWaterTemperatureReset.mo AixLib\Controls\SetPoints\OccupancySchedule.mo AixLib\Controls\SetPoints\Table.mo +AixLib\Controls\SetPoints\Validation\OccupancyScheduleNegativeStartTime.mo +AixLib\Controls\SetPoints\Validation\OccupancySchedulePositiveStartTime.mo +AixLib\Controls\SetPoints\Validation\package.mo +AixLib\Controls\SetPoints\Validation\package.order AixLib\Controls\SetPoints\package.mo AixLib\Controls\SetPoints\package.order AixLib\Controls\package.mo @@ -250,6 +254,7 @@ AixLib\Fluid\Actuators\Valves\ThreeWayEqualPercentageLinear.mo AixLib\Fluid\Actuators\Valves\ThreeWayLinear.mo AixLib\Fluid\Actuators\Valves\TwoWayEqualPercentage.mo AixLib\Fluid\Actuators\Valves\TwoWayLinear.mo +AixLib\Fluid\Actuators\Valves\TwoWayPolynomial.mo AixLib\Fluid\Actuators\Valves\TwoWayPressureIndependent.mo AixLib\Fluid\Actuators\Valves\TwoWayQuickOpening.mo AixLib\Fluid\Actuators\Valves\TwoWayTable.mo @@ -441,18 +446,52 @@ AixLib\Fluid\FMI\Validation\package.mo AixLib\Fluid\FMI\Validation\package.order AixLib\Fluid\FMI\package.mo AixLib\Fluid\FMI\package.order +AixLib\Fluid\FixedResistances\BaseClasses\PlugFlow.mo +AixLib\Fluid\FixedResistances\BaseClasses\PlugFlowCore.mo +AixLib\Fluid\FixedResistances\BaseClasses\PlugFlowHeatLoss.mo +AixLib\Fluid\FixedResistances\BaseClasses\PlugFlowTransportDelay.mo +AixLib\Fluid\FixedResistances\BaseClasses\Validation\PlugFlowCore.mo +AixLib\Fluid\FixedResistances\BaseClasses\Validation\package.mo +AixLib\Fluid\FixedResistances\BaseClasses\Validation\package.order +AixLib\Fluid\FixedResistances\BaseClasses\package.mo +AixLib\Fluid\FixedResistances\BaseClasses\package.order AixLib\Fluid\FixedResistances\Examples\FlowJunction.mo AixLib\Fluid\FixedResistances\Examples\HydraulicDiameter.mo +AixLib\Fluid\FixedResistances\Examples\PlugFlowPipe.mo AixLib\Fluid\FixedResistances\Examples\PressureDrop.mo AixLib\Fluid\FixedResistances\Examples\package.mo AixLib\Fluid\FixedResistances\Examples\package.order AixLib\Fluid\FixedResistances\HydraulicDiameter.mo AixLib\Fluid\FixedResistances\Junction.mo AixLib\Fluid\FixedResistances\LosslessPipe.mo +AixLib\Fluid\FixedResistances\PlugFlowPipe.mo AixLib\Fluid\FixedResistances\PressureDrop.mo AixLib\Fluid\FixedResistances\Validation\FlowJunctionSteadyState.mo AixLib\Fluid\FixedResistances\Validation\FlowJunctionSteadyStateNoPressureDrop.mo AixLib\Fluid\FixedResistances\Validation\LosslessPipe.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\BaseClasses\PipeDataBaseDefinition.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\BaseClasses\PipeDataULg.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\BaseClasses\package.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\BaseClasses\package.order +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataAIT151218.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg150801.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg151202.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg151204_1.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg151204_2.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg151204_4.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg160104_2.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\PipeDataULg160118_1.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\TestData.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\package.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\package.order +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\FlowReversal.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\MSLAIT.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\MSLAIT2Nodes.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\PlugFlowAIT.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\PlugFlowULg.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\TransportWaterAir.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\package.mo +AixLib\Fluid\FixedResistances\Validation\PlugFlowPipes\package.order AixLib\Fluid\FixedResistances\Validation\PressureDropsExplicit.mo AixLib\Fluid\FixedResistances\Validation\PressureDropsExplicitLinearized.mo AixLib\Fluid\FixedResistances\Validation\PressureDropsParallel.mo @@ -494,11 +533,24 @@ AixLib\Fluid\HeatExchangers\ActiveBeams\Validation\package.mo AixLib\Fluid\HeatExchangers\ActiveBeams\Validation\package.order AixLib\Fluid\HeatExchangers\ActiveBeams\package.mo AixLib\Fluid\HeatExchangers\ActiveBeams\package.order +AixLib\Fluid\HeatExchangers\BaseClasses\Examples\HACoilInside.mo +AixLib\Fluid\HeatExchangers\BaseClasses\Examples\HANaturalCylinder.mo +AixLib\Fluid\HeatExchangers\BaseClasses\Examples\package.mo +AixLib\Fluid\HeatExchangers\BaseClasses\Examples\package.order +AixLib\Fluid\HeatExchangers\BaseClasses\HACoilInside.mo +AixLib\Fluid\HeatExchangers\BaseClasses\HANaturalCylinder.mo +AixLib\Fluid\HeatExchangers\BaseClasses\Internal.mo AixLib\Fluid\HeatExchangers\BaseClasses\PartialEffectiveness.mo AixLib\Fluid\HeatExchangers\BaseClasses\PartialPrescribedOutlet.mo +AixLib\Fluid\HeatExchangers\BaseClasses\dynamicViscosityWater.mo +AixLib\Fluid\HeatExchangers\BaseClasses\epsilon_ntuZ.mo +AixLib\Fluid\HeatExchangers\BaseClasses\isobaricExpansionCoefficientWater.mo +AixLib\Fluid\HeatExchangers\BaseClasses\ntu_epsilonZ.mo AixLib\Fluid\HeatExchangers\BaseClasses\package.mo AixLib\Fluid\HeatExchangers\BaseClasses\package.order +AixLib\Fluid\HeatExchangers\BaseClasses\prandtlNumberWater.mo AixLib\Fluid\HeatExchangers\ConstantEffectiveness.mo +AixLib\Fluid\HeatExchangers\EvaporatorCondenser.mo AixLib\Fluid\HeatExchangers\Examples\AirHeater_T.mo AixLib\Fluid\HeatExchangers\Examples\AirHeater_u.mo AixLib\Fluid\HeatExchangers\Examples\BaseClasses\Heater.mo @@ -520,6 +572,7 @@ AixLib\Fluid\HeatExchangers\Radiators\package.mo AixLib\Fluid\HeatExchangers\Radiators\package.order AixLib\Fluid\HeatExchangers\SensibleCooler_T.mo AixLib\Fluid\HeatExchangers\Validation\ConstantEffectiveness.mo +AixLib\Fluid\HeatExchangers\Validation\EvaporatorCondenser.mo AixLib\Fluid\HeatExchangers\Validation\HeaterCooler_u.mo AixLib\Fluid\HeatExchangers\Validation\PrescribedOutlet.mo AixLib\Fluid\HeatExchangers\Validation\PrescribedOutlet_dynamic.mo @@ -527,18 +580,97 @@ AixLib\Fluid\HeatExchangers\Validation\package.mo AixLib\Fluid\HeatExchangers\Validation\package.order AixLib\Fluid\HeatExchangers\package.mo AixLib\Fluid\HeatExchangers\package.order +AixLib\Fluid\HeatPumps\BaseClasses\PartialWaterToWater.mo +AixLib\Fluid\HeatPumps\BaseClasses\package.mo +AixLib\Fluid\HeatPumps\BaseClasses\package.order +AixLib\Fluid\HeatPumps\Calibration\BaseClasses\PartialWaterToWater.mo +AixLib\Fluid\HeatPumps\Calibration\BaseClasses\package.mo +AixLib\Fluid\HeatPumps\Calibration\BaseClasses\package.order +AixLib\Fluid\HeatPumps\Calibration\ScrollWaterToWater.mo +AixLib\Fluid\HeatPumps\Calibration\package.mo +AixLib\Fluid\HeatPumps\Calibration\package.order AixLib\Fluid\HeatPumps\Carnot_TCon.mo AixLib\Fluid\HeatPumps\Carnot_y.mo +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\PartialCompressor.mo +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\TemperatureProtection.mo +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\Validation\TemperatureProtection.mo +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\Validation\package.mo +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\Validation\package.order +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\package.mo +AixLib\Fluid\HeatPumps\Compressors\BaseClasses\package.order +AixLib\Fluid\HeatPumps\Compressors\ReciprocatingCompressor.mo +AixLib\Fluid\HeatPumps\Compressors\ScrollCompressor.mo +AixLib\Fluid\HeatPumps\Compressors\Validation\ReciprocatingCompressor.mo +AixLib\Fluid\HeatPumps\Compressors\Validation\ReciprocatingCompressor_ZeroInput.mo +AixLib\Fluid\HeatPumps\Compressors\Validation\ScrollCompressor.mo +AixLib\Fluid\HeatPumps\Compressors\Validation\ScrollCompressor_ZeroInput.mo +AixLib\Fluid\HeatPumps\Compressors\Validation\package.mo +AixLib\Fluid\HeatPumps\Compressors\Validation\package.order +AixLib\Fluid\HeatPumps\Compressors\package.mo +AixLib\Fluid\HeatPumps\Compressors\package.order +AixLib\Fluid\HeatPumps\Data\BaseClasses\HeatPumps.mo +AixLib\Fluid\HeatPumps\Data\BaseClasses\package.mo +AixLib\Fluid\HeatPumps\Data\BaseClasses\package.order +AixLib\Fluid\HeatPumps\Data\ReciprocatingWaterToWater\Generic.mo +AixLib\Fluid\HeatPumps\Data\ReciprocatingWaterToWater\package.mo +AixLib\Fluid\HeatPumps\Data\ReciprocatingWaterToWater\package.order +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Generic.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Carrier_50PSW122_38kW_4_29COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Carrier_50PSW180_52kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Carrier_50PSW210_70kW_4_40COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Carrier_50PSW240_93kW_4_40COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Carrier_50PSW360_105kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Carrier_50PSW420_140kW_4_40COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\ClimateMaster_TMW036_12kW_4_90COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\ClimateMaster_TMW060_21kW_4_60COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\ClimateMaster_TMW120_42kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\ClimateMaster_TMW170_48kW_4_30COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\ClimateMaster_TMW340_98kW_4_40COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA036_13kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA048_16kW_4_60COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA060_19kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA072_24kW_4_30COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA120_37kW_4_40COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA150_49kW_4_70COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA180_63kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA240_79kW_4_40COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA300_93kW_4_60COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA360_116kW_4_60COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Daikin_WRA420_137kW_4_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Trane_EXW060_21kW_4_30COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Trane_EXW120_40kW_3_90COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Trane_EXW240_76kW_4_10COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Viessmann_BW301A21_28kW_5_94COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Viessmann_BW301A29_37kW_6_0COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\Viessmann_BW301A45_58kW_5_50COP_R410A.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\package.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\Heating\package.order +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\package.mo +AixLib\Fluid\HeatPumps\Data\ScrollWaterToWater\package.order +AixLib\Fluid\HeatPumps\Data\package.mo +AixLib\Fluid\HeatPumps\Data\package.order AixLib\Fluid\HeatPumps\Examples\Carnot_TCon.mo AixLib\Fluid\HeatPumps\Examples\Carnot_y.mo +AixLib\Fluid\HeatPumps\Examples\ScrollWaterToWater_OneRoomRadiator.mo AixLib\Fluid\HeatPumps\Examples\package.mo AixLib\Fluid\HeatPumps\Examples\package.order +AixLib\Fluid\HeatPumps\ReciprocatingWaterToWater.mo +AixLib\Fluid\HeatPumps\ScrollWaterToWater.mo AixLib\Fluid\HeatPumps\Validation\Carnot_TCon_LimitedCapacity.mo AixLib\Fluid\HeatPumps\Validation\Carnot_TCon_LowTemperature.mo AixLib\Fluid\HeatPumps\Validation\Carnot_TCon_etaPL.mo AixLib\Fluid\HeatPumps\Validation\Carnot_TCon_reverseFlow.mo AixLib\Fluid\HeatPumps\Validation\Carnot_y_etaCar.mo AixLib\Fluid\HeatPumps\Validation\Carnot_y_etaPL.mo +AixLib\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_Dynamic.mo +AixLib\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_ScalingFactor.mo +AixLib\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_Static.mo +AixLib\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_VariableSpeed.mo +AixLib\Fluid\HeatPumps\Validation\ScrollWaterToWater_Dynamic.mo +AixLib\Fluid\HeatPumps\Validation\ScrollWaterToWater_ScalingFactor.mo +AixLib\Fluid\HeatPumps\Validation\ScrollWaterToWater_Static.mo +AixLib\Fluid\HeatPumps\Validation\ScrollWaterToWater_TemperatureProtection.mo +AixLib\Fluid\HeatPumps\Validation\ScrollWaterToWater_VariableSpeed.mo AixLib\Fluid\HeatPumps\Validation\package.mo AixLib\Fluid\HeatPumps\Validation\package.order AixLib\Fluid\HeatPumps\package.mo @@ -579,9 +711,11 @@ AixLib\Fluid\Interfaces\FourPortHeatMassExchanger.mo AixLib\Fluid\Interfaces\LumpedVolumeDeclarations.mo AixLib\Fluid\Interfaces\PartialFourPort.mo AixLib\Fluid\Interfaces\PartialFourPortInterface.mo +AixLib\Fluid\Interfaces\PartialFourPortParallel.mo AixLib\Fluid\Interfaces\PartialTwoPort.mo AixLib\Fluid\Interfaces\PartialTwoPortInterface.mo AixLib\Fluid\Interfaces\PartialTwoPortTransport.mo +AixLib\Fluid\Interfaces\PartialTwoPortVector.mo AixLib\Fluid\Interfaces\PrescribedOutlet.mo AixLib\Fluid\Interfaces\StaticFourPortHeatMassExchanger.mo AixLib\Fluid\Interfaces\StaticTwoPortConservationEquation.mo @@ -594,9 +728,20 @@ AixLib\Fluid\MassExchangers\ConstantEffectiveness.mo AixLib\Fluid\MassExchangers\Examples\ConstantEffectiveness.mo AixLib\Fluid\MassExchangers\Examples\package.mo AixLib\Fluid\MassExchangers\Examples\package.order +AixLib\Fluid\MassExchangers\Validation\ConstantEffectivenessZeroFlow.mo +AixLib\Fluid\MassExchangers\Validation\ConstantEffectivenessZeroFlowBothStreams.mo +AixLib\Fluid\MassExchangers\Validation\package.mo +AixLib\Fluid\MassExchangers\Validation\package.order AixLib\Fluid\MassExchangers\package.mo AixLib\Fluid\MassExchangers\package.order +AixLib\Fluid\MixingVolumes\BaseClasses\MixingVolumeHeatMoisturePort.mo +AixLib\Fluid\MixingVolumes\BaseClasses\MixingVolumeHeatPort.mo AixLib\Fluid\MixingVolumes\BaseClasses\PartialMixingVolume.mo +AixLib\Fluid\MixingVolumes\BaseClasses\Validation\MixingVolumeHeatMoisturePort.mo +AixLib\Fluid\MixingVolumes\BaseClasses\Validation\MixingVolumeHeatPortAir.mo +AixLib\Fluid\MixingVolumes\BaseClasses\Validation\MixingVolumeHeatPortWater.mo +AixLib\Fluid\MixingVolumes\BaseClasses\Validation\package.mo +AixLib\Fluid\MixingVolumes\BaseClasses\Validation\package.order AixLib\Fluid\MixingVolumes\BaseClasses\package.mo AixLib\Fluid\MixingVolumes\BaseClasses\package.order AixLib\Fluid\MixingVolumes\Examples\MixingVolumeHeatConduction.mo @@ -611,6 +756,12 @@ AixLib\Fluid\MixingVolumes\Validation\BaseClasses\MoistureMixingConservation.mo AixLib\Fluid\MixingVolumes\Validation\BaseClasses\TraceSubstanceConservation.mo AixLib\Fluid\MixingVolumes\Validation\BaseClasses\package.mo AixLib\Fluid\MixingVolumes\Validation\BaseClasses\package.order +AixLib\Fluid\MixingVolumes\Validation\CoupledVolumesAir.mo +AixLib\Fluid\MixingVolumes\Validation\CoupledVolumesGlycol47.mo +AixLib\Fluid\MixingVolumes\Validation\CoupledVolumesSpecializedAirPerfectGas.mo +AixLib\Fluid\MixingVolumes\Validation\CoupledVolumesSpecializedWaterConstantProperties_pT.mo +AixLib\Fluid\MixingVolumes\Validation\CoupledVolumesSpecializedWaterTemperatureDependentDensity.mo +AixLib\Fluid\MixingVolumes\Validation\CoupledVolumesWater.mo AixLib\Fluid\MixingVolumes\Validation\MixingVolume.mo AixLib\Fluid\MixingVolumes\Validation\MixingVolumeAdiabaticCooling.mo AixLib\Fluid\MixingVolumes\Validation\MixingVolumeHeatReverseFlow.mo @@ -670,6 +821,7 @@ AixLib\Fluid\Movers\Data\Pumps\Wilo\TopS30slash10.mo AixLib\Fluid\Movers\Data\Pumps\Wilo\TopS30slash5.mo AixLib\Fluid\Movers\Data\Pumps\Wilo\TopS40slash10.mo AixLib\Fluid\Movers\Data\Pumps\Wilo\TopS40slash7.mo +AixLib\Fluid\Movers\Data\Pumps\Wilo\VeroLine50slash150dash4slash2.mo AixLib\Fluid\Movers\Data\Pumps\Wilo\VeroLine80slash115dash2comma2slash2.mo AixLib\Fluid\Movers\Data\Pumps\Wilo\package.mo AixLib\Fluid\Movers\Data\Pumps\Wilo\package.order @@ -772,6 +924,13 @@ AixLib\Fluid\Sensors\VolumeFlowRate.mo AixLib\Fluid\Sensors\package.mo AixLib\Fluid\Sensors\package.order AixLib\Fluid\Sources\BaseClasses\Outside.mo +AixLib\Fluid\Sources\BaseClasses\PartialPropertySource.mo +AixLib\Fluid\Sources\BaseClasses\PartialSource.mo +AixLib\Fluid\Sources\BaseClasses\PartialSource_T.mo +AixLib\Fluid\Sources\BaseClasses\PartialSource_Xi_C.mo +AixLib\Fluid\Sources\BaseClasses\PartialSource_h.mo +AixLib\Fluid\Sources\BaseClasses\PartialSource_m_flow.mo +AixLib\Fluid\Sources\BaseClasses\PartialSource_p.mo AixLib\Fluid\Sources\BaseClasses\package.mo AixLib\Fluid\Sources\BaseClasses\package.order AixLib\Fluid\Sources\Boundary_pT.mo @@ -779,6 +938,8 @@ AixLib\Fluid\Sources\Boundary_ph.mo AixLib\Fluid\Sources\Examples\MassFlowSource_WeatherData.mo AixLib\Fluid\Sources\Examples\Outside.mo AixLib\Fluid\Sources\Examples\Outside_CpLowRise.mo +AixLib\Fluid\Sources\Examples\PropertySource_T.mo +AixLib\Fluid\Sources\Examples\PropertySource_h.mo AixLib\Fluid\Sources\Examples\TraceSubstancesFlowSource.mo AixLib\Fluid\Sources\Examples\package.mo AixLib\Fluid\Sources\Examples\package.order @@ -788,18 +949,54 @@ AixLib\Fluid\Sources\MassFlowSource_WeatherData.mo AixLib\Fluid\Sources\MassFlowSource_h.mo AixLib\Fluid\Sources\Outside.mo AixLib\Fluid\Sources\Outside_CpLowRise.mo +AixLib\Fluid\Sources\PropertySource_T.mo +AixLib\Fluid\Sources\PropertySource_h.mo AixLib\Fluid\Sources\TraceSubstancesFlowSource.mo AixLib\Fluid\Sources\package.mo AixLib\Fluid\Sources\package.order +AixLib\Fluid\Storage\BaseClasses\Buoyancy.mo +AixLib\Fluid\Storage\BaseClasses\Examples\IndirectTankHeatExchanger.mo +AixLib\Fluid\Storage\BaseClasses\Examples\package.mo +AixLib\Fluid\Storage\BaseClasses\Examples\package.order +AixLib\Fluid\Storage\BaseClasses\IndirectTankHeatExchanger.mo +AixLib\Fluid\Storage\BaseClasses\PartialStratified.mo +AixLib\Fluid\Storage\BaseClasses\ThirdOrderStratifier.mo +AixLib\Fluid\Storage\BaseClasses\package.mo +AixLib\Fluid\Storage\BaseClasses\package.order AixLib\Fluid\Storage\Examples\ExpansionVessel.mo +AixLib\Fluid\Storage\Examples\Stratified.mo +AixLib\Fluid\Storage\Examples\StratifiedEnhancedInternalHex.mo +AixLib\Fluid\Storage\Examples\StratifiedUnloadAtMinimumTemperature.mo AixLib\Fluid\Storage\Examples\package.mo AixLib\Fluid\Storage\Examples\package.order AixLib\Fluid\Storage\ExpansionVessel.mo +AixLib\Fluid\Storage\Stratified.mo +AixLib\Fluid\Storage\StratifiedEnhanced.mo +AixLib\Fluid\Storage\StratifiedEnhancedInternalHex.mo +AixLib\Fluid\Storage\UsersGuide.mo +AixLib\Fluid\Storage\Validation\HeatExchangerDynamics.mo +AixLib\Fluid\Storage\Validation\HeatExchangerLocation.mo +AixLib\Fluid\Storage\Validation\StratifiedLoadingUnloading.mo +AixLib\Fluid\Storage\Validation\package.mo +AixLib\Fluid\Storage\Validation\package.order AixLib\Fluid\Storage\package.mo AixLib\Fluid\Storage\package.order AixLib\Fluid\Types.mo AixLib\Fluid\package.order AixLib\Media\Air.mo +AixLib\Media\Antifreeze\BaseClasses\PropertyCoefficients.mo +AixLib\Media\Antifreeze\BaseClasses\package.mo +AixLib\Media\Antifreeze\BaseClasses\package.order +AixLib\Media\Antifreeze\PropyleneGlycolWater.mo +AixLib\Media\Antifreeze\Validation\BaseClasses\FluidProperties.mo +AixLib\Media\Antifreeze\Validation\BaseClasses\PropyleneGlycolWater.mo +AixLib\Media\Antifreeze\Validation\BaseClasses\package.mo +AixLib\Media\Antifreeze\Validation\BaseClasses\package.order +AixLib\Media\Antifreeze\Validation\PropyleneGlycolWater.mo +AixLib\Media\Antifreeze\Validation\package.mo +AixLib\Media\Antifreeze\Validation\package.order +AixLib\Media\Antifreeze\package.mo +AixLib\Media\Antifreeze\package.order AixLib\Media\Examples\AirDerivativeCheck.mo AixLib\Media\Examples\AirProperties.mo AixLib\Media\Examples\AirTemperatureEnthalpyInversion.mo @@ -808,12 +1005,35 @@ AixLib\Media\Examples\BaseClasses\FluidProperties.mo AixLib\Media\Examples\BaseClasses\TestTemperatureEnthalpyInversion.mo AixLib\Media\Examples\BaseClasses\package.mo AixLib\Media\Examples\BaseClasses\package.order +AixLib\Media\Examples\PropyleneGlycolWaterDerivativeCheck.mo +AixLib\Media\Examples\PropyleneGlycolWaterProperties.mo +AixLib\Media\Examples\PropyleneGlycolWaterTemperatureEnthalpyInversion.mo +AixLib\Media\Examples\PropyleneGlycolWaterTestImplementation.mo AixLib\Media\Examples\WaterDerivativeCheck.mo AixLib\Media\Examples\WaterProperties.mo AixLib\Media\Examples\WaterTemperatureEnthalpyInversion.mo AixLib\Media\Examples\WaterTestImplementation.mo AixLib\Media\Examples\package.mo AixLib\Media\Examples\package.order +AixLib\Media\Refrigerants\R410A\dPressureVap_dSpecificVolume_Tv.mo +AixLib\Media\Refrigerants\R410A\dPressureVap_dTemperature_Tv.mo +AixLib\Media\Refrigerants\R410A\dSpecificVolumeVap_pT.mo +AixLib\Media\Refrigerants\R410A\enthalpySatLiq_T.mo +AixLib\Media\Refrigerants\R410A\enthalpySatVap_T.mo +AixLib\Media\Refrigerants\R410A\isentropicExponentVap_Tv.mo +AixLib\Media\Refrigerants\R410A\package.mo +AixLib\Media\Refrigerants\R410A\package.order +AixLib\Media\Refrigerants\R410A\pressureSatLiq_T.mo +AixLib\Media\Refrigerants\R410A\pressureSatVap_T.mo +AixLib\Media\Refrigerants\R410A\pressureVap_Tv.mo +AixLib\Media\Refrigerants\R410A\specificIsobaricHeatCapacityVap_Tv.mo +AixLib\Media\Refrigerants\R410A\specificIsochoricHeatCapacityVap_Tv.mo +AixLib\Media\Refrigerants\R410A\specificVolumeVap_pT.mo +AixLib\Media\Refrigerants\Validation\R410A_dSpecificVolumeVap_pT.mo +AixLib\Media\Refrigerants\Validation\package.mo +AixLib\Media\Refrigerants\Validation\package.order +AixLib\Media\Refrigerants\package.mo +AixLib\Media\Refrigerants\package.order AixLib\Media\Specialized\Air\Examples\PerfectGasDerivativeCheck.mo AixLib\Media\Specialized\Air\Examples\PerfectGasTemperatureEnthalpyInversion.mo AixLib\Media\Specialized\Air\Examples\PerfectGasTestImplementation.mo @@ -839,6 +1059,11 @@ AixLib\Media\Specialized\package.order AixLib\Media\Water.mo AixLib\Media\package.mo AixLib\Media\package.order +AixLib\Resources\C-Sources\fileWriterFree.c +AixLib\Resources\C-Sources\fileWriterInit.c +AixLib\Resources\C-Sources\fileWriterStructure.h +AixLib\Resources\Data\Utilities\IO\Files\Examples\CSVReader\Data.csv +AixLib\Resources\Documentation\userGuide\source\_static\lbl-logo.png AixLib\Resources\Images\Airflow\Multizone\BaseClasses\windPressureLowRise.odp AixLib\Resources\Images\Airflow\Multizone\BaseClasses\windPressureLowRise.png AixLib\Resources\Images\Airflow\Multizone\Examples\3roomValidation.png @@ -886,8 +1111,11 @@ AixLib\Resources\Images\Fluid\FMI\modelica_icon.png AixLib\Resources\Images\Fluid\FixedResistances\Junction.png AixLib\Resources\Images\Fluid\FixedResistances\Junction.svg AixLib\Resources\Images\Fluid\FixedResistances\PressureDrop.png +AixLib\Resources\Images\Fluid\FixedResistances\Validation\PlugFlowPipes\AITTestBench.png +AixLib\Resources\Images\Fluid\FixedResistances\Validation\PlugFlowPipes\ULgTestBench.png AixLib\Resources\Images\Fluid\HeatExchangers\ActiveBeams\schematicAB.png AixLib\Resources\Images\Fluid\HeatExchangers\ActiveBeams\schematicAB.svg +AixLib\Resources\Images\Fluid\HeatPumps\WaterToWater_Cycle.png AixLib\Resources\Images\Fluid\Movers\Data\stratoscurve.png AixLib\Resources\Images\Fluid\Movers\Examples\PumpValidationHead.png AixLib\Resources\Images\Fluid\Movers\Examples\PumpValidationPower.png @@ -902,8 +1130,21 @@ AixLib\Resources\Images\Fluid\Sensors\onePortHex.png AixLib\Resources\Images\Fluid\Sensors\onePortHex.tiff AixLib\Resources\Images\Fluid\Sensors\twoPortHex.png AixLib\Resources\Images\Fluid\Sensors\twoPortHex.tiff +AixLib\Resources\Images\Fluid\Storage\Stratified.pdf +AixLib\Resources\Images\Fluid\Storage\Stratified.png +AixLib\Resources\Images\Fluid\Storage\Stratified.svg +AixLib\Resources\Images\Fluid\Storage\StratifiedHex.pdf +AixLib\Resources\Images\Fluid\Storage\StratifiedHex.png +AixLib\Resources\Images\Fluid\Storage\StratifiedHex.svg AixLib\Resources\Images\IBPSA-logo-text.png AixLib\Resources\Images\IBPSA-logo.png +AixLib\Resources\Images\Media\Antifreeze\PropyleneGlycolWaterError10degC.pdf +AixLib\Resources\Images\Media\Antifreeze\PropyleneGlycolWaterError10degC.png +AixLib\Resources\Images\Media\Antifreeze\PropyleneGlycolWaterError20degC.pdf +AixLib\Resources\Images\Media\Antifreeze\PropyleneGlycolWaterError20degC.png +AixLib\Resources\Images\Media\Antifreeze\PropyleneGlycolWaterProperties.pdf +AixLib\Resources\Images\Media\Antifreeze\PropyleneGlycolWaterProperties.png +AixLib\Resources\Images\Media\Antifreeze\propyleneGlycol.py AixLib\Resources\Images\Media\Water\plotCp.pdf AixLib\Resources\Images\Media\Water\plotCp.png AixLib\Resources\Images\Media\Water\plotCp.py @@ -1018,21 +1259,40 @@ AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_ActiveBeams AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_ActiveBeams_Examples_HeatingOnly.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_ActiveBeams_Validation_NumberOfBeams.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_ActiveBeams_Validation_NumberOfBeamsDynamics.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_BaseClasses_Examples_HACoilInside.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_BaseClasses_Examples_HANaturalCylinder.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Examples_AirHeater_T.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Examples_AirHeater_u.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Examples_WaterCooler_T.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Examples_WaterHeater_T.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Examples_WaterHeater_u.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Validation_EvaporatorCondenser.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Validation_PrescribedOutlet.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatExchangers_Validation_PrescribedOutlet_dynamic.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Calibration_ScrollWaterToWater.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Compressors_BaseClasses_Validation_TemperatureProtection.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Compressors_Validation_ReciprocatingCompressor.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Compressors_Validation_ReciprocatingCompressor_ZeroInput.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Compressors_Validation_ScrollCompressor.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Compressors_Validation_ScrollCompressor_ZeroInput.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Examples_Carnot_TCon.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Examples_Carnot_y.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Examples_ScrollWaterToWater_OneRoomRadiator.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_Carnot_TCon_LimitedCapacity.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_Carnot_TCon_LowTemperature.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_Carnot_TCon_etaPL.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_Carnot_TCon_reverseFlow.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_Carnot_y_etaCar.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_Carnot_y_etaPL.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ReciprocatingWaterToWater_Dynamic.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ReciprocatingWaterToWater_ScalingFactor.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ReciprocatingWaterToWater_Static.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ReciprocatingWaterToWater_VariableSpeed.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ScrollWaterToWater_Dynamic.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ScrollWaterToWater_ScalingFactor.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ScrollWaterToWater_Static.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ScrollWaterToWater_TemperatureProtection.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_HeatPumps_Validation_ScrollWaterToWater_VariableSpeed.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Humidifiers_Examples_Humidifier_u.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Humidifiers_Validation_SprayAirWasher_X.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Humidifiers_Validation_SprayAirWasher_X_dynamic.txt @@ -1042,6 +1302,14 @@ AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Interfaces_Examples_Prescr AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Interfaces_Examples_PrescribedOutlet_TSetOnly.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Interfaces_Examples_PrescribedOutlet_Water.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Interfaces_Examples_PrescribedOutlet_X_wSetOnly.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MassExchangers_Validation_ConstantEffectivenessZeroFlow.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MassExchangers_Validation_ConstantEffectivenessZeroFlowBothStreams.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_CoupledVolumesAir.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_CoupledVolumesGlycol47.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_CoupledVolumesSpecializedAirPerfectGas.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_CoupledVolumesSpecializedWaterConstantProperties_pT.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_CoupledVolumesSpecializedWaterTemperatureDependentDensity.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_CoupledVolumesWater.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_MixingVolume.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_MixingVolumeHeatReverseFlow.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_MixingVolumes_Validation_MixingVolumeHeatReverseFlowPrescribedHeatFlowRate.txt @@ -1072,7 +1340,24 @@ AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Sensors_Examples_PPM.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Sources_Examples_MassFlowSource_WeatherData.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Sources_Examples_Outside.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Sources_Examples_Outside_CpLowRise.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Sources_Examples_PropertySource_T.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Sources_Examples_PropertySource_h.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_BaseClasses_Examples_IndirectTankHeatExchanger.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_Examples_Stratified.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_Examples_StratifiedEnhancedInternalHex.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_Examples_StratifiedUnloadAtMinimumTemperature.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_Validation_HeatExchangerDynamics.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_Validation_HeatExchangerLocation.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Fluid_Storage_Validation_StratifiedLoadingUnloading.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Antifreeze_Validation_PropyleneGlycolWater.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Examples_PropyleneGlycolWaterDerivativeCheck.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Examples_PropyleneGlycolWaterProperties.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Examples_PropyleneGlycolWaterTemperatureEnthalpyInversion.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Examples_PropyleneGlycolWaterTestImplementation.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Refrigerants_Validation_R410A_dSpecificVolumeVap_pT.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Media_Specialized_Water_Examples_WaterProperties_pT.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Utilities_IO_Files_Examples_CSVReader.txt +AixLib\Resources\ReferenceResults\Dymola\AixLib_Utilities_IO_Files_Examples_CSVWriter.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Utilities_Math_Examples_IntegratorWithReset.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Utilities_Math_Functions_Examples_Polynomial.txt AixLib\Resources\ReferenceResults\Dymola\AixLib_Utilities_Math_Functions_Examples_RegStep.txt @@ -1146,6 +1431,8 @@ AixLib\Resources\Scripts\Dymola\Controls\Discrete\Examples\BooleanDelay.mos AixLib\Resources\Scripts\Dymola\Controls\SetPoints\Examples\HotWaterTemperatureReset.mos AixLib\Resources\Scripts\Dymola\Controls\SetPoints\Examples\OccupancySchedule.mos AixLib\Resources\Scripts\Dymola\Controls\SetPoints\Examples\Table.mos +AixLib\Resources\Scripts\Dymola\Controls\SetPoints\Validation\OccupancyScheduleNegativeStartTime.mos +AixLib\Resources\Scripts\Dymola\Controls\SetPoints\Validation\OccupancySchedulePositiveStartTime.mos AixLib\Resources\Scripts\Dymola\Fluid\Actuators\BaseClasses\Examples\EqualPercentageDerivativeCheck.mos AixLib\Resources\Scripts\Dymola\Fluid\Actuators\Dampers\Examples\Damper.mos AixLib\Resources\Scripts\Dymola\Fluid\Actuators\Dampers\Examples\MixingBox.mos @@ -1245,12 +1532,21 @@ AixLib\Resources\Scripts\Dymola\Fluid\FMI\Validation\FlowSplitter_u.mos AixLib\Resources\Scripts\Dymola\Fluid\FMI\Validation\HeaterFan.mos AixLib\Resources\Scripts\Dymola\Fluid\FMI\Validation\HeaterFanPressureDriven.mos AixLib\Resources\Scripts\Dymola\Fluid\FMI\Validation\HeaterFan_noReverseFlow.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\BaseClasses\Validation\PlugFlowCore.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Examples\FlowJunction.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Examples\HydraulicDiameter.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Examples\PlugFlowPipe.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Examples\PressureDrop.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\FlowJunctionSteadyState.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\FlowJunctionSteadyStateNoPressureDrop.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\LosslessPipe.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\Data\TestData.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\FlowReversal.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\MSLAIT.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\MSLAIT2Nodes.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\PlugFlowAIT.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\PlugFlowULg.mos +AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PlugFlowPipes\TransportWaterAir.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PressureDropsExplicit.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PressureDropsExplicitLinearized.mos AixLib\Resources\Scripts\Dymola\Fluid\FixedResistances\Validation\PressureDropsParallel.mos @@ -1263,6 +1559,8 @@ AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\ActiveBeams\Examples\Coolin AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\ActiveBeams\Examples\HeatingOnly.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\ActiveBeams\Validation\NumberOfBeams.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\ActiveBeams\Validation\NumberOfBeamsDynamics.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\BaseClasses\Examples\HACoilInside.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\BaseClasses\Examples\HANaturalCylinder.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Examples\AirHeater_T.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Examples\AirHeater_u.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Examples\WaterCooler_T.mos @@ -1270,17 +1568,34 @@ AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Examples\WaterHeater_T.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Examples\WaterHeater_u.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Radiators\Examples\RadiatorEN442_2.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Validation\ConstantEffectiveness.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Validation\EvaporatorCondenser.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Validation\HeaterCooler_u.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Validation\PrescribedOutlet.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatExchangers\Validation\PrescribedOutlet_dynamic.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Calibration\ScrollWaterToWater.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Compressors\BaseClasses\Validation\TemperatureProtection.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Compressors\Validation\ReciprocatingCompressor.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Compressors\Validation\ReciprocatingCompressor_ZeroInput.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Compressors\Validation\ScrollCompressor.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Compressors\Validation\ScrollCompressor_ZeroInput.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Examples\Carnot_TCon.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Examples\Carnot_y.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Examples\ScrollWaterToWater_OneRoomRadiator.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\Carnot_TCon_LimitedCapacity.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\Carnot_TCon_LowTemperature.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\Carnot_TCon_etaPL.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\Carnot_TCon_reverseFlow.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\Carnot_y_etaCar.mos AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\Carnot_y_etaPL.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_Dynamic.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_ScalingFactor.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_Static.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ReciprocatingWaterToWater_VariableSpeed.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ScrollWaterToWater_Dynamic.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ScrollWaterToWater_ScalingFactor.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ScrollWaterToWater_Static.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ScrollWaterToWater_TemperatureProtection.mos +AixLib\Resources\Scripts\Dymola\Fluid\HeatPumps\Validation\ScrollWaterToWater_VariableSpeed.mos AixLib\Resources\Scripts\Dymola\Fluid\Humidifiers\Examples\Humidifier_u.mos AixLib\Resources\Scripts\Dymola\Fluid\Humidifiers\Validation\SprayAirWasher_X.mos AixLib\Resources\Scripts\Dymola\Fluid\Humidifiers\Validation\SprayAirWasher_X_dynamic.mos @@ -1298,9 +1613,20 @@ AixLib\Resources\Scripts\Dymola\Fluid\Interfaces\Examples\ReverseFlowHumidifier. AixLib\Resources\Scripts\Dymola\Fluid\Interfaces\Examples\ReverseFlowMassExchanger.mos AixLib\Resources\Scripts\Dymola\Fluid\Interfaces\Examples\StaticTwoPortConservationEquation.mos AixLib\Resources\Scripts\Dymola\Fluid\MassExchangers\Examples\ConstantEffectiveness.mos +AixLib\Resources\Scripts\Dymola\Fluid\MassExchangers\Validation\ConstantEffectivenessZeroFlow.mos +AixLib\Resources\Scripts\Dymola\Fluid\MassExchangers\Validation\ConstantEffectivenessZeroFlowBothStreams.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\BaseClasses\Validation\MixingVolumeHeatMoisturePort.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\BaseClasses\Validation\MixingVolumeHeatPortAir.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\BaseClasses\Validation\MixingVolumeHeatPortWater.mos AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Examples\MixingVolumeHeatConduction.mos AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Examples\MixingVolumeMoistAir.mos AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Examples\MixingVolumePrescribedHeatFlowRate.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\CoupledVolumesAir.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\CoupledVolumesGlycol47.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\CoupledVolumesSpecializedAirPerfectGas.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\CoupledVolumesSpecializedWaterConstantProperties_pT.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\CoupledVolumesSpecializedWaterTemperatureDependentDensity.mos +AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\CoupledVolumesWater.mos AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\MixingVolume.mos AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\MixingVolumeAdiabaticCooling.mos AixLib\Resources\Scripts\Dymola\Fluid\MixingVolumes\Validation\MixingVolumeHeatReverseFlow.mos @@ -1361,16 +1687,31 @@ AixLib\Resources\Scripts\Dymola\Fluid\Sensors\Examples\VolumeFlowRate.mos AixLib\Resources\Scripts\Dymola\Fluid\Sources\Examples\MassFlowSource_WeatherData.mos AixLib\Resources\Scripts\Dymola\Fluid\Sources\Examples\Outside.mos AixLib\Resources\Scripts\Dymola\Fluid\Sources\Examples\Outside_CpLowRise.mos +AixLib\Resources\Scripts\Dymola\Fluid\Sources\Examples\PropertySource_T.mos +AixLib\Resources\Scripts\Dymola\Fluid\Sources\Examples\PropertySource_h.mos AixLib\Resources\Scripts\Dymola\Fluid\Sources\Examples\TraceSubstancesFlowSource.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\BaseClasses\Examples\IndirectTankHeatExchanger.mos AixLib\Resources\Scripts\Dymola\Fluid\Storage\Examples\ExpansionVessel.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\Examples\Stratified.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\Examples\StratifiedEnhancedInternalHex.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\Examples\StratifiedUnloadAtMinimumTemperature.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\Validation\HeatExchangerDynamics.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\Validation\HeatExchangerLocation.mos +AixLib\Resources\Scripts\Dymola\Fluid\Storage\Validation\StratifiedLoadingUnloading.mos +AixLib\Resources\Scripts\Dymola\Media\Antifreeze\Validation\PropyleneGlycolWater.mos AixLib\Resources\Scripts\Dymola\Media\Examples\AirDerivativeCheck.mos AixLib\Resources\Scripts\Dymola\Media\Examples\AirProperties.mos AixLib\Resources\Scripts\Dymola\Media\Examples\AirTemperatureEnthalpyInversion.mos AixLib\Resources\Scripts\Dymola\Media\Examples\AirTestImplementation.mos +AixLib\Resources\Scripts\Dymola\Media\Examples\PropyleneGlycolWaterDerivativeCheck.mos +AixLib\Resources\Scripts\Dymola\Media\Examples\PropyleneGlycolWaterProperties.mos +AixLib\Resources\Scripts\Dymola\Media\Examples\PropyleneGlycolWaterTemperatureEnthalpyInversion.mos +AixLib\Resources\Scripts\Dymola\Media\Examples\PropyleneGlycolWaterTestImplementation.mos AixLib\Resources\Scripts\Dymola\Media\Examples\WaterDerivativeCheck.mos AixLib\Resources\Scripts\Dymola\Media\Examples\WaterProperties.mos AixLib\Resources\Scripts\Dymola\Media\Examples\WaterTemperatureEnthalpyInversion.mos AixLib\Resources\Scripts\Dymola\Media\Examples\WaterTestImplementation.mos +AixLib\Resources\Scripts\Dymola\Media\Refrigerants\Validation\R410A_dSpecificVolumeVap_pT.mos AixLib\Resources\Scripts\Dymola\Media\Specialized\Air\Examples\PerfectGasDerivativeCheck.mos AixLib\Resources\Scripts\Dymola\Media\Specialized\Air\Examples\PerfectGasTemperatureEnthalpyInversion.mos AixLib\Resources\Scripts\Dymola\Media\Specialized\Air\Examples\PerfectGasTestImplementation.mos @@ -1396,6 +1737,8 @@ AixLib\Resources\Scripts\Dymola\ThermalZones\ReducedOrder\Validation\VDI6007\Tes AixLib\Resources\Scripts\Dymola\ThermalZones\ReducedOrder\Validation\VDI6007\TestCase8.mos AixLib\Resources\Scripts\Dymola\ThermalZones\ReducedOrder\Validation\VDI6007\TestCase9.mos AixLib\Resources\Scripts\Dymola\Utilities\Diagnostics\Validation\CheckEquality.mos +AixLib\Resources\Scripts\Dymola\Utilities\IO\Files\Examples\CSVReader.mos +AixLib\Resources\Scripts\Dymola\Utilities\IO\Files\Examples\CSVWriter.mos AixLib\Resources\Scripts\Dymola\Utilities\Math\Examples\Average.mos AixLib\Resources\Scripts\Dymola\Utilities\Math\Examples\Bicubic.mos AixLib\Resources\Scripts\Dymola\Utilities\Math\Examples\Biquadratic.mos @@ -1459,7 +1802,8 @@ AixLib\Resources\Scripts\Dymola\Utilities\Time\Validation\CalendarTimeMonths.mos AixLib\Resources\Scripts\Dymola\Utilities\Time\Validation\CalendarTimeMonthsMinus.mos AixLib\Resources\Scripts\Dymola\Utilities\Time\Validation\CalendarTimeMonthsPlus.mos AixLib\Resources\Scripts\JModelica\buildingspy_to_csv.py -AixLib\Resources\Scripts\travis\usr\local\bin\dymola +AixLib\Resources\Scripts\travis\bin\dymola +AixLib\Resources\Scripts\travis\bin\jm_ipython.sh AixLib\Resources\bin\ConvertWeatherData.jar AixLib\Resources\src\convertEPW\Makefile AixLib\Resources\src\convertEPW\doc\ConvertWeatherData.html @@ -1480,6 +1824,174 @@ AixLib\Resources\src\convertEPW\doc\stylesheet.css AixLib\Resources\src\convertEPW\src\ConvertWeatherData.java AixLib\Resources\src\convertEPW\src\Makefile AixLib\Resources\src\convertEPW\src\Manifest.txt +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\.gitignore +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\SomeManufacturer_ABC060_70kW_4_0COP_R410A.mo +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\__init__.py +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\dummy_performance_data.py +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\example_calibration.py +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\package.order +AixLib\Resources\src\fluid\heatpumps\calibration\Examples\somePerformanceData.txt +AixLib\Resources\src\fluid\heatpumps\calibration\Makefile +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\__init__.py +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\calibrate.py +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\compressors.py +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\fluids.py +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\heatexchangers.py +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\heatpumps.py +AixLib\Resources\src\fluid\heatpumps\calibration\PythonModel\refrigerants.py +AixLib\Resources\src\fluid\heatpumps\calibration\__init__.py +AixLib\Resources\src\fluid\heatpumps\calibration\doc\Makefile +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_images\calibration_final_parameters.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_images\calibration_guess_parameters.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\calibrate.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\compressors.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\dummy_performance_data.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\example_calibration.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\fluids.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\heatexchangers.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\heatpumps.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\index.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_sources\refrigerants.rst.txt +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\ajax-loader.gif +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\basic.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\css\bootstrap-responsive.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\css\bootstrap-responsive.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\css\bootstrap.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\css\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\img\glyphicons-halflings-white.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\img\glyphicons-halflings.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\js\bootstrap.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-2.3.2\js\bootstrap.min.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap-theme.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap-theme.css.map +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap-theme.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap-theme.min.css.map +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap.css.map +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\css\bootstrap.min.css.map +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\fonts\glyphicons-halflings-regular.eot +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\fonts\glyphicons-halflings-regular.svg +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\fonts\glyphicons-halflings-regular.ttf +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\fonts\glyphicons-halflings-regular.woff +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\fonts\glyphicons-halflings-regular.woff2 +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\js\bootstrap.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\js\bootstrap.min.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-3.3.6\js\npm.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-sphinx.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-sphinx.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap-theme.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootstrap_custom.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\amelia\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\cerulean\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\cosmo\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\cyborg\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\flatly\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\img\glyphicons-halflings-white.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\img\glyphicons-halflings.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\journal\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\readable\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\simplex\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\slate\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\spacelab\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\spruce\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\superhero\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-2.3.2\united\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\cerulean\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\cosmo\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\custom\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\cyborg\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\darkly\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\flatly\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\fonts\glyphicons-halflings-regular.eot +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\fonts\glyphicons-halflings-regular.svg +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\fonts\glyphicons-halflings-regular.ttf +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\fonts\glyphicons-halflings-regular.woff +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\fonts\glyphicons-halflings-regular.woff2 +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\journal\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\lumen\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\paper\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\readable\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\sandstone\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\simplex\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\slate\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\spacelab\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\superhero\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\united\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\bootswatch-3.3.6\yeti\bootstrap.min.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\comment-bright.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\comment-close.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\comment.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\custom-sphinx.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\custom.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\doctools.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\down-pressed.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\down.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\file.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\jquery-3.1.0.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\jquery.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\js\jquery-1.11.0.min.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\js\jquery-fix.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\lbl-icon.ico +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\lbl-icon.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\lbl-icon.psd +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\lbl-logo.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\lbl-logo.psd +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\minus.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\plus.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\pygments.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\searchtools.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\sphinxdoc.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\underscore-1.3.1.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\underscore.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\up-pressed.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\up.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\_static\websupport.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\calibrate.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\compressors.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\dummy_performance_data.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\example_calibration.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\fluids.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\genindex.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\heatexchangers.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\heatpumps.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\index.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\objects.inv +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\py-modindex.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\refrigerants.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\search.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\build\html\searchindex.js +AixLib\Resources\src\fluid\heatpumps\calibration\doc\make.bat +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_figures\calibration_final_parameters.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_figures\calibration_guess_parameters.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\basic.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\bootstrap-theme.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\bootstrap.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\bootstrap_custom.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\custom-sphinx.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\custom.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\lbl-icon.ico +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\lbl-icon.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\lbl-icon.psd +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\lbl-logo.png +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\lbl-logo.psd +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\pygments.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_static\sphinxdoc.css +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_templates\layout.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_templates\navbar.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\_templates\sourcelink.html +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\calibrate.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\compressors.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\conf.py +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\dummy_performance_data.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\example_calibration.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\fluids.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\heatexchangers.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\heatpumps.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\index.rst +AixLib\Resources\src\fluid\heatpumps\calibration\doc\source\refrigerants.rst +AixLib\Resources\src\fluid\heatpumps\calibration\manufacturerData.txt AixLib\Resources\weatherdata\USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw AixLib\Resources\weatherdata\USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos AixLib\Resources\weatherdata\USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw @@ -1556,6 +2068,23 @@ AixLib\Utilities\Diagnostics\Validation\package.mo AixLib\Utilities\Diagnostics\Validation\package.order AixLib\Utilities\Diagnostics\package.mo AixLib\Utilities\Diagnostics\package.order +AixLib\Utilities\IO\Files\BaseClasses\FileWriter.mo +AixLib\Utilities\IO\Files\BaseClasses\FileWriterObject.mo +AixLib\Utilities\IO\Files\BaseClasses\package.mo +AixLib\Utilities\IO\Files\BaseClasses\package.order +AixLib\Utilities\IO\Files\CSVWriter.mo +AixLib\Utilities\IO\Files\CombiTimeTableWriter.mo +AixLib\Utilities\IO\Files\Examples\BaseClasses\PartialCSV.mo +AixLib\Utilities\IO\Files\Examples\BaseClasses\package.mo +AixLib\Utilities\IO\Files\Examples\BaseClasses\package.order +AixLib\Utilities\IO\Files\Examples\CSVReader.mo +AixLib\Utilities\IO\Files\Examples\CSVWriter.mo +AixLib\Utilities\IO\Files\Examples\package.mo +AixLib\Utilities\IO\Files\Examples\package.order +AixLib\Utilities\IO\Files\package.mo +AixLib\Utilities\IO\Files\package.order +AixLib\Utilities\IO\package.mo +AixLib\Utilities\IO\package.order AixLib\Utilities\Math\Average.mo AixLib\Utilities\Math\Bicubic.mo AixLib\Utilities\Math\Biquadratic.mo diff --git a/AixLib/Airflow/AirHandlingUnit/Examples/TestAHU.mo b/AixLib/Airflow/AirHandlingUnit/Examples/AHU.mo similarity index 52% rename from AixLib/Airflow/AirHandlingUnit/Examples/TestAHU.mo rename to AixLib/Airflow/AirHandlingUnit/Examples/AHU.mo index a66ef5ad35..2033549294 100644 --- a/AixLib/Airflow/AirHandlingUnit/Examples/TestAHU.mo +++ b/AixLib/Airflow/AirHandlingUnit/Examples/AHU.mo @@ -1,5 +1,5 @@ -within AixLib.Airflow.AirHandlingUnit.Examples; -model TestAHU +within AixLib.Airflow.AirHandlingUnit.Examples; +model AHU "Example to test all states of the AHU model - Play with the possible modes (boolean parameters for: heating, cooling, de-/humidification" extends Modelica.Icons.Example; @@ -13,11 +13,11 @@ model TestAHU annotation (Placement(transformation(extent={{-100,24},{-80,44}}))); Modelica.Blocks.Sources.Constant desiredT_sup(k=293) annotation (Placement(transformation(extent={{62,-26},{42,-6}}))); - AHU ahu( clockPeriodGeneric=30, + .AixLib.Airflow.AirHandlingUnit.AHU ahu( + clockPeriodGeneric=30, heating=true, cooling=true, - HRS=true) - annotation (Placement(transformation(extent={{-68,-18},{26,18}}))); + HRS=true) annotation (Placement(transformation(extent={{-68,-18},{26,18}}))); Modelica.Blocks.Sources.Constant phi_roomMin(k=0.47) annotation (Placement(transformation(extent={{68,-56},{48,-36}}))); Modelica.Blocks.Sources.Constant phi_roomMax(k=0.55) @@ -60,103 +60,75 @@ model TestAHU equation connect(desiredT_sup.y, ahu.T_supplyAir) annotation (Line( - points={{41,-16},{34,-16},{34,-4.5},{18.48,-4.5}}, + points={{41,-16},{34,-16},{34,-6.3},{18.48,-6.3}}, color={0,0,127}, smooth=Smooth.None)); connect(tempOutside.y, ahu.T_outdoorAir) annotation (Line( - points={{-79,-6},{-74,-6},{-74,-6.3},{-62.36,-6.3}}, + points={{-79,-6},{-74,-6},{-74,-7.2},{-62.36,-7.2}}, color={0,0,127}, smooth=Smooth.None)); connect(Vflow_in.y, ahu.Vflow_in) annotation (Line( - points={{-79,34},{-76,34},{-76,-3.6},{-66.12,-3.6}}, + points={{-79,34},{-76,34},{-76,-4.5},{-66.12,-4.5}}, color={0,0,127}, smooth=Smooth.None)); connect(phi_roomMin.y, ahu.phi_supplyAir[1]) annotation (Line( - points={{47,-46},{32,-46},{32,-8.1},{18.48,-8.1}}, + points={{47,-46},{32,-46},{32,-9.9},{18.48,-9.9}}, color={0,0,127}, smooth=Smooth.None)); connect(waterLoadOutside.y, ahu.X_outdoorAir) annotation (Line( - points={{-79,-40},{-72,-40},{-72,-10.8},{-62.36,-10.8}}, + points={{-79,-40},{-72,-40},{-72,-11.7},{-62.36,-11.7}}, color={0,0,127}, smooth=Smooth.None)); connect(phi_RoomExtractAir.y, ahu.phi_extractAir) annotation (Line( - points={{77,-14},{66,-14},{66,0},{30,0},{30,8.1},{18.48,8.1}}, + points={{77,-14},{66,-14},{66,0},{30,0},{30,5.4},{18.48,5.4}}, color={0,0,127}, smooth=Smooth.None)); connect(phi_roomMax.y, ahu.phi_supplyAir[2]) annotation (Line(points={{77,-46}, - {72,-46},{72,-66},{28,-66},{28,-9.9},{18.48,-9.9}}, color={0,0, + {72,-46},{72,-66},{28,-66},{28,-11.7},{18.48,-11.7}}, color={0,0, 127})); connect(ahu.T_extractAir, addToExtractTemp.y) annotation (Line(points={{18.48, - 12.6},{27.92,12.6},{27.92,18},{33.4,18}}, color={0,0,127})); + 9.9},{27.92,9.9},{27.92,18},{33.4,18}}, color={0,0,127})); connect(tempAddInRoom.y, addToExtractTemp.u1) annotation (Line(points={{77,30}, {66,30},{56,30},{56,21.6},{47.2,21.6}}, color={0,0,127})); connect(desiredT_sup.y, addToExtractTemp.u2) annotation (Line(points={{41,-16}, {38,-16},{38,6},{56,6},{56,14.4},{47.2,14.4}}, color={0,0,127})); - connect(ahu.QflowC, QFlowCool) annotation (Line(points={{-22.41,-14.85},{ - -22.41,-46.425},{-26,-46.425},{-26,-86}}, color={0,0,127})); - connect(ahu.QflowH, QFlowHeat) annotation (Line(points={{-1.73,-14.85},{-1.73, + connect(ahu.QflowC, QFlowCool) annotation (Line(points={{-26.17,-15.75},{-26.17, + -46.425},{-26,-46.425},{-26,-86}}, color={0,0,127})); + connect(ahu.QflowH, QFlowHeat) annotation (Line(points={{-7.37,-15.75},{-7.37, -47.425},{0,-47.425},{0,-86}}, color={0,0,127})); - connect(ahu.Pel, PEl) annotation (Line(points={{8.61,-14.85},{8.61,-47.425},{ - 26,-47.425},{26,-86}}, color={0,0,127})); + connect(ahu.Pel, PEl) annotation (Line(points={{2.03,-15.75},{2.03,-47.425},{26, + -47.425},{26,-86}}, color={0,0,127})); annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100, -100},{100,100}}), graphics={ Text( - extent={{-88,84},{-50,58}}, + extent={{-60,80},{-22,54}}, lineColor={28,108,200}, fontSize=6, - textString="Heat Cool Dehu Hu HRS -1 1 1 1 1 -1 1 1 0 1 -1 1 0 1 1 -1 1 0 0 1 -1 0 0 0 1 -0 1 0 0 1 -0 0 0 0 1 -1 1 1 1 0 -1 1 1 0 0 -1 1 0 1 0 -1 1 0 0 0 -1 0 0 0 0 -0 1 0 0 0 -0 0 0 0 0 + textString="Heat Cool Dehu Hu HRS +1 1 1 1 1 +1 1 1 0 1 +1 1 0 1 1 +1 1 0 0 1 +1 0 0 0 1 +0 1 0 0 1 +0 0 0 0 1 +1 1 1 1 0 +1 1 1 0 0 +1 1 0 1 0 +1 1 0 0 0 +1 0 0 0 0 +0 1 0 0 0 +0 0 0 0 0 "), Text( - extent={{-88,100},{-44,90}}, + extent={{-60,96},{-16,86}}, lineColor={28,108,200}, textString="Use the following Table for investigation of all possible modes. -Check whether variable allCond is always 1."), - Text( - extent={{-20,76},{36,62}}, - lineColor={28,108,200}, - fontSize=4, - horizontalAlignment=TextAlignment.Left, - textString="createPlot(id=1, position={917, 10, 693, 691}, y={\"ahu.allCond\"}, range={0.0, 90000.0, 0.89, 1.11}, grid=true, filename=\"TestAHU.mat\", colors={{28,108,200}}, markers={MarkerStyle.SmallSquare}); - -createPlot(id=2, position={60, 18, 727, 669}, y={\"ahu.startState.active\", \"ahu.deHuHRS_true.active\", \"ahu.deHuHRS_false.active\", - \"ahu.onlyHeatingHRS_true.active\", \"ahu.onlyHeatingHRS_false.active\"}, range={0.0, 90000.0, -0.05, 1.05}, grid=true, filename=\"TestAHU.mat\", colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}}, markers={MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, -MarkerStyle.SmallSquare, MarkerStyle.SmallSquare}); - -createPlot(id=3, position={821, 15, 744, 666}, y={\"ahu.onlyCoolingHRS_true.active\", \"ahu.onlyCoolingHRS_false.active\", -\"ahu.huPreHHRS_true.active\", \"ahu.huPreHHRS_false.active\", \"ahu.huCHRS_true.active\", - \"ahu.huCHRS_false.active\"}, range={0.0, 90000.0, -0.05, 1.05}, grid=true, filename=\"TestAHU.mat\", colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}, {162,29,33}}, markers={MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, -MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, MarkerStyle.SmallSquare}); - -createPlot(id=4, position={77, 62, 1429, 635}, y={\"ahu.QflowC\", \"ahu.QflowH\"}, range={0.0, 88000.0, -100000.0, 2100000.0}, grid=true, filename=\"TestAHU.mat\", colors={{28,108,200}, {238,46,47}}); - -createPlot(id=5, position={50, 59, 1411, 632}, y={\"ahu.X_oda\", \"ahu.X_supMin\", \"ahu.X_supMax\"}, range={0.0, 88000.0, 0.0058000000000000005, 0.0102}, grid=true, filename=\"TestAHU.mat\", colors={{28,108,200}, {238,46,47}, {0,140,72}}, markers={MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, MarkerStyle.SmallSquare}); - -createPlot(id=6, position={31, 19, 1416, 654}, y={\"ahu.T_6\", \"ahu.T_oda\", \"ahu.T_supplyAirOut\"}, range={0.0, 88000.0, 8.0, 30.0}, grid=true, filename=\"TestAHU.mat\", colors={{28,108,200}, {238,46,47}, {28,108,200}}, markers={MarkerStyle.SmallSquare, MarkerStyle.SmallSquare, MarkerStyle.None});"), - Text( - extent={{-20,102},{64,82}}, - lineColor={28,108,200}, - textString="Double Click the text below, copy everything and -paste it after the simulation in the command line -to display most interesting plots.", - horizontalAlignment=TextAlignment.Left)}), +Check whether variable allCond is always 1.")}), experiment( StopTime=86400, - Interval=60, - __Dymola_Algorithm="Lsodar"), - __Dymola_experimentSetupOutput(events=false), + Interval=60), + __Dymola_Commands(file="modelica://AixLib/Resources/Scripts/Dymola/Airflow/AirHandlingUnit/Examples/AHU.mos" + "Simulate and plot"), Documentation(info="

Overview

Simulation to check the behaviour of the simple Air Handling Unit models. Various possibilities for inputs are provided.

@@ -165,4 +137,4 @@ to display most interesting plots.",

Occupation and Schedule is a percentage value between 0 and 1.

The zone parameter is needed to automatically calculate the air flow rate based on the occupation and room area.

")); -end TestAHU; +end AHU; diff --git a/AixLib/Airflow/AirHandlingUnit/Examples/package.mo b/AixLib/Airflow/AirHandlingUnit/Examples/package.mo index 3bc4a5a112..3fffdec610 100644 --- a/AixLib/Airflow/AirHandlingUnit/Examples/package.mo +++ b/AixLib/Airflow/AirHandlingUnit/Examples/package.mo @@ -1,4 +1,4 @@ -within AixLib.Airflow.AirHandlingUnit; +within AixLib.Airflow.AirHandlingUnit; package Examples "Contains examples for Air Handling Units" extends Modelica.Icons.ExamplesPackage; diff --git a/AixLib/Airflow/AirHandlingUnit/Examples/package.order b/AixLib/Airflow/AirHandlingUnit/Examples/package.order index a3c6f3a6b1..3378981f39 100644 --- a/AixLib/Airflow/AirHandlingUnit/Examples/package.order +++ b/AixLib/Airflow/AirHandlingUnit/Examples/package.order @@ -1 +1 @@ -TestAHU +AHU diff --git a/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/SetPower.mo b/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/SetPower.mo new file mode 100644 index 0000000000..8315fe4573 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/SetPower.mo @@ -0,0 +1,126 @@ +within AixLib.Airflow.FacadeVentilationUnit.BaseClasses; +model SetPower + "This model defines a specific mass flow rate based on the input power + share" + + extends Modelica.Fluid.Interfaces.PartialTwoPort; + + parameter Modelica.SIunits.MassFlowRate m_flow_nominal=0.05 + "Nominal mass flow rate of fan"; + parameter Medium.AbsolutePressure p_start=Medium.p_default + "Start value of pressure"; + parameter Integer noUnits=1 "Number of identical FVU units"; + parameter Modelica.SIunits.PressureDifference dp_nominal=500 + "Initial pressure difference"; + parameter Medium.Temperature T_start=Medium.T_default + "Start value of temperature"; + + Modelica.Blocks.Tables.CombiTable1D volumeFlow(table=[0,1; 0.1,25; 0.2,40; + 0.3,60; 0.4,90; 0.5,100; 0.6,140; 0.7,175; 0.8,200; 0.9,225; 1,260]) + "Correlates the relative input signal and a volume flow rate" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,-56}))); + Modelica.Blocks.Interfaces.RealInput powerShare( + min=0, + max=1, + nominal=0.6) "Power share 0..1 for fan" annotation (Placement( + transformation( + origin={0,-100}, + extent={{-20,-20},{20,20}}, + rotation=90))); + + AixLib.Fluid.Movers.FlowControlled_m_flow fan( + redeclare package Medium = Medium, + addPowerToMedium=false, + m_flow_nominal=m_flow_nominal, + T_start=T_start, + m_flow(start=m_flow_nominal), + dp(start=dp_nominal), + dp_nominal=dp_nominal, + p_start=p_start, + riseTime=120, + nominalValuesDefineDefaultPressureCurve=true) + "Mass-flow-controlled mover setting mass flow rate from table" + annotation (Placement(transformation(extent= + {{-10,10},{10,-10}}))); + Modelica.Blocks.Math.Gain transforMassFlow(k=1.2/3600*noUnits, y(unit="kg/s")) + "Used to transform the volume flow rate in m3/h into a mass flow rate in kg/s" + annotation (Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=90, + origin={0,-28}))); +equation + + connect(port_a, fan.port_a) + annotation (Line(points={{-100,0},{-56,0},{-10,0}}, color={0,127,255})); + connect(fan.port_b, port_b) + annotation (Line(points={{10,0},{56,0},{100,0}}, color={0,127,255})); + connect(powerShare, volumeFlow.u[1]) annotation (Line(points={{0,-100},{0,-80}, + {-6.66134e-016,-80},{-6.66134e-016,-68}}, color={0,0,127})); + connect(transforMassFlow.u, volumeFlow.y[1]) annotation (Line(points={{-4.44089e-016, + -35.2},{-4.44089e-016,-46},{8.88178e-016,-46},{8.88178e-016,-45}}, + color={0,0,127})); + connect(transforMassFlow.y, fan.m_flow_in) annotation (Line(points={{ + 4.44089e-016,-21.4},{4.44089e-016,-24},{0,-24},{0,-12}}, color={0,0, + 127})); + annotation ( + choicesAllMatching=true, + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ + 100,100}})), + Icon(graphics={ + Ellipse( + extent={{-4,68},{4,0}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-4,0},{4,-68}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{0,4},{30,-4}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-30,4},{0,-4}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Ellipse(extent={{-30,68},{30,-68}}, lineColor={0,0,0}), + Line( + points={{8,48},{58,48}}, + color={170,213,255}, + arrow={Arrow.None,Arrow.Filled}), + Line( + points={{0,0},{82,0}}, + color={170,213,255}, + arrow={Arrow.None,Arrow.Filled}), + Line( + points={{2,24},{72,24}}, + color={170,213,255}, + arrow={Arrow.None,Arrow.Filled}), + Line( + points={{2,-24},{72,-24}}, + color={170,213,255}, + arrow={Arrow.None,Arrow.Filled}), + Line( + points={{8,-48},{58,-48}}, + color={170,213,255}, + arrow={Arrow.None,Arrow.Filled})}), + Documentation(info=" +

This model sets the mass flow rate of the air flow through a facade + ventilation unit based on the input value, which is the power share set + point of the fan.

+", revisions=" + +")); +end SetPower; diff --git a/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/package.mo b/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/package.mo new file mode 100644 index 0000000000..c45c94449f --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/package.mo @@ -0,0 +1,4 @@ +within AixLib.Airflow.FacadeVentilationUnit; +package BaseClasses + extends Modelica.Icons.BasesPackage; +end BaseClasses; diff --git a/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/package.order b/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/package.order new file mode 100644 index 0000000000..a512820164 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/BaseClasses/package.order @@ -0,0 +1 @@ +SetPower diff --git a/AixLib/Airflow/FacadeVentilationUnit/DataBase/FVUBaseRecord.mo b/AixLib/Airflow/FacadeVentilationUnit/DataBase/FVUBaseRecord.mo new file mode 100644 index 0000000000..49859a1c63 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/DataBase/FVUBaseRecord.mo @@ -0,0 +1,54 @@ +within AixLib.Airflow.FacadeVentilationUnit.DataBase; +record FVUBaseRecord + "Base record for the facade ventilation unit model" + extends Modelica.Icons.Record; + + parameter Integer noUnits=1 "Number of identical FVUs"; + parameter Modelica.SIunits.ThermalConductance UA_heater=120 + "Thermal conductance of heater at nominal flow, used to compute heat + capacity"; + parameter Modelica.SIunits.ThermalConductance UA_cooler=65 + "Thermal conductance of cooler at nominal flow, used to compute heat + capacity"; + parameter Modelica.SIunits.MassFlowRate m1_flow_nominal_heater=0.1 + "Nominal mass flow rate on water side of heater"; + parameter Modelica.SIunits.MassFlowRate m2_flow_nominal_heater=0.1 + "Nominal mass flow rate on air side of heater"; + parameter Modelica.SIunits.MassFlowRate m1_flow_nominal_cooler=0.1 + "Nominal mass flow rate on water side of cooler"; + parameter Modelica.SIunits.MassFlowRate m2_flow_nominal_cooler=0.05 + "Nominal mass flow rate on air side of cooler"; + parameter Modelica.SIunits.MassFlowRate m_flow_nominal_damper=0.1 + "Nominal mass flow rate of damper"; + parameter Modelica.SIunits.Pressure dp1_nominal_heater=1000 + "Nominal pressure loss on water side of heater"; + parameter Modelica.SIunits.Pressure dp2_nominal_heater=100 + "Nominal pressure loss on air side of heater"; + parameter Modelica.SIunits.Pressure dp1_nominal_cooler=1000 + "Nominal pressure loss on water side of cooler"; + parameter Modelica.SIunits.Pressure dp2_nominal_cooler=100 + "Nominal pressure loss on air side of cooler"; + parameter Modelica.SIunits.Pressure p_default=101300 + "Default static pressure at outlet"; + parameter Modelica.SIunits.Pressure dp_nominal_damper=500 + "Nominal pressure loss in dampers"; + parameter Modelica.SIunits.Time damperRiseTimeLong = 90 "Rising time of the + slowly moving dampers"; + parameter Modelica.SIunits.Time damperRiseTimeShort = 20 "Rising time of the + slowly moving dampers"; + + annotation (Documentation(info=" +

Overview

+

This is the base definition of the paramter record that can be used for the + +AixLib.Airflow.FacadeVentilationUnit.FacadeVentilationUnit.

+", revisions=" + +")); + +end FVUBaseRecord; diff --git a/AixLib/Airflow/FacadeVentilationUnit/DataBase/package.mo b/AixLib/Airflow/FacadeVentilationUnit/DataBase/package.mo new file mode 100644 index 0000000000..34a7989eae --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/DataBase/package.mo @@ -0,0 +1,16 @@ +within AixLib.Airflow.FacadeVentilationUnit; +package DataBase "Contains parameter records of the facade ventilation unit" +extends Modelica.Icons.Package; + +annotation (Icon(graphics={ + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle(extent={{-68,68},{-8,26}}, lineColor={0,0,0}), + Rectangle(extent={{-68,26},{-8,-20}}, lineColor={0,0,0}), + Rectangle(extent={{-68,-20},{-8,-62}}, lineColor={0,0,0}), + Rectangle(extent={{-6,68},{52,26}}, lineColor={0,0,0}), + Rectangle(extent={{-6,26},{52,-20}}, lineColor={0,0,0}), + Rectangle(extent={{-6,-20},{52,-62}}, lineColor={0,0,0})})); +end DataBase; diff --git a/AixLib/Airflow/FacadeVentilationUnit/DataBase/package.order b/AixLib/Airflow/FacadeVentilationUnit/DataBase/package.order new file mode 100644 index 0000000000..4db7d5ddca --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/DataBase/package.order @@ -0,0 +1 @@ +FVUBaseRecord diff --git a/AixLib/Airflow/FacadeVentilationUnit/Examples/FacadeVentilationUnit.mo b/AixLib/Airflow/FacadeVentilationUnit/Examples/FacadeVentilationUnit.mo new file mode 100644 index 0000000000..18a91e8da4 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/Examples/FacadeVentilationUnit.mo @@ -0,0 +1,211 @@ +within AixLib.Airflow.FacadeVentilationUnit.Examples; +model FacadeVentilationUnit + "Example showing the use of facade ventilation unit and controller" + extends Modelica.Icons.Example; + + package Medium1 = AixLib.Media.Air; + package Medium2 = AixLib.Media.Water; + + AixLib.Controls.AirHandling.FVUController FVUController( + maxSupFanPower=0.6, + maxExFanPower=0.6) + "Comprehensive rule-based controller for the facade ventilation unit" + annotation (Placement(transformation(extent={{-46,-30},{-6,10}}))); + AixLib.Airflow.FacadeVentilationUnit.FacadeVentilationUnit FVU(redeclare + package Air = Medium1, redeclare package Water = Medium2) + "The facade ventilation unit to be tested in this example" + annotation (Placement(transformation(extent={{70,-56},{106,-36}}))); + AixLib.Fluid.Sources.Boundary_pT freshAirSource( + nPorts=1, + redeclare package Medium = Medium1, + use_T_in=true, + p(displayUnit="Pa") = 101300) "Sink of the exhaust air" + annotation (Placement(transformation(extent={{6,-84},{26,-64}}))); + AixLib.Fluid.Sources.Boundary_pT exhaustAirSink( + nPorts=1, + redeclare package Medium = Medium1, + p(displayUnit="Pa") = 101300) "Source of freah air" + annotation (Placement(transformation(extent={{4,-47},{24,-27}}))); + AixLib.Fluid.Sources.Boundary_pT heatingSnk( + redeclare package Medium = Medium2, + nPorts=1, + p=100000) "Sink of the heating water" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={26,30}))); + AixLib.Fluid.Sources.Boundary_pT coolingSink( + redeclare package Medium = Medium2, + nPorts=1, + p=100000) "Sink of the cooling water" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={102,32}))); + AixLib.Fluid.Sources.Boundary_pT coolingSource( + redeclare package Medium = Medium2, + use_T_in=true, + nPorts=1, + p=101000) "Source of the cooling water" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={126,31}))); + AixLib.Fluid.Sources.Boundary_pT heatingSource( + redeclare package Medium = Medium2, + use_T_in=true, + nPorts=1, + p=101000) "Source of the heating water" annotation (Placement( + transformation( + extent={{-9,-10},{9,10}}, + rotation=270, + origin={54,31}))); + AixLib.Fluid.Sources.Boundary_pT supplyAirSink( + redeclare package Medium = Medium1, + use_T_in=false, + nPorts=1, + p(displayUnit="Pa") = 101300) "Sink of the supply air" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={170,-27}))); + AixLib.Fluid.Sources.Boundary_pT extractAirSource( + nPorts=1, + redeclare package Medium = Medium1, + use_T_in=true, + p(displayUnit="Pa") = 101300) "Source of the extract air" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={168,-66}))); + Modelica.Blocks.Sources.Constant heatingWaterTemperature(k=273.15 + 30) + "Provides a test value of the heating water temperatrure" + annotation (Placement(transformation(extent={{24,74},{44,94}}))); + Modelica.Blocks.Sources.Constant coolingWaterTemperature(k=273.15 + 17) + "Provides a test value of the cooling water temperatiure" + annotation (Placement(transformation(extent={{84,74},{104,94}}))); + AixLib.Fluid.Sensors.TemperatureTwoPort supplyAirTemperature(redeclare + package Medium = Medium1, m_flow_nominal=0.1) + "Measures the supply air temperature" + annotation (Placement(transformation(extent={{120,-54},{140,-34}}))); + Modelica.Blocks.Sources.Sine roomTemperature( + amplitude=5, + freqHz=1/86400, + phase=3.1415926535898, + offset=273.15 + 20) + "Provides a test value of the room temperature" + annotation (Placement(transformation(extent={{-100,40},{-80,60}}))); + Modelica.Blocks.Sources.Sine roomSetTemperature( + amplitude=5, + freqHz=1/86400, + phase=1.5707963267949, + offset=273.15 + 20) + "Provides a test value of the room set temperature" + annotation (Placement(transformation(extent={{-100,-36},{-80,-16}}))); + Modelica.Blocks.Sources.Constant co2Concentration(k=1000) + "Provides a test value of the CO2 concnetration" + annotation (Placement(transformation(extent={{-100,-80},{-80,-60}}))); + Modelica.Blocks.Sources.Sine outdoorTemperature( + amplitude=5, + freqHz=1/86400, + offset=273.15 + 10) "Provides a test value of the outdoor temperature" + annotation (Placement(transformation(extent={{-100,6},{-80,26}}))); + AixLib.Controls.Interfaces.FVUControlBus fVUControlBus + "Bus with controller sginals" + annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={-26,28}))); +equation + connect(FVU.extractAirConnector, extractAirSource.ports[1]) annotation ( + Line(points={{106.2,-52.8},{148,-52.8},{148,-66},{158,-66}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(heatingSnk.ports[1], FVU.heaterReturnConnector) annotation (Line( + points={{26,20},{26,-6},{95.2,-6},{95.2,-36}}, color={0,127,255})); + connect(coolingSource.ports[1], FVU.coolerFlowConnector) annotation (Line( + points={{126,21},{126,-26},{105.2,-26},{105.2,-36}}, + color={0,127,255})); + connect(heatingWaterTemperature.y, heatingSource.T_in) + annotation (Line(points={{45,84},{58,84},{58,41.8}}, color={0,0,127})); + connect(coolingWaterTemperature.y, coolingSource.T_in) annotation (Line( + points={{105,84},{105,84},{130,84},{130,43}}, color={0,0,127})); + connect(FVU.coolerReturnConnector, coolingSink.ports[1]) annotation (Line( + points={{102.2,-36},{102,-36},{102,22}}, color={0,127,255})); + connect(heatingSource.ports[1], FVU.heaterFlowConnector) annotation (Line( + points={{54,22},{54,22},{54,10},{98.2,10},{98.2,-36}}, + color={0,127,255})); + connect(exhaustAirSink.ports[1], FVU.exhaustAirConnector) annotation (Line( + points={{24,-37},{42,-37},{42,-43.4},{70,-43.4}}, color={0,127,255})); + connect(freshAirSource.ports[1], FVU.freshAirConnector) annotation (Line( + points={{26,-74},{26,-70},{42,-70},{42,-52.8},{70.2,-52.8}}, + color={0,127, + 255})); + connect(FVU.supplyAirConnector, supplyAirTemperature.port_a) annotation ( + Line(points={{106.2,-43.4},{106.2,-44},{120,-44}}, color={0,127,255})); + connect(supplyAirTemperature.port_b, supplyAirSink.ports[1]) annotation ( + Line(points={{140,-44},{148,-44},{148,-27},{160,-27}}, color={0,127,255})); + connect(FVU.fVUControlBus, FVUController.fVUControlBus) annotation (Line( + points={{86,-35.9},{86,-35.9},{86,-12},{86,-10},{86,-8.76923},{-6, + -8.76923}},color={255,204,51},thickness=0.5)); + connect(FVUController.fVUControlBus, fVUControlBus) annotation (Line( + points={{-6,-8.76923},{2,-8.76923},{2,28},{-26,28}}, + color={255,204,51}, + thickness=0.5), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(roomTemperature.y, extractAirSource.T_in) annotation ( + Line(points={{-79,50},{46,50},{192,50},{192,-70},{180,-70}}, + color={0,0,127})); + connect(outdoorTemperature.y,freshAirSource. T_in) annotation ( + Line(points={{-79,16},{-64,16},{-64,-70},{4,-70}}, color={0,0,127})); + connect(roomTemperature.y, fVUControlBus.roomTemperature) annotation (Line( + points={{-79,50},{-62,50},{-46,50},{-46,27.95},{-25.95,27.95}}, color={0, + 0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(outdoorTemperature.y, fVUControlBus.outdoorTemperature) annotation ( + Line(points={{-79,16},{-64,16},{-64,27.95},{-25.95,27.95}}, color={0,0,127}), + Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(roomSetTemperature.y, fVUControlBus.roomSetTemperature) annotation ( + Line(points={{-79,-26},{-74,-26},{-74,27.95},{-25.95,27.95}}, color={0,0,127}), + Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(co2Concentration.y, fVUControlBus.co2Concentration) annotation (Line( + points={{-79,-70},{-79,-70},{-74,-70},{-74,27.95},{-25.95,27.95}}, + color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + annotation ( + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, + 100}})), + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ + 200,100}})), + experiment(StopTime=86400), + Documentation(revisions=" + +", info=" +

This model demonstrates the usage of the facade ventilation unit connected +to the standard controller. The inputs are the room and the outdoor temperaure. +Those temperatures and the room temperature set point are sine waves with a +period of one day, which all have a different phase. The simulation result +depicted in the following figure shows the behavior of the two-point controller +that opens the heating valve fully for heating. For cooling, it closes the +heating valve and bypasses the heat recovery unit so that the supply air +temperature is equal to the outdoor temperature.

+

+")); +end FacadeVentilationUnit; diff --git a/AixLib/Airflow/FacadeVentilationUnit/Examples/package.mo b/AixLib/Airflow/FacadeVentilationUnit/Examples/package.mo new file mode 100644 index 0000000000..5b387fe51b --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/Examples/package.mo @@ -0,0 +1,4 @@ +within AixLib.Airflow.FacadeVentilationUnit; +package Examples +extends Modelica.Icons.ExamplesPackage; +end Examples; diff --git a/AixLib/Airflow/FacadeVentilationUnit/Examples/package.order b/AixLib/Airflow/FacadeVentilationUnit/Examples/package.order new file mode 100644 index 0000000000..9ca962c8f9 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/Examples/package.order @@ -0,0 +1 @@ +FacadeVentilationUnit diff --git a/AixLib/Airflow/FacadeVentilationUnit/FacadeVentilationUnit.mo b/AixLib/Airflow/FacadeVentilationUnit/FacadeVentilationUnit.mo new file mode 100644 index 0000000000..d63b77641b --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/FacadeVentilationUnit.mo @@ -0,0 +1,393 @@ +within AixLib.Airflow.FacadeVentilationUnit; +model FacadeVentilationUnit + "Facade Ventilation Unit (FVU) equipped with a recuperator" + + replaceable package Water = AixLib.Media.Water + "Water Model in the system"; + replaceable package Air = AixLib.Media.Air + "Air Model in the system"; + + parameter AixLib.Airflow.FacadeVentilationUnit.DataBase.FVUBaseRecord + fVUParam=AixLib.Airflow.FacadeVentilationUnit.DataBase.FVUBaseRecord() + "Record containing the characteristic parameters of the unit"; + + parameter Modelica.SIunits.ThermodynamicTemperature T_start=273.15 + 20 + "Initial temperature in unit"; + + AixLib.Airflow.FacadeVentilationUnit.BaseClasses.SetPower fanExhaustAir( + redeclare package Medium = Air, + noUnits=fVUParam.noUnits, + m_flow_nominal=fVUParam.m2_flow_nominal_heater, + T_start=T_start, + p_start=fVUParam.dp2_nominal_heater) + "The fan on the exhaust air side" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={-118,26}))); + AixLib.Airflow.FacadeVentilationUnit.BaseClasses.SetPower fanSupplyAir( + redeclare package Medium = Air, + noUnits=fVUParam.noUnits, + m_flow_nominal=fVUParam.m2_flow_nominal_heater, + p_start=5*fVUParam.dp2_nominal_heater, + dp_nominal=5*fVUParam.dp2_nominal_heater) + "The fan on the supply air side" + annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=0, + origin={62,26}))); + Modelica.Fluid.Sensors.Temperature extractAirTemperature(redeclare package + Medium = Air) "Temperature of the extract air" + annotation (Placement(transformation(extent={{174,-58},{190,-46}}))); + AixLib.Fluid.HeatExchangers.ConstantEffectiveness heater( + redeclare package Medium2 = Air, + redeclare package Medium1 = Water, + m1_flow_nominal=fVUParam.m1_flow_nominal_heater, + m2_flow_nominal=fVUParam.m2_flow_nominal_heater, + dp1_nominal(displayUnit="Pa") = fVUParam.dp1_nominal_heater, + dp2_nominal(displayUnit="Pa") = fVUParam.dp2_nominal_heater) + "The heat exchanger used for heating" + annotation (Placement(transformation(extent={{116,22},{96,42}}))); + Modelica.Fluid.Interfaces.FluidPort_b exhaustAirConnector(redeclare package + Medium = Air) "Connector to the exhaust air sink" + annotation (Placement(transformation(extent={{-170,16},{-150,36}}))); + Modelica.Fluid.Interfaces.FluidPort_a freshAirConnector(redeclare package + Medium = Air) "Connector to the fresh air source" + annotation (Placement(transformation(extent={{-168,-78},{-148,-58}}))); + Modelica.Fluid.Interfaces.FluidPort_a extractAirConnector(redeclare package + Medium = Air) "Connector to the extract air source" + annotation (Placement(transformation(extent={{192,-78},{212,-58}}))); + Modelica.Fluid.Interfaces.FluidPort_b supplyAirConnector(redeclare package + Medium = Air) "Connector to the supply air sink" + annotation (Placement(transformation(extent={{192,16},{212,36}}))); + AixLib.Fluid.HeatExchangers.ConstantEffectiveness cooler( + redeclare package Medium2 = Air, + redeclare package Medium1 = Water, + dp1_nominal(displayUnit="Pa") = fVUParam.dp1_nominal_cooler, + dp2_nominal(displayUnit="Pa") = fVUParam.dp2_nominal_cooler, + m1_flow_nominal=fVUParam.m1_flow_nominal_cooler, + m2_flow_nominal=fVUParam.m2_flow_nominal_cooler) + "The heat exchanger used for cooling" + annotation (Placement(transformation(extent={{182,22},{162,42}}))); + Modelica.Fluid.Interfaces.FluidPort_b heaterReturnConnector(redeclare package + Medium = Water) "Connector to the heating water sink" + annotation (Placement(transformation(extent={{82,90},{102,110}}))); + Modelica.Fluid.Interfaces.FluidPort_a heaterFlowConnector(redeclare package + Medium = Water) "Connector to the heating water source" + annotation (Placement(transformation(extent={{112,90},{132,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b coolerReturnConnector(redeclare package + Medium = Water) "Connector to the cooling water source" + annotation (Placement(transformation(extent={{152,90},{172,110}}))); + Modelica.Fluid.Interfaces.FluidPort_a coolerFlowConnector(redeclare package + Medium = Water) "Connector to the cooling water source" + annotation (Placement(transformation(extent={{182,90},{202,110}}))); + Modelica.Fluid.Sensors.Temperature freshAirTemperature(redeclare package + Medium = Air) "Temperature of the fresh air" annotation (Placement( + transformation( + extent={{-8,-6},{8,6}}, + rotation=180, + origin={-140,-82}))); + Modelica.Fluid.Sensors.Temperature exhaustAirTemperature(redeclare package + Medium = Air) "Temperature of the exhaust air" annotation (Placement( + transformation( + extent={{-8,-6},{8,6}}, + rotation=0, + origin={-134,44}))); + Modelica.Fluid.Sensors.Temperature coolerTemperature(redeclare package Medium = + Air) "Temperature of the supply air stream behind the cooler" + annotation (Placement(transformation( + extent={{-8,-6},{8,6}}, + rotation=180, + origin={188,2}))); + Modelica.Fluid.Sensors.Temperature heatRecoveryTemperature(redeclare package + Medium = Air) "Temperature behind the recuperator" + annotation (Placement(transformation(extent={{-28,-10},{-12,2}}))); + + Modelica.Blocks.Math.Add oppositeOpening(k1=-1) + "Provides the relative opening of the complementary damper of the + recuperator" annotation (Placement(transformation(extent={{-65,47},{-55,57}}))); + Modelica.Blocks.Sources.Constant one(k=1) "Output the Real value 1 " + annotation (Placement(transformation( + extent={{-5,-5},{5,5}}, + rotation=180, + origin={-61,27}))); + Modelica.Fluid.Sensors.Temperature mixAirTemperature(redeclare package Medium = + Air) "Temperature of the mixed circulation and fresh air streams" + annotation (Placement(transformation(extent={{32,42},{48,54}}))); + inner Modelica.Fluid.System system + annotation (Placement(transformation(extent={{180,-100},{200,-80}}))); + AixLib.Fluid.Actuators.Valves.TwoWayQuickOpening damperCirculationAir( + redeclare package Medium = Air, + riseTime=fVUParam.damperRiseTimeLong, + m_flow_nominal=fVUParam.m_flow_nominal_damper, + dpValve_nominal=fVUParam.dp_nominal_damper) + "Damper that controls the air stream that is recirculated" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={30,-16}))); + AixLib.Fluid.Actuators.Valves.TwoWayQuickOpening damperBypass( + redeclare package Medium = Air, + riseTime=fVUParam.damperRiseTimeLong, + m_flow_nominal=fVUParam.m_flow_nominal_damper, + dpValve_nominal=fVUParam.dp_nominal_damper) + "The second of two dampers that control the air flow through the + recuperator" annotation (Placement(transformation( + extent={{-9,-9},{9,9}}, + rotation=0, + origin={-27,36}))); + AixLib.Fluid.Actuators.Valves.TwoWayQuickOpening damperHeatRecovery( + redeclare package Medium = Air, + riseTime=fVUParam.damperRiseTimeLong, + m_flow_nominal=fVUParam.m_flow_nominal_damper, + dpValve_nominal=fVUParam.dp_nominal_damper) + "The first of two dampers that control the air flow through the recuperator" + annotation (Placement(transformation( + extent={{-9,-9},{9,9}}, + rotation=0, + origin={-82,-68}))); + Modelica.Fluid.Sensors.Temperature heaterTemperature(redeclare package Medium = + Air) "Temperature of the supply air stream behind the heater" + annotation (Placement(transformation( + extent={{-8,-6},{8,6}}, + rotation=180, + origin={129,4}))); + AixLib.Fluid.Actuators.Valves.TwoWayQuickOpening damperFreshAir( + redeclare package Medium = Air, + riseTime=fVUParam.damperRiseTimeShort, + m_flow_nominal=fVUParam.m_flow_nominal_damper, + dpValve_nominal=fVUParam.dp_nominal_damper) + "Can be used to disconnect the unit from fresh air source" + annotation (Placement(transformation( + extent={{-9,-9},{9,9}}, + rotation=0, + origin={-112,-68}))); + AixLib.Fluid.HeatExchangers.ConstantEffectiveness recuperator( + redeclare package Medium1 = Air, + redeclare package Medium2 = Air, + eps=0.6, + m1_flow_nominal=fVUParam.m2_flow_nominal_heater, + m2_flow_nominal=fVUParam.m2_flow_nominal_heater, + dp1_nominal=fVUParam.dp2_nominal_heater, + dp2_nominal=fVUParam.dp2_nominal_heater) + "The heat exchanger used for recovering heat or cold from extract air + stream" annotation (Placement(transformation(extent={{-44,-42},{-24,-22}}))); + Modelica.Fluid.Vessels.ClosedVolume volume( + nPorts=4, + use_portsData=false, + V=0.01, + redeclare package Medium = Air, + T_start=T_start) + "Volume where the circulation air and the fresh air stream mix" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={18,14}))); + AixLib.Fluid.Actuators.Valves.TwoWayQuickOpening heatingValve( + redeclare package Medium = Water, + riseTime=fVUParam.damperRiseTimeLong, + dpValve_nominal=fVUParam.dp1_nominal_heater, + m_flow_nominal=fVUParam.m1_flow_nominal_heater) + "Valve controlling the heating water flow into the unit" + annotation (Placement(transformation( + extent={{-9,9},{9,-9}}, + rotation=90, + origin={122,60}))); + AixLib.Fluid.Actuators.Valves.TwoWayQuickOpening coolingValve( + redeclare package Medium = Water, + riseTime=fVUParam.damperRiseTimeLong, + dpValve_nominal=fVUParam.dp1_nominal_heater, + m_flow_nominal=fVUParam.m1_flow_nominal_heater) + "Valve controlling the cooling water flow into the unit" + annotation (Placement(transformation( + extent={{-9,9},{9,-9}}, + rotation=90, + origin={192,58}))); + AixLib.Controls.Interfaces.FVUControlBus fVUControlBus + "Bus with controller signals" + annotation (Placement(transformation(extent={{-29,72},{29,130}}))); +equation + + connect(cooler.port_b2, supplyAirConnector) annotation (Line( + points={{182,26},{202,26}}, + color={0,127,255}, + smooth=Smooth.None, + thickness=1)); + connect(extractAirTemperature.port, extractAirConnector) annotation (Line( + points={{182,-58},{182,-68},{202,-68}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(freshAirTemperature.port, freshAirConnector) annotation (Line( + points={{-140,-76},{-140,-68},{-158,-68}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(exhaustAirTemperature.port, fanExhaustAir.port_b) annotation (Line( + points={{-134,38},{-134,26},{-128,26}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(cooler.port_b2, coolerTemperature.port) annotation (Line( + points={{182,26},{188,26},{188,8}}, + color={0,127,255}, + smooth=Smooth.None)); + + connect(oppositeOpening.u2, one.y) annotation (Line( + points={{-66,49},{-70,49},{-70,27},{-66.5,27}}, + color={0,0,127}, + smooth=Smooth.None)); + + connect(mixAirTemperature.port, fanSupplyAir.port_a) + annotation (Line(points={{40,42},{40,26},{52,26}}, color={0,127,255})); + connect(freshAirConnector, freshAirConnector) annotation (Line( + points={{-158,-68},{-158,-68}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(oppositeOpening.y, damperBypass.y) annotation (Line( + points={{-54.5,52},{-27,52},{-27,46.8}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(extractAirConnector, extractAirConnector) annotation (Line( + points={{202,-68},{202,-68}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(heaterTemperature.port, heater.port_b2) annotation (Line( + points={{129,10},{130,10},{130,26},{116,26}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(damperFreshAir.port_b, damperHeatRecovery.port_a) + annotation (Line(points={{-103,-68},{-91,-68}}, color={0,127,255})); + connect(freshAirConnector, damperFreshAir.port_a) + annotation (Line(points={{-158,-68},{-121,-68}}, color={0,127,255})); + connect(damperFreshAir.port_b, damperBypass.port_a) annotation (Line(points={ + {-103,-68},{-100,-68},{-100,36},{-36,36}}, color={0,127,255})); + connect(fanSupplyAir.port_b, heater.port_a2) + annotation (Line(points={{72,26},{84,26},{96,26}}, color={0,127,255})); + connect(extractAirConnector, recuperator.port_a2) annotation (Line(points={{202, + -68},{104,-68},{-4,-68},{-4,-38},{-24,-38}}, color={0,127,255})); + connect(recuperator.port_b2, fanExhaustAir.port_a) annotation (Line(points={{ + -44,-38},{-44,-38},{-90,-38},{-90,26},{-108,26}}, color={0,127,255})); + connect(recuperator.port_b1, volume.ports[1]) annotation (Line(points={{-24,-26}, + {-6,-26},{-6,24},{21,24}}, color={0,127,255})); + connect(damperBypass.port_b, volume.ports[2]) + annotation (Line(points={{-18,36},{19,36},{19,24}}, color={0,127,255})); + connect(damperCirculationAir.port_b, volume.ports[3]) annotation (Line(points= + {{30,-6},{30,-6},{30,24},{17,24}}, color={0,127,255})); + connect(fanSupplyAir.port_a, volume.ports[4]) + annotation (Line(points={{52,26},{15,26},{15,24}}, color={0,127,255})); + connect(heatRecoveryTemperature.port, recuperator.port_b1) annotation (Line( + points={{-20,-10},{-20,-26},{-24,-26}}, color={0,127,255})); + connect(heater.port_b2, cooler.port_a2) + annotation (Line(points={{116,26},{140,26},{162,26}}, color={0,127,255})); + connect(heater.port_a1, heatingValve.port_a) + annotation (Line(points={{116,38},{122,38},{122,51}}, color={0,127,255})); + connect(heatingValve.port_b, heaterFlowConnector) annotation (Line(points={{122, + 69},{122,84.5},{122,100}}, color={0,127,255})); + connect(coolerReturnConnector, cooler.port_b1) + annotation (Line(points={{162,100},{162,38}}, color={0,127,255})); + connect(cooler.port_a1, coolingValve.port_a) + annotation (Line(points={{182,38},{192,38},{192,49}}, color={0,127,255})); + connect(coolingValve.port_b, coolerFlowConnector) + annotation (Line(points={{192,67},{192,67},{192,100}}, color={0,127,255})); + connect(heaterReturnConnector, heater.port_b1) annotation (Line(points={{92,100}, + {94,100},{94,38},{96,38}}, color={0,127,255})); + connect(extractAirConnector, damperCirculationAir.port_a) annotation (Line( + points={{202,-68},{114,-68},{30,-68},{30,-26}}, color={0,127,255})); + connect(damperCirculationAir.y, fVUControlBus.circulationDamperOpening) + annotation (Line(points={{18,-16},{12,-16},{0.145,-16},{0.145,101.145}}, + color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(fanSupplyAir.powerShare, fVUControlBus.fanSupplyAirPower) annotation ( + Line(points={{62,36},{62,62},{0.145,62},{0.145,101.145}}, color={0,0,127}), + Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(fanExhaustAir.powerShare, fVUControlBus.fanExhaustAirPower) + annotation (Line(points={{-118,36},{-118,62},{0.145,62},{0.145,101.145}}, + color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(damperFreshAir.y, fVUControlBus.freshAirDamperOpening) annotation ( + Line(points={{-112,-57.2},{-112,-57.2},{-112,66},{0.145,66},{0.145, + 101.145}}, color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(damperHeatRecovery.y, fVUControlBus.hRCDamperOpening) annotation ( + Line(points={{-82,-57.2},{-82,-57.2},{-82,72},{0.145,72},{0.145,101.145}}, + color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(oppositeOpening.u1, fVUControlBus.hRCDamperOpening) annotation (Line( + points={{-66,55},{-68,55},{-68,72},{0.145,72},{0.145,101.145}}, color={0, + 0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(heatingValve.y, fVUControlBus.heatingValveOpening) annotation (Line( + points={{132.8,60},{140,60},{140,76},{0.145,76},{0.145,101.145}}, color= + {0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(coolingValve.y, fVUControlBus.coolingValveOpening) annotation (Line( + points={{202.8,58},{210,58},{210,76},{0.145,76},{0.145,101.145}}, color= + {0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(damperHeatRecovery.port_b, recuperator.port_a1) annotation (Line( + points={{-73,-68},{-58,-68},{-58,-26},{-44,-26}}, color={0,127,255})); + connect(fanExhaustAir.port_b, exhaustAirConnector) annotation (Line(points={{ + -128,26},{-144,26},{-160,26}}, color={0,127,255})); + connect(coolerTemperature.T, fVUControlBus.supplyTemperature) annotation ( + Line(points={{182.4,2},{172,2},{160,2},{160,-20},{80,-20},{80,84},{0.145, + 84},{0.145,101.145}}, color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(mixAirTemperature.T, fVUControlBus.mixTemperature) annotation (Line( + points={{45.6,48},{52,48},{52,84},{0.145,84},{0.145,101.145}}, color={0, + 0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + annotation ( + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-160,-100},{ + 200,100}})), + Icon(coordinateSystem(extent={{-160,-100},{200,100}}, preserveAspectRatio= + false), graphics={Rectangle( + extent={{-160,100},{200,-100}}, + lineColor={0,0,255}, + fillPattern=FillPattern.Solid, + fillColor={0,0,255}), Text( + extent={{-120,56},{168,-52}}, + lineColor={255,0,0}, + fillColor={0,0,255}, + fillPattern=FillPattern.Solid, + textString="FVU", + textStyle={TextStyle.Bold})}), + experiment(StopTime=86400, Interval=1), + __Dymola_experimentSetupOutput, + Documentation(info=" +

Overview

+

This is a model for Facade Ventilation Unit (FVU), which can be used for heating, cooling and ventilation purposes. It is equipped with two speed-controlled fans, a recuperator and two air-water heat exchangers. The figure below shows a scheme of the unit.

+

Operation Modes

+

The portion of fresh air flowing through the recuperator is controlled by means of a bypass damper. The portion of extract air that is recirculated and mixed with the fresh air stream is controlled by means of a circulation damper. The mixed air stream is either heated or cooled in the air-water heat exchangers. The water flow in these heat exchangers is controlled by two-way-valves.

+

Actuators

+

All actuators receive normailized signals (0-1). The supply and exhaust air fans are table-based. A relative input signal is transformed into a mass-flow set point for a flow-controlled mover. If the exhaust air fan is not in operation, the entire air flow should be recirculated. Thus, the circulation damper should be fully opened. In that case, the fresh air flap should be closed so that no fresh air can enter the unit. The exhaust air fan has a minimum mass flow rate of 1 m³/h to make the model more stable.

+

+

References

+

Baranski, M., Sangi, R., Fuetterer, J., Mueller, D. (2016). An Algorithm for Stepwise Exergy-based Model Predictive Control of Building HVAC Supply Chains. 29th international conference on Efficiency, Cost, Optimisation, Simulation and Environmental Impact of Energy Systems.

+", revisions=" + +")); +end FacadeVentilationUnit; diff --git a/AixLib/Airflow/FacadeVentilationUnit/package.mo b/AixLib/Airflow/FacadeVentilationUnit/package.mo new file mode 100644 index 0000000000..80dca66e12 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/package.mo @@ -0,0 +1,9 @@ +within AixLib.Airflow; +package FacadeVentilationUnit "Package for decentralized air handling unit" + + +annotation (Documentation(info=" +

This package contains models for facade ventilation unit.

+", revisions=" +")); +end FacadeVentilationUnit; diff --git a/AixLib/Airflow/FacadeVentilationUnit/package.order b/AixLib/Airflow/FacadeVentilationUnit/package.order new file mode 100644 index 0000000000..0808813e66 --- /dev/null +++ b/AixLib/Airflow/FacadeVentilationUnit/package.order @@ -0,0 +1,4 @@ +FacadeVentilationUnit +DataBase +Examples +BaseClasses diff --git a/AixLib/Airflow/Multizone/BaseClasses/DoorDiscretized.mo b/AixLib/Airflow/Multizone/BaseClasses/DoorDiscretized.mo index 3a3402961f..5ef927b968 100644 --- a/AixLib/Airflow/Multizone/BaseClasses/DoorDiscretized.mo +++ b/AixLib/Airflow/Multizone/BaseClasses/DoorDiscretized.mo @@ -7,7 +7,8 @@ partial model DoorDiscretized parameter Modelica.SIunits.PressureDifference dp_turbulent(min=0) = 0.01 "Pressure difference where laminar and turbulent flow relation coincide. Recommended: 0.01"; - parameter Real CD=0.65 "|Orifice characteristics|Discharge coefficient"; + parameter Real CD=0.65 "Discharge coefficient" + annotation (Dialog(group="Orifice characteristics")); Modelica.SIunits.PressureDifference dpAB[nCom](each nominal=1) "Pressure difference between compartments"; @@ -18,6 +19,22 @@ partial model DoorDiscretized protected parameter Modelica.SIunits.Length dh=hOpe/nCom "Height of each compartment"; + + parameter Medium.ThermodynamicState sta_default=Medium.setState_pTX( + T=Medium.T_default, + p=Medium.p_default, + X=Medium.X_default); + + parameter Modelica.SIunits.Density rho_default=Medium.density(sta_default) + "Density, used to compute fluid volume"; + + parameter Real hAg[nCom](each unit="m2/s2")= + {Modelica.Constants.g_n*(hA - (i - 0.5)*dh) for i in 1:nCom} + "Product g*h_i for each compartment"; + + parameter Real hBg[nCom](each unit="m2/s2")= + {Modelica.Constants.g_n*(hB - (i - 0.5)*dh) for i in 1:nCom} + "Product g*h_i for each compartment"; Modelica.SIunits.AbsolutePressure pA[nCom](each nominal=101325) "Pressure in compartments of room A"; Modelica.SIunits.AbsolutePressure pB[nCom](each nominal=101325) @@ -29,36 +46,30 @@ protected "Volume flow rate through compartment from A to B if positive"; Modelica.SIunits.VolumeFlowRate dVBA_flow[nCom] "Volume flow rate through compartment from B to A if positive"; + Modelica.SIunits.VolumeFlowRate VZerCom_flow = VZer_flow/nCom + "Small flow rate for regularization"; Real m(min=0.5, max=1) "Flow exponent, m=0.5 for turbulent, m=1 for laminar"; Real kVal "Flow coefficient for each compartment, k = V_flow/ dp^m"; Modelica.SIunits.Area dA "Compartment area"; - - parameter Medium.ThermodynamicState sta_default=Medium.setState_pTX( - T=Medium.T_default, - p=Medium.p_default, - X=Medium.X_default); - parameter Modelica.SIunits.Density rho_default=Medium.density(sta_default) - "Density, used to compute fluid volume"; - + Real gaiFlo[nCom] "Gain to sum up the positive flows and set the negative to zero in a differentiable way"; equation dA = A/nCom; for i in 1:nCom loop // pressure drop in each compartment - pA[i] = port_a1.p + rho_a1_inflow*Modelica.Constants.g_n*(hA - (i - 0.5)*dh); - pB[i] = port_a2.p + rho_a2_inflow*Modelica.Constants.g_n*(hB - (i - 0.5)*dh); + pA[i] = port_a1.p + rho_a1_inflow*hAg[i]; + pB[i] = port_a2.p + rho_a2_inflow*hBg[i]; dpAB[i] = pA[i] - pB[i]; v[i] = dV_flow[i]/dA; // assignment of net volume flows - dVAB_flow[i] = dV_flow[i]* - AixLib.Utilities.Math.Functions.smoothHeaviside(x=dV_flow[i], delta= - VZer_flow/nCom) + VZer_flow/nCom; - dVBA_flow[i] = -dV_flow[i] + dVAB_flow[i] + 2*VZer_flow/nCom; + gaiFlo[i] = AixLib.Utilities.Math.Functions.smoothHeaviside(x=dV_flow[i], delta=VZerCom_flow); + dVAB_flow[i] = dV_flow[i] * gaiFlo[i]; + dVBA_flow[i] = -dV_flow[i] * (1-gaiFlo[i]); end for; // add positive and negative flows - VAB_flow = ones(nCom)*dVAB_flow; - VBA_flow = ones(nCom)*dVBA_flow; + VAB_flow = sum(dVAB_flow); + VBA_flow = sum(dVBA_flow); vTop = v[nCom]; vBot = v[1]; annotation ( @@ -102,6 +113,17 @@ using the model for a door that can be open or closed. revisions=" ")); end DoorDiscretized; diff --git a/AixLib/Airflow/Multizone/BaseClasses/ErrorControl.mo b/AixLib/Airflow/Multizone/BaseClasses/ErrorControl.mo index 1f3f2c6734..3b6395d9a7 100644 --- a/AixLib/Airflow/Multizone/BaseClasses/ErrorControl.mo +++ b/AixLib/Airflow/Multizone/BaseClasses/ErrorControl.mo @@ -1,7 +1,9 @@ within AixLib.Airflow.Multizone.BaseClasses; model ErrorControl "Interface that defines parameters for error control" parameter Boolean forceErrorControlOnFlow = true - "Flag to force error control on m_flow. Set to true if interested in flow rate"; + "Flag to force error control on m_flow. Set to true if interested in flow rate" + annotation(Dialog(tab="Advanced")); + annotation (Documentation(info="

This is an interface that defines parameters used for error control. @@ -19,17 +21,24 @@ on the exchanged mass, which can be defined as dm/dt = m_flow.

-By setting enforceErrorControlOnFlow = true, such an equation is imposed +By setting forceErrorControlOnFlow = true, such an equation is imposed by models that extend this class.

", revisions=" ")); end ErrorControl; diff --git a/AixLib/Airflow/Multizone/BaseClasses/PowerLawResistance.mo b/AixLib/Airflow/Multizone/BaseClasses/PowerLawResistance.mo index 9c30fd831f..5dfdb8c63b 100644 --- a/AixLib/Airflow/Multizone/BaseClasses/PowerLawResistance.mo +++ b/AixLib/Airflow/Multizone/BaseClasses/PowerLawResistance.mo @@ -1,20 +1,18 @@ within AixLib.Airflow.Multizone.BaseClasses; partial model PowerLawResistance "Flow resistance that uses the power law" extends AixLib.Fluid.Interfaces.PartialTwoPortInterface( + final allowFlowReversal=true, final m_flow_nominal=rho_default*k*dp_turbulent); extends AixLib.Airflow.Multizone.BaseClasses.ErrorControl; - parameter Modelica.SIunits.Area A "|Orifice characteristics|Area of orifice"; - parameter Real m(min=0.5, max=1) "Flow exponent, m=0.5 for turbulent, m=1 for laminar"; parameter Boolean useDefaultProperties=true "Set to false to use density and viscosity based on actual medium state, rather than using default values" - annotation (Evaluate=true); + annotation(Evaluate=true, Dialog(tab="Advanced")); parameter Modelica.SIunits.PressureDifference dp_turbulent(min=0, displayUnit="Pa") = 0.1 - "Pressure difference where laminar and turbulent flow relation coincide. Recommended = 0.1"; - parameter Modelica.SIunits.Length lWet=sqrt(A) - "Wetted perimeter used for Reynolds number calculation"; + "Pressure difference where laminar and turbulent flow relation coincide. Recommended = 0.1" + annotation(Dialog(tab="Advanced")); parameter Boolean homotopyInitialization = true "= true, use homotopy method" annotation(Evaluate=true, Dialog(tab="Advanced")); @@ -23,7 +21,6 @@ partial model PowerLawResistance "Flow resistance that uses the power law" "Volume flow rate through the component"; Modelica.SIunits.Velocity v(nominal=1) "Average velocity"; Modelica.SIunits.Density rho "Fluid density at port_a"; - Real Re "Reynolds number"; protected constant Real gamma(min=1) = 1.5 @@ -95,8 +92,6 @@ equation dp_turbulent=dp_turbulent); port_a.m_flow = rho*V_flow; - v = V_flow/A; - Re = v*lWet*rho/dynVis; // Isenthalpic state transformation (no storage and no loss of energy) port_a.h_outflow = inStream(port_b.h_outflow); @@ -133,6 +128,25 @@ The model is used as a base for the interzonal air flow models. revisions=" ")); end DoorDiscretizedOpen; diff --git a/AixLib/Airflow/Multizone/DoorDiscretizedOperable.mo b/AixLib/Airflow/Multizone/DoorDiscretizedOperable.mo index 38d78a4677..7b5b5754d2 100644 --- a/AixLib/Airflow/Multizone/DoorDiscretizedOperable.mo +++ b/AixLib/Airflow/Multizone/DoorDiscretizedOperable.mo @@ -5,18 +5,27 @@ model DoorDiscretizedOperable parameter Modelica.SIunits.PressureDifference dpCloRat(min=0, displayUnit="Pa") = 4 - "|Closed aperture rating conditions|Pressure drop at rating condition"; + "Pressure drop at rating condition of closed door" + annotation (Dialog(group="Rating conditions")); + parameter Real CDCloRat(min=0, max=1)=1 - "|Closed aperture rating conditions|Discharge coefficient"; + "Discharge coefficient at rating conditions of closed door" + annotation (Dialog(group="Rating conditions")); parameter Modelica.SIunits.Area LClo(min=0) - "|Closed aperture|Effective leakage area"; + "Effective leakage area of closed door" + annotation (Dialog(group="Closed door")); + + parameter Real CDOpe=0.65 "Discharge coefficient of open door" + annotation (Dialog(group="Open door")); + parameter Real CDClo=0.65 "Discharge coefficient of closed door" + annotation (Dialog(group="Closed door")); - parameter Real CDOpe=0.65 "|Open aperture|Discharge coefficient"; - parameter Real CDClo=0.65 "|Closed aperture|Discharge coefficient"; + parameter Real mOpe = 0.5 "Flow exponent for door of open door" + annotation (Dialog(group="Open door")); + parameter Real mClo= 0.65 "Flow exponent for crack of closed door" + annotation (Dialog(group="Closed door")); - parameter Real mOpe = 0.5 "|Open aperture|Flow exponent for door"; - parameter Real mClo= 0.65 "|Closed aperture|Flow exponent for crack"; Modelica.Blocks.Interfaces.RealInput y(min=0, max=1, unit="1") "Opening signal, 0=closed, 1=open" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}), iconTransformation(extent={{-120,-10},{-100,10}}))); @@ -99,6 +108,10 @@ for a door that is always closed. revisions=" ")); end DoorDiscretizedOperable; diff --git a/AixLib/Airflow/Multizone/EffectiveAirLeakageArea.mo b/AixLib/Airflow/Multizone/EffectiveAirLeakageArea.mo index 5b554e7496..bf8c3669bc 100644 --- a/AixLib/Airflow/Multizone/EffectiveAirLeakageArea.mo +++ b/AixLib/Airflow/Multizone/EffectiveAirLeakageArea.mo @@ -1,18 +1,23 @@ within AixLib.Airflow.Multizone; model EffectiveAirLeakageArea "Effective air leakage area" - extends AixLib.Airflow.Multizone.Orifice( + extends AixLib.Airflow.Multizone.BaseClasses.PowerLawResistance( m=0.65, - final A=CDRat/CD * L * dpRat^(0.5-m)); + final k=L * CDRat * sqrt(2.0/rho_default) * dpRat^(0.5-m)); - parameter Modelica.SIunits.PressureDifference dpRat(min=0, - displayUnit="Pa") = 4 - "|Rating conditions|Pressure drop at rating condition"; - parameter Real CDRat(min=0, max=1)=1 - "|Rating conditions|Discharge coefficient"; + parameter Modelica.SIunits.PressureDifference dpRat( + min=0, + displayUnit="Pa") = 4 "Pressure drop" + annotation (Dialog(group="Rating conditions")); + parameter Real CDRat( + min=0, + max=1) = 1 "Discharge coefficient" + annotation (Dialog(group="Rating conditions")); parameter Modelica.SIunits.Area L(min=0) "Effective leakage area"; - annotation ( Icon(graphics={ +equation + v = V_flow/L; + annotation (Icon(graphics={ Rectangle( extent={{-50,48},{50,-42}}, lineColor={0,0,255}, @@ -69,16 +74,34 @@ defaultComponentName="lea", Documentation(info="

This model describes the one-directional pressure driven -air flow through a crack-like opening. +air flow through a crack-like opening, using the equation +

+

+ V̇ = k Δpm, +

+

+where + is the volume flow rate, +k is a flow coefficient and +m is the flow exponent. +The flow coefficient is +

+

+k = L CD,Rat ΔpRat(0.5-m) (2/ρ0)0.5, +

+

+where +L is the effective air leakage area, +CD,Rat is the discharge coefficient at the reference condition, +ΔpRat is the pressure drop at the rating condition, and +ρ0 is the mass density at the medium default pressure, temperature and humidity.

-The opening is modeled as an orifice. The orifice area -is parameterized by processing the effective air leakage area, the discharge coefficient and pressure drop at a reference condition. -The effective air leakage area can be obtained, for example, +The effective air leakage area L can be obtained, for example, from the ASHRAE fundamentals (ASHRAE, 1997, p. 25.18). In the ASHRAE fundamentals, the effective air leakage area is -based on a reference pressure difference of 4 Pa and a discharge -coefficient of 1. +based on a reference pressure difference of ΔpRat = 4 Pa and a discharge +coefficient of CD,Rat = 1. A similar model is also used in the CONTAM software (Dols and Walton, 2002). Dols and Walton (2002) recommend to use for the flow exponent m=0.6 to m=0.7 if the flow exponent is not @@ -106,10 +129,26 @@ November, 2002. revisions="

-"), - Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, - 100}}))); +")); end Carnot_TEva_HighTemperature; diff --git a/AixLib/Fluid/Chillers/Validation/Carnot_TEva_reverseFlow.mo b/AixLib/Fluid/Chillers/Validation/Carnot_TEva_reverseFlow.mo index 4cb9fcc995..0a5f17e928 100644 --- a/AixLib/Fluid/Chillers/Validation/Carnot_TEva_reverseFlow.mo +++ b/AixLib/Fluid/Chillers/Validation/Carnot_TEva_reverseFlow.mo @@ -109,11 +109,11 @@ equation connect(QCon_flow.y, mCon_flow.u) annotation (Line(points={{61,-40},{80,-40},{ 80,-60},{-92,-60},{-92,14},{-82,14}}, color={0,0,127})); connect(mCon_flow.y, sou1.m_flow_in) - annotation (Line(points={{-59,14},{-50,14}}, color={0,0,127})); + annotation (Line(points={{-59,14},{-52,14}}, color={0,0,127})); connect(chi.port_b1, sin1.ports[1]) annotation (Line(points={{18,6},{30,6},{30, 30},{70,30}}, color={0,127,255})); connect(mEva_flow.y, sou2.m_flow_in) - annotation (Line(points={{71,2},{60,2}}, color={0,0,127})); + annotation (Line(points={{71,2},{62,2}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=3600), __Dymola_Commands(file="modelica://AixLib/Resources/Scripts/Dymola/Fluid/Chillers/Validation/Carnot_TEva_reverseFlow.mos" "Simulate and plot"), @@ -137,7 +137,5 @@ November 25, 2015, by Michael Wetter:
First implementation. -"), - Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, - 100}}))); +")); end Carnot_TEva_reverseFlow; diff --git a/AixLib/Fluid/Examples/FlowSystem/Simplified1.mo b/AixLib/Fluid/Examples/FlowSystem/Simplified1.mo index e0832b0912..8c844590e5 100644 --- a/AixLib/Fluid/Examples/FlowSystem/Simplified1.mo +++ b/AixLib/Fluid/Examples/FlowSystem/Simplified1.mo @@ -16,12 +16,18 @@ The model is simplified: series pressure drop components are aggregated into the ", revisions=" "), -experiment(Tolerance=1e-9, StopTime=5), +experiment(StopTime=50, Tolerance=1e-09), __Dymola_Commands(file= "Resources/Scripts/Dymola/Fluid/Examples/FlowSystem/Simplified1.mos" "Simulate and plot")); diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/GeothermalHeatPumpBase.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/GeothermalHeatPumpBase.mo new file mode 100644 index 0000000000..dac3c53c07 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/GeothermalHeatPumpBase.mo @@ -0,0 +1,311 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.BaseClasses; +partial model GeothermalHeatPumpBase + "Base class of the geothermal heat pump system" + + + replaceable package Medium = AixLib.Media.Water + "Medium model used for hydronic components"; + + parameter Modelica.SIunits.Temperature T_start_cold[5] = 300*ones(5) + "Initial temperature of cold components"; + + parameter Modelica.SIunits.Temperature T_start_warm[5] = 300*ones(5) + "Initial temperature of warm components"; + + parameter Modelica.SIunits.Temperature T_start_hot = 300 + "Initial temperature of high temperature components"; + + + HeatPumps.HeatPumpSimple heatPumpTab(volumeEvaporator( + T_start = T_start_cold[1]), + volumeCondenser(T_start = T_start_warm[5]), + redeclare package Medium = Medium, + tablePower=[0,266.15,275.15,280.15,283.15,293.15; 308.15,3300,3400, + 3500,3700,3800; 323.15,4500,4400,4600,5000,5100], + tableHeatFlowCondenser=[0,266.16,275.15,280.15,283.15,293.15; 308.15, + 9700,11600,13000,14800,16300; 323.15,10000,11200,12900,16700, + 17500]) "Base load energy conversion unit" + annotation (Placement(transformation(extent={{-40,-14},{-4,20}}))); + + replaceable AixLib.Fluid.Interfaces.PartialTwoPortTransport PeakLoadDevice( + redeclare package Medium = Medium) constrainedby + AixLib.Fluid.Interfaces.PartialTwoPort + annotation (Placement(transformation(extent={{108,-56},{120,-44}}))); + + Storage.Storage coldStorage( + layer_HE(T_start=T_start_cold), + layer(T_start=T_start_cold), + redeclare package Medium = Medium, + n=5, + lambda_ins=0.075, + s_ins=0.2, + alpha_in=100, + alpha_out=10, + k_HE=300, + h=1.5, + V_HE=0.02, + A_HE=7, + d=1) "Storage tank for buffering cold demand" + annotation (Placement(transformation(extent={{52,-14},{24,20}}))); + FixedResistances.PressureDrop resistanceColdStorage( + redeclare package Medium = Medium, + m_flow_nominal=0.5, + dp_nominal=15000) "Resistance in evaporator circuit" + annotation (Placement(transformation( + extent={{-6,-7},{6,7}}, + rotation=180, + origin={-34,38}))); + AixLib.Fluid.Sources.Boundary_pT geothFieldSource( + redeclare package Medium = Medium, + nPorts=1, + T=284.15) "Source representing geothermal field" + annotation (Placement(transformation(extent={{-158,-60},{-146,-48}}))); + FixedResistances.PressureDrop resistanceGeothermalSource( + redeclare package Medium = Medium, + m_flow_nominal=0.5, + dp_nominal=15000) "Resistance in geothermal field circuit" + annotation (Placement(transformation( + extent={{-6,-7},{6,7}}, + rotation=0, + origin={-70,-54}))); + FixedResistances.PressureDrop resistanceColdConsumerFlow( + redeclare package Medium = Medium, + m_flow_nominal=0.2, + dp_nominal=10000) "Resistance in cold consumer flow line" + annotation (Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=0, + origin={87,-20}))); + Actuators.Valves.TwoWayQuickOpening valveHeatSink( + redeclare package Medium = Medium, + m_flow_nominal=0.5, + dpValve_nominal=5000) + "Valve connecting geothermal field to the condenser of the heat pump" + annotation (Placement(transformation(extent={{-36,-61},{-24,-47}}))); + Actuators.Valves.TwoWayQuickOpening + valveHeatSource(redeclare package Medium = + Medium, + m_flow_nominal=0.5, + dpValve_nominal=5000) + "Valve connecting geothermal field to the evaporator of the heat pump" annotation (Placement( + transformation( + extent={{-6,-7},{6,7}}, + rotation=90, + origin={-60,1}))); + Storage.Storage heatStorage( + layer_HE(T_start=T_start_warm), + layer(T_start=T_start_warm), + redeclare package Medium = Medium, + n=5, + lambda_ins=0.075, + s_ins=0.2, + alpha_in=100, + alpha_out=10, + k_HE=300, + A_HE=3, + h=1, + V_HE=0.01, + d=1) "Storage tank for buffering heat demand" + annotation (Placement(transformation(extent={{52,-96},{24,-62}}))); + FixedResistances.PressureDrop resistanceHeatStorage( + redeclare package Medium = Medium, + m_flow_nominal=0.5, + dp_nominal=15000) "Resistance in condenser circuit" + annotation (Placement(transformation( + extent={{-6,-7},{6,7}}, + rotation=90, + origin={-18,-78}))); + AixLib.Fluid.Sources.Boundary_pT geothField_sink1(redeclare package Medium = + Medium, nPorts=2) "One of two sinks representing geothermal field" + annotation (Placement(transformation(extent={{-158,20},{-146,32}}))); + FixedResistances.PressureDrop resistanceHeatConsumerFlow( + redeclare package Medium = Medium, + m_flow_nominal=0.2, + dp_nominal=10000) "Resistance in heat consumer flow line" + annotation (Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=0, + origin={87,-50}))); + Actuators.Valves.TwoWayQuickOpening + valveColdStorage(redeclare package Medium = + Medium, + m_flow_nominal=0.5, + dpValve_nominal=5000) + "Valve connecting cold storage to the evaporator of the heat pump" annotation (Placement( + transformation( + extent={{-6,7},{6,-7}}, + rotation=180, + origin={-52,38}))); + Actuators.Valves.TwoWayQuickOpening + valveHeatStorage(redeclare package Medium = + Medium, + m_flow_nominal=0.5, + dpValve_nominal=5000) + "Valve connecting heat storage to the condenser of the heat pump" annotation (Placement( + transformation( + extent={{-6,-7},{6,7}}, + rotation=90, + origin={-18,-63}))); + + AixLib.Fluid.Movers.FlowControlled_dp pumpColdConsumer( + m_flow_nominal=0.05, + redeclare package Medium = Medium, + addPowerToMedium=false, + T_start=T_start_cold[1]) + "Pump moving fluid from storage tank to cold consumers" + annotation (Placement(transformation(extent={{58,-27},{72,-13}}))); + AixLib.Fluid.Movers.FlowControlled_dp pumpHeatConsumer( + m_flow_nominal=0.05, + redeclare package Medium = Medium, + addPowerToMedium=false, + T_start=T_start_warm[5]) + "Pump moving fluid from storage tank to heat consumers" + annotation (Placement(transformation(extent={{58,-57},{72,-43}}))); + FixedResistances.PressureDrop resistanceColdConsumerReturn( + redeclare package Medium = Medium, + m_flow_nominal=0.2, + dp_nominal=10000) "Resistance in cold consumer return line" + annotation (Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=180, + origin={87,32}))); + FixedResistances.PressureDrop resistanceHeatConsumerReturn( + redeclare package Medium = Medium, + m_flow_nominal=0.2, + dp_nominal=10000) "Resistance in heat consumer return line" + annotation (Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=180, + origin={87,-106}))); + AixLib.Fluid.Movers.FlowControlled_dp pumpCondenser( + m_flow_nominal=0.05, + redeclare package Medium = Medium, + addPowerToMedium=false, + T_start=T_start_cold[1]) + "Pump moving fluid from storage tank to condenser of heat pump" + annotation (Placement(transformation( + extent={{-7,7},{7,-7}}, + rotation=180, + origin={-1,-98}))); + AixLib.Fluid.Movers.FlowControlled_dp pumpEvaporator( + m_flow_nominal=0.05, + redeclare package Medium = Medium, + addPowerToMedium=false, + T_start=T_start_cold[1]) + "Pump moving fluid from storage tank to evaporator of heat pump" + annotation (Placement(transformation( + extent={{-7,7},{7,-7}}, + rotation=180, + origin={7,36}))); + AixLib.Fluid.Movers.FlowControlled_dp pumpGeothermalSource( + m_flow_nominal=0.05, + redeclare package Medium = Medium, + addPowerToMedium=false, + T_start=T_start_cold[1]) + "Pump moving fluid from geothermal source into system" annotation ( + Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=0, + origin={-89,-54}))); + Controls.Interfaces.HeatPumpControlBus heatPumpControlBus + annotation (Placement(transformation(extent={{-21,60},{20,98}}))); +equation + + + + connect(resistanceGeothermalSource.port_b, valveHeatSink.port_a) annotation ( + Line( + points={{-64,-54},{-36,-54}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(valveHeatSource.port_a, valveHeatSink.port_a) annotation (Line( + points={{-60,-5},{-60,-54},{-36,-54}}, + color={0,127,255}, + smooth=Smooth.None)); + + connect(resistanceColdStorage.port_b, valveColdStorage.port_a) annotation ( + Line( + points={{-40,38},{-46,38}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(resistanceHeatStorage.port_b, valveHeatStorage.port_a) annotation ( + Line( + points={{-18,-72},{-18,-69}}, + color={0,127,255}, + smooth=Smooth.None)); + + connect(coldStorage.port_a_consumer, pumpColdConsumer.port_a) annotation ( + Line(points={{38,-14},{38,-14},{38,-20},{58,-20}}, color={0,127,255})); + connect(pumpColdConsumer.port_b, resistanceColdConsumerFlow.port_a) + annotation (Line(points={{72,-20},{80,-20}}, color={0,127,255})); + connect(pumpHeatConsumer.port_b, resistanceHeatConsumerFlow.port_a) + annotation (Line(points={{72,-50},{80,-50}}, color={0,127,255})); + connect(valveHeatSource.port_b, heatPumpTab.port_a_source) annotation (Line( + points={{-60,7},{-60,14.9},{-38.2,14.9}}, color={0,127,255})); + connect(valveColdStorage.port_b, heatPumpTab.port_a_source) annotation (Line( + points={{-58,38},{-62,38},{-62,14.9},{-38.2,14.9}}, color={0,127,255})); + connect(valveHeatSink.port_b, heatPumpTab.port_a_sink) annotation (Line( + points={{-24,-54},{-16,-54},{-5.8,-54},{-5.8,-8.9}}, color={0,127,255})); + connect(valveHeatStorage.port_b, heatPumpTab.port_a_sink) annotation (Line( + points={{-18,-57},{-18,-54},{-5.8,-54},{-5.8,-8.9}}, color={0,127,255})); + connect(heatPumpTab.port_b_sink, geothField_sink1.ports[1]) annotation (Line( + points={{-5.8,14.9},{2,14.9},{2,27.2},{-146,27.2}}, + color={0,127,255})); + connect(heatStorage.port_a_heatGenerator, heatPumpTab.port_b_sink) + annotation (Line(points={{26.24,-64.04},{10,-64.04},{10,14.9},{-5.8,14.9}}, + color={0,127,255})); + connect(heatStorage.port_b_consumer, pumpHeatConsumer.port_a) annotation ( + Line(points={{38,-62},{38,-62},{38,-50},{58,-50}}, color={0,127,255})); + connect(resistanceColdConsumerReturn.port_b, coldStorage.port_b_consumer) + annotation (Line(points={{80,32},{38,32},{38,20}}, color={0,127,255})); + connect(resistanceHeatConsumerReturn.port_b, heatStorage.port_a_consumer) + annotation (Line(points={{80,-106},{80,-106},{38,-106},{38,-96}}, color={0,127, + 255})); + connect(heatPumpTab.port_b_source, coldStorage.port_b_heatGenerator) + annotation (Line(points={{-38.2,-8.9},{-38.2,-24},{18,-24},{18,-10.6},{26.24, + -10.6}}, color={0,127,255})); + connect(pumpEvaporator.port_b, resistanceColdStorage.port_a) annotation (Line( + points={{-8.88178e-016,36},{-8.88178e-016,38},{-28,38}}, color={0,127,255})); + connect(coldStorage.port_a_heatGenerator, pumpEvaporator.port_a) annotation ( + Line(points={{26.24,17.96},{20,17.96},{20,36},{14,36}}, color={0,127,255})); + connect(heatStorage.port_b_heatGenerator, pumpCondenser.port_a) annotation ( + Line(points={{26.24,-92.6},{16,-92.6},{16,-98},{6,-98}}, color={0,127,255})); + connect(pumpCondenser.port_b, resistanceHeatStorage.port_a) annotation (Line( + points={{-8,-98},{-18,-98},{-18,-84}}, color={0,127,255})); + connect(pumpGeothermalSource.port_b, resistanceGeothermalSource.port_a) + annotation (Line(points={{-82,-54},{-79,-54},{-76,-54}}, color={0,127,255})); + connect(pumpGeothermalSource.port_a, geothFieldSource.ports[1]) + annotation (Line(points={{-96,-54},{-146,-54}}, color={0,127,255})); + connect(heatPumpTab.OnOff, heatPumpControlBus.onOff) annotation (Line(points={ + {-22,16.6},{-22,16.6},{-22,60},{-0.3975,60},{-0.3975,79.095}}, color={ + 255,0,255}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(resistanceHeatConsumerFlow.port_b, PeakLoadDevice.port_a) annotation ( + Line(points={{94,-50},{102,-50},{108,-50}}, color={0,127,255})); + connect(geothField_sink1.ports[2], heatPumpTab.port_b_source) annotation ( + Line(points={{-146,24.8},{-92,24.8},{-92,-8.9},{-38.2,-8.9}}, color={0, + 127,255})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-160, + -120},{160,80}})), Icon(coordinateSystem( + preserveAspectRatio=false, extent={{-160,-120},{160,80}})), + experiment(StopTime=3600, Interval=10), + __Dymola_experimentSetupOutput( + states=false, + derivatives=false, + inputs=false, + auxiliaries=false), + Documentation(info=" +

Base class of an example demonstrating the use of a heat pump connected to +two storages and a geothermal source. A replaceable model is connected in the +flow line of the heating circuit. A peak load device can be added here.

+", revisions=" + +")); +end GeothermalHeatPumpBase; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/GeothermalHeatPumpControlledBase.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/GeothermalHeatPumpControlledBase.mo new file mode 100644 index 0000000000..e2e8093cba --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/GeothermalHeatPumpControlledBase.mo @@ -0,0 +1,72 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.BaseClasses; +model GeothermalHeatPumpControlledBase + "Example of a geothermal heat pump system with controllers" + extends BaseClasses.GeothermalHeatPumpBase; + Modelica.Blocks.Sources.RealExpression getTStorageUpper(y=heatStorage.layer[ + heatStorage.n].T) "Gets the temperature of upper heat storage layer" + annotation (Placement(transformation(extent={{-160,58},{-140,78}}))); + Modelica.Blocks.Sources.RealExpression getTStorageLower(y=coldStorage.layer[1].T) + "Gets the temperature of lower cold storage layer" + annotation (Placement(transformation(extent={{-160,42},{-140,62}}))); + Modelica.Blocks.Interfaces.RealOutput coldStorageTemperature( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=0, + start=T_start_cold[1]) "Temperature in the cold storage" annotation ( + Placement(transformation( + origin={-134,-120}, + extent={{10,-10},{-10,10}}, + rotation=90), iconTransformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={-100,-110}))); + Modelica.Blocks.Interfaces.RealOutput heatStorageTemperature( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=0, + start=T_start_warm[heatStorage.n]) "Temperature in the heat storage" + annotation (Placement(transformation( + origin={-100,-120}, + extent={{10,-10},{-10,10}}, + rotation=90), iconTransformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={-140,-110}))); + Modelica.Blocks.Interfaces.RealOutput chemicalEnergyFlowRate(final unit="W") + "Flow of primary (chemical) energy into boiler " annotation (Placement( + transformation( + extent={{-10,10},{10,-10}}, + rotation=270, + origin={-71.5,-119.5}), iconTransformation(extent={{10,-10},{-10,10}}, + rotation=90, + origin={-20.5,-109}))); + Modelica.Blocks.Interfaces.RealOutput heatPumpPower(final unit="W") + "Electrical power of the heat pump" annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=270, + origin={-45.5,-119.5}), iconTransformation(extent={{10,-10},{-10,10}}, + rotation=90, + origin={-60.5,-109}))); + inner Modelica.Fluid.System system + annotation (Placement(transformation(extent={{140,60},{160,80}}))); +equation + connect(heatPumpTab.Power, heatPumpPower) annotation (Line(points={{-22,-12.3}, + {-22,-12.3},{-22,-40},{-45.5,-40},{-45.5,-119.5}}, color={0,0,127})); + connect(getTStorageLower.y, coldStorageTemperature) annotation (Line(points={ + {-139,52},{-134,52},{-134,-120}}, color={0,0,127})); + connect(getTStorageUpper.y, heatStorageTemperature) annotation (Line(points={ + {-139,68},{-132,68},{-120,68},{-120,-88},{-100,-88},{-100,-120}}, + color={0,0,127})); + annotation (experiment(StopTime=86400, Interval=10), Documentation(info=" +

Base class of an example demonstrating the use of a heat pump connected to two storages and a geothermal source. A replaceable model is connected in the flow line of the heating circuit. A peak load device can be added here. This model also includes basic controllers.

+", revisions=" + +")); +end GeothermalHeatPumpControlledBase; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/package.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/package.mo new file mode 100644 index 0000000000..a4f4ff87ef --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/package.mo @@ -0,0 +1,4 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump; +package BaseClasses "Contains base classes required for the examples of geothermal heat pump systems" +extends Modelica.Icons.BasesPackage; +end BaseClasses; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/package.order b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/package.order new file mode 100644 index 0000000000..557109f668 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/BaseClasses/package.order @@ -0,0 +1,2 @@ +GeothermalHeatPumpBase +GeothermalHeatPumpControlledBase diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/BoilerBase.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/BoilerBase.mo new file mode 100644 index 0000000000..0a7fe7ac4f --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/BoilerBase.mo @@ -0,0 +1,39 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Components.BaseClasses; +partial model BoilerBase + "Base class containing the simple boiler model as peak load device" + extends Interfaces.PartialTwoPort; + + BoilerCHP.Boiler boiler( + redeclare final package Medium = Medium, + m_flow_nominal=0.5, + paramHC=AixLib.DataBase.Boiler.DayNightMode.HeatingCurves_Vitotronic_Day23_Night10(), + paramBoiler=AixLib.DataBase.Boiler.General.Boiler_Vitogas200F_11kW()) + "Peak load energy conversion unit" + annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=180, + origin={0,0}))); + Modelica.Blocks.Sources.RealExpression chemicalEnergyFlowRateSource( + y=boiler.internalControl.ControlerHeater.y) + "Outputs the chemical energy flow rate of the boiler" + annotation (Placement(transformation(extent={{-60,-66},{-40,-46}}))); +equation + connect(port_a, boiler.port_a) + annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); + connect(boiler.port_b, port_b) + annotation (Line(points={{10,0},{100,0}}, color={0,127,255})); + annotation (Documentation(info=" +

Base class containing the +AixLib.Fluid.BoilerCHP.Boiler +to be used in the examples of +AixLib.Fluid.Examples.GeothermalHeatPump. +

+", revisions=" + +")); +end BoilerBase; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/package.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/package.mo new file mode 100644 index 0000000000..b07bc2de35 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/package.mo @@ -0,0 +1,5 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Components; +package BaseClasses "Contains base classes of the component models in this example" + extends Modelica.Icons.BasesPackage; + +end BaseClasses; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/package.order b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/package.order new file mode 100644 index 0000000000..1cc83cfa03 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BaseClasses/package.order @@ -0,0 +1 @@ +BoilerBase diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BoilerExternalControl.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BoilerExternalControl.mo new file mode 100644 index 0000000000..21b5e542a4 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BoilerExternalControl.mo @@ -0,0 +1,44 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Components; +model BoilerExternalControl + "Model containing the simple boiler model and the bus connector for external control" + extends BaseClasses.BoilerBase; + Controls.Interfaces.BoilerControlBus boilerControlBus + annotation (Placement(transformation(extent={{-20,80},{20,118}}))); +equation + connect(boiler.TAmbient, boilerControlBus.TAmbient) annotation (Line(points={ + {-7,7},{-20,7},{-20,60},{0.1,60},{0.1,99.095}}, color={0,0,127}), + Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(boiler.switchToNightMode, boilerControlBus.switchToNightMode) + annotation (Line(points={{-7,4},{-24,4},{-24,64},{0.1,64},{0.1,99.095}}, + color={255,0,255}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(boiler.isOn, boilerControlBus.isOn) annotation (Line(points={{5,-9},{ + 5,-22},{-24,-22},{-24,64},{0.1,64},{0.1,99.095}}, color={255,0,255}), + Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(chemicalEnergyFlowRateSource.y, boilerControlBus.chemicalEnergyFlowRate) + annotation (Line(points={{-39,-56},{-20,-56},{-20,60},{0.1,60},{0.1,99.095}}, + color={0,0,127}), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + annotation (Documentation(revisions=" + +", info=" +

Model containing the simple boiler model +AixLib.Fluid.BoilerCHP.Boiler +and interfaces for external control.

+")); +end BoilerExternalControl; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BoilerStandAlone.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BoilerStandAlone.mo new file mode 100644 index 0000000000..8a6fc649f2 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/BoilerStandAlone.mo @@ -0,0 +1,49 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Components; +model BoilerStandAlone + "Model containing the simple boiler model and all required inputs as dummies" + extends BaseClasses.BoilerBase; + Modelica.Blocks.Sources.BooleanConstant falseSource(k=false) + "Outputs a false signal" + annotation (Placement(transformation(extent={{-6,6},{6,-6}}, + rotation=0, + origin={-94,40}))); + Modelica.Blocks.Sources.Constant ambientTemperature(k=273.15 + 10) + "Dummy for ambient temperature" + annotation (Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=0, + origin={-94,66}))); + Modelica.Blocks.Sources.BooleanConstant trueSource "Outputs a true signal" + annotation (Placement(transformation(extent={{-6,6},{6,-6}}, + rotation=180, + origin={94,-34}))); + Modelica.Blocks.Interfaces.RealOutput chemicalEnergyFlowRate(final unit="W") + "Flow of primary (chemical) energy into boiler " annotation (Placement( + transformation( + extent={{-10,10},{10,-10}}, + rotation=270, + origin={0.5,-109.5}), iconTransformation(extent={{10,-10},{-10,10}}, + rotation=90, + origin={-20.5,-109}))); +equation + connect(ambientTemperature.y, boiler.TAmbient) annotation (Line(points={{-87.4, + 66},{-74,66},{-60,66},{-60,7},{-7,7}}, color={0,0,127})); + connect(falseSource.y, boiler.switchToNightMode) annotation (Line(points={{-87.4, + 40},{-66,40},{-66,4},{-7,4}}, color={255,0,255})); + connect(trueSource.y, boiler.isOn) + annotation (Line(points={{87.4,-34},{5,-34},{5,-9}}, color={255,0,255})); + connect(chemicalEnergyFlowRateSource.y,chemicalEnergyFlowRate) annotation ( + Line(points={{-39,-56},{0.5,-56},{0.5,-109.5}}, color={0,0,127})); + annotation (Documentation(revisions=" + +", info=" +

Model containing the simple boiler model +AixLib.Fluid.BoilerCHP.Boiler +and dummy inputs.

+")); +end BoilerStandAlone; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/package.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/package.mo new file mode 100644 index 0000000000..d233869e8e --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/package.mo @@ -0,0 +1,4 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump; +package Components "Contains variants of the example with connectors to be used in system models." +extends Modelica.Icons.VariantsPackage; +end Components; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Components/package.order b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/package.order new file mode 100644 index 0000000000..e392d93c6e --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Components/package.order @@ -0,0 +1,3 @@ +BoilerExternalControl +BoilerStandAlone +BaseClasses diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Control/PumpControlBus.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/PumpControlBus.mo new file mode 100644 index 0000000000..217f32b4c4 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/PumpControlBus.mo @@ -0,0 +1,30 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Control; +expandable connector PumpControlBus + "Bus for all the pump set points in the geothermal heat pump" + extends Modelica.Icons.SignalBus; + + Modelica.SIunits.Pressure p_pumpGeothermalSource + "Pressure set point of pump moving fluid from geothermal source into system"; + Modelica.SIunits.Pressure p_pumpCondenser + "Pressure set point of pump moving fluid from storage tank to condenser of heat pump"; + Modelica.SIunits.Pressure p_pumpEvaporator + "Pressure set point of pump moving fluid from storage tank to evaporator of heat pump"; + Modelica.SIunits.Pressure p_pumpColdConsumer + "Pressure set point of pump moving fluid from storage tank to cold consumers"; + Modelica.SIunits.Pressure p_pumpHeatConsumer + "Pressure set point of pump moving fluid from storage tank to heat consumers"; + + annotation ( + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Definition of a control bus that includes all the pressure set points required +for +AixLib.Fluid.Examples.GeothermalHeatPump.Components.GeothermalHeatPump. +

+", revisions=" +

March 31, 2017, by Marc Baranski:

+

First implementation.

+")); +end PumpControlBus; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Control/ValveControlBus.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/ValveControlBus.mo new file mode 100644 index 0000000000..565d471ec9 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/ValveControlBus.mo @@ -0,0 +1,41 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Control; +expandable connector ValveControlBus + "Bus for all the valve positions in the geothermal heat pump" + extends Modelica.Icons.SignalBus; + + Real opening_valveHeatSource + "Rated value of the valve connecting the geothermal field to evaporator (0: closed, 1: open)"; + Real opening_valveColdStorage + "Rated value of the valve connecting the cold storage to evaporator (0: closed, 1: open)"; + + Real opening_valveHeatSink + "Rated value of the valve connecting the geothermal field to condenser (0: closed, 1: open)"; + Real opening_valveHeatStorage + "Rated value of the valve connecting the heat storage to condenser (0: closed, 1: open)"; + + Real feedback_valveHeatSource + "Feedback of the valve connecting the geothermal field to evaporator (0: closed, 1: open)"; + Real feedback_valveColdStorage + "Feedback of the valve connecting the cold storage to evaporator (0: closed, 1: open)"; + + Real feedback_valveHeatSink + "Feedback of the valve connecting the geothermal field to condenser (0: closed, 1: open)"; + Real feedback_valveHeatStorage + "Feedback of the valve connecting the heat storage to condenser (0: closed, 1: open)"; + + + annotation ( + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+Definition of a standard control bus that includes all the pressure set points +required for + +AixLib.Fluid.Examples.GeothermalHeatPump.Components.GeothermalHeatPump. +

+", revisions=" +

March 31, 2017, by Marc Baranski:

+

First implementation.

+")); +end ValveControlBus; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Control/geothermalFieldController.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/geothermalFieldController.mo new file mode 100644 index 0000000000..eacbb3684a --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/geothermalFieldController.mo @@ -0,0 +1,163 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump.Control; +model geothermalFieldController + "Controls the heat exchange with a heat or cold source by setting two valves" + + parameter Modelica.SIunits.Temperature temperature_low=273.15 + 40 + "Lower temperature threshold for hysteresis"; + parameter Modelica.SIunits.Temperature temperature_high=273.15 + 45 + "Upper temperature threshold for hysteresis"; + parameter Boolean warmSide=true + "true = hysteresis with negation = for warm side"; + parameter Modelica.SIunits.Time delayTime=10 + "Time delay between opening of valve 1 and 2"; + + Modelica.Blocks.Logical.Switch switch + "Switches between fully opened and fully closed" + annotation (Placement(transformation(extent={{-28,-6},{-16,6}}))); + + Modelica.Blocks.Nonlinear.FixedDelay fixedDelay(delayTime=delayTime) + "Delay that prevents that both valves react simultaneously" + annotation (Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=0, + origin={31,-45}))); + Modelica.Blocks.Math.Add add(k1=-1) + "If one valve is fully openend, the other one must be fully closed" + annotation (Placement( + transformation( + extent={{-7,-6.5},{7,6.5}}, + rotation=0, + origin={5,-44.5}))); + Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=temperature_low, uHigh= + temperature_high) "Checks if the temperature is too high or too low" + annotation (Placement(transformation(extent={{-78,-6},{-66,6}}))); + Modelica.Blocks.Sources.Constant approxFullyClosed(k=0.00001) + "Used for closing a valve almost fully" annotation (Placement( + transformation( + extent={{6,-6},{-6,6}}, + rotation=180, + origin={-52,-25}))); + Modelica.Blocks.Sources.Constant approxFullyOpened(k=0.99999) + "Used for opening a valve almost fully" annotation (Placement( + transformation( + extent={{6,-6},{-6,6}}, + rotation=180, + origin={-50,26}))); + Modelica.Blocks.Interfaces.RealInput temperature( + final quantity="ThermodynamicTemperature", + final unit="K", + displayUnit="degC", + min=0) "Temperature of the controlled flow" annotation (Placement( + transformation( + origin={-100,0}, + extent={{14,-14},{-14,14}}, + rotation=180))); + Modelica.Blocks.Interfaces.RealOutput valveOpening1(min=0, max=1) + "Actuator position (0: closed, 1: open)" annotation (Placement( + transformation( + extent={{-13,-13},{13,13}}, + rotation=0, + origin={99,40}), iconTransformation( + extent={{-12,-12},{12,12}}, + rotation=0, + origin={112,60}))); + Modelica.Blocks.Interfaces.RealOutput valveOpening2(min=0, max=1) + "Actuator position (0: closed, 1: open)" annotation (Placement( + transformation( + extent={{-13,-13},{13,13}}, + rotation=0, + origin={99,-40}), iconTransformation( + extent={{-12,-12},{12,12}}, + rotation=0, + origin={112,-60}))); + Modelica.Blocks.Logical.Switch switch1 + "Switches between delayed and direct opening" + annotation (Placement(transformation(extent={{56,34},{68,46}}))); + Modelica.Blocks.Logical.Switch switch2 + "Switches between delayed and direct opening" + annotation (Placement(transformation(extent={{60,-46},{72,-34}}))); + Modelica.Blocks.Nonlinear.FixedDelay fixedDelay1( + delayTime=delayTime) + "Delay that prevents that both valves react simultaneously" + annotation (Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=0, + origin={29,51}))); + Modelica.Blocks.Sources.Constant fullOpening(k=1) + "Used for opening a valve fully" annotation (Placement(transformation( + extent={{6,-6},{-6,6}}, + rotation=180, + origin={-26,-48}))); +equation + + connect(approxFullyOpened.y, switch.u1) annotation (Line(points={{-43.4,26},{ + -38,26},{-38,4.8},{-29.2,4.8}}, color={0,0,127})); + connect(switch.y, add.u1) annotation (Line(points={{-15.4,0},{-15.4,0},{-8,0}, + {-8,-40.6},{-3.4,-40.6}}, + color={0,0,127})); + connect(hysteresis.y, switch.u2) + annotation (Line(points={{-65.4,0},{-65.4,0},{-29.2,0}}, + color={255,0,255})); + connect(temperature, hysteresis.u) + annotation (Line(points={{-100,0},{-79.2,0}}, color={0,0,127})); + connect(switch1.y, valveOpening1) + annotation (Line(points={{68.6,40},{99,40}}, color={0,0,127})); + connect(approxFullyClosed.y, switch.u3) annotation (Line(points={{-45.4,-25}, + {-44,-25},{-44,-4.8},{-29.2,-4.8}}, color={0,0,127})); + connect(switch2.y, valveOpening2) + annotation (Line(points={{72.6,-40},{99,-40}}, color={0,0,127})); + connect(add.y, fixedDelay.u) annotation (Line(points={{12.7,-44.5},{12.7,-45}, + {22.6,-45}}, color={0,0,127})); + connect(hysteresis.y, switch1.u2) annotation (Line(points={{-65.4,0},{-64,0}, + {-64,2},{-64,40},{54.8,40}}, color={255,0,255})); + connect(hysteresis.y, switch2.u2) annotation (Line(points={{-65.4,0},{-64,0}, + {-64,-6},{-64,-60},{44,-60},{44,-40},{58.8,-40}}, color={255,0,255})); + connect(fixedDelay.y, switch2.u3) annotation (Line(points={{38.7,-45},{48.35, + -45},{48.35,-44.8},{58.8,-44.8}}, color={0,0,127})); + connect(add.y, switch2.u1) annotation (Line(points={{12.7,-44.5},{12.7,-30},{ + 22,-30},{58.8,-30},{58.8,-35.2}}, color={0,0,127})); + connect(switch1.u1, fixedDelay1.y) annotation (Line(points={{54.8,44.8},{54.8, + 51},{36.7,51}}, color={0,0,127})); + connect(fixedDelay1.u, switch.y) annotation (Line(points={{20.6,51},{-16,51}, + {-16,0},{-15.4,0}}, color={0,0,127})); + connect(switch1.u3, switch.y) annotation (Line(points={{54.8,35.2},{-16,35.2}, + {-16,0},{-15.4,0}}, color={0,0,127})); + connect(fullOpening.y, add.u2) annotation (Line(points={{-19.4,-48},{-3.4,-48}, + {-3.4,-48.4}}, color={0,0,127})); + annotation (Placement(transformation(extent={{-42,-4},{-34,4}})), + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100, + -100},{100,100}}), graphics={ + Text( + textString="Edit Here", + extent={{-118,36},{-114,12}}, + lineColor={217,67,180}, + pattern=LinePattern.Dot, + lineThickness=1)}), + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, + {100,100}}), graphics={Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,255}, + fillColor={255,255,170}, + fillPattern=FillPattern.Solid), + Text(extent={{ + -56,28},{64,-24}}, + lineColor = {175, 175, 175}, textString = "%name")}), + Documentation(info=" +

+This is a model of a controller, which manipulates the opening of two valves. If +the measured temperature drops below the lower thrshold, the first valve is +fully closed and the second valve is fully opened. The opposite constellation +applies if the temperature exceeds the higher threshold. To avoid zero mass flow +rates, the opening is only close 0. Additionally, a delay can be set so that the +valves do not react simultaneously (opened valve is closed first). It can be +used in +AixLib.Fluid.Examples.GeothermalHeatPump.Components.GeothermalHeatPump. +

+", revisions=" + +")); +end geothermalFieldController; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Control/package.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/package.mo new file mode 100644 index 0000000000..6c1dacbbf8 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/package.mo @@ -0,0 +1,39 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump; +package Control "Contains controllers that are specific for this example" + +annotation (Icon(graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + origin={0,35.1488}, + fillColor={255,255,255}, + extent={{-30.0,-20.1488},{30.0,20.1488}}), + Rectangle( + origin={0,-34.8512}, + fillColor={255,255,255}, + extent={{-30.0,-20.1488},{30.0,20.1488}}), + Line( + origin={-51.25,0}, + points={{21.25,-35.0},{-13.75,-35.0},{-13.75,35.0},{6.25,35.0}}), + Polygon( + origin={-40,35}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{10.0,0.0},{-5.0,5.0},{-5.0,-5.0}}), + Line( + origin={51.25,0}, + points={{-21.25,35.0},{13.75,35.0},{13.75,-35.0},{-6.25,-35.0}}), + Polygon( + origin={40,-35}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-10.0,0.0},{5.0,5.0},{5.0,-5.0}})})); +end Control; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/Control/package.order b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/package.order new file mode 100644 index 0000000000..49a3d768b6 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/Control/package.order @@ -0,0 +1,3 @@ +PumpControlBus +ValveControlBus +geothermalFieldController diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/GeothermalHeatPump.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/GeothermalHeatPump.mo new file mode 100644 index 0000000000..c397cf74e5 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/GeothermalHeatPump.mo @@ -0,0 +1,137 @@ +within AixLib.Fluid.Examples.GeothermalHeatPump; +model GeothermalHeatPump "Example of a geothermal heat pump system" + + extends Modelica.Icons.Example; + + extends + AixLib.Fluid.Examples.GeothermalHeatPump.BaseClasses.GeothermalHeatPumpControlledBase( + redeclare AixLib.Fluid.Examples.GeothermalHeatPump.Components.BoilerStandAlone PeakLoadDevice(redeclare + package Medium = Medium)); + + Sources.Boundary_pT coldConsumerFlow(redeclare package Medium = Medium, + nPorts=1) annotation (Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=180, + origin={154,-20}))); + Sources.Boundary_pT heatConsumerFlow(redeclare package Medium = Medium, + nPorts=1) "Sink representing heat consumer" + annotation (Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=180, + origin={154,-50}))); + Sources.Boundary_pT heatConsumerReturn(redeclare package Medium = Medium, + nPorts=1, + T=303.15) "Source representing heat consumer" + annotation (Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=180, + origin={154,-106}))); + Sources.Boundary_pT coldConsumerReturn(redeclare package Medium = Medium, + nPorts=1, + T=290.15) "Source representing cold consumer" + annotation (Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=180, + origin={154,32}))); + Modelica.Blocks.Sources.Constant pressureDifference(k=20000) + "Pressure difference used for all pumps" annotation ( + Placement(transformation( + extent={{-6,-6},{6,6}}, + rotation=180, + origin={154,6}))); + Controls.HeatPump.HPControllerOnOff hPControllerOnOff(bandwidth=5) + "Controls the temperature in the heat storage by switching the heat pump on or off" + annotation (Placement(transformation(extent={{-78,62},{-58,82}}))); + Modelica.Blocks.Sources.Constant TStorageSet(k=273.15 + 35) + "Set point of upper heat storage temperature" + annotation (Placement(transformation(extent={{-160,0},{-148,12}}))); + Control.geothermalFieldController geothermalFieldControllerCold( + temperature_low=273.15 + 6, temperature_high=273.15 + 8) + "Controls the heat exchange with the geothermal field and the heat storage" + annotation (Placement(transformation(extent={{-100,28},{-84,44}}))); + Control.geothermalFieldController geothermalFieldControllerHeat + "Controls the heat exchange with the geothermal field and the heat storage" + annotation (Placement(transformation(extent={{-100,-34},{-84,-18}}))); +equation + connect(resistanceColdConsumerFlow.port_b,coldConsumerFlow. ports[1]) + annotation (Line(points={{94,-20},{94,-20},{148,-20}}, color={0,127,255})); + connect(pressureDifference.y, pumpColdConsumer.dp_in) annotation (Line(points={{147.4,6}, + {147.4,6},{64.86,6},{64.86,-11.6}}, color={0,0,127})); + connect(pressureDifference.y, pumpHeatConsumer.dp_in) annotation (Line(points={{147.4,6}, + {147.4,6},{56,6},{56,-36},{64.86,-36},{64.86,-41.6}}, color={0, + 0,127})); + connect(resistanceColdConsumerReturn.port_a,coldConsumerReturn. ports[1]) + annotation (Line(points={{94,32},{114,32},{148,32}}, + color={0,127,255})); + connect(resistanceHeatConsumerReturn.port_a,heatConsumerReturn. ports[1]) + annotation (Line(points={{94,-106},{94,-106},{148,-106}}, color={0,127,255})); + connect(pressureDifference.y, pumpEvaporator.dp_in) annotation (Line(points={{147.4,6}, + {147.4,6},{64,6},{64,54},{7.14,54},{7.14,44.4}}, color={0,0, + 127})); + connect(pressureDifference.y, pumpCondenser.dp_in) annotation (Line(points={{147.4,6}, + {56,6},{56,-36},{-0.86,-36},{-0.86,-89.6}}, color={0,0,127})); + connect(pumpGeothermalSource.dp_in,pressureDifference. y) annotation (Line( + points={{-89.14,-45.6},{-89.14,-36},{56,-36},{56,6},{147.4,6}},color={0, + 0,127})); + connect(PeakLoadDevice.port_b,heatConsumerFlow. ports[1]) annotation (Line( + points={{120,-50},{120,-50},{148,-50}}, color={0,127,255})); + connect(TStorageSet.y,hPControllerOnOff. T_meas) annotation (Line(points={{-147.4, + 6},{-132,6},{-132,76},{-78,76}}, color={0,0,127})); + connect(getTStorageUpper.y, hPControllerOnOff.T_set) annotation (Line(points= + {{-139,68},{-139,68},{-116,68},{-78,68}}, color={0,0,127})); + connect(hPControllerOnOff.heatPumpControlBus, heatPumpControlBus) annotation ( + Line( + points={{-58.05,72.05},{-44,72.05},{-44,79},{-0.5,79}}, + color={255,204,51}, + thickness=0.5), Text( + string="%second", + index=1, + extent={{6,3},{6,3}})); + connect(PeakLoadDevice.chemicalEnergyFlowRate, chemicalEnergyFlowRate) + annotation (Line(points={{112.77,-56.54},{112.77,-118},{-26,-118},{-26,-100}, + {-71.5,-100},{-71.5,-119.5}}, color={0,0,127})); + connect(getTStorageLower.y,geothermalFieldControllerCold. temperature) + annotation (Line(points={{-139,52},{-122,52},{-108,52},{-108,36},{-100,36}}, + color={0,0,127})); + connect(geothermalFieldControllerCold.valveOpening1, valveColdStorage.y) + annotation (Line(points={{-83.04,40.8},{-82,40.8},{-82,40},{-82,52},{-82,54}, + {-52,54},{-52,46.4}}, color={0,0,127})); + connect(geothermalFieldControllerCold.valveOpening2, valveHeatSource.y) + annotation (Line(points={{-83.04,31.2},{-82,31.2},{-82,1},{-68.4,1}}, color= + {0,0,127})); + connect(getTStorageUpper.y,geothermalFieldControllerHeat. temperature) + annotation (Line(points={{-139,68},{-120,68},{-120,-26},{-100,-26}}, color= + {0,0,127})); + connect(valveHeatSink.y, geothermalFieldControllerHeat.valveOpening1) + annotation (Line(points={{-30,-45.6},{-30,-45.6},{-30,-32},{-30,-21.2},{-83.04, + -21.2}}, color={0,0,127})); + connect(geothermalFieldControllerHeat.valveOpening2, valveHeatStorage.y) + annotation (Line(points={{-83.04,-30.8},{-56,-30.8},{-56,-63},{-26.4,-63}}, + color={0,0,127})); + annotation (experiment(StopTime=86400, Interval=10), Documentation(revisions=" + +", info=" +

Simple stand-alone model of a combined heat and cold supply system. +The geothermal heat pump can either transport heat

+ +

In the flow line of the heating circuit a boiler is connected as a peak load device. +Consumers are modeled as sinks are sources with a constant temperature.

+"), + Diagram(coordinateSystem(extent={{-160,-120},{160,80}})), + Icon(coordinateSystem(extent={{-160,-120},{160,80}}))); +end GeothermalHeatPump; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/package.mo b/AixLib/Fluid/Examples/GeothermalHeatPump/package.mo new file mode 100644 index 0000000000..a6270a7b89 --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/package.mo @@ -0,0 +1,15 @@ +within AixLib.Fluid.Examples; +package GeothermalHeatPump "Contains examples of hydraulic systems based on geothermal heat pumps" +extends Modelica.Icons.ExamplesPackage; + +annotation (Documentation(info=" +

Package containing both a stand-alone example and a component demonstrating the use of a heat pump connected to two storages and a geothermal source.

+", revisions=" + +")); +end GeothermalHeatPump; diff --git a/AixLib/Fluid/Examples/GeothermalHeatPump/package.order b/AixLib/Fluid/Examples/GeothermalHeatPump/package.order new file mode 100644 index 0000000000..e4ce3c2b1c --- /dev/null +++ b/AixLib/Fluid/Examples/GeothermalHeatPump/package.order @@ -0,0 +1,4 @@ +GeothermalHeatPump +Components +Control +BaseClasses diff --git a/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDp.mo b/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDp.mo index 16368e2198..a6ce272f35 100644 --- a/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDp.mo +++ b/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDp.mo @@ -46,9 +46,7 @@ equation connect(resParallel[1].port_a, sou.ports[1]) annotation (Line(points={{-10,0},{-20,0},{-40,0}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" + annotation ( Documentation(revisions=" ", info="

-Example model that demonstrates how translation statistics -depend on the type of boundary conditions, -the parallel or series configuration of the components +Example model that demonstrates how translation statistics +depend on the type of boundary conditions, +the parallel or series configuration of the components and the value of parameter from_dp.

"), diff --git a/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDpOptimised.mo b/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDpOptimised.mo index a3ad2b69c5..b9977434f9 100644 --- a/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDpOptimised.mo +++ b/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelDpOptimised.mo @@ -13,7 +13,7 @@ First implementation.

Example model that demonstrates how translation statistics depend on the type of boundary conditions, -the parallel or series configuration of the components +the parallel or series configuration of the components and the value of parameter from_dp.

"), experiment(Tolerance=1e-6, StopTime=1), __Dymola_Commands(file= diff --git a/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelFlow.mo b/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelFlow.mo index ed3a040680..b9aced1fe4 100644 --- a/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelFlow.mo +++ b/AixLib/Fluid/Examples/Performance/PressureDrop/ParallelFlow.mo @@ -44,10 +44,8 @@ equation annotation (Line(points={{-10,0},{-20,0},{-40,0}}, color={0,127,255})); connect(pulse_m_flow.y, sou.m_flow_in) - annotation (Line(points={{-79,8},{-60,8}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" + annotation (Line(points={{-79,8},{-62,8}}, color={0,0,127})); + annotation ( Documentation(revisions=" ", info="

-Example model that demonstrates how translation statistics -depend on the type of boundary conditions, -the parallel or series configuration of the components +Example model that demonstrates how translation statistics +depend on the type of boundary conditions, +the parallel or series configuration of the components and the value of parameter from_dp.

"), diff --git a/AixLib/Fluid/Examples/Performance/PressureDrop/SeriesDp.mo b/AixLib/Fluid/Examples/Performance/PressureDrop/SeriesDp.mo index 07e82c12bd..aa3bced38a 100644 --- a/AixLib/Fluid/Examples/Performance/PressureDrop/SeriesDp.mo +++ b/AixLib/Fluid/Examples/Performance/PressureDrop/SeriesDp.mo @@ -44,9 +44,7 @@ equation connect(resSeries[1].port_a, sou.ports[1]) annotation (Line(points={{-10,0},{-20,0},{-40,0}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" + annotation ( Documentation(revisions="