mirror of
https://github.com/louisleroy5/trnslator.git
synced 2024-11-15 00:30:31 -05:00
175 lines
5.9 KiB
Python
175 lines
5.9 KiB
Python
################################################################################
|
|
# Module: settings.py
|
|
# Description: Various settings used across the package
|
|
# License: MIT, see full license in LICENSE.txt
|
|
# Web: https://github.com/samuelduchesne/translater
|
|
################################################################################
|
|
|
|
import logging as lg
|
|
|
|
import pint
|
|
from path import Path
|
|
|
|
# locations to save data, logs, images, and cache
|
|
import translater
|
|
|
|
data_folder = Path("data")
|
|
logs_folder = Path("logs")
|
|
imgs_folder = Path("images")
|
|
cache_folder = Path("cache")
|
|
umitemplate = Path("data/BostonTemplateLibrary.json")
|
|
|
|
# cache server responses
|
|
use_cache = False
|
|
|
|
# write log to file and/or to console
|
|
log_file = False
|
|
log_console = False
|
|
log_notebook = False
|
|
log_level = lg.INFO
|
|
log_name = "translater"
|
|
log_filename = "translater"
|
|
|
|
# usual idfobjects
|
|
useful_idf_objects = [
|
|
"WINDOWMATERIAL:GAS",
|
|
"WINDOWMATERIAL:GLAZING",
|
|
"WINDOWMATERIAL:SIMPLEGLAZINGSYSTEM",
|
|
"MATERIAL",
|
|
"MATERIAL:NOMASS",
|
|
"CONSTRUCTION",
|
|
"BUILDINGSURFACE:DETAILED",
|
|
"FENESTRATIONSURFACE:DETAILED",
|
|
"SCHEDULE:DAY:INTERVAL",
|
|
"SCHEDULE:WEEK:DAILY",
|
|
"SCHEDULE:YEAR",
|
|
]
|
|
|
|
# List of Available SQLite Tables
|
|
# Ref: https://bigladdersoftware.com/epx/docs/8-3/output-details-and-examples
|
|
# /eplusout.sql.html#schedules-table
|
|
|
|
available_sqlite_tables = dict(
|
|
ComponentSizes={"PrimaryKey": ["ComponentSizesIndex"], "ParseDates": []},
|
|
ConstructionLayers={"PrimaryKey": ["ConstructionIndex"], "ParseDates": []},
|
|
Constructions={"PrimaryKey": ["ConstructionIndex"], "ParseDates": []},
|
|
Materials={"PrimaryKey": ["MaterialIndex"], "ParseDates": []},
|
|
NominalBaseboardHeaters={
|
|
"PrimaryKey": ["NominalBaseboardHeaterIndex"],
|
|
"ParseDates": [],
|
|
},
|
|
NominalElectricEquipment={
|
|
"PrimaryKey": ["NominalElectricEquipmentIndex"],
|
|
"ParseDates": [],
|
|
},
|
|
NominalGasEquipment={"PrimaryKey": ["NominalGasEquipmentIndex"], "ParseDates": []},
|
|
NominalHotWaterEquipment={
|
|
"PrimaryKey": ["NominalHotWaterEquipmentIndex"],
|
|
"ParseDates": [],
|
|
},
|
|
NominalInfiltration={"PrimaryKey": ["NominalInfiltrationIndex"], "ParseDates": []},
|
|
NominalLighting={"PrimaryKey": ["NominalLightingIndex"], "ParseDates": []},
|
|
NominalOtherEquipment={
|
|
"PrimaryKey": ["NominalOtherEquipmentIndex"],
|
|
"ParseDates": [],
|
|
},
|
|
NominalPeople={"PrimaryKey": ["NominalPeopleIndex"], "ParseDates": []},
|
|
NominalSteamEquipment={
|
|
"PrimaryKey": ["NominalSteamEquipmentIndex"],
|
|
"ParseDates": [],
|
|
},
|
|
NominalVentilation={"PrimaryKey": ["NominalVentilationIndex"], "ParseDates": []},
|
|
ReportData={"PrimaryKey": ["ReportDataIndex"], "ParseDates": []},
|
|
ReportDataDictionary={
|
|
"PrimaryKey": ["ReportDataDictionaryIndex"],
|
|
"ParseDates": [],
|
|
},
|
|
ReportExtendedData={"PrimaryKey": ["ReportExtendedDataIndex"], "ParseDates": []},
|
|
RoomAirModels={"PrimaryKey": ["ZoneIndex"], "ParseDates": []},
|
|
Schedules={"PrimaryKey": ["ScheduleIndex"], "ParseDates": []},
|
|
Surfaces={"PrimaryKey": ["SurfaceIndex"], "ParseDates": []},
|
|
SystemSizes={
|
|
"PrimaryKey": ["SystemSizesIndex"],
|
|
"ParseDates": {"PeakHrMin": "%m/%d %H:%M:%S"},
|
|
},
|
|
Time={"PrimaryKey": ["TimeIndex"], "ParseDates": []},
|
|
ZoneGroups={"PrimaryKey": ["ZoneGroupIndex"], "ParseDates": []},
|
|
Zones={"PrimaryKey": ["ZoneIndex"], "ParseDates": []},
|
|
ZoneLists={"PrimaryKey": ["ZoneListIndex"], "ParseDates": []},
|
|
ZoneSizes={"PrimaryKey": ["ZoneSizesIndex"], "ParseDates": []},
|
|
ZoneInfoZoneLists={"PrimaryKey": ["ZoneListIndex"], "ParseDates": []},
|
|
Simulations={
|
|
"PrimaryKey": ["SimulationIndex"],
|
|
"ParseDates": {"TimeStamp": {"format": "YMD=%Y.%m.%d %H:%M"}},
|
|
},
|
|
EnvironmentPeriods={"PrimaryKey": ["EnvironmentPeriodIndex"], "ParseDates": []},
|
|
TabularData={"PrimaryKey": ["TabularDataIndex"], "ParseDates": []},
|
|
Strings={"PrimaryKey": ["StringIndex"], "ParseDates": []},
|
|
StringTypes={"PrimaryKey": ["StringTypeIndex"], "ParseDates": []},
|
|
TabularDataWithStrings={"PrimaryKey": ["TabularDataIndex"], "ParseDates": []},
|
|
Errors={"PrimaryKey": ["ErrorIndex"], "ParseDates": []},
|
|
)
|
|
|
|
# common_umi_objects
|
|
common_umi_objects = []
|
|
|
|
# default crs for when creating plots and querying databases
|
|
default_crs = {"init": "epsg:4326"}
|
|
|
|
# unique schedule number as list
|
|
unique_schedules = []
|
|
|
|
# TRNSYS default location
|
|
trnsys_default_folder = Path(r"C:\TRNSYS18")
|
|
|
|
# region read template - use io.BytesIO(settings.template) in code
|
|
import pkg_resources
|
|
|
|
resource_package = translater.__name__ # Could be any module/package name
|
|
|
|
# originBUISketchUp.idf template
|
|
resource_path = "/".join(("ressources", "originBUISketchUp.idf"))
|
|
# Do not use os.path.join()
|
|
template_BUI = pkg_resources.resource_string(resource_package, resource_path)
|
|
|
|
# window library ('W74-lib.dat') template
|
|
resource_path = "/".join(("ressources", "W74-lib.dat"))
|
|
# Do not use os.path.join()
|
|
template_winLib = pkg_resources.resource_string(resource_package, resource_path)
|
|
|
|
# NewFileTemplate.d18 ('W74-lib.dat') template
|
|
resource_path = "/".join(("ressources", "NewFileTemplate.d18"))
|
|
# Do not use os.path.join()
|
|
path_template_d18 = pkg_resources.resource_filename(resource_package, resource_path)
|
|
# endregion
|
|
|
|
# Units
|
|
|
|
unit_registry = pint.UnitRegistry()
|
|
|
|
|
|
class ZoneWeight(object):
|
|
"""Zone weights for Umi Templates"""
|
|
|
|
weight_attr = {0: "area", 1: "volume"}
|
|
|
|
def __init__(self, n=0):
|
|
self._weight_attr = self.weight_attr[n]
|
|
|
|
def __str__(self):
|
|
return self.get_weight_attr()
|
|
|
|
def get_weight_attr(self):
|
|
return self._weight_attr
|
|
|
|
def set_weigth_attr(self, weight):
|
|
if weight not in self.weight_attr.values():
|
|
i = len(self.weight_attr) + 1
|
|
self.weight_attr[i] = weight
|
|
self._weight_attr = weight
|
|
|
|
|
|
zone_weight = ZoneWeight(n=0)
|
|
|
|
# Latest version of EnergyPlus compatible with translater
|
|
ep_version = "9-2-0" |