Rebar

Classes to represent reinforcement bars, layers of reinforcement bars and groups of reinforcement layers

class rcdesign.is456.rebar.RebarType(*values)

Bases: IntEnum

Enumeration for different types of reinforcement bars.

  • REBAR_UNDEFINED: Undefined type of rebar

  • REBAR_MS: Mild Steel reinforcement

  • REBAR_HYSD: High Yield Strength Deformed bars

  • REBAR_CUSTOM: Custom type of rebar defined by user

REBAR_UNDEFINED = 0
REBAR_MS = 1
REBAR_HYSD = 2
REBAR_CUSTOM = 3
class rcdesign.is456.rebar.StressType(*values)

Bases: IntEnum

Enumeration for different types of stress in reinforcement bars.

  • STRESS_NEUTRAL: Neutral stress

  • STRESS_COMPRESSION: Compression stress

  • STRESS_TENSION: Tension stress

STRESS_NEUTRAL = 0
STRESS_COMPRESSION = 1
STRESS_TENSION = 2
class rcdesign.is456.rebar.ShearRebarType(*values)

Bases: IntEnum

Enumeration for different types of shear reinforcement bars.

  • SHEAR_REBAR_VERTICAL_STIRRUP: Vertical stirrup

  • SHEAR_REBAR_INCLINED_STIRRUP: Inclined stirrup

  • SHEAR_REBAR_BENTUP_SINGLE: Bent-up bars in single group

  • SHEAR_REBAR_BENTUP_SERIES: Bent-up bars in series

SHEAR_REBAR_VERTICAL_STIRRUP = 1
SHEAR_REBAR_INCLINED_STIRRUP = 2
SHEAR_REBAR_BENTUP_SINGLE = 3
SHEAR_REBAR_BENTUP_SERIES = 4
class rcdesign.is456.rebar.Rebar(label: str, fy: float, gamma_m: float = 1.15, density: float = 78.5, Es: float = 200000.0, rebar_type: RebarType = RebarType.REBAR_HYSD)

Bases: ABC

Base class for reinforcement bars.

label

Label for the reinforcement bar

Type:

str

fy

Characteristic yield strength of the reinforcement bar

Type:

float

gamma_m

Partial safety factor for reinforcement (default: 1.15)

Type:

float

density

Density of the reinforcement bar (default: 78.5 kg/m^3)

Type:

float

Es

Modulus of elasticity of the reinforcement bar (default: 2e5 MPa)

Type:

float

rebar_type

Type of reinforcement bar (default: RebarType.REBAR_HYSD)

Type:

RebarType

label: str
fy: float
gamma_m: float = 1.15
density: float = 78.5
Es: float = 200000.0
rebar_type: RebarType = 2
property fd: float
es_min() float
abstractmethod fs(es: float) float
class rcdesign.is456.rebar.RebarMS(label: str, fy: float)

Bases: Rebar

Mild steel reinforcement bars as defined in IS456:2000 with linear stress-strain relation

fs(es: float) float

Calculate the stress in the reinforcement bar based on the strain.

Parameters:

es (float) – Strain in the reinforcement bar

Returns:

Stress in the reinforcement bar

Return type:

float

class rcdesign.is456.rebar.RebarHYSD(label: str, fy: float)

Bases: Rebar

High Yield Strength Deformed (HYSD) reinforcement bars as defined in IS456:2000 with non-linear stress-strain relation

label

Label for the reinforcement bar

Type:

str

fy

Characteristic yield strength of the reinforcement bar

Type:

float

gamma_m

Partial safety factor for reinforcement (default: 1.15)

Type:

float

density

Density of the reinforcement bar (default: 78.5 kN/m^3)

Type:

float

Es

Modulus of elasticity of the reinforcement bar (default: 2e5 N/mm^2)

Type:

float

fs(es: float) float

Calculate the stress in the reinforcement bar based on the strain.

Parameters:

es (float) – Strain in the reinforcement bar

Returns:

Stress in the reinforcement bar

Return type:

float

class rcdesign.is456.rebar.RebarLayer(rebar: ~rcdesign.is456.rebar.Rebar, dia: ~typing.List[float] = <factory>, _dc: float = 0.0)

Bases: object

Class to represent a layer of reinforcement bars.

rebar

The type of reinforcement bar used in this layer

Type:

Rebar

dia

List of diameters of the bars in this layer

Type:

List[float]

_dc

Distance from the compression edge to the centroid of the layer

Type:

float

dia: List[float]
_dc: float = 0.0
property max_dia: float

Return the maximum diameter of the bars in this layer.

property area: float

Calculate the total cross-sectional area of the bars in this layer.

property dc: float

Return the distance from the compression edge to the centroid of the layer.

property xc: float

Return the distance from the compression edge to the centroid of the layer.

stress_type(xu: float) StressType

Determine the type of stress in this layer based on the distance from the compression edge to the neutral axis.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

The type of stress in this layer (STRESS_NEUTRAL, STRESS_COMPRESSION, or STRESS_TENSION)

Return type:

StressType

x(xu: float) float

Calculate the distance from the compression edge to the centroid of the layer based on the distance from the compression edge to the neutral axis.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

The distance from the compression edge to the centroid of the layer

Return type:

float

es(xu: float, ecmax: float = 0.0035) float

Calculate the strain in the reinforcement bar based on the distance from the compression edge to the neutral axis.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

The strain in the reinforcement bar

Return type:

float

fs(xu: float, ecmax: float = 0.0035) float

Calculate the stress in the reinforcement bar based on the distance from the compression edge to the neutral axis.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

The stress in the reinforcement bar

Return type:

float

force_compression(xu: float, csb: LSMStressBlock, conc: Concrete, ecmax: float = 0.0035) Tuple[float, float, Dict]

Calculate the force and moment in the compression reinforcement.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • csb (LSMStressBlock) – Concrete stress block

  • conc (Concrete) – Concrete properties

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

A tuple containing the force in the compression reinforcement, the moment about the neutral axis, and a dictionary with detailed results.

Return type:

Tuple[float, float, Dict]

force_tension(xu: float, ecmax: float = 0.0035) Tuple[float, float, Dict]

Calculate the force and moment in the tension reinforcement.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

A tuple containing the force in the tension reinforcement, the moment about the neutral axis, and a dictionary with detailed results.

Return type:

Tuple[float, float, Dict]

bar_list(sep=';') str

Generate a string representation of the bars in this layer.

Parameters:

sep (str) – Separator to use between different bar diameters (default: “;”)

Returns:

A string representation of the bars in this layer, showing the count and diameter.

Return type:

str

asdict(xu: float, sb: LSMStressBlock, conc: Concrete, ecmax: float = 0.0035) dict

Generate a dictionary representation of the reinforcement layer.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • sb (LSMStressBlock) – Concrete stress block

  • conc (Concrete) – Concrete properties

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

A dictionary containing detailed results of the reinforcement layer

Return type:

dict

class rcdesign.is456.rebar.RebarGroup(layers: ~typing.List[~rcdesign.is456.rebar.RebarLayer] = <factory>)

Bases: object

Class to represent a group of reinforcement layers.

layers

List of layers of bars, in no particular order, of distance from compression edge

Type:

List[RebarLayer]

layers: List[RebarLayer]
property area: float

Calculate the total cross-sectional area of all layers in the group.

calc_xc(D: float) None

Calculate the distance from the compression edge to the centroid of each layer in the group.

Parameters:

D (float) – Total depth of the section from the compression edge to the centroid of the reinforcement

Returns:

This method modifies the xc attribute of each layer in the group.

Return type:

None

centroid(xu: float) Tuple[float, float]

Calculate the centroids of the compression and tension reinforcement layers.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

A tuple containing the centroid of the compression reinforcement and the centroid of the tension reinforcement

Return type:

Tuple[float, float]

has_comp_steel(xu: float) bool

Check if there is any compression reinforcement in the group.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

True if there is compression reinforcement in the group, False otherwise

Return type:

bool

Asc(xu: float) float

Calculate the total cross-sectional area of compression reinforcement layers.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

The total cross-sectional area of compression reinforcement layers

Return type:

float

Ast(xu: float) float

Calculate the total cross-sectional area of tension reinforcement layers.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

The total cross-sectional area of tension reinforcement layers

Return type:

float

get_stress_type(xu: float) None

Set the stress type for each layer based on the distance from the compression edge to the neutral axis.

Parameters:

xu (float) – Distance from the compression edge to the neutral axis

Returns:

This method modifies the _stress_type attribute of each layer in the group.

Return type:

None

force_moment(xu: float, csb: LSMStressBlock, conc: Concrete, ecmax: float = 0.0035) Tuple[float, float, float, float]

Calculate the forces and moments in the reinforcement layers.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • csb (LSMStressBlock) – Concrete stress block

  • conc (Concrete) – Concrete properties

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

A tuple containing the force and moment in compression reinforcement, the force and moment in tension reinforcement

Return type:

Tuple[float, float, float, float]

force_tension(xu: float, ecmax: float = 0.0035) Tuple[float, float]

Calculate the force and moment in the tension reinforcement layers.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

A tuple containing the total force and moment in the tension reinforcement layers

Return type:

Tuple[float, float]

force_compression(xu: float, csb: LSMStressBlock, conc: Concrete, ecmax: float = 0.0035) Tuple[float, float]

Calculate the force and moment in the compression reinforcement layers.

Parameters:
  • xu (float) – Distance from the compression edge to the neutral axis

  • csb (LSMStressBlock) – Concrete stress block

  • conc (Concrete) – Concrete properties

  • ecmax (float) – Maximum strain in the concrete (default: ecu)

Returns:

A tuple containing the total force and moment in the compression reinforcement layers

Return type:

Tuple[float, float]

class rcdesign.is456.rebar.ShearReinforcement(rebar: Rebar)

Bases: ABC

Base class for shear reinforcement.

rebar

The type of reinforcement bar used for shear reinforcement

Type:

Rebar

_Asv_

Area of shear reinforcement per unit length

Type:

float

_sv

Spacing of shear reinforcement

Type:

float

class rcdesign.is456.rebar.Stirrups(rebar: Rebar, _nlegs: int, _bar_dia: float, _sv: float = 0.0, _alpha_deg: float = 90)

Bases: ShearReinforcement

Class to represent vertical or inclined stirrups as shear reinforcement. This class is used to calculate the area of shear reinforcement, spacing, and shear capacity. It can handle both vertical and inclined stirrups with specified number of legs and bar diameter.

rebar

The type of reinforcement bar used for stirrups

Type:

Rebar

_nlegs

Number of legs in the stirrup

Type:

int

_bar_dia

Diameter of the stirrup bar

Type:

float

_sv

Spacing of the stirrup

Type:

float

_alpha_deg

Angle of inclination of the stirrup in degrees (default: 90 for vertical stirrups)

Type:

float

property Asv

Return the area of shear reinforcement per unit length.

property nlegs: int

Return the number of legs in the stirrup.

property sv: float

Return the spacing of the stirrup.

calc_sv(Vus: float, d: float) float | None

Calculate the spacing of the stirrup based on the shear force and effective depth.

Parameters:
  • Vus (float) – Shear force to be resisted by the stirrup

  • d (float) – Effective depth of the section

Returns:

The calculated spacing of the stirrup, or None if the spacing is not set

Return type:

Optional[float]

class rcdesign.is456.rebar.BentupBars(rebar: Rebar, bars: List[int], _alpha_deg: float = 45, _sv: float = 0.0)

Bases: ShearReinforcement

Class to represent a single group of bent-up bars as shear reinforcement.

This class is used to calculate the area of shear reinforcement, spacing, and shear capacity for bent-up bars. It can handle both single groups of parallel bars and series of bars bent-up at different sections.

rebar

The type of reinforcement bar used for bent-up bars

Type:

Rebar

bars

List of diameters of the bent-up bars

Type:

List[int]

_alpha_deg

Angle of inclination of the bent-up bars in degrees (default: 45)

Type:

float

_sv

Spacing of the bent-up bars (default: 0.0, indicating a single group of parallel bars)

Type:

float

property Asv: float

Return the area of shear reinforcement per unit length for bent-up bars.

class rcdesign.is456.rebar.ShearRebarGroup(shear_reinforcement: List[ShearReinforcement])

Bases: object

Class to represent a group of shear reinforcement.

This class is used to manage multiple shear reinforcement elements, such as stirrups and bent-up bars. It provides methods to calculate the total area of shear reinforcement, shear capacity, and check the type of reinforcement.

shear_reinforcement

List of shear reinforcement elements (stirrups, bent-up bars, etc.)

Type:

List[ShearReinforcement]

property Asv: List[float]

Return the area of shear reinforcement for each element in the group.

check() bool

Check if the shear reinforcement is sufficient based on the type and count of reinforcement.

Returns:

True if the shear reinforcement is sufficient, False otherwise

Return type:

bool

class rcdesign.is456.rebar.LateralTie(rebar: Rebar, bar_dia: int, spacing: float)

Bases: object

Class to represent lateral ties in reinforced concrete columns.

rebar

The type of reinforcement bar used for the lateral ties

Type:

Rebar

bar_dia

Diameter of the lateral tie bar

Type:

int

spacing

Spacing between the lateral ties

Type:

float