simdesign.rcmrf.bdim.baselib.slab

This module provides the base class for representing slabs in the BDIM layer.

class simdesign.rcmrf.bdim.baselib.slab.SlabBase(rectangle, typology, thickness=None, orientation=None)[source]

Bases: ABC

Abstract base class for floor slab elements.

It provides geometry definition, thickness estimation, load transfer, and load assignment behaviour. It must be inherited by design-class- specific slab implementations.

Variables:
  • rectangle (Rectangle) – Geometric mesh representation of the slab (tag, points, lines).

  • typology (Literal[1, 2, 3]) – Slab typology. 1: Solid two-way cast-in-situ slabs (SS2). 2: Solid one-way cast-in-situ slabs (SS1). 3: One-way composite slab with ceramic blocks and RC joists or pre-stressed beams (HS).

  • gamma_rc (float) – Unit weight of reinforced concrete [kN/m^3].

  • pg (float) – Total permanent load per unit area [kN/m^2]. Set via set_loads.

  • pq (float) – Variable load per unit area [kN/m^2]. Set via set_loads.

  • roof (bool) – Whether the slab is located at roof level.

  • MAX_THICKNESS (float) – Maximum allowable slab thickness, by default 0.85 m.

  • _thickness (float | None) – Default floor slab thickness. If None, thickness is estimated from span length when accessed via t.

  • _orientation (Literal[1, 2, 3] | None) – Default floor slab load-transfer orientation. If None, orientation is inferred from typology and span ratio when accessed via orientation.

Parameters:
  • rectangle (Rectangle)

  • typology (Literal[1, 2, 3])

  • thickness (float | None)

  • orientation (Literal[1, 2, 3] | None)

Notes

Plan view of mesh objects (rectangle) representing slabs:

y
|__x
              l2(p2,p3)
 p2(x2,y2,z2) o------>o p3(x3,y3,z3)
              ^       ^
    l1(p1,p2) |       | l3(p4,p3)
              |       |
 p1(x1,y1,z1) o------>o p4(x4,y4,z4)
              l4(p1,p4)

pi is the i-th Point representing a corner point.

li is the i-th surrounding Line.

xi, yi, and zi are the coordinates of the i-th Point.

gamma_rc: float
pg: float
pq: float
roof: bool
MAX_THICKNESS: float = 0.85
rectangle: Rectangle
typology: Literal[1, 2, 3]
property lx: float

Slab length along the global X-axis.

This corresponds to the length of rectangle.lines[1].

Returns:

Slab length along the global X-axis [m].

Return type:

float

property ly: float

Slab length along the global Y-axis.

This corresponds to the length of rectangle.lines[0].

Returns:

Slab length along the global Y-axis [m].

Return type:

float

property area: float

Slab plan area.

This corresponds to rectangle.area.

Returns:

Slab plan area [m^2].

Return type:

float

property pself: float

Slab self-weight per unit area.

Returns:

Slab self-weight per unit area [kN/m^2].

Return type:

float

Notes

For solid cast-in-situ slabs (typology 1 or 2), self-weight is computed as:

pself = gamma_rc * t

For composite slabs with pre-fabricated joists and ceramic blocks (typology 3), a logarithmic regression fit to manufacturer data is used:

pself = 2.20 * ln(t) + 6.50

where t is the slab thickness in metres.

References

https://presdouro.pt/wp-content/themes/presdouro/images/DT_PD2016_VALIDADO.pdf https://lajes.pavimir.pt/pdfs/DA%2060%20-%20Pavimentos%20Aligeirados.pdf

property beam_alpha_coeffs: List[float]

Alpha coefficients for the four beams surrounding the slab.

Alpha coefficients convert triangular or trapezoidal slab loads into equivalent uniformly distributed loads on each beam; see _get_alpha(). For one-way orientations, all coefficients are 1.0.

Returns:

Alpha coefficients of four beams surrounding the slab, ordered [l1, l2, l3, l4] following the plan-view convention.

Return type:

list[float]

property orientation: Literal[1, 2, 3]

Slab load-transfer orientation.

Returns:

Slab load-transfer orientation. 1: Load is transferred to beams along the X direction. 2: Load is transferred to beams along the Y direction. 3: Load is transferred to beams along both directions.

Return type:

Literal[1, 2, 3]

Notes

When orientation is not explicitly set, it is inferred as follows: For two-way slabs (typology 1) orientation = 3. For one-way slabs, load transfer is oriented along the longer span axis: orientation = 1 if lx > ly, orientation = 2 otherwise.

property t: float

Slab thickness (depth).

Returns:

Slab thickness (depth) [m].

Return type:

float

Notes

When thickness is not explicitly set, it is estimated from the shorter span length min(lx, ly).

For solid cast-in-situ slabs (typology 1 or 2), a span-to-depth ratio of 30 is assumed:

t = round(min_span / 30, 2)

For composite slabs with pre-fabricated joists and ceramic blocks (typology 3), a linear regression fit to manufacturer data is used:

t = round(0.032 * min_span + 0.065, 2)

In both cases the result is capped at MAX_THICKNESS.

References

https://presdouro.pt/wp-content/themes/presdouro/images/DT_PD2016_VALIDADO.pdf https://lajes.pavimir.pt/pdfs/DA%2060%20-%20Pavimentos%20Aligeirados.pdf

property beam_tributary_areas: List[float]

Tributary areas assigned to the surrounding beams.

Returns:

Tributary areas [m^2] for the four beams surrounding the slab, ordered [l1, l2, l3, l4] following the plan-view convention.

Return type:

list[float]

Notes

For one-way orientations (1 or 2), one pair of parallel beams carries the full half-area each and the perpendicular pair carries nothing. For two-way orientation (3), loads are distributed as triangular areas to beams along the shorter span and trapezoidal areas to beams along the longer span.

set_loads(permanent_loads, variable_loads)[source]

Assign permanent and variable loads to the slab.

Sets gamma_rc, pg (self-weight + superimposed dead load), and pq from the provided load objects. Load values depend on whether the slab is at roof or floor level (roof).

Parameters:
Return type:

None