Table 1
Python Libraries for Structural Analysis.
| LIBRARY/PACKAGE | DOCUMENTATION AND EXAMPLES | 3D REINFORCED CONCRETE FRAMES | 3D VISUALIZATION | CODING | SEISMIC ANALYSIS | LOAD COMBINATIONS | LOAD ENVELOPE GENERATION | USER CONTROL OVER DATA | COMMENTS |
|---|---|---|---|---|---|---|---|---|---|
| anastruct [30] | Yes | No | No | High | No | Yes | No | Medium | ------- |
| Adapy [31] | No | Yes | Yes | High | Yes | Yes | No | Low |
|
| feastruct [32] | Partial | No | No | High | No | No | No | Low | ------- |
| nusa [33] | Yes | No | No | High | No | No | No | Low | ------- |
| openseespy [34] | Yes | Yes | No | High | Yes | Yes | No | High |
|
| pyframe3dd [35] | Yes* | Yes | Yes | Low | Yes | Yes | No | High |
|
| PyNite [36] | Yes | Yes | Yes | High | No | Yes | No | Medium | ------- |
| StructPy [37] | No | No | No | High | No | No | No | Low | ------- |
| structural_ analysis [38] | No | Yes | Yes | High | No | No | No | Medium | ------- |
| Structural-Python [39] | No | No | No | High | No | No | No | High | ------- |

Figure 1
Constituents of RCFA package.
Table 2
Instance variables of the RCFA package.
| S.NO. | INSTANCE VARIABLE | TYPE | REQUIREMENT | DESCRIPTION |
|---|---|---|---|---|
| 1 | nodes_details | DataFrame | Mandatory | Collects the coordinates of nodes in space |
| 2 | member_details | DataFrame | Mandatory | Collects the details of members of the structure such as:
|
| 3 | boundrycondition | DataFrame | Mandatory | Recognizes the type of restraints at various nodes. It’s mandatory to define the base support for reinforced concrete frames. |
| 4 | framegen | DataFrame | Optional | Automatically generates frames based on the input of frame bays detail. |
| 5 | forcesnodal | DataFrame | Optional | Collects information on any nodal forces acting on the member or frame in a global coordinate system. |
| 6 | slab_details | DataFrame | Optional Default: None | Identify the floor’s location, thickness and distributed loads as dead and live loads. |
| 7 | load_combo | DataFrame | Optional | Represents the load combination to be used for analysis. By default, it considers only dead load with factor 1. |
| 8 | seismic_def | DataFrame | Optional | Carry information on seismic considerations to be used in seismic analysis. By default, the module follows IS1893:2016. Note: Only a time period is required if the user intends to use any other guidelines. |
| 9 | self_weight | Boolean | Optional | By default, RCFA considers self-weight. If set to False, self-weight is ignored. |
| 10 | infillwall | Boolean | Optional | To be used only in case of seismic analysis as per IS1893. It carries information on whether to consider an infill wall or not in order to determine the time period. |
| 11 | autoflooring | Boolean | Optional | It automatically applies floors along with loads on every story of the frame. It reduces the user’s work of defining floors on complex frames. |
| 12 | properties | DataFrame | Optional | Users can assign new properties to beams, columns and slabs. By default, RCFA considers concrete of Grade 25MPa and the rest of the properties are calculated as per IS456:2000. |
| 13 | grade_conc | Float/Int | Optional | It allows users to change the grade of concrete. |
| 14 | point_loads | DataFrame | Optional | Identifies multiple point loads on the members. |
| 15 | col_stablity_index | Float | Optional | Value is used to classify columns as sway or non-sway. By default, the value is 0.04 as per IS 456:2000 |
Table 3
Features of RCFA package.
| FEATURES | DESCRIPTION |
|---|---|
| Structure | Beam and column elements. |
| 2D geometrically linear reinforced concrete frames | |
| 3D geometrically linear reinforced concrete frames | |
| Restraints | Fixed Joint |
| Hinged Joint | |
| Roller Joint | |
| Loading | Multiple point loads on a 1-dimensional elements |
| Uniformly distributed loads on elements | |
| Self-weight | |
| Floor dead load | |
| Floor live load | |
| Static seismic load | |
| Nodal loads | |
| Load combinations | |
| Load envelopes | |
| Element Sections | Rectangular |
| Square | |
| Circular | |
| Auto Flooring | Applies floor and it loads automatically on every floor of 3D RC frames |
| Material Properties | Material properties of RC frame members can change as per the need |
| Different member categories can have different properties | |
| Post Analysis | Reactions data |
| Nodal displacement data | |
| Global and local stiffness of the RC frame and members respectively | |
| Shear force and bending moment data on every element of the RC frame | |
| Global and local deflection data on every element of the RC frame | |
| RC elements design data | |
| Stiffness data on beams, columns, and nodes | |
| The effective length of columns | |
| Categorize sway and non-sway frames | |
| Seismic shear data | |
| Story drift data | |
| Lumped mass data | |
| Seismic Definition | Allows users to pass seismic definition as per the requirement. |
| Stability Index | Allows users to control the parameter to categorize sway and non-sway frames. |

Figure 2
Screenshot of error handling in the RCFA module.

Listing 1.

Figure 3
Initial 3D Generated RC Model (Left) and Edited 3D RC Model in RCFA module (Right).
Table 4
Comparison of seismic calculation from RCFA and STAAD Pro.
| TIME PERIOD (sec) | SEISMIC ACCELERATION (Ah) | SEISMIC WEIGHT (kN) | BASE SHEAR (kN) | |
|---|---|---|---|---|
| RCFA | 0.9613958 | 0.0565844 | 14976.00 | 847.4079 |
| STAAD Pro | 0.9614000 | 0.0566000 | 14976.00 | 847.4100 |
Table 5
Comparison of seismic story shear from RCFA and STAAD Pro.
| FLOOR | SEISMIC STORY SHEAR (kN) | |
|---|---|---|
| RCFA RESULT | STAAD PRO RESULT | |
| 1 | 17.14555 | 17.146 |
| 2 | 68.58222 | 68.582 |
| 3 | 152.8865 | 152.886 |
| 4 | 208.0243 | 208.023 |
| 5 | 225.3913 | 225.390 |
| 6 | 175.3781 | 175.379 |

Figure 4
Absolute error distribution of base reactions and maximum member forces.

Figure 5
Absolute error distribution of nodal displacements and maximum member deflections.

Figure 6
Shear force and bending moment diagram of member 47 from example.

Figure 7
The deflected shape of member 47 from Example.

Figure 8
Error in the results with increasing complexity of RC Frame.
