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).
- Parameters:
Q (float) – Flow rate of the fluid, [ft3/s] (cfs).
v (float) – Velocity of the fluid, [ft/s].
- Return type:
Outer diameter, thickness, and inner diameter of the pipe (three floats), all in ft.