Skip to content

Slabs and walls

A slab, a wall or a panel is one region: model.create_polygon(outline, thickness, material, id). The section and the mesh come with it; there is no section call to make first.

Regions

Region: add a rectangle

An outline of two opposite corners, [x0, y0, x1, y1], is a rectangle:

model.create_polygon([0, 0, 4, 3], thickness=0.15, material='C30/37', id='S1')   # 4 m by 3 m

A slab 5 m by 6 m at (5, 1) is [5, 1, 10, 7]. The id is optional (Panel1, Panel2, ...); give one to refer to the region later.

Region: add any polygon

Three or more (x, y) points:

model.create_polygon([(0, 0), (6, 0), (6, 4), (3, 6), (0, 4)], thickness=0.2, id='S2')

A regular shape is not written out by hand: its corners are computed from the size that was asked. For a hexagon in a circle of diameter D, the radius is R = D / 2 and the corners are at R from the centre, every 60 degrees. math is already there: do not import it. The example is for a circle of 4 m, not for yours: put the diameter of the request in D.

D = 4.0                      # the diameter of the circle in the request
R = D / 2
corners = [(round(R * math.cos(math.radians(60 * k)), 3),
            round(R * math.sin(math.radians(60 * k)), 3)) for k in range(6)]
model.create_polygon(corners, thickness=0.18, material='C25/30', id='S3')

For a polygon of n sides use 360 / n instead of 60 and range(n). Never copy the numbers of an example into a request of another size.

Region: add a standard slab or wall in one call

For a rectangular slab or wall of the standard kinds, model.create_from_template('slab', Lx=6, Ly=6, thickness=0.22, ...) builds the region, the supports and the pressure together (see the Templates page).

Region: edit

Change the thickness of a region. The thickness lives in the region's section, which has the region's id plus _sec. It is kept for triangles and for quads, so change both:

for sections in (model.tri_sections, model.quad_sections):
    sections['S1_sec'].thickness = 0.30

Region: remove

Delete a region:

model.delete_area('S1')       # the region, with its supports and loads

Edges of a region

Edge: add supports

An edge is addressed by its index (0, 1, 2, ... in the order of the outline), by a side name ('bottom', 'right', 'top', 'left', on a rectangle), or 'all':

model.support_edge('S1', 'all', kind='pin')        # simply supported all round
model.support_edge('S1', 1, 'pin')                 # only edge 1
model.support_edge('S1', 3, 'pin')                 # and edge 3
model.support_edge('S1', 'bottom', 'fix')          # clamped along the bottom

kind is 'pin', 'fix', 'roller-x', 'roller-y', 'symm-x', 'symm-y' ('pin' is a simple support in a slab). If the user gives an edge number, use that number as the index. You do not need to mesh the region or look up any node first.

Edge: edit

Change the support of an edge: support it again with the other kind:

model.support_edge('S1', 'bottom', 'pin')          # was 'fix'

Edge: remove

Delete the support of an edge (free it):

model.free_edge('S1', 1)                           # edge 1 is free again

Loads on a region

Region load: add

model.create_load_case('Q')
model.create_uniform_load('S1', 'Q', 5, 'down')        # pressure, kN/m2
model.create_edge_load('S1', 'top', 'Q', 8)            # kN/m along one edge

See Loads, area loads, to change or remove them.