Preprocess Building Physics

From SIMSTADT
Jump to: navigation, search
Purpose / Function
Enhance the city model with physical information data, using Building Physics libraries and data processing algorithms.
Pre-requisite: Workflow-step importCityGML and GeometryPreprocessor must have been run previously.
Workflow Step Implemention
eu.simstadt.workflow.PhysicsPreprocessor extends WorkflowStep<SimStadtBuilding, SimStadtBuilding, SimStadtModel>

Contents

[edit] Workflowstep characteristics

[edit] Special Parameters / Automatic Model Enhancement Functions

Building Physics Library
Pick-up an xml file in a directory. Each Library is related to specific building types.
Refurbishment State Assignment
Indicate if Buildings without Refurbishment Information (yearOfRefurbishment / Refurbishment variant) should be considered in their "original state", or if "Probabilistic Refurbishment Variants" should be considered. In this last case, the user may indicate for each building typologies a probability purcentage associated to each refurbishment variants.

[edit] Preprocessing Details

[edit] Determination of the building type

If buildingType is not already set in the CityGML file, it is then assigned following several criteria (height, dwelling number, foot print area, proportion adjacent wall surface/outwall surface)

Extract of eu.simstadt.buildingphysics.preproc/BuildingTypesGermany :

if (height > 23) { // definition of high tower (HochHaus) in Germany
   buildingType = "HH";
}
else if (height > 16) {// Big Multi-family house (Gross MehrFamilienHaus) in Germany. Strictly more than 5 storeys.
   buildingType = "GMH";
}
else if ((height > 11) || (dwellings >= 6)) {// Multi-family house (MehrFamilienHaus) in Germany. Strictly more than 3 storeys or more than 6 dwellings
   buildingType = "MFH";
}
else {
   assert height <= 11;
   double sumSharedWallArea = 0;
   double sumOutWallArea = 0;
   double groundArea = 0;
   for (BoundarySurfaceUnit s : building.getBoundarySurfaceUnits()) {
      double exteriorSurfaceArea = Objects.nonNull(s.getExteriorSurfaceArea()) ? s.getExteriorSurfaceArea() : 0;
      if (s.getBoundarySurfaceType() == boundarySurfaceType.wallsurface) {
         sumSharedWallArea += Objects.nonNull(s.getSharedSurfaceArea()) ? s.getSharedSurfaceArea() : 0;
         sumOutWallArea += exteriorSurfaceArea;
      }
      else if (s.getBoundarySurfaceType() == boundarySurfaceType.groundsurface)
         groundArea += exteriorSurfaceArea;
   }
   
   if (sumSharedWallArea / sumOutWallArea > 0.2 || groundArea > 200 || dwellings > 2)
      buildingType = "RH"; // Row house (ReihenHaus) in Germany. 20% of adjacent walls, or long shape,  or more than 2 dwellings
   else
      buildingType = "EFH"; // Single family house (EinFamilienHaus) in Germany
   }
}

[edit] Determination of the average storey height

if averageStoreyHeight is not already set in the CityGML file, a default average storey height coming from the Building Typology Library is then considered, depending on the building type and the year of construction (mandatory attribute).
This average storey height is later refined, once the storeys above ground and basement height above ground have been calculated, and the attic heating type assessed (Function: public void assessBasementAndAverageStoreyHeights()).

[edit] Determination of attic heating type

if atticHeating is not already set in the CityGML file, it is then assessed following the criteria below:
...for Building LOD1:

  • If RoofType is "Flat", then atticHeating = NO_ROOM, otherwise atticHeating = HEATED

...for Building LOD2:

  • If RoofType is "Flat" or ridgeHeight - eavesHeight <0.1, then atticHeating = NO_ROOM
  • If 0.1 < ridgeHeight - eavesHeight <2, then atticHeating = NOT_HEATED (no place to live)
  • If ridgeHeight - eavesHeight > 2, then atticHeating = HEATED (enough place to live)

[edit] Determination of storeys above ground

if storeysAboveGround is not already set in CityGML File, it is then assessed in function of the building heights (Mean, Eaves and Ridge Height) and of the average storey height, as detailed below:
...for Building LOD1:

switch (atticHeating) {
case NO_ROOM:
   return (int) Math.round(meanHeight / averageStoreyHeight);
case NOT_HEATED:
case HEATED:
   return (int) Math.floor(meanHeight / averageStoreyHeight);
}

...for Building LOD2:

switch (atticHeating) {
case NO_ROOM:
   return (int) Math.round(ridgeHeight / averageStoreyHeight);
case NOT_HEATED:
   return (int) Math.round(eavesHeight / averageStoreyHeight);
case HEATED:
   return (int) Math.floor(ridgeHeight / averageStoreyHeight);
}

[edit] Determination of basement heating type and basement ceiling height above ground surface

if basementHeating = NO_ROOM, then basementCeilingHeightAboveGround = 0, and reciprocally.
if basementCeilingHeightAboveGround surface is not already set in the CityGML file, it is then assessed following the criteria below:
...for Building LOD1:

  • basementCeilingHeightAboveGround = 0 and basementHeating = NO_ROOM

...for Building LOD2:

  • If attic is unheated: basementCeilingHeightAboveGround = eavesHeight - nStoreys * statisticalStoreyHeight
  • if attis is heated or non-existent: basementCeilingHeightAboveGround = ridgeHeight - nStoreys * statisticalStoreyHeight;

The calculated basementCeilingHeightAboveGround is then controlled, forced to remain between 0 and MAX_BASEMENT_CEILING_HEIGHT_ABOVE_GROUND_SURFACE (constant set to 1 meter). If basementCeilingHeightAboveGround = 0, then basementHeating = NO_ROOM, otherwise basementHeating = NOT_HEATED

[edit] Determination of the heated volume

Buildingenvelope.png

Function : public void calculateHeatedVolume(SimStadtBuilding b)

The heated volume is deduced from the gross geometric volume (calculated in the Geometric Preprocessing), depending on the basement heating type, attic heating type, the Building LOD, the building geometrical attributes calculated in the GeometricPreprocessing and default data from building libraries (e.g. averageStoreyHeight).

Several assumptions must be taken for this calculation
...for building LOD1:

  1. if the attic is unheated, the attic height volume corresponds to half a full storey volume (i.e. attic height = average height and roof is pitched or gabled)
  2. if the basement floor is heated, the underground basement volume corresponds to a full storey volume
  3. if the basement floor is unheated, the basement volume part over the ground is neglectible

...for building LOD2:

  1. if the attic is unheated, the roof will be considered as mono-pitched our gabled roof, whose projection on the ground matches the building footprint
  2. if the attic is unheated, EavesHeight corresponds to the top ceiling
Basement Heating
NOT_HEATED HEATED NO_ROOM
Attic
Heating
NOT_HEATED LOD1: grossVolume - footPrintArea * averageStoreyHeight / 2

LOD2: grossVolume - footPrintArea *
((ridgeHeight - eavesHeight) / 2 - cellarHeightAboveGround)

LOD1: grossVolume + footPrintArea * averageStoreyHeight / 2

LOD2: grossVolume - footPrintArea *
((ridgeHeight - eavesHeight) / 2 + cellarHeightUnderGround)

LOD1: grossVolume - footPrintArea * averageStoreyHeight / 2

LOD2: grossVolume - footPrintArea *
(ridgeHeight - eavesHeight) / 2

HEATED LOD1: grossvolume

LOD2: grossVolume - footPrintArea * cellarHeightAboveGround

LOD1: grossVolume + footPrintArea * averageStoreyHeight

LOD2: grossVolume + footPrintArea * cellarHeightUnderGround

LOD1 and LOD2: grossVolume
NO_ROOM LOD1: grossvolume

LOD2: grossVolume - footPrintArea * cellarHeightAboveGround

LOD1: grossVolume + footPrintArea * averageStoreyHeight

LOD2: grossVolume + footPrintArea * cellarHeightUnderGround

LOD1 and LOD2: grossVolume

Where:

  • cellarHeightAboveGround: the average distance between the ground surface and the basement ceiling height (= BasementCeilingHeightAboveGroundSurface)
  • cellarHeightUnderGround: the average distance between the ground surface and the basement floor height (~ averageStoreyHeight - BasementCeilingHeightAboveGroundSurface)

[edit] Determination of the thermal boundary area above ground and below ground

The thermal boundary area above ground and below ground are calculated in function of the exteriorSurfaceArea (calculated in the Geometric Preprocessing), its inclination, the boundary surface type, the attic heating and basement heating types.
Function : public void calculateThermalBoundaryAreas(SimStadtBuilding b)

  • If boundary surface type is a groundsurface: the its thermalBoundaryAreaBelowGround = exteriorSurfaceArea
  • If boundary surface type is a roofsurface:
    • if attic is heated or the roof is flat: thermalBoundaryAreaAboveGround = exteriorSurfaceArea
    • if attic is unheated: thermalBoundaryAreaAboveGround = exteriorSurfaceArea * cos(inclination)
  • If boundary surface type is a wallsurface: thermalBoundaryAreaAboveGround = exteriorSurfaceArea

In the case of a heated or unheated basement, the wall surface below ground (cellar wall), respectively between the ground surface and the basement ceiling, are not calculable with the existing formulas from the GeometricPreprocessing, which leads to an error particularly high for buildings with heated basement. A fonction calculating the wall edge along the ground would be here required.

[edit] Determination of the energy reference heated area

if HeatedArea not already set in the CityGML file, then it is calculated according with the norm DIN 4108-6 (EnEV reference heated area)
Function : public void calculateEnEVHeatedArea(SimStadtBuilding b)

if (averageStoreyHeight >= 2.5 && averageStoreyHeight <= 3) {
   heatedArea = 0.32 * volume;
} else {
   heatedArea = (1 / averageStoreyHeight - 0.04) * volume;
}

[edit] Determination of the general thermal properties of the building

If the thermal bridge Uvalue, the indirectly heated area ratio and the building effective thermal capacity are not set in the CityGML file, default values coming from the Building Typology Library are then considered, depending on the building type, year of construction (mandatory attribute) and possibly refurbishment variant of the building.

[edit] Determination of the thermal and optical properties of the boundary surfaces

Function : public void assignShellPropertiesFromLibraryIfMissing(SimStadtBuilding building, boolean isFlatRoof,BuildingPhysicsCategoryResolved category)

In the Energy ADE v0.2, a ShellProperties object holds all the thermal and optical properties of the BoundarySurfaceUnit:

  • Uvalue (W/m².K)
  • short wave reflectance
  • window Uvalue (W/m².K)
  • window GValue
  • WindowRatio
  • FrameRatio

If this ShellProperties object is not set for the BoudarySurfaceUnit previously, default ShellProperties coming from the Building Typology Library are then considered, depending on the building type, year of construction (mandatory attribute) and possibly refurbishment variant of the building.
If this ShellProperties is already set for the BoudarySurfaceUnit but it has missing attributes, the attributes of the default ShellProperties are copied.

Management of optional attributes to be optimized.

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox