Preprocess Building Usage

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


Contents

[edit] Special Parameters / Automatic Model Enhancement Functions

Building Usage Library
Pick-up an xml file in a directory.
Usage Assignment
Select the Mapping file (xml or csv), relating Building Function to the Zone Usages (ALKIS Mapping in the case of Germany).


[edit] Preprocessing Details

[edit] Assignment of the usage zone(s) and calculation of their used area

If no UsageZone are already set in the data model:
The ALKIS Code stored in the CityGML Field blg:BuildingFunction is converted in single building energy usages according to the DIN V 18599-10 through the ALKIS Mapping of the Building Usage Library. It results in the creation of one or two Usage Zone, assigned to the considered building.

  • If the building has just one usage, the UsageZone is considered to occupy the whole building and its zone area is set equal the heated area.
  • If the building has two usages (mixed buildings), the secondary UsageZone is considered to occupy the ground floor (its area is set to the living area of the ground floor, i.e. 80% of footprint area), while the primary UsageZone occupies the rest of the building.

If at less one UsageZone is already set in the data model:
Its zone area is checked in relation to the building heated area. If the building has several UsageZone and just one zone area is missing, the latter is calculated as the difference between the building heated area and the sum of the other zone area. If two or more zone area are missing, a severe error message is sent. If the sum of the zone area is higher than the building heated area, a warning message is sent.

[edit] Determination of the building usage properties

In the Energy ADE v0.2, the UsageZone object holds all the usage-related properties:

  • average intern gains (W/m²)
  • healthy air change rate (vol/h)
  • cooling set-point temperature (°C)
  • heating set-point temperature (°C)
  • heating set-back temperature (°C)
  • usage hours per day (integer)
  • usage days per year (integer)
  • occupant number (integer)
  • domestic hot water consumption ratio (kWh/m².yr)
  • and electrical appliances consumption ratio (kWh/m².yr).

If one of these parameters is missing, it will be completed with the default data of the Building Usage Library.
To obtain the occupant number, the occupancy density ratio (Pers/m²) of the library will be multiplied with the zone area.
If no heating set-back temperature is indicated in the library for the Usage Type, the set-point temperature will be considered instead.

[edit] Determination of the average air change rate for monthly energy balance

The air change rate considered in the monthly energy balance calculation is the maximum of the healthy air change rate (calculated in the Building Usage Processing) and Infiltration rate (assessed in the Building Physics Processing). In case the mechanical air change rate is available, so this is taken otherwise healthy air change rate is calculated based on the healthy air change rate per person extracted from the standard DIN 18599_10 2011. Finally the ventilation rate is a sum up of nVentil averaged over operation time and infiltration rate over non operation time.

The java code in buildingUsagePreProcessor is:

double usageHoursProp = usageType.getUsageDaysPerYear().orElse((long) 365) / 365. * usageType.getUsageHoursPerDay().orElse((long) 24) / 24.;

double nVentil = Math.max(infiltrationRate, usageType.getMechanicalAirChangeRate().orElse( usageType.getHealthyAirChangeRatePerPerson().orElse(40.) * usageType.getOccupancyDensity().orElse(0.) / averageCeilingHeight));

double nMean = nVentil * usageHoursProp + infiltrationRate * (1 - usageHoursProp);


This code is here simplified for an easier follow:

if MechinalAirChangeRate is available -->

      nVentil= Max(infiltrationRate, MechinalAirChangeRate);

else

       HealthyAirChangeRate [h-1]= HealthyAirChangeRatePerPerson [m³/h/person]* OccupancyDensity [persons/m²]/averageCeilingHeight [m] 
       nVentil= Max(infiltrationRate, HealthyAirChangeRate); 
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox