Software Design

This project has adopted the Object Oriented Programming (OOP) approach to design and implement a set of classes and class hierarchies to represent the important components of reinforced concrete sections and structural elements. This approach is well suited to the problem at hand for several reasons:

  1. The concepts of data encapsulation is very helpful since each entity has several attributes and passing an object of a specific class automatically carries its state in a single object. This greatly reduces the number of arguments that would have to be passed to functions if it were to be implemented using the procedural programming paradigm.
  2. The concept of abstract classes and inheritance repesents the relation between entities such as a rectangular beam section and a flanged beam section which are concrete types of the abstract class representing a section. Similar relation exists between mild steel reinforcement bar and HYSD bar which are concrete classes of the abstract class representing a reinforcement bar. Similarly, vertical stirrups, inclined stirrups and bent-up bars are concrete classes of the abstract class representing shear reinforcement.
  3. The concept of composition, where a class is a synthesis of several components directly represents a class such as a section that consists of concrete, main reinforcement bars and shear reinforcement bars, in addition to the attributes of a section such as its dimensions.

This package therefore consist of several abstract and concrete classes, at present, to represent the following:

  1. Concrete stress block
  2. Concrete
  3. Reinforcement bars - Mild steel reinforcement bars and HYSD reinforcement bars
  4. Reinforcement concrete section, Rectangular beam section, flanged beam section and rectangular column section

Since it is decided to begin with analysis, the methods that are being implemented at present will aim to determine the limit state capacity of the different sections, such as $M_u$ and $V_u$ for beam sections and $P_u$ and $M_u$ for column sections, given the exact dimensions, material and reinforcement details.

Classes

The following classes have been implemented:

  1. A class LSMStressBlock to represent the stress block for concrete in compression under limit state of flexure, as well as limit state of combined axial compression and flexure as per IS 456:2000.
  2. A class Concrete to represent concrete.
  3. An abstract class Rebar to represent reinforcement bars. Two derived classes RebarMS and RebarHYSD to represent mild steel bars and high yield strength deformed bars, respectively.
  4. A class RebarLayer to represent a single layer of reinforcement bars, defined as a list of bar diameters and the distance of the centre of the bars from the nearest edge. A class RebarGroup to represnt a list of layers of reinforcement bars.
  5. An abstract class ShearReinforcement to represent shear reinforcement. Two derived classes Stirrups and BentupBars to represent vertical/inclined stirrups and bent up bars, respectively.
  6. A class ShearRebarGroup to represent a group of shear reinforcement bars.
  7. A class RectBeamSection to represnt a reinforced concrete rectangular beam section. A derived class FlangedBeamSection to represnt flanged sections subejcted to flexure and shear, derived from RectBeamSection.
  8. A class RectColumnSection* to represent a reinforced concrete rectangular coulmn section subjected to combined axial compression and bending about one axis.

Methods

Following funcationality has been implemented for the different classes:

  1. LSMStressBlock: Calculation of the following:

    1. strain distribution,
    2. stress for a given strain,
    3. stress at a specified distance $x$ from neutral axis,
    4. area of stress distribution between two locations $x_1$ and $x_2$ from neutral axis, and
    5. moment of stress block between the two locations with respect to depth $x_u$ of the neutral axis.

    These are implemented for both the following cases:

    1. Flexure
    2. Combined axial compression and bending about one axis.
    3. Concrete: Calculation of design stress $f_d$, shear stress $\tau_c$ and maximum shear stress $\tau_{c,max}$.
    4. RebarMS and RebarHYSD: Stress for a specified value of strain and design stress.
    5. RebarLayer: Area of bars in a layer.
    6. RebarGroup: Calculation of the sum of the following values aggregated after calculating the values individually for each layer:
    7. Area of reinforcing bars in the group,
    8. Force in reinforcing bars in the group, in tension and in compression,
    9. Moment of force in reinforcing bars in the group about the neutral axis, in tension and in compression
    10. RectBeamSection and FlangedBeamSection: Calculation of:
    11. Total compression force and the corresponding moment about the neutral axis for a specified neutral axis location $x_u$, considering concrete in compression and compression reinforcement bars, if present,
    12. Total tension force and the corresponding moment about the neutral axis due to a group of tension reinforcement bars,
    13. Position of the neutral axis $x_u$, calculated iteratively to satisfy equilibrium,
    14. Shear force capacity of a section for a given shear reinforcement in the form of vertical or inclined stirrups,
    15. Spacing of vertical or inclined stirrups for a given design shear force
    16. RectColumnSection: Calculation of:
    17. Total axial compression force and bending moment about the neutral axis for a given position of the neutral axis.