# 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.

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):
...     def _cost(self):
>>> # Use the class
>>> cmps = create_example_components()
>>> set_thermo(cmps)
>>> U1 = FakeUnit('U1', ins='ws1', outs='ws2')
>>> U1.simulate()
>>> U1.results()
```

References

 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.

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):
...     def _cost(self):
>>> # Use the class
>>> cmps = create_example_components()
>>> set_thermo(cmps)
>>> U1 = FakeUnit('U1', ins='ws1', outs='ws2')
>>> U1.simulate()
>>> U1.results()
```

References

 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.