<gh_stars>1-10
# @Author  : <NAME>
# @Email   : <EMAIL>
SimuData = \
 {  'Begin_Day_of_Month' : 1,
    'Begin_Month' : 1,
    'End_Day_of_Month' : 31,
    'End_Month' : 12,
    'SaveLogFiles' : False, #if True, computing folder is not removed thus all energyplus outpus files are preserved
    #'FloorZoningLevel' : True,  #1 zone per floor, if False --> 1 zone per building bloc
 }

#files are needed to be located in the eather folder of EnergyPlus asthe same path is used afterward to launch the simulation
WeatherFile = \
 {'Loc' : 'WeatherData/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw', #WE_Stockholm.Arlanda.024600_IWEC.epw'
  }

#Thisdict gives all the materials characteristics.
# There are 2 layer maximum, the word Inertia and Insulation or key factor further in the code. If one layer is wanted, just comment the other one.
#the basement is considered not heated and thus never insulated layer
BaseMaterial = \
 {'Window' : {'UFactor' :  1.9,
            'Solar_Heat_Gain_Coefficient' : 0.7,
            'Visible_Transmittance' : 0.8,
            },
'Wall Inertia' : {'Thickness' : 0.2,                   #this layer will be considered also for the basement walls
                  'Conductivity' : 0.9,
                'Roughness' : "Rough",
                'Density' : 2300,
                'Specific_Heat' : 1000,
                },
'Wall Insulation' : {'Thickness' : 0.2,
            'Conductivity' : 0.03,
            'Roughness' : "Rough",
            'Density' : 150,
            'Specific_Heat' : 1000,
            #'Thermal_Absorptance' : 0.001,
            },
'Basement Floor' : {'Thickness' : 0.1,     #this layer will be considered also for the basement floor
            'Conductivity' : 0.9,
            'Roughness' : "Rough",
            'Density' : 2300,
            'Specific_Heat' : 1000,
            },
# 'Basement Floor Insulation' : {'Thickness' : 0.05,    #not needed as even without basement the Heated1rstFloor is taken for the first floor
#             'Conductivity' : 0.25*0.1,
#             'Roughness' : "Rough",
#             'Density' : 1000,
#             'Specific_Heat' : 1000,
#             },
# 'Roof Inertia' : {'Thickness' : 0.05, #not needed unless one wants to have inertia in the roof layer
#             'Conductivity' : 0.15*0.1,
#             'Roughness' : "Rough",
#             'Density' : 1000,
#             'Specific_Heat' : 1000,
#             },
'Roof Insulation' : {'Thickness' : 0.3,
            'Conductivity' : 0.03,
            'Roughness' : "Rough",
            'Density' : 150,
            'Specific_Heat' : 1000,
            #'Thermal_Absorptance' : 0.001,
            },
'Heated1rstFloor Inertia' : {'Thickness' : 0.1,
            'Conductivity' : 0.9,
            'Roughness' : "Rough",
            'Density' : 2300,
            'Specific_Heat' : 1000,
            },
'Heated1rstFloor Insulation' : {'Thickness' : 0.15,
            'Conductivity' : 0.035,
            'Roughness' : "Rough",
            'Density' : 150,
            'Specific_Heat' : 1000,
            #'Thermal_Absorptance' : 0.001,
            },
  }

#this dict is for specification of internalMass equivalence.
#the material should represent the overall mean material of all partition and furnitures
#the weight par zone area gives the quentity and the Average thickness enable to compute the surface for heat transfer
#the mass gives a volume thanks to the density that gives a surface thanks to the average thickness
InternalMass = \
 {'HeatedZoneIntMass' : {
        'Thickness' : 0.1, #m this will define the surface in contact with the zone
        'Conductivity' : 0.3,
        'Roughness' : "Rough",
        'Density' : 600,
        'Specific_Heat' : 1400,
        'WeightperZoneArea' : 40, #kg/m2
    },
'NonHeatedZoneIntMass' : {
        'Thickness' : 0.1, #m this will define the surface in contact with the zone
        'Conductivity' : 0.3,
        'Roughness' : "Rough",
        'Density' : 600,
        'Specific_Heat' : 1400,
        'WeightperZoneArea' : 40, #kg/m2
    },
  }

#this dict give element for the Domestic Hot water. it gives the externail file for the water taps and the inlet cold water temp.
#if empty it is no longer taken into account. if new file are given, thses should be present in the Externael file folder
ExtraEnergy = \
        {}          #if no DomesticHot Water is to be consdered, it still needs an empty dict
# ExtraEnergy = \
#     {'Name' : 'DHW',
#             'WatertapsFile':'ExternalFiles/mDHW_Sum_over_40.txt', #this file is in l/mnin and will be converted into m3/s afertward. it needs to have hourly values
#             'ColdWaterTempFile' :'ExternalFiles/ColdWaterTemp.txt',
#             'HotWaterSetTemp': 55,
#             'WaterTapsMultiplier':1e-4/6/40, #this is because the file given above is for 40 apartment and is in l/min where we need m3/s. in the code in is afterward multiplied by the number of apartement in the building
#             }

#this dict is for the shading paradigm. There are two files that we need. the firt one is the main geojson that contains all buildings and their propreties
#the other one contains for each shading surface id the vertex point and the building Id in order to catch the height of it.
#to externalize as much as possible, these elements are reported in the dict below
GeomElement = \
 {'BuildIDKey' : ['<KEY>', 'FormularId','objectid','OBJECTID'],
  'ShadingIdKey' : 'vaggid',
  'BuildingIdKey' : 'byggnadsid',
  'VertexKey':'geometries',
  'MaxShadingDist': 200,
  'DistanceTolerance': 0.2,  #this is a threshold below every edge are removed and vertexes merged
  }
#this dict gives information on occupancy times each day. If DCV = True, the airflow will follow the number of person
# and the schedule. if not it will be based only on the extra airflow rate but without schedule (all the time)
#if some separation (ventilation and people) is needed than people heat generation should be converted inteo Electric Load as thus ariflow can be
# related to a schedule, other wise...impossible
BasisElement = \
{'Office_Open': '08:00',
 'Office_Close': '18:00',
 'DemandControlledVentilation' : True,
 'OccupBasedFlowRate': 7,       # l/s/person
 'OccupHeatRate' : 70,          #W per person
 'EnvLeak': 0.8,                # l/s/m2 at 50Pa
 'BasementAirLeak': 1,          #in Air change rate [vol/hour]
 'wwr': 0.25,
 'ExternalInsulation' : False,
 'ElecYearlyLoad' :15,          #this is the W\m2 value that will be applied constantly for appliances and occupancy consumptipon impact. It is replace by the values in EPCs if available
 'IntLoadType' : 'Cste',        #change either by 'Cste', 'winter', or 'summer' for reversed sigmoid or sigmoid this will generate hourly values file in the InputFiles folder
 'IntLoadMultiplier': 1,        #this is a multiplier the modeler would like to play with for calibration
 'IntLoadCurveShape':3,         #this defines the slop of the curves
 'OffOccRandom' : False,
 'AreaBasedFlowRate' : 0.35,    #l/s/m2
 'AreaBasedFlowRateDefault' : 0.35, #l/s/m2 This will not be changed by EPCs and is needed if EPCs report only the balcned ventilation flow with HR for building that have 2 system and one wihtout recovery.
 'setTempUpL' : [25,25],        #only one have to be defined for none temperature modulation
 'setTempLoL' : [21,21],        #only one have to be defined for none temperature modulation
 'ComfortTempOff' :'23:00',     #hours at wich the first temperature set point is considered
 'ComfortTempOn': '06:00',      #hours at wich the second temperature set point is considered
 'ACH_freecool' :4,             #this the the vol/hr of extra ventilation when free cooling is on
 'intT_freecool' : 26,          #internal temperature threshold for free coolong (opening windows with fixed ACH)
 'dT_freeCool': 1,              #Tint-Text to authorize free cooling to be turned on
 'AirRecovEff' : 0.65,          #efficiency if heat is recovered from ventilation
 'HVACLimitMode': 'NoLimit',    #'LimitCapacity', #can be NoLimit or LimitFlowRate or LimitFlowRateAndCpacity
 'HVACPowLimit' : 25,           #in Watt/m2

 }

# definition of person/m2...complytely abritrary, but we still need some vaalues
# these proposales are taken from <NAME> report and from personnal suggestions
# to be enhanced !!!!!BBR gives also some
OccupType = \
 {'Residential_key' : 'EgenAtempBostad',      'Residential_Rate': [0.02, 0.02],
  'Hotel_key' : 'EgenAtempHotell',            'Hotel_Rate': [0.01, 0.02],
  'Restaurant_key' : 'EgenAtempRestaurang',   'Restaurant_Rate': [0.01, 0.09],
  'Office_key' : 'EgenAtempKontor',           'Office_Rate': [0.01, 0.09],
  'FoodMarket_key' : 'EgenAtempLivsmedel',    'FoodMarket_Rate': [0.01, 0.09],
  'GoodsMarket_key' : 'EgenAtempButik',       'GoodsMarket_Rate': [0.01, 0.09],
  'Shopping_key' : 'EgenAtempKopcentrum',     'Shopping_Rate': [0.01, 0.09], #'I still wonder what is the difference with goods'
  'Hospital24h_key' : 'EgenAtempVard',        'Hospital24h_Rate': [0.01, 0.09],
  'Hospitalday_key' : 'EgenAtempHotell',      'Hospitalday_Rate': [0.01, 0.09],
  'School_key' : 'EgenAtempSkolor',           'School_Rate': [0.01, 0.1],
  'IndoorSports_key' : 'EgenAtempBad',        'IndoorSports_Rate': [0.01, 0.1],
  'Other_key' : 'EgenAtempOvrig',             'Other_Rate': [0.01, 0.1],
  'AssmbPlace_key' : 'EgenAtempTeater',       'AssmbPlace_Rate': [0.01, 0.2],
  # 'OccupRate': OccupRate,
   }

#this dict deals with the ventilation systems
VentSyst = \
 {'BalX' : 'VentTypFTX',
  'Exh' : 'VentTypF',
  'Bal' : 'VentTypFT',
  'Nat' : 'VentTypSjalvdrag',
  'ExhX' : 'VentTypFmed',
 }


#this dict defines the acceptable limits for the element precised as well as the swedish key for the DataBase
DBLimits = \
{'surface_key': ['EgenAtemp','SHAPE.AREA'],                  'surface_lim':      [0, 50000],
 'nbfloor_key': 'EgenAntalPlan',               'nbfloor_lim':      [0, 100],
 'nbBasefloor_key': 'EgenAntalKallarplan',     'nbBasefloor_lim':  [0, 4],
 'year_key': 'EgenNybyggAr',                   'year_lim':         [0, 2022],
 'nbAppartments_key': 'EgenAntalBolgh',        'nbAppartments_lim':[0, 100],
 'height_key': ['height', 'SHAPE.LEN','st_lengthshape'],                      'height_lim':       [0, 100],
 'AreaBasedFlowRate_key': 'EgenProjVentFlode', 'AreaBasedFlowRate_lim':     [0.35, 10],
 'nbStairwell_key': 'EgenAntalTrapphus',       'nbStairwell_lim': [0, 100],
 }

#this dict defines the EPC measured key word
EPCMeters = \
 {'Heating':
   {'OilHeating_key' : '<KEY>',               'OilHeatingCOP' : 0.85,
    'GasHeating_key' : 'EgiGasUPPV',                'GasHeatingCOP' : 0.9,
    'WoodHeating_key' : 'EgiVedUPPV',               'WoodHeatingCOP' : 0.75,
    'PelletHeating_key' : 'EgiFlisUPPV',            'PelletHeatingCOP' : 0.75,
    'BioFuelHeating_key' : 'EgiOvrBiobransleUPPV',  'BioFuelHeatingCOP' : 0.75,
    'ElecWHeating_key' : 'EgiElVattenUPPV',         'ElecWHeatingCOP' : 1,
    'ElecHeating_key' : 'EgiElDirektUPPV',          'ElecHeatingCOP' : 1,
    'GSHPHeating_key' : 'EgiPumpMarkUPPV',          'GSHPHeatingCOP' : 3,
    'EASHPHeating_key' : 'EgiPumpFranluftUPPV',     'EASHPHeatingCOP' : 2,
    'AASHPHeating_key' : 'EgiPumpLuftLuftUPPV',     'AASHPHeatingCOP' : 2.5,
    'DistrictHeating_key' : 'EgiFjarrvarmeUPPV',    'DistrictHeatingCOP' : 1,
    'ElecAirHeating_key' : 'EgiElLuftUPPV',         'ElecAirHeatingCOP' : 1,
    'AWSHPHeating_key' : 'EgiPumpLuftVattenUPPV',   'AWSHPHeatingCOP' : 3.1,
   },
  'DHW' :
   {'OilHeating_key' : '<KEY>',                 'OilHeatingCOP' : 0.85,
    'GasHeating_key' : '<KEY>',                  'GasHeatingCOP' : 0.9,
    'WoodHeating_key' : 'EgiVedVV',                 'WoodHeatingCOP' : 0.75,
    'PelletHeating_key' : '<KEY>',              'PelletHeatingCOP' : 0.75,
    'BioFuelHeating_key' : 'EgiOvrBiobransleVV',    'BioFuelHeatingCOP' : 0.75,
    'ElecHeating_key' : 'EgiElVV',                  'ElecHeatingCOP' : 1,
    'DistrictHeating_key' : 'EgiFjarrvarmeVV',      'DistrictHeatingCOP' : 1,

   },
  'Cooling':
   {'DistCooling_key': 'EgiFjarrkyla',              'DistCoolingCOP' : 1,
    'ElecCooling_key' : 'EgiKomfort',               'ElecCoolingCOP' : 1,  #should be HP no?!
    },
  'ElecLoad':
   {'BuildingLev_key' : 'EgiFastighet',             'BuildingLevCOP' : 1,
    'HousholdLev_key' : 'EgiHushall',               'HousholdLevCOP' : 1,
    'OperationLev_key' : 'EgiVerksamhet',           'OperationLevCOP' : 1,
    },
  'NRJandClass':
   {'WeatherCorrectedNRJ_key': 'EgiEnergianvandning',     'WeatherCorrectedNRJCOP' : 1,
    'WeatherCorrectedPNRJ_key': 'EgiPrimarenergianvandning',     'WeatherCorrectedPNRJCOP' : 1,
    'EnClasseVersion_key' : 'EgiVersion',     'EnClasseVersionCOP' : 1,
    'NRJ_Class_key' : 'EgiEnergiklass',     'NRJ_ClassCOP' : 1,
   }
 }
# @Author  : <NAME>
# @Email   : <EMAIL>
SimuData = \
 {  'Begin_Day_of_Month' : 1,
    'Begin_Month' : 1,
    'End_Day_of_Month' : 31,
    'End_Month' : 12,
    'SaveLogFiles' : False, #if True, computing folder is not removed thus all energyplus outpus files are preserved
    #'FloorZoningLevel' : True,  #1 zone per floor, if False --> 1 zone per building bloc
 }

#files are needed to be located in the eather folder of EnergyPlus asthe same path is used afterward to launch the simulation
WeatherFile = \
 {'Loc' : 'WeatherData/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw', #WE_Stockholm.Arlanda.024600_IWEC.epw'
  }

#Thisdict gives all the materials characteristics.
# There are 2 layer maximum, the word Inertia and Insulation or key factor further in the code. If one layer is wanted, just comment the other one.
#the basement is considered not heated and thus never insulated layer
BaseMaterial = \
 {'Window' : {'UFactor' :  1.9,
            'Solar_Heat_Gain_Coefficient' : 0.7,
            'Visible_Transmittance' : 0.8,
            },
'Wall Inertia' : {'Thickness' : 0.2,                   #this layer will be considered also for the basement walls
                  'Conductivity' : 0.9,
                'Roughness' : "Rough",
                'Density' : 2300,
                'Specific_Heat' : 1000,
                },
'Wall Insulation' : {'Thickness' : 0.2,
            'Conductivity' : 0.03,
            'Roughness' : "Rough",
            'Density' : 150,
            'Specific_Heat' : 1000,
            #'Thermal_Absorptance' : 0.001,
            },
'Basement Floor' : {'Thickness' : 0.1,     #this layer will be considered also for the basement floor
            'Conductivity' : 0.9,
            'Roughness' : "Rough",
            'Density' : 2300,
            'Specific_Heat' : 1000,
            },
# 'Basement Floor Insulation' : {'Thickness' : 0.05,    #not needed as even without basement the Heated1rstFloor is taken for the first floor
#             'Conductivity' : 0.25*0.1,
#             'Roughness' : "Rough",
#             'Density' : 1000,
#             'Specific_Heat' : 1000,
#             },
# 'Roof Inertia' : {'Thickness' : 0.05, #not needed unless one wants to have inertia in the roof layer
#             'Conductivity' : 0.15*0.1,
#             'Roughness' : "Rough",
#             'Density' : 1000,
#             'Specific_Heat' : 1000,
#             },
'Roof Insulation' : {'Thickness' : 0.3,
            'Conductivity' : 0.03,
            'Roughness' : "Rough",
            'Density' : 150,
            'Specific_Heat' : 1000,
            #'Thermal_Absorptance' : 0.001,
            },
'Heated1rstFloor Inertia' : {'Thickness' : 0.1,
            'Conductivity' : 0.9,
            'Roughness' : "Rough",
            'Density' : 2300,
            'Specific_Heat' : 1000,
            },
'Heated1rstFloor Insulation' : {'Thickness' : 0.15,
            'Conductivity' : 0.035,
            'Roughness' : "Rough",
            'Density' : 150,
            'Specific_Heat' : 1000,
            #'Thermal_Absorptance' : 0.001,
            },
  }

#this dict is for specification of internalMass equivalence.
#the material should represent the overall mean material of all partition and furnitures
#the weight par zone area gives the quentity and the Average thickness enable to compute the surface for heat transfer
#the mass gives a volume thanks to the density that gives a surface thanks to the average thickness
InternalMass = \
 {'HeatedZoneIntMass' : {
        'Thickness' : 0.1, #m this will define the surface in contact with the zone
        'Conductivity' : 0.3,
        'Roughness' : "Rough",
        'Density' : 600,
        'Specific_Heat' : 1400,
        'WeightperZoneArea' : 40, #kg/m2
    },
'NonHeatedZoneIntMass' : {
        'Thickness' : 0.1, #m this will define the surface in contact with the zone
        'Conductivity' : 0.3,
        'Roughness' : "Rough",
        'Density' : 600,
        'Specific_Heat' : 1400,
        'WeightperZoneArea' : 40, #kg/m2
    },
  }

#this dict give element for the Domestic Hot water. it gives the externail file for the water taps and the inlet cold water temp.
#if empty it is no longer taken into account. if new file are given, thses should be present in the Externael file folder
ExtraEnergy = \
        {}          #if no DomesticHot Water is to be consdered, it still needs an empty dict
# ExtraEnergy = \
#     {'Name' : 'DHW',
#             'WatertapsFile':'ExternalFiles/mDHW_Sum_over_40.txt', #this file is in l/mnin and will be converted into m3/s afertward. it needs to have hourly values
#             'ColdWaterTempFile' :'ExternalFiles/ColdWaterTemp.txt',
#             'HotWaterSetTemp': 55,
#             'WaterTapsMultiplier':1e-4/6/40, #this is because the file given above is for 40 apartment and is in l/min where we need m3/s. in the code in is afterward multiplied by the number of apartement in the building
#             }

#this dict is for the shading paradigm. There are two files that we need. the firt one is the main geojson that contains all buildings and their propreties
#the other one contains for each shading surface id the vertex point and the building Id in order to catch the height of it.
#to externalize as much as possible, these elements are reported in the dict below
GeomElement = \
 {'BuildIDKey' : ['<KEY>', 'FormularId','objectid','OBJECTID'],
  'ShadingIdKey' : 'vaggid',
  'BuildingIdKey' : 'byggnadsid',
  'VertexKey':'geometries',
  'MaxShadingDist': 200,
  'DistanceTolerance': 0.2,  #this is a threshold below every edge are removed and vertexes merged
  }
#this dict gives information on occupancy times each day. If DCV = True, the airflow will follow the number of person
# and the schedule. if not it will be based only on the extra airflow rate but without schedule (all the time)
#if some separation (ventilation and people) is needed than people heat generation should be converted inteo Electric Load as thus ariflow can be
# related to a schedule, other wise...impossible
BasisElement = \
{'Office_Open': '08:00',
 'Office_Close': '18:00',
 'DemandControlledVentilation' : True,
 'OccupBasedFlowRate': 7,       # l/s/person
 'OccupHeatRate' : 70,          #W per person
 'EnvLeak': 0.8,                # l/s/m2 at 50Pa
 'BasementAirLeak': 1,          #in Air change rate [vol/hour]
 'wwr': 0.25,
 'ExternalInsulation' : False,
 'ElecYearlyLoad' :15,          #this is the W\m2 value that will be applied constantly for appliances and occupancy consumptipon impact. It is replace by the values in EPCs if available
 'IntLoadType' : 'Cste',        #change either by 'Cste', 'winter', or 'summer' for reversed sigmoid or sigmoid this will generate hourly values file in the InputFiles folder
 'IntLoadMultiplier': 1,        #this is a multiplier the modeler would like to play with for calibration
 'IntLoadCurveShape':3,         #this defines the slop of the curves
 'OffOccRandom' : False,
 'AreaBasedFlowRate' : 0.35,    #l/s/m2
 'AreaBasedFlowRateDefault' : 0.35, #l/s/m2 This will not be changed by EPCs and is needed if EPCs report only the balcned ventilation flow with HR for building that have 2 system and one wihtout recovery.
 'setTempUpL' : [25,25],        #only one have to be defined for none temperature modulation
 'setTempLoL' : [21,21],        #only one have to be defined for none temperature modulation
 'ComfortTempOff' :'23:00',     #hours at wich the first temperature set point is considered
 'ComfortTempOn': '06:00',      #hours at wich the second temperature set point is considered
 'ACH_freecool' :4,             #this the the vol/hr of extra ventilation when free cooling is on
 'intT_freecool' : 26,          #internal temperature threshold for free coolong (opening windows with fixed ACH)
 'dT_freeCool': 1,              #Tint-Text to authorize free cooling to be turned on
 'AirRecovEff' : 0.65,          #efficiency if heat is recovered from ventilation
 'HVACLimitMode': 'NoLimit',    #'LimitCapacity', #can be NoLimit or LimitFlowRate or LimitFlowRateAndCpacity
 'HVACPowLimit' : 25,           #in Watt/m2

 }

# definition of person/m2...complytely abritrary, but we still need some vaalues
# these proposales are taken from <NAME> report and from personnal suggestions
# to be enhanced !!!!!BBR gives also some
OccupType = \
 {'Residential_key' : 'EgenAtempBostad',      'Residential_Rate': [0.02, 0.02],
  'Hotel_key' : 'EgenAtempHotell',            'Hotel_Rate': [0.01, 0.02],
  'Restaurant_key' : 'EgenAtempRestaurang',   'Restaurant_Rate': [0.01, 0.09],
  'Office_key' : 'EgenAtempKontor',           'Office_Rate': [0.01, 0.09],
  'FoodMarket_key' : 'EgenAtempLivsmedel',    'FoodMarket_Rate': [0.01, 0.09],
  'GoodsMarket_key' : 'EgenAtempButik',       'GoodsMarket_Rate': [0.01, 0.09],
  'Shopping_key' : 'EgenAtempKopcentrum',     'Shopping_Rate': [0.01, 0.09], #'I still wonder what is the difference with goods'
  'Hospital24h_key' : 'EgenAtempVard',        'Hospital24h_Rate': [0.01, 0.09],
  'Hospitalday_key' : 'EgenAtempHotell',      'Hospitalday_Rate': [0.01, 0.09],
  'School_key' : 'EgenAtempSkolor',           'School_Rate': [0.01, 0.1],
  'IndoorSports_key' : 'EgenAtempBad',        'IndoorSports_Rate': [0.01, 0.1],
  'Other_key' : 'EgenAtempOvrig',             'Other_Rate': [0.01, 0.1],
  'AssmbPlace_key' : 'EgenAtempTeater',       'AssmbPlace_Rate': [0.01, 0.2],
  # 'OccupRate': OccupRate,
   }

#this dict deals with the ventilation systems
VentSyst = \
 {'BalX' : 'VentTypFTX',
  'Exh' : 'VentTypF',
  'Bal' : 'VentTypFT',
  'Nat' : 'VentTypSjalvdrag',
  'ExhX' : 'VentTypFmed',
 }


#this dict defines the acceptable limits for the element precised as well as the swedish key for the DataBase
DBLimits = \
{'surface_key': ['EgenAtemp','SHAPE.AREA'],                  'surface_lim':      [0, 50000],
 'nbfloor_key': 'EgenAntalPlan',               'nbfloor_lim':      [0, 100],
 'nbBasefloor_key': 'EgenAntalKallarplan',     'nbBasefloor_lim':  [0, 4],
 'year_key': 'EgenNybyggAr',                   'year_lim':         [0, 2022],
 'nbAppartments_key': 'EgenAntalBolgh',        'nbAppartments_lim':[0, 100],
 'height_key': ['height', 'SHAPE.LEN','st_lengthshape'],                      'height_lim':       [0, 100],
 'AreaBasedFlowRate_key': 'EgenProjVentFlode', 'AreaBasedFlowRate_lim':     [0.35, 10],
 'nbStairwell_key': 'EgenAntalTrapphus',       'nbStairwell_lim': [0, 100],
 }

#this dict defines the EPC measured key word
EPCMeters = \
 {'Heating':
   {'OilHeating_key' : '<KEY>',               'OilHeatingCOP' : 0.85,
    'GasHeating_key' : 'EgiGasUPPV',                'GasHeatingCOP' : 0.9,
    'WoodHeating_key' : 'EgiVedUPPV',               'WoodHeatingCOP' : 0.75,
    'PelletHeating_key' : 'EgiFlisUPPV',            'PelletHeatingCOP' : 0.75,
    'BioFuelHeating_key' : 'EgiOvrBiobransleUPPV',  'BioFuelHeatingCOP' : 0.75,
    'ElecWHeating_key' : 'EgiElVattenUPPV',         'ElecWHeatingCOP' : 1,
    'ElecHeating_key' : 'EgiElDirektUPPV',          'ElecHeatingCOP' : 1,
    'GSHPHeating_key' : 'EgiPumpMarkUPPV',          'GSHPHeatingCOP' : 3,
    'EASHPHeating_key' : 'EgiPumpFranluftUPPV',     'EASHPHeatingCOP' : 2,
    'AASHPHeating_key' : 'EgiPumpLuftLuftUPPV',     'AASHPHeatingCOP' : 2.5,
    'DistrictHeating_key' : 'EgiFjarrvarmeUPPV',    'DistrictHeatingCOP' : 1,
    'ElecAirHeating_key' : 'EgiElLuftUPPV',         'ElecAirHeatingCOP' : 1,
    'AWSHPHeating_key' : 'EgiPumpLuftVattenUPPV',   'AWSHPHeatingCOP' : 3.1,
   },
  'DHW' :
   {'OilHeating_key' : '<KEY>',                 'OilHeatingCOP' : 0.85,
    'GasHeating_key' : '<KEY>',                  'GasHeatingCOP' : 0.9,
    'WoodHeating_key' : 'EgiVedVV',                 'WoodHeatingCOP' : 0.75,
    'PelletHeating_key' : '<KEY>',              'PelletHeatingCOP' : 0.75,
    'BioFuelHeating_key' : 'EgiOvrBiobransleVV',    'BioFuelHeatingCOP' : 0.75,
    'ElecHeating_key' : 'EgiElVV',                  'ElecHeatingCOP' : 1,
    'DistrictHeating_key' : 'EgiFjarrvarmeVV',      'DistrictHeatingCOP' : 1,

   },
  'Cooling':
   {'DistCooling_key': 'EgiFjarrkyla',              'DistCoolingCOP' : 1,
    'ElecCooling_key' : 'EgiKomfort',               'ElecCoolingCOP' : 1,  #should be HP no?!
    },
  'ElecLoad':
   {'BuildingLev_key' : 'EgiFastighet',             'BuildingLevCOP' : 1,
    'HousholdLev_key' : 'EgiHushall',               'HousholdLevCOP' : 1,
    'OperationLev_key' : 'EgiVerksamhet',           'OperationLevCOP' : 1,
    },
  'NRJandClass':
   {'WeatherCorrectedNRJ_key': 'EgiEnergianvandning',     'WeatherCorrectedNRJCOP' : 1,
    'WeatherCorrectedPNRJ_key': 'EgiPrimarenergianvandning',     'WeatherCorrectedPNRJCOP' : 1,
    'EnClasseVersion_key' : 'EgiVersion',     'EnClasseVersionCOP' : 1,
    'NRJ_Class_key' : 'EgiEnergiklass',     'NRJ_ClassCOP' : 1,
   }
 }
# @Author  : <NAME> # @Email   : <EMAIL> #if True, computing folder is not removed thus all energyplus outpus files are preserved #'FloorZoningLevel' : True,  #1 zone per floor, if False --> 1 zone per building bloc #files are needed to be located in the eather folder of EnergyPlus asthe same path is used afterward to launch the simulation #WE_Stockholm.Arlanda.024600_IWEC.epw' #Thisdict gives all the materials characteristics. # There are 2 layer maximum, the word Inertia and Insulation or key factor further in the code. If one layer is wanted, just comment the other one. #the basement is considered not heated and thus never insulated layer #this layer will be considered also for the basement walls #'Thermal_Absorptance' : 0.001, #this layer will be considered also for the basement floor # 'Basement Floor Insulation' : {'Thickness' : 0.05,    #not needed as even without basement the Heated1rstFloor is taken for the first floor #             'Conductivity' : 0.25*0.1, #             'Roughness' : "Rough", #             'Density' : 1000, #             'Specific_Heat' : 1000, #             }, # 'Roof Inertia' : {'Thickness' : 0.05, #not needed unless one wants to have inertia in the roof layer #             'Conductivity' : 0.15*0.1, #             'Roughness' : "Rough", #             'Density' : 1000, #             'Specific_Heat' : 1000, #             }, #'Thermal_Absorptance' : 0.001, #'Thermal_Absorptance' : 0.001, #this dict is for specification of internalMass equivalence. #the material should represent the overall mean material of all partition and furnitures #the weight par zone area gives the quentity and the Average thickness enable to compute the surface for heat transfer #the mass gives a volume thanks to the density that gives a surface thanks to the average thickness #m this will define the surface in contact with the zone #kg/m2 #m this will define the surface in contact with the zone #kg/m2 #this dict give element for the Domestic Hot water. it gives the externail file for the water taps and the inlet cold water temp. #if empty it is no longer taken into account. if new file are given, thses should be present in the Externael file folder #if no DomesticHot Water is to be consdered, it still needs an empty dict # ExtraEnergy = \ #     {'Name' : 'DHW', #             'WatertapsFile':'ExternalFiles/mDHW_Sum_over_40.txt', #this file is in l/mnin and will be converted into m3/s afertward. it needs to have hourly values #             'ColdWaterTempFile' :'ExternalFiles/ColdWaterTemp.txt', #             'HotWaterSetTemp': 55, #             'WaterTapsMultiplier':1e-4/6/40, #this is because the file given above is for 40 apartment and is in l/min where we need m3/s. in the code in is afterward multiplied by the number of apartement in the building #             } #this dict is for the shading paradigm. There are two files that we need. the firt one is the main geojson that contains all buildings and their propreties #the other one contains for each shading surface id the vertex point and the building Id in order to catch the height of it. #to externalize as much as possible, these elements are reported in the dict below #this is a threshold below every edge are removed and vertexes merged #this dict gives information on occupancy times each day. If DCV = True, the airflow will follow the number of person # and the schedule. if not it will be based only on the extra airflow rate but without schedule (all the time) #if some separation (ventilation and people) is needed than people heat generation should be converted inteo Electric Load as thus ariflow can be # related to a schedule, other wise...impossible # l/s/person #W per person # l/s/m2 at 50Pa #in Air change rate [vol/hour] #this is the W\m2 value that will be applied constantly for appliances and occupancy consumptipon impact. It is replace by the values in EPCs if available #change either by 'Cste', 'winter', or 'summer' for reversed sigmoid or sigmoid this will generate hourly values file in the InputFiles folder #this is a multiplier the modeler would like to play with for calibration #this defines the slop of the curves #l/s/m2 #l/s/m2 This will not be changed by EPCs and is needed if EPCs report only the balcned ventilation flow with HR for building that have 2 system and one wihtout recovery. #only one have to be defined for none temperature modulation #only one have to be defined for none temperature modulation #hours at wich the first temperature set point is considered #hours at wich the second temperature set point is considered #this the the vol/hr of extra ventilation when free cooling is on #internal temperature threshold for free coolong (opening windows with fixed ACH) #Tint-Text to authorize free cooling to be turned on #efficiency if heat is recovered from ventilation #'LimitCapacity', #can be NoLimit or LimitFlowRate or LimitFlowRateAndCpacity #in Watt/m2 # definition of person/m2...complytely abritrary, but we still need some vaalues # these proposales are taken from <NAME> report and from personnal suggestions # to be enhanced !!!!!BBR gives also some #'I still wonder what is the difference with goods' # 'OccupRate': OccupRate, #this dict deals with the ventilation systems #this dict defines the acceptable limits for the element precised as well as the swedish key for the DataBase #this dict defines the EPC measured key word #should be HP no?!