From 5176952c9c87e741485ef3fc077bb1cfc50d6dd5 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Fri, 31 Jan 2025 11:42:18 +0100 Subject: [PATCH 01/12] Assert equal absolute starting heights of internalwalls --- IDEAS/Buildings/Components/InternalWall.mo | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/IDEAS/Buildings/Components/InternalWall.mo b/IDEAS/Buildings/Components/InternalWall.mo index 7db33a132..ad325a0e7 100644 --- a/IDEAS/Buildings/Components/InternalWall.mo +++ b/IDEAS/Buildings/Components/InternalWall.mo @@ -161,6 +161,11 @@ initial equation assert(hAbs_floor_a>hAbs_floor_b, getInstanceName()+ " is a floor, but the floor of the zone at probsbus_a (hfloor="+String(hAbs_floor_a) +") does not lie below the floor of zone at probsbus_b (hfloor="+String(hAbs_floor_b) +"), this should be fixed",level=AssertionLevel.error); end if; + if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then + assert(hAbs_floor_a+hRelSurfBot_a==hAbs_floor_b+hRelSurfBot_b,"The absolute height of internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones",level=AssertionLevel.error); + assert(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a==hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b,"The absolute height of the large cavity in internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones",level=AssertionLevel.error); + end if; + equation connect(constOne.y, crackOrOperableDoor.y); connect(layMul.port_b, propsBus_b.surfRad) annotation( From ed9af59797338d3541296f96d2a0e9e7fccd514b Mon Sep 17 00:00:00 2001 From: kldjonge Date: Tue, 4 Feb 2025 12:45:31 +0100 Subject: [PATCH 02/12] Added more explanation to vertical height error messages. --- IDEAS/Buildings/Components/InternalWall.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IDEAS/Buildings/Components/InternalWall.mo b/IDEAS/Buildings/Components/InternalWall.mo index ad325a0e7..1b56fa6e8 100644 --- a/IDEAS/Buildings/Components/InternalWall.mo +++ b/IDEAS/Buildings/Components/InternalWall.mo @@ -162,8 +162,8 @@ initial equation end if; if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then - assert(hAbs_floor_a+hRelSurfBot_a==hAbs_floor_b+hRelSurfBot_b,"The absolute height of internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones",level=AssertionLevel.error); - assert(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a==hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b,"The absolute height of the large cavity in internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones",level=AssertionLevel.error); + assert(hAbs_floor_a+hRelSurfBot_a==hAbs_floor_b+hRelSurfBot_b,"The absolute height of internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones. At propsbus_a the absolute surface starting height is "+String(hAbs_floor_a+hRelSurfBot_a)+"m while at propsbus_b the absolute surface starting height is "+String(hAbs_floor_b+hRelSurfBot_b)+"m",level=AssertionLevel.error); + assert(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a==hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b,"The absolute height of the large cavity in internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones. At propsbus_a the opening its absolute starting height is "+String(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a)+"m while at propsbus_b the opening its absolute starting height is "+String(hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b)+"m",level=AssertionLevel.error); end if; equation From a81364cb03fa5d8c5b4cb899b6468001984c61d1 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Tue, 4 Feb 2025 16:25:47 +0100 Subject: [PATCH 03/12] Option to disable vertical height check This is useful if an internal wall component is used but connected to the same zone at two sides. --- IDEAS/Buildings/Components/InternalWall.mo | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/IDEAS/Buildings/Components/InternalWall.mo b/IDEAS/Buildings/Components/InternalWall.mo index 1b56fa6e8..ab13fc7a4 100644 --- a/IDEAS/Buildings/Components/InternalWall.mo +++ b/IDEAS/Buildings/Components/InternalWall.mo @@ -67,6 +67,8 @@ model InternalWall "interior opaque wall between two zones" parameter Boolean use_y_doo = false "=true, to enable controllable cavity (door) input" annotation(Dialog(enable=hasCavity,group="Cavity or open door",tab="Advanced")); + parameter Boolean CheckVH=true "Enable to not check vertical heights, if an internal floor or element is connected to the same zone at both sides this should be set to false" annotation(Dialog(group="Vertical height check",tab="Airflow")); + IDEAS.Buildings.Components.Interfaces.ZoneBus propsBus_b( redeclare final package Medium = Medium, numIncAndAziInBus=sim.numIncAndAziInBus, @@ -155,17 +157,19 @@ initial equation assert(IDEAS.Utilities.Math.Functions.isAngle(incInt, IDEAS.Types.Tilt.Wall), "In " + getInstanceName() + ": Cavities without airflow are only supported for vertical walls, but inc=" + String(incInt) + ". The model is not accurate.", level = AssertionLevel.warning); end if; - if sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(inc,0) then + if CheckVH and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(inc,0) then assert(hAbs_floor_a IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(inc,Modelica.Constants.pi) then + elseif CheckVH and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(inc,Modelica.Constants.pi) then assert(hAbs_floor_a>hAbs_floor_b, getInstanceName()+ " is a floor, but the floor of the zone at probsbus_a (hfloor="+String(hAbs_floor_a) +") does not lie below the floor of zone at probsbus_b (hfloor="+String(hAbs_floor_b) +"), this should be fixed",level=AssertionLevel.error); end if; - if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then + if CheckVH and sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then assert(hAbs_floor_a+hRelSurfBot_a==hAbs_floor_b+hRelSurfBot_b,"The absolute height of internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones. At propsbus_a the absolute surface starting height is "+String(hAbs_floor_a+hRelSurfBot_a)+"m while at propsbus_b the absolute surface starting height is "+String(hAbs_floor_b+hRelSurfBot_b)+"m",level=AssertionLevel.error); assert(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a==hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b,"The absolute height of the large cavity in internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones. At propsbus_a the opening its absolute starting height is "+String(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a)+"m while at propsbus_b the opening its absolute starting height is "+String(hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b)+"m",level=AssertionLevel.error); end if; + assert(CheckVH and sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts,"Vertical height check was disabled for "+getInstanceName()+" but InterZonalAirFlow.TwoPorts is active",AssertionLevel.warning); + equation connect(constOne.y, crackOrOperableDoor.y); connect(layMul.port_b, propsBus_b.surfRad) annotation( @@ -272,6 +276,10 @@ We assume that the value of A excludes the surface area of the cavi ", revisions = "
  • +February 4, 2025, by Klaas De Jonge:
    +Boolean to disable vertical height check was added +
  • +
  • January 24, 2025, by Klaas De Jonge:
    Add dummy connections for hzone and hfloor in propsbus_b to avoid translation warnings. See #1402 From e4444e07de4a990fb8dbf3d0e7cb254ed07a3d21 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 09:49:41 +0100 Subject: [PATCH 04/12] Internalwall thickness correction (TwoPort) --- IDEAS/Buildings/Components/InternalWall.mo | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/IDEAS/Buildings/Components/InternalWall.mo b/IDEAS/Buildings/Components/InternalWall.mo index ab13fc7a4..d6452e796 100644 --- a/IDEAS/Buildings/Components/InternalWall.mo +++ b/IDEAS/Buildings/Components/InternalWall.mo @@ -12,10 +12,12 @@ model InternalWall "interior opaque wall between two zones" final QTra_design(fixed=false), q50_zone(v50_surf=0, nDum=4), crackOrOperableDoor( - h_a1=-0.5*hzone_b + 0.75*hVertical + hRelSurfBot_b, - h_b2=-0.5*hzone_b + 0.25*hVertical + hRelSurfBot_b, - hA=0.5*hzone_b - hRelSurfBot_b - hRelOpeBot_b, - hB=0.5*hzone_a - hRelSurfBot_a - hRelOpeBot_a, + h_b1=-0.5*hzone_a + 0.75*hVertical + hRelSurfBot_a + hThCor, + h_a1=-0.5*hzone_b + 0.75*hVertical + hRelSurfBot_b - hThCor, + h_b2=-0.5*hzone_b + 0.25*hVertical + hRelSurfBot_b - hThCor, + h_a2=-0.5*hzone_a + 0.25*hVertical + hRelSurfBot_a + hThCor, + hA=0.5*hzone_b - hRelSurfBot_b - hRelOpeBot_b + hThCor, + hB=0.5*hzone_a - hRelSurfBot_a - hRelOpeBot_a - hThCor, openDoorOnePort=true, useDoor=hasCavity, use_y=use_y_doo, @@ -145,6 +147,7 @@ protected "Thermal-only model for open door" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); final parameter Boolean useDooOpe = hasCavity and sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts; + final parameter Real hThCor=cos(inc)*sum(constructionType.mats.d)/2 "Vertically projected internal wall thickness"; initial equation hzone_b = propsBus_b.hzone; @@ -164,8 +167,8 @@ initial equation end if; if CheckVH and sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then - assert(hAbs_floor_a+hRelSurfBot_a==hAbs_floor_b+hRelSurfBot_b,"The absolute height of internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones. At propsbus_a the absolute surface starting height is "+String(hAbs_floor_a+hRelSurfBot_a)+"m while at propsbus_b the absolute surface starting height is "+String(hAbs_floor_b+hRelSurfBot_b)+"m",level=AssertionLevel.error); - assert(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a==hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b,"The absolute height of the large cavity in internal wall "+ getInstanceName() +" does not match between both sides of the wall, check the input for hfloor and hzone of the corresponding zones. At propsbus_a the opening its absolute starting height is "+String(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a)+"m while at propsbus_b the opening its absolute starting height is "+String(hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b)+"m",level=AssertionLevel.error); + assert(Modelica.Math.isEqual(hAbs_floor_a+hRelSurfBot_a+hThCor,hAbs_floor_b+hRelSurfBot_b-hThCor,0.15),"The absolute height of internal wall (centerline) "+ getInstanceName() +" does not match within a 15cm margin between both sides of the wall, check the input for the floor thickness and hfloor,hzone of the corresponding zones. At propsbus_a the absolute surface centerline height is "+String(hAbs_floor_a+hRelSurfBot_a+hThCor)+"m while at propsbus_b the absolute surface centerline height is "+String(hAbs_floor_b+hRelSurfBot_b-hThCor)+"m",level=AssertionLevel.error); + assert(Modelica.Math.isEqual(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a+hThCor,hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b-hThCor,0.15),"The absolute height of the large cavity in internal wall "+ getInstanceName() +" does not match within a 15cm margin between both sides of the wall, check the input for the relative opening height, the floor thickness and hfloor,hzone of the corresponding zones. At propsbus_a the opening its absolute starting height is "+String(hAbs_floor_a+hRelSurfBot_a+hRelOpeBot_a+hThCor)+"m while at propsbus_b the opening its absolute starting height is "+String(hAbs_floor_b+hRelSurfBot_b+hRelOpeBot_b-hThCor)+"m",level=AssertionLevel.error); end if; assert(CheckVH and sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts,"Vertical height check was disabled for "+getInstanceName()+" but InterZonalAirFlow.TwoPorts is active",AssertionLevel.warning); @@ -276,6 +279,10 @@ We assume that the value of A excludes the surface area of the cavi ", revisions = "
    • +February 5, 2025, by Klaas De Jonge:
      +Support was added to the twoport airflow implementation that acounts for the floor thickness. +
    • +
    • February 4, 2025, by Klaas De Jonge:
      Boolean to disable vertical height check was added
    • From 643dd808c7ac1dfe08e03b0dd6b9be7ecbff3c8a Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 10:25:48 +0100 Subject: [PATCH 05/12] Updated PPD12 hFloor with floor thicknesses --- IDEAS/Examples/PPD12/Structure.mo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/IDEAS/Examples/PPD12/Structure.mo b/IDEAS/Examples/PPD12/Structure.mo index ea2c4eca8..cbbc0855b 100644 --- a/IDEAS/Examples/PPD12/Structure.mo +++ b/IDEAS/Examples/PPD12/Structure.mo @@ -223,7 +223,7 @@ model Structure "Ppd 12 example model" annotation (Placement(transformation(extent={{-44,-66},{-24,-86}}))); IDEAS.Buildings.Components.RectangularZoneTemplate bedRoom1( - hFloor=hFloor0, + hFloor=hFloor0 + 0.3, aziA=east, bouTypC=IDEAS.Buildings.Components.Interfaces.BoundaryType.OuterWall, bouTypD=IDEAS.Buildings.Components.Interfaces.BoundaryType.BoundaryWall, @@ -251,7 +251,7 @@ model Structure "Ppd 12 example model" annotation (Placement(transformation(extent={{140,80},{120,60}}))); IDEAS.Buildings.Components.RectangularZoneTemplate bathRoom( - hFloor=hFloor0, + hFloor=hFloor0 + 0.3, aziA=east, bouTypD=IDEAS.Buildings.Components.Interfaces.BoundaryType.BoundaryWall, redeclare package Medium = MediumAir, @@ -280,7 +280,7 @@ model Structure "Ppd 12 example model" IDEAS.Buildings.Components.RectangularZoneTemplate stairWay( redeclare package Medium = MediumAir, - hFloor=hFloor0, + hFloor=hFloor0 + 0.3, h_winA=1.69, redeclare IDEAS.Examples.PPD12.Data.OuterWall conTypA, redeclare IDEAS.Examples.PPD12.Data.TripleGlazing glazingA, @@ -307,7 +307,7 @@ model Structure "Ppd 12 example model" annotation (Placement(transformation(extent={{86,26},{66,6}}))); IDEAS.Buildings.Components.RectangularZoneTemplate bedRoom2( - hFloor=hFloor0 + hFloor1, + hFloor=hFloor0 + hFloor1 + 0.6, aziA=east, bouTypC=IDEAS.Buildings.Components.Interfaces.BoundaryType.OuterWall, bouTypD=IDEAS.Buildings.Components.Interfaces.BoundaryType.BoundaryWall, @@ -337,7 +337,7 @@ model Structure "Ppd 12 example model" annotation (Placement(transformation(extent={{276,82},{256,62}}))); IDEAS.Buildings.Components.RectangularZoneTemplate bedRoom3( redeclare package Medium = MediumAir, - hFloor=hFloor0 + hFloor1, + hFloor=hFloor0 + hFloor1 + 0.6, h_winA=1.1, redeclare IDEAS.Examples.PPD12.Data.CommonWall conTypD, redeclare IDEAS.Examples.PPD12.Data.CommonWall conTypB, From 0e47c0eec12b2f72367fc8b53461c7ed529acb58 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 10:29:23 +0100 Subject: [PATCH 06/12] Wrong flooring type in PPD12? The flooring used in the staircase was IDEAS.Buildings.Validation.Data.Constructions.LightWall, but this includes a layer of insulation with a thickness of 1.003m. Which really doesn't seem to be correct. I changed the types to IDEAS.Examples.PPD12.Data.Floor for now. --- IDEAS/Examples/PPD12/Structure.mo | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/IDEAS/Examples/PPD12/Structure.mo b/IDEAS/Examples/PPD12/Structure.mo index cbbc0855b..21b998b80 100644 --- a/IDEAS/Examples/PPD12/Structure.mo +++ b/IDEAS/Examples/PPD12/Structure.mo @@ -285,8 +285,7 @@ model Structure "Ppd 12 example model" redeclare IDEAS.Examples.PPD12.Data.OuterWall conTypA, redeclare IDEAS.Examples.PPD12.Data.TripleGlazing glazingA, redeclare IDEAS.Examples.PPD12.Data.CommonWall conTypB, - redeclare IDEAS.Buildings.Validation.Data.Constructions.LightWall - conTypFlo, + redeclare IDEAS.Examples.PPD12.Data.Floor conTypFlo, redeclare IDEAS.Examples.PPD12.Data.InteriorWall10 conTypC, A_winA=1.09*1.69,aziA=east, bouTypA=IDEAS.Buildings.Components.Interfaces.BoundaryType.OuterWall, @@ -377,8 +376,7 @@ model Structure "Ppd 12 example model" origin={283,-2}))); IDEAS.Buildings.Components.InternalWall cei3( azi=0, - redeclare IDEAS.Buildings.Validation.Data.Constructions.LightWall - constructionType, + redeclare IDEAS.Examples.PPD12.Data.Floor constructionType, A=lHallway*wHallway2, inc=IDEAS.Types.Tilt.Floor) "Dummy for representing stairway connection between floors" From 605e0a8574a9bc9b6e17d96d912563de2e8e073a Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 11:39:11 +0100 Subject: [PATCH 07/12] Using incInt in stead of inc This turns out to be important when a surface model is extended and then orientation is redeclared --- .../Components/Interfaces/PartialSurface.mo | 6 +++--- IDEAS/Buildings/Components/InternalWall.mo | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/IDEAS/Buildings/Components/Interfaces/PartialSurface.mo b/IDEAS/Buildings/Components/Interfaces/PartialSurface.mo index 2ad2570a9..e5c97b533 100644 --- a/IDEAS/Buildings/Components/Interfaces/PartialSurface.mo +++ b/IDEAS/Buildings/Components/Interfaces/PartialSurface.mo @@ -51,8 +51,8 @@ partial model PartialSurface "Partial model for building envelope component" final parameter Modelica.Units.SI.Length hzone_a( fixed=false);//connected with propsbus in inital equation final parameter Modelica.Units.SI.Length hAbs_floor_a( fixed=false); - parameter Modelica.Units.SI.Length hVertical=if IDEAS.Utilities.Math.Functions.isAngle(inc,IDEAS.Types.Tilt.Floor) or IDEAS.Utilities.Math.Functions.isAngle(inc,IDEAS.Types.Tilt.Ceiling) then 0 else hzone_a "Vertical surface height, height of the surface projected to the vertical, 0 for floors and ceilings" annotation(Evaluate=true); - parameter Modelica.Units.SI.Length hRelSurfBot_a= if IDEAS.Utilities.Math.Functions.isAngle(inc,IDEAS.Types.Tilt.Ceiling) then hzone_a else 0 "Height between the lowest point of the surface (bottom) and the floor level of the zone connected at propsBus_a" + parameter Modelica.Units.SI.Length hVertical=if IDEAS.Utilities.Math.Functions.isAngle(incInt,IDEAS.Types.Tilt.Floor) or IDEAS.Utilities.Math.Functions.isAngle(incInt,IDEAS.Types.Tilt.Ceiling) then 0 else hzone_a "Vertical surface height, height of the surface projected to the vertical, 0 for floors and ceilings" annotation(Evaluate=true); + parameter Modelica.Units.SI.Length hRelSurfBot_a= if IDEAS.Utilities.Math.Functions.isAngle(incInt,IDEAS.Types.Tilt.Ceiling) then hzone_a else 0 "Height between the lowest point of the surface (bottom) and the floor level of the zone connected at propsBus_a" annotation(Evaluate=true); final parameter Modelica.Units.SI.Length Habs_surf=hAbs_floor_a+hRelSurfBot_a+(hVertical/2) "Absolute height of the middle of the surface, can be used to check the heights after initialisation"; @@ -102,7 +102,7 @@ partial model PartialSurface "Partial model for building envelope component" h_b1=-0.5*hzone_a + 0.75*hVertical + hRelSurfBot_a, h_a2=-0.5*hzone_a + 0.25*hVertical + hRelSurfBot_a, interZonalAirFlowType = sim.interZonalAirFlowType, - inc=inc) if add_door and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None annotation ( + inc=incInt) if add_door and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None annotation ( Placement(visible = true, transformation(origin = {30, -52}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); Modelica.Blocks.Sources.RealExpression AExp(y = A) "Area expression" annotation( Placement(transformation(origin = {0, 20}, extent = {{-10, -10}, {10, 10}}))); diff --git a/IDEAS/Buildings/Components/InternalWall.mo b/IDEAS/Buildings/Components/InternalWall.mo index d6452e796..b55af96d6 100644 --- a/IDEAS/Buildings/Components/InternalWall.mo +++ b/IDEAS/Buildings/Components/InternalWall.mo @@ -3,7 +3,7 @@ within IDEAS.Buildings.Components; model InternalWall "interior opaque wall between two zones" extends IDEAS.Buildings.Components.Interfaces.PartialOpaqueSurface( final use_custom_q50=true, - custom_q50=if IDEAS.Utilities.Math.Functions.isAngle(inc, 0) or IDEAS.Utilities.Math.Functions.isAngle(inc, Modelica.Constants.pi) then 0 else 2, + custom_q50=if IDEAS.Utilities.Math.Functions.isAngle(incInt, 0) or IDEAS.Utilities.Math.Functions.isAngle(incInt, Modelica.Constants.pi) then 0 else 2, final nWin=1, dT_nominal_a=1, E(y=if sim.computeConservationOfEnergy then layMul.E else 0), @@ -89,7 +89,7 @@ model InternalWall "interior opaque wall between two zones" parameter Modelica.Units.SI.Length hRelSurfBot_b=if - IDEAS.Utilities.Math.Functions.isAngle(inc, IDEAS.Types.Tilt.Floor) + IDEAS.Utilities.Math.Functions.isAngle(incInt, IDEAS.Types.Tilt.Floor) then hzone_b else 0 "Height above the zone floor at propsbus_b. Height where the surface starts. e.g. 0 for walls at floor level and floors. "; Modelica.Blocks.Interfaces.RealInput y_doo(min = 0, max = 1) if use_y_doo and useDooOpe @@ -108,7 +108,7 @@ model InternalWall "interior opaque wall between two zones" "Boundary for bus b" annotation( Placement(transformation(origin = {-48, -4}, extent = {{28, -76}, {8, -56}}, rotation = -0))); protected - parameter Real Ope_hvert = sin(inc)*h "Vertical opening height, height of the surface projected to the vertical, 0 for openings in horizontal floors and ceilings" annotation ( + parameter Real Ope_hvert = sin(incInt)*h "Vertical opening height, height of the surface projected to the vertical, 0 for openings in horizontal floors and ceilings" annotation ( Dialog(enable=hasCavity,group="Cavity or open door")); final parameter Real U_value = 1/(1/8 + sum(constructionType.mats.R) + 1/8) "Wall U-value"; constant Real r = 287 "Gas constant"; @@ -147,7 +147,7 @@ protected "Thermal-only model for open door" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); final parameter Boolean useDooOpe = hasCavity and sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts; - final parameter Real hThCor=cos(inc)*sum(constructionType.mats.d)/2 "Vertically projected internal wall thickness"; + final parameter Real hThCor=cos(incInt)*sum(constructionType.mats.d)/2 "Vertically projected internal wall thickness"; initial equation hzone_b = propsBus_b.hzone; @@ -160,9 +160,9 @@ initial equation assert(IDEAS.Utilities.Math.Functions.isAngle(incInt, IDEAS.Types.Tilt.Wall), "In " + getInstanceName() + ": Cavities without airflow are only supported for vertical walls, but inc=" + String(incInt) + ". The model is not accurate.", level = AssertionLevel.warning); end if; - if CheckVH and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(inc,0) then + if CheckVH and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(incInt,0) then assert(hAbs_floor_a IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(inc,Modelica.Constants.pi) then + elseif CheckVH and sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None and IDEAS.Utilities.Math.Functions.isAngle(incInt,Modelica.Constants.pi) then assert(hAbs_floor_a>hAbs_floor_b, getInstanceName()+ " is a floor, but the floor of the zone at probsbus_a (hfloor="+String(hAbs_floor_a) +") does not lie below the floor of zone at probsbus_b (hfloor="+String(hAbs_floor_b) +"), this should be fixed",level=AssertionLevel.error); end if; From 9caa65f47ce711a5de6506ab5039713976270b80 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 11:42:43 +0100 Subject: [PATCH 08/12] Added CavityInternalCeiling.mo and .mos Model to test internal floor with airflow modelled as ceiling (in all other models it happens to always be modelled as a floor and thus a bunch of the conditions were not in the unittesting) --- .../Examples/CavityInternalCeiling.mo | 43 +++++++++++++++++++ .../Components/Examples/package.order | 1 + .../Examples/CavityInternalCeiling.mos | 10 +++++ 3 files changed, 54 insertions(+) create mode 100644 IDEAS/Buildings/Components/Examples/CavityInternalCeiling.mo create mode 100644 IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos diff --git a/IDEAS/Buildings/Components/Examples/CavityInternalCeiling.mo b/IDEAS/Buildings/Components/Examples/CavityInternalCeiling.mo new file mode 100644 index 000000000..6890a49a3 --- /dev/null +++ b/IDEAS/Buildings/Components/Examples/CavityInternalCeiling.mo @@ -0,0 +1,43 @@ +within IDEAS.Buildings.Components.Examples; +model CavityInternalCeiling + "Illustration of an internal ceiling with an operable cavity" + extends IDEAS.Buildings.Examples.ZoneExample( + sim( interZonalAirFlowType = IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts),internalWall( + redeclare parameter + IDEAS.Buildings.Validation.Data.Constructions.LightRoof + constructionType, + incOpt=3, hasCavity = true), + zone1(hFloor=zone.hFloor + zone.hZone + 0.15)); +equation + + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + experiment( + StopTime=108000, + Interval=720, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + __Dymola_Commands(file="Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos" + "Simulate and plot"), + Documentation(info=" +

      +This example contains an example use of a controllable cavity in an internal wall. Note that it requires TwoPorts interzonal air flow. +

      +", revisions=" +
        +
      • +February 05 2025, Klaas De Jonge
        +First implementation. +
      • +
      +"), + __Dymola_experimentSetupOutput, + __Dymola_experimentFlags( + Advanced( + EvaluateAlsoTop=false, + GenerateAnalyticJacobian=true, + OutputModelicaCode=false), + Evaluate=true, + OutputCPUtime=true, + OutputFlatModelica=false)); +end CavityInternalCeiling; diff --git a/IDEAS/Buildings/Components/Examples/package.order b/IDEAS/Buildings/Components/Examples/package.order index 55cd02739..a53b134a1 100644 --- a/IDEAS/Buildings/Components/Examples/package.order +++ b/IDEAS/Buildings/Components/Examples/package.order @@ -2,6 +2,7 @@ AirflowBoxModel BeamRadiationOnFloor BuildingShadeExample CavityInternalWall +CavityInternalCeiling CavityWalls FacadeShadeExample HorizontalFinExample diff --git a/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos b/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos new file mode 100644 index 000000000..d6fc00815 --- /dev/null +++ b/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos @@ -0,0 +1,10 @@ +simulateModel("IDEAS.Buildings.Components.Examples.CavityInternalCeiling", stopTime=1000000, method="Lsodar", tolerance=1e-06, resultFile="CavityInternalCeiling"); + +createPlot(id=1, +y={"zone1.TSensor", "zone.TSensor"}, +range={0.0, 1000000.0, 274.0, 294.0}, +grid=true, +leftTitleType=1, +bottomTitleType=1, +colors={{0,0,255}, {255,0,0}}); +createPlot(id=1, position={0, 0, 1549, 435}, y={"zone.airModel.phi", "zone1.airModel.phi"}, range={0.0, 1000000.0, 0.64, 0.88}, erase=false, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); From 0d5b049f97a5414d174b5ea472ff284f46825510 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 11:43:05 +0100 Subject: [PATCH 09/12] Update height of TwoStoreyBoxes model --- IDEAS/Buildings/Components/Examples/TwoStoreyBoxes.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IDEAS/Buildings/Components/Examples/TwoStoreyBoxes.mo b/IDEAS/Buildings/Components/Examples/TwoStoreyBoxes.mo index 3eda9a495..f7eb8b797 100644 --- a/IDEAS/Buildings/Components/Examples/TwoStoreyBoxes.mo +++ b/IDEAS/Buildings/Components/Examples/TwoStoreyBoxes.mo @@ -5,7 +5,7 @@ model TwoStoreyBoxes "Model with two zones on different floors, one zone above t inner BoundaryConditions.SimInfoManager sim(interZonalAirFlowType=IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts,n50=1) annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); IDEAS.Buildings.Components.RectangularZoneTemplate Level( - hFloor=5, + hFloor=5.25, T_start=291.15, bouTypA=IDEAS.Buildings.Components.Interfaces.BoundaryType.OuterWall, bouTypB=IDEAS.Buildings.Components.Interfaces.BoundaryType.OuterWall, From a02d706c74a6c75fc074435766e6872fca29f1f7 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 12:22:39 +0100 Subject: [PATCH 10/12] Cleaned-up CrackOrOperableDoor parameter dialog --- .../Airflow/Multizone/CrackOrOperableDoor.mo | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo b/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo index a3529e2e3..5cfca8bb8 100644 --- a/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo +++ b/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo @@ -17,28 +17,30 @@ model CrackOrOperableDoor annotation (choices( choice(redeclare package Medium = IDEAS.Media.Air "Moist air"))); - parameter Modelica.Units.SI.Velocity vZer=0.001 - "Minimum velocity to prevent zero flow. Recommended: 0.001"; parameter Modelica.Units.SI.Length wOpe=0.9 "Width of opening" annotation (Dialog(group="Geometry")); parameter Modelica.Units.SI.Length hOpe=2.1 "Height of opening" annotation (Dialog(group="Geometry")); - + parameter SI.Angle inc=Modelica.Constants.pi/2 + "inclination angle (vertical=pi/2)" + annotation (Dialog(group="Geometry")); parameter BoundaryConditions.Types.InterZonalAirFlow interZonalAirFlowType "Interzonal air flow type"; final parameter Modelica.Units.SI.PressureDifference dpCloRat(displayUnit="Pa")=50 "Pressure drop at rating condition of closed door" annotation (Dialog(group="Rating conditions")); - parameter Modelica.Units.SI.Length h_b1 "Height at port b1 (hasCavity=false)"; - parameter Modelica.Units.SI.Length h_b2 = 0 "Height at port b2(hasCavity=false)"; - parameter Modelica.Units.SI.Length h_a1 = 0 "Height at port a1(hasCavity=false)"; - parameter Modelica.Units.SI.Length h_a2 "Height at port a2(hasCavity=false)"; + parameter Modelica.Units.SI.Length h_b1 "Height of crack at port b1 (hasCavity=false), center of conected zone is 0" annotation (Dialog(group="Density Column Heights")); + parameter Modelica.Units.SI.Length h_b2 = 0 "Height of crack at port b2(hasCavity=false), center of conected zone is 0" annotation (Dialog(group="Density Column Heights")); + parameter Modelica.Units.SI.Length h_a1 = 0 "Height of crack at port a1(hasCavity=false), center of conected zone is 0" annotation (Dialog(group="Density Column Heights")); + parameter Modelica.Units.SI.Length h_a2 "Height at of crack port a2(hasCavity=false), center of conected zone is 0" annotation (Dialog(group="Density Column Heights")); parameter SI.Length hA=(h_a1 + h_b2)/2 - "Height of reference pressure at port a1 for opening (hasCavity=true) model"; + "Height of reference pressure at port a1 for opening (hasCavity=true) model, opening starting height is 0" + annotation (Dialog(group="Density Column Heights")); parameter SI.Length hB=(h_a2 + h_b1)/2 - "Height of reference pressure at port b1 for opening (hasCavity=true) model"; + "Height of reference pressure at port b1 for opening (hasCavity=true) model, opening starting height is 0" + annotation (Dialog(group="Density Column Heights")); final parameter Real CDCloRat(min=0, max=1)=1 "Discharge coefficient at rating conditions of closed door" @@ -68,14 +70,19 @@ model CrackOrOperableDoor parameter Modelica.Units.SI.PressureDifference dp_turbulent( min=0, displayUnit="Pa") = 0.01 - "Pressure difference where laminar and turbulent flow relation coincide. Recommended: 0.01"; + "Pressure difference where laminar and turbulent flow relation coincide. Recommended: 0.01" annotation (Dialog(tab="Advanced",group="Crack model regularisation")); parameter Modelica.Units.SI.PressureDifference dp_turbulent_ope(min=0,displayUnit="Pa") = (MFtrans/(rho_default*(CDOpe * hOpe*wOpe * sqrt(2/rho_default))))^(1/mOpe) - if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Pressure difference where laminar and turbulent flow relation coincide for large cavities"; - parameter Modelica.Units.SI.MassFlowRate MFtrans=(hOpe*wOpe)*VItrans*REtrans/DOpe if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Recommended massflowrate used for reguralisation"; - parameter Modelica.Units.SI.Length DOpe=4*hOpe*wOpe/(2*hOpe+2*wOpe) if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Estimated hydraulic diameter of the opening - 4*A/Perimeter"; - constant Modelica.Units.SI.ReynoldsNumber REtrans=30 if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Assumed Reynolds number at transition"; - constant Modelica.Units.SI.DynamicViscosity VItrans=0.0000181625 if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Assumed dynamic viscosity of air at transition"; + if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Pressure difference where laminar and turbulent flow relation coincide for large cavities" + annotation (Dialog(tab="Advanced",group="Door model regularisation")); + parameter Modelica.Units.SI.MassFlowRate MFtrans=(hOpe*wOpe)*VItrans*REtrans/DOpe if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Recommended massflowrate used for reguralisation" + annotation (Dialog(tab="Advanced",group="Door model regularisation")); + parameter Modelica.Units.SI.Length DOpe=4*hOpe*wOpe/(2*hOpe+2*wOpe) if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Estimated hydraulic diameter of the opening - 4*A/Perimeter" + annotation (Dialog(tab="Advanced",group="Door model regularisation")); + constant Modelica.Units.SI.ReynoldsNumber REtrans=30 if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Assumed Reynolds number at transition" + annotation (Dialog(tab="Advanced",group="Door model regularisation")); + constant Modelica.Units.SI.DynamicViscosity VItrans=0.0000181625 if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Assumed dynamic viscosity of air at transition" + annotation (Dialog(tab="Advanced",group="Door model regularisation")); final parameter Medium.ThermodynamicState state_default=Medium.setState_pTX( T=Medium.T_default, @@ -151,7 +158,7 @@ model CrackOrOperableDoor hOpe=hOpe, dpCloRat=dpCloRat, LClo=LClo, - vZer=MFtrans/(rho_default*doo.wOpe*doo.hOpe)) + vZer=MFtrans/(rho_default*doo.wOpe*doo.hOpe)/1000) if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts annotation ( Placement(visible = true, transformation(origin={-2,0}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); IDEAS.Fluid.Sources.Boundary_pT bou( @@ -165,8 +172,7 @@ model CrackOrOperableDoor "Door constantly opened" annotation ( Placement(visible = true, transformation(origin = {-54, -14}, extent = {{-6, -6}, {6, 6}}, rotation = 0))); - parameter SI.Angle inc=Modelica.Constants.pi/2 - "inclination angle (vertical=pi/2)"; + initial equation assert( not (interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts and useDoor and use_y), "In " +getInstanceName() + ": Cannot use a controllable door unless interZonalAirFlowType == TwoPorts."); From 9b9350765029b0ac1050de03a67cfca550361d82 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 12:38:02 +0100 Subject: [PATCH 11/12] Further cleaning of CrackOrOperableDoor model --- .../Airflow/Multizone/CrackOrOperableDoor.mo | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo b/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo index 5cfca8bb8..2885161b2 100644 --- a/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo +++ b/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo @@ -16,19 +16,14 @@ model CrackOrOperableDoor Modelica.Media.Interfaces.PartialMedium "Medium in the component" annotation (choices( choice(redeclare package Medium = IDEAS.Media.Air "Moist air"))); - - parameter Modelica.Units.SI.Length wOpe=0.9 "Width of opening" - annotation (Dialog(group="Geometry")); - parameter Modelica.Units.SI.Length hOpe=2.1 "Height of opening" - annotation (Dialog(group="Geometry")); - parameter SI.Angle inc=Modelica.Constants.pi/2 - "inclination angle (vertical=pi/2)" - annotation (Dialog(group="Geometry")); parameter BoundaryConditions.Types.InterZonalAirFlow interZonalAirFlowType "Interzonal air flow type"; - final parameter Modelica.Units.SI.PressureDifference dpCloRat(displayUnit="Pa")=50 - "Pressure drop at rating condition of closed door" - annotation (Dialog(group="Rating conditions")); + parameter SI.Angle inc=Modelica.Constants.pi/2 "inclination angle (vertical=pi/2)"; + parameter Modelica.Units.SI.Area A_q50 "Surface area for leakage computation (closed door)" annotation (Dialog(group="Crack or Closed door")); + parameter Real q50(unit="m3/(h.m2)") "Surface air tightness" annotation (Dialog(group="Crack or Closed door")); + parameter Modelica.Units.SI.Length wOpe=0.9 "Width of opening" annotation (Dialog(group="Open door")); + parameter Modelica.Units.SI.Length hOpe=2.1 "Height of opening" annotation (Dialog(group="Open door")); + parameter Integer nCom=if abs(hOpe*sin(inc)) < 0.01 then 2 else max(2,integer(abs(hOpe*sin(inc))/4)) "Number of compartments for the discretization" annotation (Dialog(group="Open door")); parameter Modelica.Units.SI.Length h_b1 "Height of crack at port b1 (hasCavity=false), center of conected zone is 0" annotation (Dialog(group="Density Column Heights")); parameter Modelica.Units.SI.Length h_b2 = 0 "Height of crack at port b2(hasCavity=false), center of conected zone is 0" annotation (Dialog(group="Density Column Heights")); @@ -42,11 +37,13 @@ model CrackOrOperableDoor "Height of reference pressure at port b1 for opening (hasCavity=true) model, opening starting height is 0" annotation (Dialog(group="Density Column Heights")); + final parameter Modelica.Units.SI.PressureDifference dpCloRat(displayUnit="Pa")=50 + "Pressure drop at rating condition of closed door" + annotation (Dialog(group="Rating conditions")); final parameter Real CDCloRat(min=0, max=1)=1 "Discharge coefficient at rating conditions of closed door" annotation (Dialog(group="Rating conditions")); - parameter Modelica.Units.SI.Area A_q50 "Surface area for leakage computation (closed door)"; - parameter Real q50(unit="m3/(h.m2)") "Surface air tightness"; + final parameter Modelica.Units.SI.Area LClo(min=0) = ((q50*A_q50/3600)/(dpCloRat)^mClo)/(((dpCloRat)^(0.5-mClo))*sqrt(2/rho_default)) "Effective leakage area of internal wall (when door is fully closed)" @@ -61,11 +58,10 @@ model CrackOrOperableDoor parameter Real mClo= 0.65 "Flow exponent for crack or crack of closed door" annotation (Dialog(group="Crack or Closed door")); - parameter Integer nCom=if abs(hOpe*sin(inc)) < 0.01 then 2 else max(2,integer(abs(hOpe*sin(inc))/4)) "Number of compartments for the discretization"; - parameter Boolean useDoor = false "=true, to use operable door instead of a crack"; - parameter Boolean use_y = true "=true, to use control input"; - parameter Boolean openDoorOnePort = false "Sets whether a door is open or closed in one port configuration"; + parameter Boolean useDoor = false "=true, to use operable door instead of a crack" annotation (Dialog(group="Open door")); + parameter Boolean use_y = true "=true, to use control input" annotation (Dialog(group="Open door")); + parameter Boolean openDoorOnePort = false "Sets whether a door is open or closed in one port configuration" annotation (Dialog(group="Open door")); parameter Modelica.Units.SI.PressureDifference dp_turbulent( min=0, From fd07ad5cf07ace1d3de304cf0f91f5d2a8963781 Mon Sep 17 00:00:00 2001 From: kldjonge Date: Wed, 5 Feb 2025 13:20:56 +0100 Subject: [PATCH 12/12] Update CavityInternalCeiling.mos --- .../Buildings/Components/Examples/CavityInternalCeiling.mos | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos b/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos index d6fc00815..a6e663227 100644 --- a/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos +++ b/IDEAS/Resources/Scripts/Dymola/Buildings/Components/Examples/CavityInternalCeiling.mos @@ -1,10 +1,10 @@ -simulateModel("IDEAS.Buildings.Components.Examples.CavityInternalCeiling", stopTime=1000000, method="Lsodar", tolerance=1e-06, resultFile="CavityInternalCeiling"); +simulateModel("IDEAS.Buildings.Components.Examples.CavityInternalCeiling", stopTime=108000, method="Dassl", tolerance=1e-06, resultFile="CavityInternalCeiling"); createPlot(id=1, y={"zone1.TSensor", "zone.TSensor"}, -range={0.0, 1000000.0, 274.0, 294.0}, +range={0.0, 108000.0, 274.0, 294.0}, grid=true, leftTitleType=1, bottomTitleType=1, colors={{0,0,255}, {255,0,0}}); -createPlot(id=1, position={0, 0, 1549, 435}, y={"zone.airModel.phi", "zone1.airModel.phi"}, range={0.0, 1000000.0, 0.64, 0.88}, erase=false, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={0, 0, 1549, 435}, y={"zone.airModel.phi", "zone1.airModel.phi"}, range={0.0, 108000.0, 0.64, 0.88}, erase=false, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}});