fastsmoothbuildings 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fastsmoothbuildings-0.1.0/.gitignore +8 -0
- fastsmoothbuildings-0.1.0/CHANGELOG.md +14 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/BoundaryConditions/TiltedSurface.mo +29 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/BoundaryConditions/Weather.mo +99 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/BoundaryConditions/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/BoundaryConditions/package.order +2 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/BoilerDemand.mo +19 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/BoilerTemperatureControl.mo +21 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/CollectorControl.mo +26 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/EmissionMonitored.mo +20 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/EmissionOnOff.mo +10 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/EmissionP.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/EmissionPI.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/HeatPumpControl.mo +45 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/Hysteresis.mo +35 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/PI.mo +39 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/PartialEmissionControl.mo +22 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/ThreeWayValveControl.mo +22 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/Validation/Hysteresis.mo +15 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/Validation/PIControl.mo +18 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/Validation/package.mo +10 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/Validation/package.order +2 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/package.mo +13 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/package.order +14 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Controls/smoothMaxN.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Data/Construction.mo +23 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Data/Glazing.mo +23 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Data/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Data/package.order +2 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Electrical/Photovoltaic.mo +40 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Electrical/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Electrical/package.order +1 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/AdiabaticWall.mo +26 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/BoundaryWall.mo +31 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/exteriorExchange.mo +29 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/gapConductance.mo +115 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/interiorConvection.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/overhangSunlitFraction.mo +48 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/package.order +6 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/sideFinsSunlitFraction.mo +45 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Functions/skyExchange.mo +18 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/InternalWall.mo +43 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/OuterWall.mo +38 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/PartialOpaque.mo +56 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/PartialSurface.mo +13 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Validation/GapConductance.mo +21 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Validation/ShadingFractions.mo +21 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Validation/package.mo +10 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Validation/package.order +2 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/Window.mo +129 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Envelope/package.order +9 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/BaseClasses/PartialHydronicRoom.mo +40 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/BaseClasses/SyntheticWeather.mo +40 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/BaseClasses/package.mo +9 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/BaseClasses/package.order +2 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/BoilerCircuit.mo +83 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/BoilerCircuitSetFlows.mo +14 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/CavityWall.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/ConcreteSlab.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/DoubleClear.mo +23 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/LightFloor.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/LightRoof.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/LightWall.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/TripleArgon.mo +25 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/package.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Constructions/package.order +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/FreeFloatingRoom.mo +88 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/HeatPumpCircuit.mo +114 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/IdealHeatingRoom.mo +20 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/Photovoltaics.mo +19 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/TwoZones.mo +86 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/VentilatedRoom.mo +61 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/package.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Examples/package.order +10 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/HVAC/IdealHeater.mo +31 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/HVAC/IdealHeatingCooling.mo +25 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/HVAC/IdealHeatingCoolingPI.mo +44 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/HVAC/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/HVAC/package.order +3 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Boiler.mo +58 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPump.mo +86 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPumps/Vitocal251A08/interpolate.mo +28 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPumps/Vitocal251A08/package.mo +20 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPumps/Vitocal251A08/package.order +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPumps/Vitocal251A08/smoothTable.mo +26 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPumps/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/HeatPumps/package.order +1 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Junction.mo +60 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Junction2.mo +47 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/PartialConserving.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/PartialFlow.mo +46 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/PartialLink.mo +17 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Pipe.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Pump.mo +45 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Radiator.mo +69 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/TemperatureSensor.mo +25 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/ThreeWayValve.mo +108 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/Valve.mo +43 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/package.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/package.order +15 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Hydronics/radiatorConductance.mo +56 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Icons.mo +39 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/ControlInput.mo +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/ControlSignal.mo +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/GainInputs.mo +15 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/GainOutputs.mo +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/Gains.mo +15 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/HeatFlowInput.mo +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/HeatPort.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/OccupancyInputs.mo +14 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/SurfaceBus.mo +25 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/WaterInlet.mo +9 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/WaterOutlet.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/WeatherBus.mo +27 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/WeatherBusIn.mo +27 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/WeatherInputs.mo +20 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/ZoneSurfaceBus.mo +25 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/package.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Interfaces/package.order +17 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Controls.Validation.Hysteresis.csv +603 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Controls.Validation.PIControl.csv +903 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Envelope.Validation.GapConductance.csv +103 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Envelope.Validation.ShadingFractions.csv +103 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.BoilerCircuit.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.BoilerCircuitSetFlows.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.FreeFloatingRoom.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.HeatPumpCircuit.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.IdealHeatingRoom.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.Photovoltaics.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.TwoZones.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Examples.VentilatedRoom.csv +291 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Utilities.Validation.Schedules.csv +579 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Resources/ReferenceResults/OpenModelica/FastSmoothBuildings.Utilities.Validation.SmoothFunctions.csv +103 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Types.mo +20 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/Contact.mo +10 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/Conventions.mo +51 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/License.mo +18 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/ReleaseNotes.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/Smoothing.mo +35 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/Translation.mo +37 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/package.mo +32 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/UsersGuide/package.order +6 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/Validation/Schedules.mo +26 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/Validation/SmoothFunctions.mo +26 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/Validation/package.mo +10 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/Validation/package.order +2 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/convectionCoefficient.mo +15 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/dayTable.mo +20 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/equalPercentage.mo +29 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/naturalConvection.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/occupancy.mo +14 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/package.order +17 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/polynomial.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/polynomialFit.mo +34 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/positivePart.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/quadraticFlow.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/regStep.mo +51 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/smoothLimit.mo +15 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/smoothLimitInside.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/smoothMax.mo +9 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/smoothMin.mo +9 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/timeOfDay.mo +7 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Utilities/valveConductance.mo +12 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Ventilation/AirInlet.mo +9 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Ventilation/AirOutlet.mo +11 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Ventilation/Duct.mo +25 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Ventilation/HeatRecoveryUnit.mo +48 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Ventilation/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Ventilation/package.order +4 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/AirTemperatureSensor.mo +14 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/InternalGains.mo +16 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/PartialZone.mo +93 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/VentilatedZone.mo +17 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/Zone.mo +6 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/package.mo +8 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/Zones/package.order +5 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/package.mo +30 -0
- fastsmoothbuildings-0.1.0/FastSmoothBuildings/package.order +22 -0
- fastsmoothbuildings-0.1.0/LICENSE +88 -0
- fastsmoothbuildings-0.1.0/PKG-INFO +141 -0
- fastsmoothbuildings-0.1.0/README.md +116 -0
- fastsmoothbuildings-0.1.0/pyproject.toml +99 -0
- fastsmoothbuildings-0.1.0/src/fastsmoothbuildings/__init__.py +16 -0
- fastsmoothbuildings-0.1.0/src/fastsmoothbuildings/_paths.py +32 -0
- fastsmoothbuildings-0.1.0/src/fastsmoothbuildings/bundle.py +150 -0
- fastsmoothbuildings-0.1.0/src/fastsmoothbuildings/py.typed +0 -0
- fastsmoothbuildings-0.1.0/tests/__init__.py +0 -0
- fastsmoothbuildings-0.1.0/tests/cases.py +88 -0
- fastsmoothbuildings-0.1.0/tests/conftest.py +14 -0
- fastsmoothbuildings-0.1.0/tests/openmodelica.py +85 -0
- fastsmoothbuildings-0.1.0/tests/test_bundle.py +67 -0
- fastsmoothbuildings-0.1.0/tests/test_openmodelica.py +44 -0
- fastsmoothbuildings-0.1.0/tests/test_release.py +41 -0
- fastsmoothbuildings-0.1.0/tests/test_rumoca.py +169 -0
- fastsmoothbuildings-0.1.0/tests/test_structure.py +108 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
First release of the library as FastSmoothBuildings, migrated from the `FastModel` package of
|
|
6
|
+
[trano](https://github.com/andoludo/trano) at trano commit c70f8d2 (pull request andoludo/trano#60):
|
|
7
|
+
|
|
8
|
+
* the package `FastModel` renamed `FastSmoothBuildings`, in the directory layout of the Modelica specification;
|
|
9
|
+
the history of `trano/library/FastModel.mo` is kept;
|
|
10
|
+
* the Python package `fastsmoothbuildings`: the library, `ROOT`, `LIBRARY`, `bundle()` and the version from the
|
|
11
|
+
`version` annotation of the library;
|
|
12
|
+
* a User's Guide, examples and validation models with reference results from OpenModelica;
|
|
13
|
+
* tests of the layout of the library, of its translation by rumoca into CasADi and of its simulation in
|
|
14
|
+
OpenModelica.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
within FastSmoothBuildings.BoundaryConditions;
|
|
2
|
+
model TiltedSurface "Solar irradiance on a tilted surface: direct, Perez diffuse (sky and ground), incidence"
|
|
3
|
+
parameter Real azi(unit="rad") "Surface azimuth: 0 south, pi/2 west";
|
|
4
|
+
parameter Real til(unit="rad") "Surface tilt: 0 roof, pi/2 wall";
|
|
5
|
+
parameter Real rho = 0.2 "Ground reflectance";
|
|
6
|
+
Interfaces.WeatherBusIn weaBus
|
|
7
|
+
annotation (Placement(transformation(extent={{-110,-10},{-90,10}})));
|
|
8
|
+
Real cosInc "Cosine of the incidence angle";
|
|
9
|
+
Real HDir(unit="W/m2") "Direct irradiance on the surface";
|
|
10
|
+
Real HDif(unit="W/m2") "Diffuse irradiance on the surface (sky and ground)";
|
|
11
|
+
protected
|
|
12
|
+
constant Real bMin = cos(85*pi/180);
|
|
13
|
+
equation
|
|
14
|
+
cosInc = cos(til)*(cos(weaBus.decAng)*cos(weaBus.solHouAng)*cos(weaBus.lat) + sin(weaBus.decAng)*sin(weaBus.lat))
|
|
15
|
+
+ sin(til)*(sin(azi)*cos(weaBus.decAng)*sin(weaBus.solHouAng) + cos(azi)*(cos(weaBus.decAng)
|
|
16
|
+
*cos(weaBus.solHouAng)*sin(weaBus.lat) - sin(weaBus.decAng)*cos(weaBus.lat)));
|
|
17
|
+
HDir = Utilities.positivePart(cosInc*weaBus.HDirNor, 1e-2);
|
|
18
|
+
HDif = weaBus.HDifHor*(0.5*(1 - weaBus.F1)*(1 + cos(til)) + weaBus.F1*Utilities.smoothMax(0, cosInc, 0.01)
|
|
19
|
+
/Utilities.smoothMax(bMin, weaBus.cosZen, 0.01) + weaBus.F2*sin(til)) + weaBus.HGloHor*0.5*rho*(1 - cos(til));
|
|
20
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
21
|
+
Rectangle(extent={{-100,100},{100,-100}}, lineColor={0,0,0}, fillColor={255,255,255},
|
|
22
|
+
fillPattern=FillPattern.Solid),
|
|
23
|
+
Ellipse(extent={{-80,80},{-20,20}}, lineColor={255,220,220}, fillColor={255,255,0},
|
|
24
|
+
fillPattern=FillPattern.Sphere),
|
|
25
|
+
Polygon(points={{-20,-80},{80,20},{80,-80},{-20,-80}}, lineColor={0,0,0}, fillColor={175,175,175},
|
|
26
|
+
fillPattern=FillPattern.Solid),
|
|
27
|
+
Line(points={{-30,30},{30,-30}}, color={255,128,0}, arrow={Arrow.None,Arrow.Filled}),
|
|
28
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
29
|
+
end TiltedSurface;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
within FastSmoothBuildings.BoundaryConditions;
|
|
2
|
+
model Weather "Weather data, solar position and Perez coefficients for the site"
|
|
3
|
+
parameter Real lat(unit="rad") = 0.8868 "Latitude (Uccle by default)";
|
|
4
|
+
parameter Real lon(unit="rad") = 0.0760 "Longitude (Uccle by default)";
|
|
5
|
+
parameter Real timZon(unit="s") = 3600 "Time zone (offset of the standard time from UTC)";
|
|
6
|
+
parameter Real alt(unit="m") = 100 "Altitude of the site";
|
|
7
|
+
parameter Real pAtm(unit="Pa") = 101325
|
|
8
|
+
"Atmospheric pressure, constant (Buildings' default; the runnable model takes the pressure of the site's
|
|
9
|
+
altitude when the YAML reads the pressure from the weather file)";
|
|
10
|
+
Interfaces.RealInput TDryBul(unit="K") "Outdoor dry-bulb air temperature"
|
|
11
|
+
annotation (Placement(transformation(extent={{-120,60},{-100,80}})));
|
|
12
|
+
Interfaces.RealInput TBlaSky(unit="K") "Black-body sky temperature"
|
|
13
|
+
annotation (Placement(transformation(extent={{-120,40},{-100,60}})));
|
|
14
|
+
Interfaces.RealInput winSpe(unit="m/s") "Wind speed"
|
|
15
|
+
annotation (Placement(transformation(extent={{-120,20},{-100,40}})));
|
|
16
|
+
Interfaces.RealInput winDir(unit="rad") "Wind direction, 0 from the north"
|
|
17
|
+
annotation (Placement(transformation(extent={{-120,0},{-100,20}})));
|
|
18
|
+
Interfaces.RealInput HDirNor(unit="W/m2") "Direct normal irradiance"
|
|
19
|
+
annotation (Placement(transformation(extent={{-120,-20},{-100,0}})));
|
|
20
|
+
Interfaces.RealInput HDifHor(unit="W/m2") "Diffuse horizontal irradiance"
|
|
21
|
+
annotation (Placement(transformation(extent={{-120,-40},{-100,-20}})));
|
|
22
|
+
Interfaces.RealInput HGloHor(unit="W/m2") "Global horizontal irradiance"
|
|
23
|
+
annotation (Placement(transformation(extent={{-120,-60},{-100,-40}})));
|
|
24
|
+
Interfaces.WeatherBus weaBus "Weather data and solar position"
|
|
25
|
+
annotation (Placement(transformation(extent={{90,-10},{110,10}})));
|
|
26
|
+
protected
|
|
27
|
+
Real Bt "Intermediate variable of the equation of time";
|
|
28
|
+
Real eqnTim(unit="s") "Equation of time";
|
|
29
|
+
Real solTim(unit="s") "Solar time";
|
|
30
|
+
Real zen(unit="rad") "Solar zenith angle";
|
|
31
|
+
Real zenLim(unit="rad") "Zenith angle bounded by 90 degrees";
|
|
32
|
+
Real relAirMas "Relative air mass";
|
|
33
|
+
Real skyBri "Sky brightness";
|
|
34
|
+
Real HDifHorBou(unit="W/m2") "Diffuse horizontal irradiance bounded away from 0";
|
|
35
|
+
Real tmp "Intermediate variable of the sky clearness";
|
|
36
|
+
Real skyCle "Sky clearness";
|
|
37
|
+
Real a[8] "Weights of the sky clearness bins";
|
|
38
|
+
Real b[8] "Smooth steps of the sky clearness bins";
|
|
39
|
+
constant Real edges[7] = {1.065, 1.23, 1.50, 1.95, 2.80, 4.50, 6.20} "Sky clearness bin edges";
|
|
40
|
+
constant Real F11[8] = {-0.0083117, 0.1299457, 0.3296958, 0.5682053, 0.8730280, 1.1326077, 1.0601591, 0.6777470};
|
|
41
|
+
constant Real F12[8] = {0.5877285, 0.6825954, 0.4868735, 0.1874525, -0.3920403, -1.2367284, -1.5999137, -0.3272588};
|
|
42
|
+
constant Real F13[8] = {-0.0620636, -0.1513725, -0.2210958, -0.2951290, -0.3616149, -0.4118494, -0.3589221, -0.2504286};
|
|
43
|
+
constant Real F21[8] = {-0.0596012, -0.0189325, 0.0554140, 0.1088631, 0.2255647, 0.2877813, 0.2642124, 0.1561313};
|
|
44
|
+
constant Real F22[8] = {0.0721249, 0.0659650, -0.0639588, -0.1519229, -0.4620442, -0.8230357, -1.1272340, -1.3765031};
|
|
45
|
+
constant Real F23[8] = {-0.0220216, -0.0288748, -0.0260542, -0.0139754, 0.0012448, 0.0558651, 0.1310694, 0.2506212};
|
|
46
|
+
equation
|
|
47
|
+
// Weather data
|
|
48
|
+
weaBus.TDryBul = TDryBul;
|
|
49
|
+
weaBus.TBlaSky = TBlaSky;
|
|
50
|
+
weaBus.winSpe = winSpe;
|
|
51
|
+
weaBus.winDir = winDir;
|
|
52
|
+
weaBus.HDirNor = HDirNor;
|
|
53
|
+
weaBus.HDifHor = HDifHor;
|
|
54
|
+
weaBus.HGloHor = HGloHor;
|
|
55
|
+
weaBus.pAtm = pAtm;
|
|
56
|
+
weaBus.lat = lat;
|
|
57
|
+
// Solar position (Buildings.BoundaryConditions.SolarGeometry; the model time is the clock time of the year)
|
|
58
|
+
weaBus.decAng = asin(-sin(23.45*pi/180)*cos((time/86400 + 10)*2*pi/365.25));
|
|
59
|
+
Bt = pi*((time + 86400)/86400 - 81)/182;
|
|
60
|
+
eqnTim = 60*(9.87*sin(2*Bt) - 7.53*cos(Bt) - 1.5*sin(Bt));
|
|
61
|
+
solTim = time - timZon + lon*43200/pi + eqnTim;
|
|
62
|
+
weaBus.solHouAng = (solTim/3600 - 12)*2*pi/24;
|
|
63
|
+
weaBus.cosZen = cos(lat)*cos(weaBus.decAng)*cos(weaBus.solHouAng) + sin(lat)*sin(weaBus.decAng);
|
|
64
|
+
zen = acos(Utilities.smoothLimitInside(weaBus.cosZen, -1, 1, 1e-6));
|
|
65
|
+
// Perez sky model (Buildings.BoundaryConditions.SolarIrradiation.BaseClasses)
|
|
66
|
+
zenLim = Utilities.smoothMin(zen, pi/2, 0.01);
|
|
67
|
+
relAirMas = exp(-0.0001184*alt)/(cos(zenLim) + 0.15*(93.9 - zenLim*180/pi)^(-1.253));
|
|
68
|
+
skyBri = Utilities.smoothMin(HDifHor*relAirMas/(1366.1*(1 + 0.033*cos(2*pi*(solTim/86400 + 1)/365))), 1, 0.025);
|
|
69
|
+
HDifHorBou = Utilities.smoothMax(HDifHor, 0.5e-4, 0.25e-4);
|
|
70
|
+
tmp = 5.534e-6*(180/pi)^3*zen^3;
|
|
71
|
+
skyCle = Utilities.smoothLimitInside(((HDirNor + HDifHorBou)/HDifHorBou + tmp)/(1 + tmp), 1, 8, 0.01);
|
|
72
|
+
for i in 1:7 loop
|
|
73
|
+
b[i] = Utilities.regStep(edges[i] - skyCle, 1, 0, 0.01);
|
|
74
|
+
end for;
|
|
75
|
+
b[8] = Utilities.regStep(skyCle - edges[7], 1, 0, 0.01);
|
|
76
|
+
a[1] = b[1];
|
|
77
|
+
for i in 2:7 loop
|
|
78
|
+
a[i] = b[i] - b[i - 1];
|
|
79
|
+
end for;
|
|
80
|
+
a[8] = b[8];
|
|
81
|
+
weaBus.F1 = Utilities.smoothMax(0, sum(a[i]*(F11[i] + F12[i]*skyBri + F13[i]*zen) for i in 1:8), 0.01);
|
|
82
|
+
weaBus.F2 = sum(a[i]*(F21[i] + F22[i]*skyBri + F23[i]*zen) for i in 1:8);
|
|
83
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
84
|
+
Rectangle(extent={{-100,100},{100,-100}}, lineColor={124,142,255}, fillColor={124,142,255},
|
|
85
|
+
fillPattern=FillPattern.Solid),
|
|
86
|
+
Ellipse(extent={{-73,77},{14,-10}}, lineColor={255,220,220}, lineThickness=1,
|
|
87
|
+
fillPattern=FillPattern.Sphere, fillColor={255,255,0}),
|
|
88
|
+
Polygon(points={{47,53}, {39,21}, {55,26}, {69,25}, {82,19}, {91,-14}, {69,-51}, {5,-55}, {-70,-53},
|
|
89
|
+
{-83,-15}, {-75,12}, {-51,13}, {-39,4}, {-46,35}, {-29,60}, {17,70}, {47,53}}, lineColor={220,220,220},
|
|
90
|
+
lineThickness=0.1, fillPattern=FillPattern.Sphere, smooth=Smooth.Bezier, fillColor={230,230,230}),
|
|
91
|
+
Text(extent={{-98,78},{-60,62}}, textColor={0,0,0}, textString="TDryBul"),
|
|
92
|
+
Text(extent={{-98,58},{-60,42}}, textColor={0,0,0}, textString="TBlaSky"),
|
|
93
|
+
Text(extent={{-98,38},{-60,22}}, textColor={0,0,0}, textString="winSpe"),
|
|
94
|
+
Text(extent={{-98,18},{-60,2}}, textColor={0,0,0}, textString="winDir"),
|
|
95
|
+
Text(extent={{-98,-2},{-60,-18}}, textColor={0,0,0}, textString="HDirNor"),
|
|
96
|
+
Text(extent={{-98,-22},{-60,-38}}, textColor={0,0,0}, textString="HDifHor"),
|
|
97
|
+
Text(extent={{-98,-42},{-60,-58}}, textColor={0,0,0}, textString="HGloHor"),
|
|
98
|
+
Text(extent={{-150,140},{150,100}}, textColor={0,0,255}, textString="%name")}));
|
|
99
|
+
end Weather;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
within FastSmoothBuildings;
|
|
2
|
+
package BoundaryConditions "Weather and solar irradiance (after Buildings.BoundaryConditions)"
|
|
3
|
+
annotation (Documentation(info="<html>
|
|
4
|
+
<p>
|
|
5
|
+
Weather data and solar irradiance after Buildings.BoundaryConditions: the weather inputs of a model, the solar position, the Perez sky model and the irradiance on tilted surfaces, without the events of a weather file reader.
|
|
6
|
+
</p>
|
|
7
|
+
</html>"));
|
|
8
|
+
end BoundaryConditions;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model BoilerDemand
|
|
3
|
+
"Demand of a production (trano BoilerControl, variant simple): on when a valve of its circuits opens beyond 0.5,
|
|
4
|
+
off when all are below 0.01"
|
|
5
|
+
parameter Integer n = 1 "Number of circuits";
|
|
6
|
+
parameter Real dMax = 1e-3 "Width of the smooth maximum of the openings";
|
|
7
|
+
Interfaces.RealInput yMax[n] "Largest opening of the valves of each circuit"
|
|
8
|
+
annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
|
|
9
|
+
Hysteresis hys(uLow=0.01, uHigh=0.5, u=smoothMaxN(yMax, dMax));
|
|
10
|
+
Interfaces.RealOutput y(unit="1") "Demand"
|
|
11
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
12
|
+
equation
|
|
13
|
+
y = hys.y;
|
|
14
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
15
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
16
|
+
fillPattern=FillPattern.Solid),
|
|
17
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="demand"),
|
|
18
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
19
|
+
end BoilerDemand;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model BoilerTemperatureControl
|
|
3
|
+
"Firing of a boiler without storage (trano Buildings boiler): P controller (k) on the boiler temperature, while
|
|
4
|
+
there is demand"
|
|
5
|
+
parameter Real TempSet(unit="K") = 353.15 "Boiler temperature set point";
|
|
6
|
+
parameter Real k = 1 "Gain";
|
|
7
|
+
parameter Real dY = 1e-3 "Width of the smooth limits of the part load";
|
|
8
|
+
Interfaces.RealInput T(unit="K") "Boiler water temperature"
|
|
9
|
+
annotation (Placement(transformation(extent={{-140,40},{-100,80}})));
|
|
10
|
+
Interfaces.RealInput demand "Demand, 0 or 1"
|
|
11
|
+
annotation (Placement(transformation(extent={{-140,-80},{-100,-40}})));
|
|
12
|
+
Interfaces.RealOutput y(unit="1") "Part load ratio"
|
|
13
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
14
|
+
equation
|
|
15
|
+
y = demand*Utilities.smoothLimit(k*(TempSet - T), 0, 1, dY);
|
|
16
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
17
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
18
|
+
fillPattern=FillPattern.Solid),
|
|
19
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="boiler"),
|
|
20
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
21
|
+
end BoilerTemperatureControl;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model CollectorControl
|
|
3
|
+
"Collector control of a pump (trano CollectorControl): on when a valve opens beyond 0.5, off when all are
|
|
4
|
+
below 0.01, the speed from a P controller holding the head at dp_nominal"
|
|
5
|
+
parameter Integer nVal = 1 "Number of valves";
|
|
6
|
+
parameter Real k = 1 "Gain";
|
|
7
|
+
parameter Real dY = 1e-3 "Width of the smooth limits of the speed";
|
|
8
|
+
parameter Real dMax = 1e-3 "Width of the smooth maximum of the openings";
|
|
9
|
+
Interfaces.RealInput yVal[nVal] "Openings of the valves of the circuit"
|
|
10
|
+
annotation (Placement(transformation(extent={{-140,40},{-100,80}})));
|
|
11
|
+
Interfaces.RealInput dpRel "Head of the pump relative to its nominal head"
|
|
12
|
+
annotation (Placement(transformation(extent={{-140,-80},{-100,-40}})));
|
|
13
|
+
Interfaces.RealOutput yMax "Largest opening (the boiler control reads it)"
|
|
14
|
+
annotation (Placement(transformation(extent={{100,40},{140,80}})));
|
|
15
|
+
Hysteresis hysPum(uLow=0.01, uHigh=0.5, u=yMax);
|
|
16
|
+
Interfaces.RealOutput y(unit="1") "Speed of the pump"
|
|
17
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
18
|
+
equation
|
|
19
|
+
yMax = smoothMaxN(yVal, dMax);
|
|
20
|
+
y = Utilities.smoothLimit(k*(hysPum.y - dpRel), 0, 1, dY);
|
|
21
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
22
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
23
|
+
fillPattern=FillPattern.Solid),
|
|
24
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="collector"),
|
|
25
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
26
|
+
end CollectorControl;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model EmissionMonitored
|
|
3
|
+
"Variant MonitoredSetpoint: P controller (IDEAS LimPID) between 0 and 1 towards a set point read from external
|
|
4
|
+
data"
|
|
5
|
+
parameter Real k = 1 "Gain";
|
|
6
|
+
parameter Real dY = 1e-3 "Width of the smooth limits of the output";
|
|
7
|
+
Interfaces.RealInput TSet(unit="K") "Set point"
|
|
8
|
+
annotation (Placement(transformation(extent={{-140,40},{-100,80}})));
|
|
9
|
+
Interfaces.RealInput TZon(unit="K") "Zone air temperature"
|
|
10
|
+
annotation (Placement(transformation(extent={{-140,-80},{-100,-40}})));
|
|
11
|
+
Interfaces.RealOutput y(unit="1") "Valve opening, or share of the power of an ideal emitter"
|
|
12
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
13
|
+
equation
|
|
14
|
+
y = Utilities.smoothLimit(k*(TSet - TZon), 0, 1, dY);
|
|
15
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
16
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
17
|
+
fillPattern=FillPattern.Solid),
|
|
18
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="P"),
|
|
19
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
20
|
+
end EmissionMonitored;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model EmissionOnOff "Variant onoff: on below the set point minus half the band, off above it plus half the band"
|
|
3
|
+
extends PartialEmissionControl;
|
|
4
|
+
parameter Real bandwidth(unit="K") = 0.1 "Band of the on/off controller (Modelica OnOffController)";
|
|
5
|
+
Hysteresis onOff(uLow=-bandwidth/2, uHigh=bandwidth/2, u=TSet - TZon);
|
|
6
|
+
equation
|
|
7
|
+
y = onOff.y;
|
|
8
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
9
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="on/off")}));
|
|
10
|
+
end EmissionOnOff;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model EmissionP "Variant PController: P controller (IDEAS LimPID) between 0 and 1"
|
|
3
|
+
extends PartialEmissionControl(k=5);
|
|
4
|
+
equation
|
|
5
|
+
y = Utilities.smoothLimit(k*(TSet - TZon), 0, 1, dY);
|
|
6
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
7
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="P")}));
|
|
8
|
+
end EmissionP;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model EmissionPI "Variant default: PI heating loop of Buildings G36 ControlLoops (k = 0.1, Ti = 900 s)"
|
|
3
|
+
extends PartialEmissionControl;
|
|
4
|
+
parameter Real kHea = 0.1 "Gain of the heating loop";
|
|
5
|
+
parameter Real TiHea(unit="s") = 900 "Integral time of the heating loop";
|
|
6
|
+
PI conHea(k=kHea, Ti=TiHea, dY=dY, e=TSet - TZon, enable=1);
|
|
7
|
+
equation
|
|
8
|
+
y = conHea.y;
|
|
9
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
10
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="PI")}));
|
|
11
|
+
end EmissionPI;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model HeatPumpControl
|
|
3
|
+
"Control of trano's air-to-water heat pump (Buildings model): heating curve, heating season, buffer charged
|
|
4
|
+
between TSupSet - dTHys/2 and TSupSet + dTHys/2, compressor PI on the condenser outlet towards TSupSet + dTHys
|
|
5
|
+
(minimum speed yComMin); the minimum on and off times of the safety control are not modelled"
|
|
6
|
+
parameter Real TSet(unit="K") = 323.15 "Supply temperature at the design outdoor temperature";
|
|
7
|
+
parameter Real TSupMin(unit="K") = 303.15 "Supply temperature at the heating limit";
|
|
8
|
+
parameter Real TOutDes(unit="K") = 265.15 "Design outdoor temperature";
|
|
9
|
+
parameter Real TOutHeaLim(unit="K") = 289.15 "Heating limit";
|
|
10
|
+
parameter Real dTHys(unit="K") = 5 "Band of the buffer charging";
|
|
11
|
+
parameter Real kCom = 0.1 "Gain of the compressor controller";
|
|
12
|
+
parameter Real TiCom(unit="s") = 300 "Integral time of the compressor controller";
|
|
13
|
+
parameter Real yComMin = 0.3 "Minimum compressor speed";
|
|
14
|
+
parameter Real tauSen(unit="s") = 30 "Time constant of the condenser outlet temperature";
|
|
15
|
+
parameter Real dT(unit="K") = 0.1 "Width of the smooth limits of the heating curve";
|
|
16
|
+
parameter Real dY = 1e-3*(1 - yComMin) "Width of the smooth limits of the compressor speed";
|
|
17
|
+
Interfaces.RealInput demand "Demand of the circuits, 0 or 1"
|
|
18
|
+
annotation (Placement(transformation(extent={{-140,50},{-100,90}})));
|
|
19
|
+
Interfaces.RealInput TOut(unit="K") "Outdoor air temperature"
|
|
20
|
+
annotation (Placement(transformation(extent={{-140,5},{-100,45}})));
|
|
21
|
+
Interfaces.RealInput TBuf(unit="K") "Buffer temperature"
|
|
22
|
+
annotation (Placement(transformation(extent={{-140,-45},{-100,-5}})));
|
|
23
|
+
Interfaces.RealInput TConOut(unit="K") "Condenser outlet temperature"
|
|
24
|
+
annotation (Placement(transformation(extent={{-140,-90},{-100,-50}})));
|
|
25
|
+
Interfaces.RealOutput y(unit="1") "Compressor speed"
|
|
26
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
27
|
+
Real TSupSet(unit="K") "Supply temperature set point (heating curve)";
|
|
28
|
+
Real TCon(unit="K", start=TSet, fixed=true) "Measured condenser outlet temperature";
|
|
29
|
+
Real heaOn "Heating on";
|
|
30
|
+
Hysteresis warOut(uLow=TOutHeaLim - 1, uHigh=TOutHeaLim + 1, u=TOut) "Outside the heating season";
|
|
31
|
+
Hysteresis bufCha(uLow=-dTHys/2, uHigh=dTHys/2, u=TSupSet - TBuf, y_start=1) "Charging the buffer";
|
|
32
|
+
PI conCom(k=kCom, Ti=TiCom, yMin=yComMin, yMax=1, yReset=yComMin, dY=dY, e=TSupSet + dTHys - TCon,
|
|
33
|
+
enable=heaOn);
|
|
34
|
+
equation
|
|
35
|
+
TSupSet = Utilities.smoothMin(TSet, Utilities.smoothMax(TSupMin, TSet + (TSupMin - TSet)*(TOut - TOutDes)
|
|
36
|
+
/(TOutHeaLim - TOutDes), dT), dT);
|
|
37
|
+
tauSen*der(TCon) = TConOut - TCon;
|
|
38
|
+
heaOn = demand*(1 - warOut.y)*bufCha.y;
|
|
39
|
+
y = heaOn*conCom.y;
|
|
40
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
41
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
42
|
+
fillPattern=FillPattern.Solid),
|
|
43
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="heat pump"),
|
|
44
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
45
|
+
end HeatPumpControl;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model Hysteresis
|
|
3
|
+
"y goes to 1 when u rises above uHigh and back to 0 when u falls below uLow (CDL Hysteresis), as a bistable
|
|
4
|
+
state switching within tau"
|
|
5
|
+
parameter Real uLow "Threshold of the switch to 0";
|
|
6
|
+
parameter Real uHigh "Threshold of the switch to 1";
|
|
7
|
+
parameter Real tau(unit="s") = 10 "Switching time";
|
|
8
|
+
parameter Real dU = (uHigh - uLow)/10 "Half-width of the smooth transition of the switch";
|
|
9
|
+
parameter Real y_start = 0 "Initial output";
|
|
10
|
+
Interfaces.RealInput u
|
|
11
|
+
annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
|
|
12
|
+
Real y(start=y_start, fixed=true);
|
|
13
|
+
equation
|
|
14
|
+
tau*der(y) = Utilities.regStep(u - (uHigh + (uLow - uHigh)*y), 1, 0, dU) - y;
|
|
15
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
16
|
+
Rectangle(extent={{-100,100},{100,-100}}, lineColor={0,0,0}, fillColor={210,210,210},
|
|
17
|
+
fillPattern=FillPattern.Solid, borderPattern=BorderPattern.Raised),
|
|
18
|
+
Polygon(points={{-80,90},{-88,68},{-72,68},{-80,90}}, lineColor={192,192,192}, fillColor={192,192,192},
|
|
19
|
+
fillPattern=FillPattern.Solid),
|
|
20
|
+
Line(points={{-80,68},{-80,-29}}, color={192,192,192}),
|
|
21
|
+
Polygon(points={{92,-29},{70,-21},{70,-37},{92,-29}}, lineColor={192,192,192}, fillColor={192,192,192},
|
|
22
|
+
fillPattern=FillPattern.Solid),
|
|
23
|
+
Line(points={{-79,-29},{84,-29}}, color={192,192,192}),
|
|
24
|
+
Line(points={{-79,-29},{41,-29}}),
|
|
25
|
+
Line(points={{-15,-21},{1,-29},{-15,-36}}),
|
|
26
|
+
Line(points={{41,51},{41,-29}}),
|
|
27
|
+
Line(points={{33,3},{41,22},{50,3}}),
|
|
28
|
+
Line(points={{-49,51},{81,51}}),
|
|
29
|
+
Line(points={{-4,59},{-19,51},{-4,43}}),
|
|
30
|
+
Line(points={{-59,29},{-49,11},{-39,29}}),
|
|
31
|
+
Line(points={{-49,51},{-49,-29}}),
|
|
32
|
+
Text(extent={{-92,-49},{-9,-92}}, textColor={192,192,192}, textString="%uLow"),
|
|
33
|
+
Text(extent={{2,-49},{91,-92}}, textColor={192,192,192}, textString="%uHigh"),
|
|
34
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
35
|
+
end Hysteresis;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model PI
|
|
3
|
+
"PI controller with limits and anti-windup (Modelica LimPID: back-calculation with Ni), its integral relaxed to
|
|
4
|
+
the reset value while disabled"
|
|
5
|
+
parameter Real k "Gain";
|
|
6
|
+
parameter Real Ti(unit="s") "Integral time";
|
|
7
|
+
parameter Real yMin = 0;
|
|
8
|
+
parameter Real yMax = 1;
|
|
9
|
+
parameter Real Ni = 0.9 "Anti-windup gain";
|
|
10
|
+
parameter Real yReset = yMin "Output after a reset";
|
|
11
|
+
parameter Real tauReset(unit="s") = 30 "Time constant of the reset while disabled";
|
|
12
|
+
parameter Real dY = 1e-3*(yMax - yMin) "Width of the smooth limits";
|
|
13
|
+
Interfaces.RealInput e "Control error"
|
|
14
|
+
annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
|
|
15
|
+
Interfaces.RealInput enable "1: integrate, 0: reset"
|
|
16
|
+
annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=90, origin={0,-120})));
|
|
17
|
+
Real I(start=yReset/k, fixed=true) "Integral of the error";
|
|
18
|
+
Real yUnl "Unlimited output";
|
|
19
|
+
Interfaces.RealOutput y
|
|
20
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
21
|
+
equation
|
|
22
|
+
yUnl = k*(e + I);
|
|
23
|
+
y = Utilities.smoothLimit(yUnl, yMin, yMax, dY);
|
|
24
|
+
der(I) = enable*(e/Ti + (y - yUnl)/(k*Ni*Ti)) + (1 - enable)*(yReset/k - e - I)/tauReset;
|
|
25
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
26
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
27
|
+
fillPattern=FillPattern.Solid),
|
|
28
|
+
Polygon(points={{-80,82},{-88,60},{-72,60},{-80,82}}, lineColor={192,192,192}, fillColor={192,192,192},
|
|
29
|
+
fillPattern=FillPattern.Solid),
|
|
30
|
+
Line(points={{-80,68},{-80,-100}}, color={192,192,192}),
|
|
31
|
+
Line(points={{-90,-80},{70,-80}}, color={192,192,192}),
|
|
32
|
+
Polygon(points={{74,-80},{52,-72},{52,-88},{74,-80}}, lineColor={192,192,192}, fillColor={192,192,192},
|
|
33
|
+
fillPattern=FillPattern.Solid),
|
|
34
|
+
Line(points={{-80,-80},{-80,-22}}, color={0,0,0}),
|
|
35
|
+
Line(points={{-80,-22},{6,56}}, color={0,0,0}),
|
|
36
|
+
Line(points={{6,56},{68,56}}, color={0,0,0}),
|
|
37
|
+
Text(extent={{-26,-22},{74,-62}}, textColor={0,0,0}, textString="PI"),
|
|
38
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
39
|
+
end PI;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
partial model PartialEmissionControl
|
|
3
|
+
"Emission control of a zone (trano EmissionControl): set point of its day schedule, output y to the valve or
|
|
4
|
+
the ideal emitter"
|
|
5
|
+
parameter Real schedule[:](each unit="s") = 3600*{7, 19} "Day schedule: occupied between pairs of instants";
|
|
6
|
+
parameter Real THeaSet(unit="K") = 294.15 "Set point when occupied";
|
|
7
|
+
parameter Real THeaSetBack(unit="K") = 289.15 "Set point otherwise";
|
|
8
|
+
parameter Real k = 1 "Gain";
|
|
9
|
+
parameter Real dY = 1e-3 "Width of the smooth limits of the output";
|
|
10
|
+
parameter Real dtSet(unit="s") = 60 "Duration of a change of the set point";
|
|
11
|
+
Interfaces.RealInput TZon(unit="K") "Zone air temperature"
|
|
12
|
+
annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
|
|
13
|
+
Interfaces.RealOutput y(unit="1") "Valve opening, or share of the power of an ideal emitter"
|
|
14
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
15
|
+
Real TSet(unit="K") "Set point";
|
|
16
|
+
equation
|
|
17
|
+
TSet = THeaSetBack + (THeaSet - THeaSetBack)*Utilities.occupancy(Utilities.timeOfDay(time), schedule, dtSet);
|
|
18
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
19
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
20
|
+
fillPattern=FillPattern.Solid),
|
|
21
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
22
|
+
end PartialEmissionControl;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
model ThreeWayValveControl
|
|
3
|
+
"Three-way valve control (trano ThreeWayValveControl): P controller on the supply temperature measured
|
|
4
|
+
downstream (filtered by tauSen)"
|
|
5
|
+
parameter Real TColSet(unit="K") = 363.15 "Supply temperature set point";
|
|
6
|
+
parameter Real k = 1 "Gain";
|
|
7
|
+
parameter Real tauSen(unit="s") = 10 "Time constant of the temperature measurement";
|
|
8
|
+
parameter Real dY = 1e-3 "Width of the smooth limits of the opening";
|
|
9
|
+
Interfaces.RealInput u(unit="K") "Measured supply temperature"
|
|
10
|
+
annotation (Placement(transformation(extent={{-140,-20},{-100,20}})));
|
|
11
|
+
Interfaces.RealOutput y(unit="1") "Opening of the supply path"
|
|
12
|
+
annotation (Placement(transformation(extent={{100,-20},{140,20}})));
|
|
13
|
+
Real TMea(unit="K", start=TColSet - 30, fixed=true) "Filtered measurement";
|
|
14
|
+
equation
|
|
15
|
+
tauSen*der(TMea) = u - TMea;
|
|
16
|
+
y = Utilities.smoothLimit(k*(TColSet - TMea), 0, 1, dY);
|
|
17
|
+
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), graphics={
|
|
18
|
+
Rectangle(extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255},
|
|
19
|
+
fillPattern=FillPattern.Solid),
|
|
20
|
+
Text(extent={{-90,40},{90,-40}}, textColor={0,0,0}, textString="3WV"),
|
|
21
|
+
Text(extent={{-150,150},{150,110}}, textColor={0,0,255}, textString="%name")}));
|
|
22
|
+
end ThreeWayValveControl;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls.Validation;
|
|
2
|
+
model Hysteresis "A hysteresis as a fast bistable state, driven by a sine"
|
|
3
|
+
extends FastSmoothBuildings.Icons.Example;
|
|
4
|
+
FastSmoothBuildings.Controls.Hysteresis hys(uLow=-0.5, uHigh=0.5, tau=10, u=sin(2*pi*time/600))
|
|
5
|
+
"Switches on above 0.5, off below -0.5, in about 10 s";
|
|
6
|
+
annotation (
|
|
7
|
+
experiment(StopTime=1200, Interval=2, Tolerance=1e-06),
|
|
8
|
+
Documentation(info="<html>
|
|
9
|
+
<p>
|
|
10
|
+
<a href=\"modelica://FastSmoothBuildings.Controls.Hysteresis\">Hysteresis</a>: its output is a state that moves
|
|
11
|
+
towards 1 above <code>uHigh</code> and towards 0 below <code>uLow</code> with the time constant <code>tau</code>,
|
|
12
|
+
and keeps its value in between, without events.
|
|
13
|
+
</p>
|
|
14
|
+
</html>"));
|
|
15
|
+
end Hysteresis;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls.Validation;
|
|
2
|
+
model PIControl "A PI controller holding a first-order process, disabled half way"
|
|
3
|
+
extends FastSmoothBuildings.Icons.Example;
|
|
4
|
+
Real x(start=0, fixed=true) "Process, a first-order lag of 60 s on the controller output";
|
|
5
|
+
Real enable = 1 - FastSmoothBuildings.Utilities.regStep(time - 900, 1, 0, 5) "1 until 900 s, then 0";
|
|
6
|
+
FastSmoothBuildings.Controls.PI con(k=2, Ti=60, e=0.6 - x, enable=enable) "Holds the process at 0.6";
|
|
7
|
+
equation
|
|
8
|
+
60*der(x) = con.y - x;
|
|
9
|
+
annotation (
|
|
10
|
+
experiment(StopTime=1800, Interval=2, Tolerance=1e-06),
|
|
11
|
+
Documentation(info="<html>
|
|
12
|
+
<p>
|
|
13
|
+
<a href=\"modelica://FastSmoothBuildings.Controls.PI\">PI</a> with its anti-windup and smooth limits holds a
|
|
14
|
+
first-order process at 0.6; from 900 s it is disabled, and its output returns to <code>yReset</code> with the
|
|
15
|
+
time constant <code>tauReset</code>.
|
|
16
|
+
</p>
|
|
17
|
+
</html>"));
|
|
18
|
+
end PIControl;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
package Validation "Validation models of the package"
|
|
3
|
+
extends FastSmoothBuildings.Icons.ExamplesPackage;
|
|
4
|
+
annotation (Documentation(info="<html>
|
|
5
|
+
<p>
|
|
6
|
+
Models that exercise the classes of the package over a range of their inputs; the tests of the repository compare
|
|
7
|
+
their results in OpenModelica with reference results, and with closed forms where there is one.
|
|
8
|
+
</p>
|
|
9
|
+
</html>"));
|
|
10
|
+
end Validation;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
within FastSmoothBuildings;
|
|
2
|
+
package Controls
|
|
3
|
+
"Controllers of the closed-loop model: the controls of trano's Buildings models without events (smooth limits
|
|
4
|
+
and set point changes, hysteresis as fast bistable states, anti-windup PI). The width of every smooth transition
|
|
5
|
+
and the switching time of every hysteresis are parameters (dU, dY, dMax, dT, dtSet, tau), at values that
|
|
6
|
+
reproduce the switching controllers by default; wider transitions and slower switches give a controller that
|
|
7
|
+
collocation and gradient-based calibration can follow"
|
|
8
|
+
annotation (Documentation(info="<html>
|
|
9
|
+
<p>
|
|
10
|
+
Controllers of the closed-loop model, after the controls of trano's Buildings models, without events: smooth limits and set point changes, hysteresis as fast bistable states, anti-windup PI controllers. The width of every smooth transition and the switching time of every hysteresis are parameters (see <a href=\"modelica://FastSmoothBuildings.UsersGuide.Smoothing\">Smoothing</a>).
|
|
11
|
+
</p>
|
|
12
|
+
</html>"));
|
|
13
|
+
end Controls;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
within FastSmoothBuildings.Controls;
|
|
2
|
+
function smoothMaxN "Smooth maximum of a vector"
|
|
3
|
+
input Real u[:];
|
|
4
|
+
input Real delta = 1e-3;
|
|
5
|
+
output Real y;
|
|
6
|
+
algorithm
|
|
7
|
+
y := u[1];
|
|
8
|
+
for i in 2:size(u, 1) loop
|
|
9
|
+
y := Utilities.smoothMax(y, u[i], delta);
|
|
10
|
+
end for;
|
|
11
|
+
end smoothMaxN;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
within FastSmoothBuildings.Data;
|
|
2
|
+
record Construction
|
|
3
|
+
"Opaque construction: layers from the outside (side a) to the inside (side b), each split into nSta[i] sublayers
|
|
4
|
+
of equal thickness (Buildings.HeatTransfer.Data.OpaqueConstructions.Generic and its nSta)"
|
|
5
|
+
parameter Integer nLay "Number of layers";
|
|
6
|
+
parameter Real x[nLay](each unit="m") "Thickness";
|
|
7
|
+
parameter Real k[nLay](each unit="W/(m.K)") "Thermal conductivity";
|
|
8
|
+
parameter Real c[nLay](each unit="J/(kg.K)") "Specific heat capacity";
|
|
9
|
+
parameter Real d[nLay](each unit="kg/m3") "Density";
|
|
10
|
+
// the sublayers are written out, without defaults: rumoca sizes arrays and evaluates subscripts from literal
|
|
11
|
+
// parameters only
|
|
12
|
+
parameter Integer nSta[nLay]
|
|
13
|
+
"Sublayers of each layer: the states Buildings gives it, at most 3 (FastSmoothBuildings); 1, a node at each layer
|
|
14
|
+
boundary (FastSmoothBuildingsMPC, whose states are decision variables of the optimal control)";
|
|
15
|
+
parameter Integer nNod "Number of sublayers, the sum of nSta";
|
|
16
|
+
parameter Integer lay[nNod] "Layer of each sublayer, from the outside";
|
|
17
|
+
parameter Integer nod[nLay + 1] "Node of each layer boundary, from the outside (nod[1] = 1)";
|
|
18
|
+
parameter Integer sub[nNod - nLay] "Nodes inside the layers, from the outside";
|
|
19
|
+
parameter Real absIR_a = 0.84 "Long-wave emissivity of side a (outside)";
|
|
20
|
+
parameter Real absIR_b = 0.84 "Long-wave emissivity of side b (inside)";
|
|
21
|
+
parameter Real absSol_a = 0.84 "Solar absorptance of side a (outside)";
|
|
22
|
+
parameter Real absSol_b = 0.84 "Solar absorptance of side b (inside)";
|
|
23
|
+
end Construction;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
within FastSmoothBuildings.Data;
|
|
2
|
+
record Glazing
|
|
3
|
+
"Glazing: panes and gas gaps from the outside (Buildings.HeatTransfer.Data.GlazingSystems.Generic), angular
|
|
4
|
+
optics at the incidence angles 0, 10, ..., 90 degrees"
|
|
5
|
+
parameter Integer nPan "Number of panes";
|
|
6
|
+
parameter Real x[nPan](each unit="m") "Thickness of the panes";
|
|
7
|
+
parameter Real k[nPan](each unit="W/(m.K)") "Thermal conductivity of the panes";
|
|
8
|
+
parameter Real d[nPan](each unit="kg/m3") "Density of the panes";
|
|
9
|
+
parameter Real c[nPan](each unit="J/(kg.K)") "Specific heat capacity of the panes";
|
|
10
|
+
parameter Real xGas[nPan - 1](each unit="m") "Thickness of each gas gap";
|
|
11
|
+
parameter Real kGas[nPan - 1](each unit="W/(m.K)") "Thermal conductivity of the gas of each gap";
|
|
12
|
+
parameter Real muGas_a[nPan - 1](each unit="Pa.s") "Dynamic viscosity of the gas: a_mu + b_mu*T";
|
|
13
|
+
parameter Real muGas_b[nPan - 1](each unit="Pa.s/K") "Dynamic viscosity of the gas: a_mu + b_mu*T";
|
|
14
|
+
parameter Real cGas[nPan - 1](each unit="J/(kg.K)") "Specific heat capacity of the gas";
|
|
15
|
+
parameter Real MGas[nPan - 1](each unit="kg/mol") "Molar mass of the gas";
|
|
16
|
+
parameter Real epsGap_a[nPan - 1] "Long-wave emissivity of the pane face on the outer side of each gap";
|
|
17
|
+
parameter Real epsGap_b[nPan - 1] "Long-wave emissivity of the pane face on the inner side of each gap";
|
|
18
|
+
parameter Real tau[11] "Solar transmittance at the 10 incidence angles, then hemispherical";
|
|
19
|
+
parameter Real absPan[nPan, 11] "Solar absorptance of each pane at the 10 incidence angles, then hemispherical";
|
|
20
|
+
parameter Real absIR_a "Long-wave emissivity of the outer pane, outside face";
|
|
21
|
+
parameter Real absIR_b "Long-wave emissivity of the inner pane, room face";
|
|
22
|
+
parameter Real UFra(unit="W/(m2.K)") = 1.4 "Thermal transmittance of the frame";
|
|
23
|
+
end Glazing;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
within FastSmoothBuildings;
|
|
2
|
+
package Data "Records of constructions and glazings, written by trano from the YAML file"
|
|
3
|
+
annotation (Documentation(info="<html>
|
|
4
|
+
<p>
|
|
5
|
+
Records of the constructions and glazings. The counts of layers, sublayers and panes and the indices of the nodes are written out in each record (see <a href=\"modelica://FastSmoothBuildings.UsersGuide.Translation\">Translation into CasADi</a>).
|
|
6
|
+
</p>
|
|
7
|
+
</html>"));
|
|
8
|
+
end Data;
|