Coverage for backend/django/flowsheetInternals/formula_templates/formula_templates.py: 100%
2 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
1from .template_schema import TemplateSchema, TemplateFieldSchema
3templates: dict[str, TemplateSchema] = {
4 "energy_emissions": TemplateSchema(
5 name="Energy Emissions",
6 required_properties=["power"],
7 fields=[
8 TemplateFieldSchema(
9 key="emissions_factor", name="Emissions Factor", formula=""
10 ),
11 TemplateFieldSchema(
12 key="emissions",
13 name="Emissions",
14 formula="[power] * [emissions_factor]",
15 ),
16 ],
17 ),
18 "energy_cost": TemplateSchema(
19 name="Energy Cost",
20 required_properties=["power"],
21 fields=[
22 TemplateFieldSchema(key="cost_per_watt", name="Cost per Watt", formula=""),
23 TemplateFieldSchema(
24 key="operational_cost",
25 name="Operational Cost",
26 formula="[power] * [cost_per_watt]",
27 ),
28 ],
29 ),
30 "panel_install_cost": TemplateSchema(
31 name="Solar Installation Cost",
32 required_properties=["panel_count"],
33 fields=[
34 TemplateFieldSchema(
35 key="cost_per_panel", name="Cost per Panel", formula=""
36 ),
37 TemplateFieldSchema(
38 key="operational_cost",
39 name="Operational Cost",
40 formula="[panel_count] * [cost_per_panel]",
41 ),
42 ],
43 ),
44 "panel_install_cost": TemplateSchema(
45 name="Solar Installation Cost",
46 required_properties=["panel_count", "area"],
47 fields=[
48 TemplateFieldSchema(
49 key="cost_per_square_meter", name="Cost per Square Meter", formula=""
50 ),
51 TemplateFieldSchema(
52 key="cost_per_panel",
53 name="Cost per Panel",
54 formula="[area] * [cost_per_square_meter]",
55 ),
56 TemplateFieldSchema(
57 key="capital_cost",
58 name="Capital Cost",
59 formula="[panel_count] * [cost_per_panel]",
60 ),
61 ],
62 ),
63 "hx_area_cost": TemplateSchema(
64 name="Capital Estimate",
65 required_properties=["area"],
66 fields=[
67 TemplateFieldSchema(
68 key="cost_per_area", name="Cost per Square Meter", formula=""
69 ),
70 TemplateFieldSchema(
71 key="capital_cost",
72 name="Capital Cost",
73 formula="[area] * [cost_per_area]",
74 ),
75 ],
76 ),
77 "material_cost": TemplateSchema(
78 name="Material Costs",
79 required_properties=["flow_mass"],
80 fields=[
81 TemplateFieldSchema(key="cost_per_kg", name="Cost per Kg", formula=""),
82 TemplateFieldSchema(
83 key="material_cost",
84 name="Material Cost",
85 formula="[flow_mass] * [cost_per_kg]",
86 ),
87 ],
88 ),
89 "cooler_cost": TemplateSchema(
90 name="Operational Cost",
91 required_properties=["heat_duty_inverted"],
92 fields=[
93 TemplateFieldSchema(key="cost_per_watt", name="Cost per Watt", formula=""),
94 TemplateFieldSchema(
95 key="effectiveness", name="Cooling Effectiveness", formula=""
96 ),
97 TemplateFieldSchema(
98 key="operational_cost",
99 name="Operational Cost",
100 formula="[heat_duty_inverted] * [effectiveness] * [cost_per_watt]",
101 ),
102 ],
103 ),
104 "heater_cost": TemplateSchema(
105 name="Operational Cost",
106 required_properties=["heat_duty"],
107 fields=[
108 TemplateFieldSchema(key="cost_per_watt", name="Cost per Watt", formula=""),
109 TemplateFieldSchema(
110 key="efficiency", name="Heating Efficiency", formula=""
111 ),
112 TemplateFieldSchema(
113 key="operational_cost",
114 name="Operational Cost",
115 formula="[heat_duty] * [efficiency] * [cost_per_watt]",
116 ),
117 ],
118 ),
119 "capital_cost": TemplateSchema(
120 name="Capital Cost",
121 required_properties=[],
122 fields=[
123 TemplateFieldSchema(
124 key="capital_cost",
125 name="Capital Cost",
126 formula="1 * $",
127 ),
128 ],
129 ),
130 "hydraulic_pressure_loss": TemplateSchema(
131 name="Hydraulic Pressure Loss",
132 required_properties=["flow_mass","flow_vol"],
133 fields=[
134 TemplateFieldSchema(
135 key="friction_factor", name="Darcy Friction Factor", formula="0.02"
136 ),
137 TemplateFieldSchema(key="pipe_length", name="Pipe Length", formula="1 * m"),
138 TemplateFieldSchema(key="diameter", name="Pipe Diameter", formula="10 * cm"),
139 TemplateFieldSchema(
140 key="fluid_velocity", name="Fluid Velocity", formula="[flow_vol] / (pi * ([diameter]/2)^2)"
141 ),
142 TemplateFieldSchema(
143 key="fluid_density", name="Fluid Density", formula="[flow_mass] / [flow_vol]"
144 ),
145 TemplateFieldSchema(
146 key="pressure_loss",
147 name="Hydraulic Pressure Loss",
148 formula="[friction_factor] * ([pipe_length] / [diameter]) * ([fluid_density] * ([fluid_velocity] ** 2) / 2)",
149 ),
150 ]
151 ),
152}