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.