Construction¶
Concrete¶
calculate_concrete_volume¶
- qsdsan.utils.calculate_concrete_volume(L, W, D, t_wall, t_slab, include_cover)¶
Calculate needed volume of concrete.
Note that the units of the parameters do no matter as along as they are consistent.
- Parameters:
L (float) – Length of the concrete wall (without considering the wall thickness), [ft].
W (float) – Width of the concrete wall (without considering the wall thickness), [ft].
D (float) – Depth of the concrete wall, [ft].
t_wall (float) – Thickness of the concrete wall, [ft].
t_slab (float) – Thickness of the concrete slab, [ft].
include_cover (bool) – Whether to include a cover on the top (t will be the same as the floor).
concrete¶
- qsdsan.utils.concrete(ID, L_concrete=0, W_concrete=0, D_concrete=0, t_wall=None, t_slab=None, include_cover=False, wall_concrete_unit_cost=24, slab_concrete_unit_cost=13, F_BM=1, lifetime=None)¶
Handy decorator to add concrete usage-related properties and design/cost functions to a
qs.SanUnit
.- Parameters:
ID (str) – ID for which concrete will be used.
L_concrete (float) – Length of the concrete wall (without considering the wall thickness), [ft].
W_concrete (float) – Width of the concrete wall (without considering the wall thickness), [ft].
D_concrete (float) – Depth of the concrete wall, [ft].
t_wall (float) – Thickness of the concrete wall, [ft], if not provided, will be calculated based on D_concrete (1 ft per 12 ft depth, minimum 1 ft).
t_slab (float) – Thickness of the concrete slab, [ft], if not provided, will be calculated based on t_wall (t_wall+2/12 ft).
wall_concrete_unit_cost (float) – Unit cost of the wall concrete, [$/ft3].
slab_concrete_unit_cost (float) – Unit cost of the slab concrete, [$/ft3].
include_cover (bool) – Whether to include a cover on the top (t will be the same as the floor).
F_BM (float) – Bare module factor of the concrete.
lifetime (int) – Lifetime of the concrete.
Examples
>>> from qsdsan import SanUnit, set_thermo >>> from qsdsan.utils import create_example_components, concrete >>> # Create the class >>> @concrete('Pump building', L_concrete=20, W_concrete=10, D_concrete=5) ... @concrete('Blower building', L_concrete=20, W_concrete=10, D_concrete=5, ... t_wall=2, t_slab=3, include_cover=True) ... class FakeUnit(SanUnit): ... def _design(self): ... self._add_concrete_design() ... def _cost(self): ... self._add_concrete_cost() >>> # Use the class >>> cmps = create_example_components() >>> set_thermo(cmps) >>> U1 = FakeUnit('U1', ins='ws1', outs='ws2') >>> U1.simulate() >>> U1.results()
References
[1] Shoener et al., Design of Anaerobic Membrane Bioreactors for the Valorization of Dilute Organic Carbon Waste Streams. Energy Environ. Sci. 2016, 9 (3), 1102–1112. https://doi.org/10.1039/C5EE03715H.
Excavation¶
calculate_excavation_volume¶
- qsdsan.utils.calculate_excavation_volume(L, W, D, excav_slope, constr_access)¶
Calculate the excavation volume needed as a frustum.
Note that the units of the parameters do no matter as along as they are consistent.
- Parameters:
L (float) – Excavation length at the bottom.
W (float) – Excavation width at the bottom.
D (float) – Excavation depth.
excav_slope (float) – Excavation slope (horizontal/vertical).
constr_acess (float) – Extra (i.e., on top of the length/width) room for construction access.
excavation¶
- qsdsan.utils.excavation(ID, L_excav=0, W_excav=0, D_excav=0, excav_slope=1.5, constr_access=3, excav_unit_cost=0.011, F_BM=1, lifetime=None)¶
Handy decorator to add excavation-related properties and design/cost functions to a
qs.SanUnit
.The excavation volume is calculated as a frustum.
- Parameters:
ID (str) – ID of this excavation activity.
L_excav (float) – Excavation length at the bottom, [ft].
W_excav (float) – Excavation width at the bottom, [ft].
D_excav (float) – Excavation depth. [ft].
excav_slope (float) – Excavation slope (horizontal/vertical).
constr_access (float) – Extra (i.e., on top of the length/width) room for construction access, [ft].
excav_unit_cost (float) – Unit cost of the excavation activity, [$/ft3].
F_BM (float) – Bare module factor of this excavation activity.
lifetime (int) – Lifetime of this excavation activity.
Examples
>>> from qsdsan import SanUnit, set_thermo >>> from qsdsan.utils import create_example_components, excavation >>> # Create the class >>> @excavation('Reactor building', L_excav=100, W_excav=150, D_excav=20, ... excav_unit_cost=8/27) ... @excavation('Pump and blower building', L_excav=30, W_excav=15, D_excav=10) ... class FakeUnit(SanUnit): ... def _design(self): ... self._add_excavation_design() ... def _cost(self): ... self._add_excavation_cost() >>> # Use the class >>> cmps = create_example_components() >>> set_thermo(cmps) >>> U1 = FakeUnit('U1', ins='ws1', outs='ws2') >>> U1.simulate() >>> U1.results()
References
[1] Shoener et al., Design of Anaerobic Membrane Bioreactors for the Valorization of Dilute Organic Carbon Waste Streams. Energy Environ. Sci. 2016, 9 (3), 1102–1112. https://doi.org/10.1039/C5EE03715H.
Piping¶
select_pipe¶
- qsdsan.utils.select_pipe(Q, v)¶
Select pipe based on Q (flow in ft3/s) and velocity (ft/s).
Note that the velocity is the minimum permissible liquid velocity, which means the pipe diameter will be selected so that the actual velocity will be no less than the provided velocity.
- Parameters:
Q (float) – Flow rate of the fluid, [ft3/s] (cfs).
v (float) – Minimum permissible velocity of the fluid, [ft/s].
- Return type:
Outer diameter, thickness, and inner diameter of the pipe (three floats), all in ft.