Skip to content

Commit e8181ef

Browse files
committed
WIP: All green tests.
1 parent f894c5f commit e8181ef

28 files changed

+159
-8
lines changed

tests/test_element.py

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,37 @@ def to_camel_case(snake_str: str) -> str:
132132
return "".join(x.capitalize() for x in snake_str.lower().split("_"))
133133

134134

135+
def test_figures():
136+
components = [
137+
BaseBoiler(),
138+
BaseRadiator(),
139+
BaseIdealRadiator(),
140+
BaseAirHandlingUnit(),
141+
BaseBoundaryComponent(),
142+
data_bus_factory(),
143+
BaseDamper(),
144+
BaseDamperDetailed(),
145+
BaseDuct(),
146+
OccupancyComponent(),
147+
BasePump(),
148+
IdeasSpace(),
149+
BuildingsSpace(),
150+
BaseSplitValve(),
151+
BaseTemperatureSensor(),
152+
BaseThreeWayValve(),
153+
BaseValve(),
154+
BaseBoilerControl(),
155+
SimpleBoilerControl(),
156+
BaseCollectorControl(),
157+
BaseEmissionControl(),
158+
BaseThreeWayValveControl(),
159+
BaseVavControl(),
160+
]
161+
for co in components:
162+
if co.figures:
163+
a = 12
164+
165+
135166
def test_create_yamls():
136167
configs = {
137168
"boiler": {"default": [BaseBoiler()]},
@@ -233,6 +264,10 @@ def test_create_yamls():
233264
},
234265
)
235266
component_["component_template"] = component_template
267+
component_["figures"] = []
268+
for figure in component.figures:
269+
figure_ = figure.model_dump(exclude_defaults=True, exclude_unset=True)
270+
component_["figures"].append(figure_)
236271
components.append(component_)
237272
ff = Path(f"/home/aan/Documents/trano/trano/models/elements/models/{name}.yaml")
238273
with ff.open("w+") as f:
@@ -364,7 +399,7 @@ def _get_default(v):
364399
"v_flow": "lambda self: f'{self.nominal_mass_flow_rate_boiler}' '/1000*{0.5,1}'",
365400
"dry_mass_of_radiator_that_will_be_lumped_to_water_heat_capacity": "lambda self: 0.0263 * abs(self.nominal_heating_power_positive_for_heating)",
366401
"water_volume_of_radiator": "lambda self:5.8e-5 * abs(self.nominal_heating_power_positive_for_heating)",
367-
"volume": "lambda self:self.floor_area * self.average_room_height"
402+
"volume": "lambda self:self.floor_area * self.average_room_height",
368403
}
369404

370405

@@ -389,15 +424,20 @@ def test_dump_schema():
389424
parameter_path = Path("/home/aan/Documents/trano/trano/data_models/parameters.yaml")
390425
parameter = {}
391426
for par, classes_ in parameters_:
392-
if "<class 'trano.models.elements.controls.boiler.BoilerParameters'>" in str(par):
427+
if "<class 'trano.models.elements.controls.boiler.BoilerParameters'>" in str(
428+
par
429+
):
393430
par_name = "BoilerControlParameters"
394431
else:
395432
par_name = par.__name__
396433
parameter[par_name] = {"attributes": {}, "classes": classes_}
397434

398435
for field_name, field in par.model_fields.items():
399-
if par_name == SplitValveParameters.__name__ and field_name == "m_flow_nominal":
400-
range = 'string'
436+
if (
437+
par_name == SplitValveParameters.__name__
438+
and field_name == "m_flow_nominal"
439+
):
440+
range = "string"
401441
default = "string(0.008*{1,-1,-1})"
402442
else:
403443
range = _get_range(field.annotation)
@@ -412,7 +452,7 @@ def test_dump_schema():
412452
parameter[par_name]["attributes"][field_name] = {
413453
"func": computed_fields.get(field_name),
414454
"type": field.return_type.__name__,
415-
"alias": field.alias
455+
"alias": field.alias,
416456
}
417457
with parameter_path.open("w+") as f:
418458
yaml.safe_dump(parameter, f)

trano/models/elements/base.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import re
33
import subprocess
44
import tempfile
5-
from copy import deepcopy
5+
from copy import deepcopy, copy
66
from functools import partial
77
from pathlib import Path
88
from typing import (
@@ -140,7 +140,7 @@ def get_library_data(
140140

141141
@classmethod
142142
def from_config(cls, name: str) -> "AvailableLibraries":
143-
data = COMPONENTS
143+
data = deepcopy(COMPONENTS)
144144
components_data__ = [component for component in data["components"] for classes_ in component["classes"] if name == classes_]
145145
if not components_data__:
146146
return None
@@ -157,13 +157,15 @@ def from_config(cls, name: str) -> "AvailableLibraries":
157157
)
158158
else:
159159
parameter_processing = globals()[component["parameter_processing"]["function"]]
160+
figures = [Figure(**fig) for fig in component.get("figures", [])]
160161
component_ = create_model(
161162
f"Base{component['library'].capitalize() }{name.capitalize()}",
162163
__base__=LibraryData,
163164
template=(str, f"{component['template']}"),
164165
ports_factory=(Callable[[], List[Port]], compose_func([Port(**port) for port in component["ports"]])),
165166
component_template=(DynamicComponentTemplate, dynamic_component),
166167
variant=(str,component['variant']),
168+
figures=(List[Figure], Field(default_factory= lambda : figures)),
167169
parameter_processing = (
168170
Callable[[BaseParameter], Dict[str, Any]],
169171
parameter_processing,

trano/models/elements/models/ahu_control.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ components:
200200
\ 62},{-58.8,63},{-14,63}}, color={255,127,0}));\nconnect(preRetReq.y, mulAHUCon.uZonPreResReq)\
201201
\ annotation (Line(points={{-58.8,\n 86},{-22,86},{-22,71},{-14,71}}, color={255,127,0}));\n\
202202
{% endraw %}\nend AhuControl{{ element.name | capitalize}};"
203+
figures: []
203204
library: default
204205
parameter_processing:
205206
function: default_parameters

trano/models/elements/models/air_handling_unit.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ components:
5555
\ }}.Common.Fluid.Ventilation.PartialAhu;\n {{bus_template}}\n equation\n\
5656
\ {{bus_ports | safe}}\n end Ahu{{ element.name | capitalize}};\n \
5757
\ "
58+
figures: []
5859
library: default
5960
parameter_processing:
6061
function: default_parameters

trano/models/elements/models/boiler.yaml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,29 @@ components:
2626
\ {{ package_name }}.Common.Fluid.Boilers.PartialBoilerWithStorage;\n {{bus_template}}\n\
2727
\ equation\n {{bus_ports | safe}}\n end BoilerWithStorage{{ element.name\
2828
\ | capitalize}};\n "
29+
figures:
30+
- left_axis:
31+
label: Gas consumption [m3]
32+
lines:
33+
- color: red
34+
label: Measured gas consumption [m3]
35+
template: data_bus.dataBus.e_gas
36+
- color: blue
37+
label: Computed gas consumption [m3]
38+
template: '{{ element.name }}.gain2.y'
39+
right_axis:
40+
label: Boiler control input [-]
41+
lines:
42+
- label: Boiler control input [-]
43+
line_style: dashed
44+
template: '{{ element.name }}.Boiy.y'
2945
library: default
3046
parameter_processing:
3147
function: exclude_parameters
3248
parameter:
49+
- dt_boi_nominal
3350
- dt_rad_nominal
3451
- sca_fac_rad
35-
- dt_boi_nominal
3652
ports:
3753
- flow: inlet
3854
multi_connection: true

trano/models/elements/models/boiler_control.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ components:
3030
\ {{ package_name }}.Common.Controls.ventilation.PartialBoilerControl;\n \
3131
\ {{bus_template}}\n equation\n {{bus_ports | safe}}\n end BoilerControl{{\
3232
\ element.name | capitalize}};\n "
33+
figures: []
3334
library: default
3435
parameter_processing:
3536
function: default_parameters
@@ -76,6 +77,7 @@ components:
7677
\ {{ package_name }}.Common.Controls.ventilation.PartialBoilerControl;\n \
7778
\ {{bus_template}}\n equation\n {{bus_ports | safe}}\n end BoilerControl{{\
7879
\ element.name | capitalize}};\n "
80+
figures: []
7981
library: default
8082
parameter_processing:
8183
function: default_parameters

trano/models/elements/models/boundary.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- Boundary
4+
figures: []
45
library: default
56
parameter_processing:
67
function: default_parameters

trano/models/elements/models/collector_control.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ components:
9595
{{bus_ports | safe}}
9696
9797
end CollectorControl{{ element.name | capitalize}};'
98+
figures: []
9899
library: default
99100
parameter_processing:
100101
function: default_parameters

trano/models/elements/models/data_bus.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ components:
3737
{% endfor %}\n{{bus_ports | safe}}\n{% for input in element.non_connected_ports\
3838
\ %}\nconnect(dataBus.{{ input.name }}{{ input.target }},\n{{ input.name }}{{input.evaluated_element_name\
3939
\ | capitalize}}.y);\n{% endfor %}\nend DataServer;\n "
40+
figures: []
4041
library: default
4142
parameter_processing:
4243
function: default_parameters

trano/models/elements/models/duct.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- Duct
4+
figures: []
45
library: default
56
parameter_processing:
67
function: default_parameters

trano/models/elements/models/emission_control.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,19 @@ components:
5151
\ (Line(points={{-52,-22},\n {-52,-21.2},{-42.4,-21.2}}, color={0,0,127}));\n\
5252
\ {% endraw %}\n{{bus_ports | safe}}\nend EmissionControl{{ element.name\
5353
\ | capitalize}};"
54+
figures:
55+
- left_axis:
56+
label: Control signal [-]
57+
lines:
58+
- label: Control signal [-]
59+
template: '{{ element.name }}.y'
60+
right_axis:
61+
label: Zone controller input [K]
62+
lines:
63+
- label: Zone controller setpoint [K]
64+
template: '{{ element.name }}.emissionControl.conHea.u_s'
65+
- label: Zone controller measured [K]
66+
template: '{{ element.name }}.emissionControl.conHea.u_m'
5467
library: default
5568
parameter_processing:
5669
function: default_parameters

trano/models/elements/models/external_wall.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ components:
22
- classes:
33
- ExternalWall
44
- MergedExternalWall
5+
figures: []
56
library: ideas
67
parameter_processing:
78
function: default_parameters

trano/models/elements/models/floor_on_ground.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- FloorOnGround
4+
figures: []
45
library: ideas
56
parameter_processing:
67
function: default_parameters

trano/models/elements/models/internal_element.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- InternalElement
4+
figures: []
45
library: ideas
56
parameter_processing:
67
function: default_parameters
@@ -23,6 +24,7 @@ components:
2324
variant: default
2425
- classes:
2526
- InternalElement
27+
figures: []
2628
library: buildings
2729
parameter_processing:
2830
function: default_parameters

trano/models/elements/models/merged_windows.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- MergedWindows
4+
figures: []
45
library: ideas
56
parameter_processing:
67
function: default_parameters

trano/models/elements/models/occupancy.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ components:
1212
template: "\nmodel Occupancy{{ element.name | capitalize}}\nextends {{ package_name\
1313
\ }}.Common.Occupancy.SimpleOccupancy ;\n{{bus_template}}\nequation\n{{bus_ports\
1414
\ | safe}}\n end Occupancy{{ element.name | capitalize}};\n "
15+
figures: []
1516
library: default
1617
parameter_processing:
1718
function: default_parameters

trano/models/elements/models/pump.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ components:
2121
template: "\nmodel Pump{{ element.name | capitalize}}\nextends {{ package_name\
2222
\ }}.Common.Fluid.Ventilation.PartialPump;\n{{bus_template}}\nequation\n{{bus_ports\
2323
\ | safe}}\n end Pump{{ element.name | capitalize}};\n "
24+
figures: []
2425
library: default
2526
parameter_processing:
2627
function: default_parameters

trano/models/elements/models/radiator.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- Radiator
4+
figures: []
45
library: default
56
parameter_processing:
67
function: exclude_parameters
@@ -23,6 +24,7 @@ components:
2324
variant: default
2425
- classes:
2526
- Radiator
27+
figures: []
2628
library: default
2729
parameter_processing:
2830
function: modify_alias

trano/models/elements/models/space.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- Space
4+
figures: []
45
library: ideas
56
parameter_processing:
67
function: modify_alias
@@ -46,6 +47,52 @@ components:
4647
variant: default
4748
- classes:
4849
- Space
50+
figures:
51+
- left_axis:
52+
label: Zone air temperature [K]
53+
lines:
54+
- color: blue
55+
label: Air temperature [K]
56+
template: '{{ element.name }}.air.vol.T'
57+
- color: black
58+
label: Measured Air temperature [K]
59+
line_width: 2.0
60+
template: data_bus.dataBus.T{{ element.name | capitalize}}
61+
right_axis:
62+
label: Occupancy schedule [-]
63+
lines:
64+
- label: Occupied zone [-]
65+
line_style: dashed
66+
template: '{{ element.occupancy.name }}.occSch2.occupied'
67+
- left_axis:
68+
label: Heat flow rate [W]
69+
lines:
70+
- color: red
71+
label: Radiative heat flow rate [W]
72+
template: '{{ element.name }}.heaPorRad.Q_flow'
73+
- color: blue
74+
label: Convective heat flow rate [W]
75+
template: '{{ element.name }}.heaPorAir.Q_flow'
76+
- color: yellow
77+
label: Latent heat gain [W]
78+
template: '{{ element.name }}.air.QLat_flow'
79+
- label: Convective heat gain [W]
80+
template: '{{ element.name }}.air.QCon_flow'
81+
- left_axis:
82+
label: Control signal [-]
83+
lines:
84+
- label: Control signal [-]
85+
line_style: dashed
86+
template: '{{ element.emissions[0].control.name }}.y'
87+
right_axis:
88+
label: Zone controller input [K]
89+
lines:
90+
- color: blue
91+
label: Zone controller setpoint [K]
92+
template: '{{ element.emissions[0].control.name }}.emissionControl.conHea.u_s'
93+
- color: red
94+
label: Zone controller measured [K]
95+
template: '{{ element.emissions[0].control.name }}.emissionControl.conHea.u_m'
4996
library: buildings
5097
parameter_processing:
5198
function: exclude_parameters

trano/models/elements/models/split_valve.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- SplitValve
4+
figures: []
45
library: default
56
parameter_processing:
67
function: default_parameters

trano/models/elements/models/temperature_sensor.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- TemperatureSensor
4+
figures: []
45
library: default
56
parameter_processing:
67
function: default_parameters

trano/models/elements/models/three_way_valve.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
components:
22
- classes:
33
- ThreeWayValve
4+
figures: []
45
library: default
56
parameter_processing:
67
function: default_parameters

0 commit comments

Comments
 (0)