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.