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.