Skip to content

Commit

Permalink
Merge pull request #782 from RWTH-EBC/development
Browse files Browse the repository at this point in the history
Development to master
  • Loading branch information
FWuellhorst authored Nov 15, 2024
2 parents 4120e6a + c1cf1b2 commit 68767c2
Show file tree
Hide file tree
Showing 115 changed files with 8,020 additions and 4,440 deletions.
1 change: 1 addition & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ variables:
TEST_ENGINE: "PYTEST"
GIT_REPO: "RWTH-EBC/TEASER"
EXAMPLE_CONVERTER_CONFIG: teaser/examples/converter.toml
EXTRA_REQUIREMENTS_PIP: "[report]"

include:
- project: 'EBC/EBC_all/gitlab_ci/templates'
Expand Down
14 changes: 7 additions & 7 deletions docs/jupyter_notebooks/e1_generate_archetype.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "To use the API instantiate the Project class and rename the Project. The\nparameter load_data=True indicates that we load `iwu` typology archetype\ndata into our Project (e.g. for Material properties and typical wall\nconstructions. This can take a few seconds, depending on the size of the\nused data base). Be careful: Dymola does not like whitespaces in names and\nfilenames, thus we will delete them anyway in TEASER.\n"
"source": "To use the API, instantiate the Project class and rename the project.\nBe careful: Dymola does not like whitespaces in names and filenames, thus we will delete them anyway in TEASER.\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "prj = Project(load_data=True)\nprj.name = \"ArchetypeExample\"\n"
"source": "prj = Project()\nprj.name = \"ArchetypeExample\"\n"
},
{
"cell_type": "markdown",
Expand All @@ -37,14 +37,14 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "To generate residential archetype buildings the function\nProject.add_residential() is used. Seven parameters are compulsory,\nadditional parameters can be set according to the used method. `method`\nand `usage` are used to distinguish between different archetype\nmethods. The name, year_of_construction, number and height of floors\nand net_leased_area need to be set to provide enough information for\narchetype generation. For specific information on the parameters please\nread the docs.\n"
"source": "To generate residential archetype buildings the function\nProject.add_residential() is used. Seven parameters are compulsory,\nadditional parameters can be set according to the used method. `construction_data`\nand `geometry_data` are used to distinguish between different construction and archetype\nmethods. The name, year_of_construction, number and height of floors\nand net_leased_area need to be set to provide enough information for\narchetype generation. For specific information on the parameters please\nread the docs.\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "prj.add_residential(\n method='iwu',\n usage='single_family_dwelling',\n name=\"ResidentialBuilding\",\n year_of_construction=1988,\n number_of_floors=2,\n height_of_floors=3.2,\n net_leased_area=200.0)\n"
"source": "prj.add_residential(\n construction_data='iwu_heavy',\n geometry_data='iwu_single_family_dwelling',\n name=\"ResidentialBuilding\",\n year_of_construction=1988,\n number_of_floors=2,\n height_of_floors=3.2,\n net_leased_area=200.0)\n"
},
{
"cell_type": "markdown",
Expand All @@ -56,12 +56,12 @@
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "prj.add_non_residential(\n method='bmvbs',\n usage='office',\n name=\"OfficeBuilding\",\n year_of_construction=1988,\n number_of_floors=4,\n height_of_floors=3.5,\n net_leased_area=4500.0)\n\nprj.add_non_residential(\n method='bmvbs',\n usage='institute',\n name=\"InstituteBuilding\",\n year_of_construction=1952,\n number_of_floors=5,\n height_of_floors=4.0,\n net_leased_area=3400.0)\n\nprj.add_non_residential(\n method='bmvbs',\n usage='institute',\n name=\"InstituteBuildingMoisture\",\n year_of_construction=1980,\n number_of_floors=3,\n height_of_floors=4.2,\n net_leased_area=3600.0,\n internal_gains_mode=3)\n"
"source": "prj.add_non_residential(\n construction_data='iwu_heavy',\n geometry_data='bmvbs_office',\n name=\"OfficeBuilding\",\n year_of_construction=1988,\n number_of_floors=4,\n height_of_floors=3.5,\n net_leased_area=4500.0)\n\nprj.add_non_residential(\n construction_data='iwu_heavy',\n geometry_data='bmvbs_institute',\n name=\"InstituteBuilding\",\n year_of_construction=1952,\n number_of_floors=5,\n height_of_floors=4.0,\n net_leased_area=3400.0)\n\nprj.add_non_residential(\n construction_data='iwu_heavy',\n geometry_data='bmvbs_institute',\n name=\"InstituteBuildingMoisture\",\n year_of_construction=1980,\n number_of_floors=3,\n height_of_floors=4.2,\n net_leased_area=3600.0,\n internal_gains_mode=3)\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Besides `iwu` and `bmvbs` there is a third option for archetype\ngeneration. We integrated the typology of TABULA Germany\n(http://webtool.building-typology.eu/#bm) and other countries are about to\nfollow. To use TABULA archetype simple choose `tabula_de` as the method\nand `single_family_house`, `multi_family_house`, `terraced_house` or\n`apartment_block` as the usage. In addition you can specify the\nconstruction type of TABULA, chose between `tabula_standard` (default),\n`tabula_retrofit` or `tabula_adv_retrofit`. In this case we generate one\nsingle and one multi family house with TABULA typology.\n"
"source": "Besides `iwu` and `bmvbs` there is a third option for archetype\ngeneration. We integrated the typology of TABULA Germany\n(http://webtool.building-typology.eu/#bm) and other countries are about to\nfollow. To use TABULA archetype simple choose the default `tabula_de_standard` as the construction_data\nand `tabula_de_single_family_house`, `tabula_de_multi_family_house`, `tabula_de_terraced_house` or\n`tabula_de_apartment_block` as the geometry_data. In addition you can specify the\nconstruction type of TABULA, chose between `tabula_de_standard` (default),\n`tabula_de_retrofit` or `tabula_de_adv_retrofit`. In this case we generate one\nsingle and one multi family house with TABULA typology.\n"
},
{
"cell_type": "markdown",
Expand All @@ -73,7 +73,7 @@
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "prj.add_residential(\n method='tabula_de',\n usage='single_family_house',\n name=\"ResidentialBuildingTabula\",\n year_of_construction=1988,\n number_of_floors=3,\n height_of_floors=3.2,\n net_leased_area=280.0,\n construction_type='tabula_standard')\n\nprj.add_residential(\n method='tabula_de',\n usage='multi_family_house',\n name=\"ResidentialBuildingTabulaMulti\",\n year_of_construction=1960,\n number_of_floors=4,\n height_of_floors=3.2,\n net_leased_area=600.0,\n construction_type='tabula_retrofit')\n"
"source": "prj.add_residential(\n construction_data='tabula_de_standard',\n geometry_data='tabula_de_single_family_house',\n name=\"ResidentialBuildingTabula\",\n year_of_construction=1988,\n number_of_floors=3,\n height_of_floors=3.2,\n net_leased_area=280.0)\n\nprj.add_residential(\n construction_data='tabula_de_retrofit',\n geometry_data='tabula_de_multi_family_house',\n name=\"ResidentialBuildingTabulaMulti\",\n year_of_construction=1960,\n number_of_floors=4,\n height_of_floors=3.2,\n net_leased_area=600.0)\n"
}
],
"metadata": {
Expand Down
7 changes: 6 additions & 1 deletion docs/jupyter_notebooks/e2_export_aixlib_models.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,17 @@
"metadata": {},
"source": "To export the ready-to-run models simply call Project.export_aixlib().\nYou can specify the path, where the model files should be saved.\nNone means, that the default path in your home directory\nwill be used. If you only want to export one specific building, you can\npass over the internal_id of that building and only this model will be\nexported. In this case we want to export all buildings to our home\ndirectory, thus we are passing over None for both parameters.\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We might want not have all data stored in our result file. By defining\nexport_vars as following we can specify which results we want to store\nand define a collection name under which these results are stored. This\nfeature only works with Dymola.\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "path = prj.export_aixlib(\n internal_id=None,\n path=None)\n"
"source": "export_vars = {\n \"HeatingDemands\": [\"*multizone.PHeater*\", \"*multizone.PHeatAHU\"],\n \"CoolingDemands\": [\"*multizone.PCooler*\", \"*multizone.PCoolAHU\"],\n \"Temperatures\": [\"*multizone.TAir*\", \"*multizone.TRad*\"]\n}\n\npath = prj.export_aixlib(\n internal_id=None,\n path=None,\n report=True,\n export_vars=export_vars\n)\n"
}
],
"metadata": {
Expand Down
10 changes: 5 additions & 5 deletions docs/jupyter_notebooks/e6_generate_building.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "from teaser.project import Project\n"
"source": "from teaser.project import Project\nfrom teaser.data.utilities import ConstructionData\nfrom teaser.data.dataclass import DataClass\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "To use the API instantiate the Project class and rename the Project. The\nparameter load_data=True indicates that we load data into our\nProject (e.g. for Material properties and typical wall constructions.\nThis can take a few seconds, depending on the size of the used data base.\n"
"source": "To use the API, instantiate the Project class and rename the project.\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "prj = Project(load_data=True)\nprj.name = \"BuildingExample\"\n"
"source": "prj = Project()\nprj.name = \"BuildingExample\"\nprj.data = DataClass(construction_data=ConstructionData.iwu_heavy)\n"
},
{
"cell_type": "markdown",
Expand Down Expand Up @@ -159,7 +159,7 @@
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "ground_floor_dict = {\"GroundFloor\": [100.0, 0.0, -2]}\n\nfrom teaser.logic.buildingobjects.buildingphysics.innerwall import InnerWall\n\nin_wall_dict = {\"InnerWall1\": [10.0],\n \"InnerWall2\": [14.0],\n \"InnerWall3\": [10.0]}\n\nfor key, value in out_wall_dict.items():\n # Instantiate class, key is the name\n out_wall = OuterWall(parent=tz)\n out_wall.name = key\n # Use load_type_element() function of the building element, and pass\n # over the year of construction of the building and the type of\n # construction (in this case `heavy`).\n\n out_wall.load_type_element(\n year=bldg.year_of_construction,\n construction='heavy')\n\n # area, tilt and orientation need to be set individually.\n\n out_wall.area = value[0]\n out_wall.tilt = value[1]\n out_wall.orientation = value[2]\n"
"source": "ground_floor_dict = {\"GroundFloor\": [100.0, 0.0, -2]}\n\nfrom teaser.logic.buildingobjects.buildingphysics.innerwall import InnerWall\n\nin_wall_dict = {\"InnerWall1\": [10.0],\n \"InnerWall2\": [14.0],\n \"InnerWall3\": [10.0]}\n\nfor key, value in out_wall_dict.items():\n # Instantiate class, key is the name\n out_wall = OuterWall(parent=tz)\n out_wall.name = key\n # Use load_type_element() function of the building element, and pass\n # over the year of construction of the building and the type of\n # construction (in this case `heavy`).\n\n out_wall.load_type_element(\n year=bldg.year_of_construction,\n construction='iwu_heavy')\n\n # area, tilt and orientation need to be set individually.\n\n out_wall.area = value[0]\n out_wall.tilt = value[1]\n out_wall.orientation = value[2]\n"
},
{
"cell_type": "markdown",
Expand All @@ -171,7 +171,7 @@
"execution_count": null,
"metadata": {},
"outputs": [],
"source": "for key, value in in_wall_dict.items():\n\n in_wall = InnerWall(parent=tz)\n in_wall.name = key\n in_wall.load_type_element(\n year=bldg.year_of_construction,\n construction='heavy')\n in_wall.area = value[0]\n\nfrom teaser.logic.buildingobjects.buildingphysics.groundfloor import \\\n GroundFloor\n\nfor key, value in ground_floor_dict.items():\n\n ground = GroundFloor(parent=tz)\n ground.name = key\n ground.load_type_element(\n year=bldg.year_of_construction,\n construction='heavy')\n ground.area = value[0]\n ground.tilt = value[1]\n ground.orientation = value[2]\n\nfrom teaser.logic.buildingobjects.buildingphysics.window import Window\n\nwin_dict = {\"Window_east\": [5.0, 90.0, 90.0],\n \"Window_south\": [8.0, 90.0, 180.0],\n \"Window_west\": [5.0, 90.0, 270.0]}\n\nfor key, value in win_dict.items():\n\n win = Window(parent=tz)\n win.name = key\n win.area = value[0]\n win.tilt = value[1]\n win.orientation = value[2]\n\n # Additional to the already known attributes the window has\n # additional attributes. Window.g_value describes the solar gain\n # through windows, a_conv the convective heat transmission due to\n # absorption of the window on the inner side. shading_g_total and\n # shading_max_irr refers to the shading (solar gain reduction of the\n # shading and shading_max_irr the threshold of irradiance to\n # automatically apply shading).\n\n win.inner_convection = 1.7\n win.inner_radiation = 5.0\n win.outer_convection = 20.0\n win.outer_radiation = 5.0\n win.g_value = 0.789\n win.a_conv = 0.03\n win.shading_g_total = 0.0\n win.shading_max_irr = 180.0\n\n # One equivalent layer for windows\n\n win_layer = Layer(parent=win)\n win_layer.id = 1\n win_layer.thickness = 0.024\n\n # Material for glass\n\n win_material = Material(win_layer)\n win_material.name = \"GlasWindow\"\n win_material.thermal_conduc = 0.067\n win_material.transmittance = 0.9\n"
"source": "for key, value in in_wall_dict.items():\n\n in_wall = InnerWall(parent=tz)\n in_wall.name = key\n in_wall.load_type_element(\n year=bldg.year_of_construction,\n construction='iwu_heavy')\n in_wall.area = value[0]\n\nfrom teaser.logic.buildingobjects.buildingphysics.groundfloor import \\\n GroundFloor\n\nfor key, value in ground_floor_dict.items():\n\n ground = GroundFloor(parent=tz)\n ground.name = key\n ground.load_type_element(\n year=bldg.year_of_construction,\n construction='iwu_heavy')\n ground.area = value[0]\n ground.tilt = value[1]\n ground.orientation = value[2]\n\nfrom teaser.logic.buildingobjects.buildingphysics.window import Window\n\nwin_dict = {\"Window_east\": [5.0, 90.0, 90.0],\n \"Window_south\": [8.0, 90.0, 180.0],\n \"Window_west\": [5.0, 90.0, 270.0]}\n\nfor key, value in win_dict.items():\n\n win = Window(parent=tz)\n win.name = key\n win.area = value[0]\n win.tilt = value[1]\n win.orientation = value[2]\n\n # Additional to the already known attributes the window has\n # additional attributes. Window.g_value describes the solar gain\n # through windows, a_conv the convective heat transmission due to\n # absorption of the window on the inner side. shading_g_total and\n # shading_max_irr refers to the shading (solar gain reduction of the\n # shading and shading_max_irr the threshold of irradiance to\n # automatically apply shading).\n\n win.inner_convection = 1.7\n win.inner_radiation = 5.0\n win.outer_convection = 20.0\n win.outer_radiation = 5.0\n win.g_value = 0.789\n win.a_conv = 0.03\n win.shading_g_total = 0.0\n win.shading_max_irr = 180.0\n\n # One equivalent layer for windows\n\n win_layer = Layer(parent=win)\n win_layer.id = 1\n win_layer.thickness = 0.024\n\n # Material for glass\n\n win_material = Material(win_layer)\n win_material.name = \"GlasWindow\"\n win_material.thermal_conduc = 0.067\n win_material.transmittance = 0.9\n"
}
],
"metadata": {
Expand Down
2 changes: 1 addition & 1 deletion docs/jupyter_notebooks/e7_retrofit.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "To apply simplified retrofit for all buildings in the project we can\nuse Project.retrofit_all_buildings() function. This will retrofit all\nbuilding in the project in following manner:\n1. Replace all window with a new window (default is EnEv window with\nU-Value of XYZ\n2. Add an additional insulation layer to all outer walls (including,\nroof and ground floor). Set the thickness that it corresponds to the\nretrofit standard od the year of retrofit.\nThe year of retrofit has to be specified. In addition, we can set\nthe used window_type and the type of insulation material used.\nAs we have both `iwu`/`bmvbs` and `tabuly` typology in our project we need\nto pass all keywords to the function year_of_retrofit, window_type,\nmaterial for `iwu`/`bmvbs` and type_of_retrofit for `tabula`.\n"
"source": "To apply simplified retrofit for all buildings in the project we can\nuse Project.retrofit_all_buildings() function. This will retrofit all\nbuilding in the project in following manner:\n1. Replace all window with a new window (default is EnEv window with\nU-Value of XYZ\n2. Add an additional insulation layer to all outer walls (including,\nroof and ground floor). Set the thickness that it corresponds to the\nretrofit standard od the year of retrofit.\nThe year of retrofit has to be specified. In addition, we can set\nthe used window_type and the type of insulation material used.\nAs we have both `iwu`/`bmvbs` and `tabula` typology in our project we need\nto pass all keywords to the function year_of_retrofit, window_type,\nmaterial for `iwu`/`bmvbs` and type_of_retrofit for `tabula`.\n"
},
{
"cell_type": "code",
Expand Down
Loading

0 comments on commit 68767c2

Please sign in to comment.