QuickRC Design
Click Here for the tool contents!
Documentation:
QuickRC Design is a Dynamo-based tool for the rapid preliminary design of reinforced concrete joists. By taking inputs such as the building footprint, column spacing, and number of joists per bay, the tool calculates design moments using ACI 318 moment coefficients. It determines the required reinforcement areas, selects optimal bar configurations, and checks spacing and constructability criteria. The tool also estimates embodied carbon, material weight, and material cost. All results are exported to Excel for further analysis and documentation.
Inputs:
- Building Length (y-direction)
- Building Width (x-direction)
- Column Spacing (x-direction) – by v_divisions
- Column Spacing (y-direction) – by u_divisions
- Floor-to-Floor Height
- Column Size - constant
- Girder Size - constant
- Beam Dimensions – variable
- Number of joists/beams in a bay - variable
- Minimum bar size for negative moment regions - constant
- Material Properties – constant (e.g., concrete strength, rebar yield)
Outputs:
- Beam Average Efficiency - Demand/Capacity
- Minimum joist height required by ACI 318 and ductility
- Material Weight
- Material Cost
- Total Vertical Clearence
Excel Outputs:
- Beam Height
- Beam Width
- ACI Height Check (OK or re-design)
- Moment Demands
- Tensile Strain (for ductility check)
- Moment Capacity
- Beam Efficiency (per Critical Region) (this is averaged above)
- Bar Size
- Number of Bars
- Maximum possible spacing of bars (taking into account ACI minimum and maximum spacing requirements of reinforcement bars)
- Required Steel Area
- Provided Steel Area
In addition, the tool allows users to specify a minimum bar size for negative moment regions. This feature helps enforce practical detailing, especially over supports, where congestion or anchorage requirements often make smaller bars undesirable.
HOW TO:
- Define Building Inputs:
- Building Length and Width – overall plan dimensions.
- Floor-to-Floor Height – used for headroom calculations and coordination.
- Floor Thickness – typically a concrete slab thickness.
- Girder Dimensions – girder height and width; used in layout and depth checks.
- Column Size – for framing and structural spacing.
- Set Joist Layout Parameters:
- Joist Width and Height – used to evaluate code compliance and moment capacity.
- Number of Bays (U and V Divisions) – how many bays in each direction (used to determine span lengths and critical moment locations).
- Number of Joists per Bay – determines tributary width and joist spacing.
- Minimum Bar Size for Negative Moment Regions – used to reduce reinforcement congestion at support zones. This input allows the user to manually control minimum reinforcement size where constructability is critical (e.g., top bars at supports).
- After running the tool, if the ACI height check is not adequate, check the Dynamo Player Outputs showing the 2 minimum height values (span and ductility). Choose the maximum of the two values and adjust the joist height accordingly.
- The tool can generate a high number of smaller bars for negative moment regions due to the effective width being much larger. The calculation is theoretically correct as it respects both the minimum and maximum bar spacings but might be difficult construction-wise. To adjust this, depending on if it is an edge or an interior support, adjust the appropriate “Minimum bar size for negative regions” slider to increase the minimum bar size used at that support. This will reduce the number of bars as a result.
- What the tool does:
- Computes moment demands based on ACI 318 moment coefficients:
- For 2 bays or more (for 2 bays the internal support coeff. is 1/9; for 3 or more is 1/10 and 1/11)
- For 1 bay it uses standard formulas (wL2/12 at supports and wL2/24 at midspan)
- The tool calculated the Self-Weight of the structure based on inputs. It also adds 20 psf of Superimposed Dead Loads. The Live Load is based on ASCE 7 and is taken conservatively as 100 psf.
- The tool uses steel with a yield strength of 60 ksi and Normal Weight Concrete of 4 ksi.
- Verifies joist dimensions:
- Initial Reinforcement Ratio
- R-factor:
- Re-evaluate the trial beam size based on tension-controlled flexural strength conditions:
- Calculates Required Steel Area:
- Chooses Bar Sizes and Number of bars based on the required area and minimum and maximum bar spacing requirements:
- Effective width for Negative Moment Regions:
- Calculates the moment capacity at each critical location:
- Calculates total weight:
- Calculates embodied carbon using the volume from above:
- Density Steel - 7850 kg/m3
- Density Concrete - 2400 kg/m3
- kgCO2e/kg 4ksi Concrete - 0.13
- kgCO2e/kg rebar - 0.76
- Calculates the total cost by using the volumes from above:
- Cost Steel - 760 USD per metric ton steel
- Cost Concrete - 110 USD per yd3 concrete
- Calculates total clearance:
Start by entering the building geometry:
Configure the joist system:
,this is the minimum h for the section to be tension-controlled (ductility limit)
, this is the ACI 318 limit based on span
b. Minimum Spacing:
Beam width is b for Positive Moments and beff for Negative Moments (different for edge and interior)
b – 2(cover) – 2(diam stirrup) – #of bars * bar_size = Maximum Available Spacing Minimum spacing specified by ACI is the larger of: - Bar diameter (in) - 1” - Diameter of coarse aggregate (in)
c. Maximum Spacing:
d. Python Script for choosing bar sizes:
# Load the Python Standard and DesignScript Libraries
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN
# Place your code below this line
req_areas = IN[0] # in2
beam_width = IN[1] * 12 # in
eff_edge = IN[2] # in
eff_interior = IN[3] # in
max_spacing = IN[4]
u_div = IN[5]
min_bar_neg = IN[6]
min_bar_neg_edge = IN[7]
cover = 1.5 # Concrete cover, in
stir_t = (3/8) # #3 stirrup
agg_size = 1.33 # assumed
bar_sizes = list(range(3, 12))
bar_diams = [bar / 8.0 for bar in bar_sizes]
bar_areas = [(3.14159265359 / 4) * (d ** 2) for d in bar_diams]
best_results = []
for i in range(len(req_areas)):
req_area = req_areas[i]
# Determine width
if i % 2 == 1:
width_in = beam_width
else:
# Negative moment (even indeces)
if i == 0:
width_in = eff_edge
elif u_div == 1:
width_in = eff_edge
elif u_div == 2 and i == 2:
width_in = eff_interior
elif u_div >= 3:
width_in = eff_interior
else:
width_in = eff_edge
best = None
for j in range(len(bar_sizes)):
bar = bar_sizes[j]
if i % 2 == 0: # Negative moment
if i == 0 and bar < min_bar_neg_edge:
continue
elif i != 0 and bar < min_bar_neg:
continue
dia = bar_diams[j]
area = bar_areas[j]
for n_bars in range(2, 100):
total_area = n_bars * area
if total_area < req_area:
continue
clear_space_total = width_in - 2 * cover - 2 * stir_t - n_bars * dia
if clear_space_total <= 0:
continue
clear_spacing = clear_space_total / (n_bars - 1)
min_spacing = max(dia, 1.0, agg_size)
if min_spacing <= clear_spacing <= max_spacing:
if best is None or total_area < best[2]:
best = ('#' + str(bar), n_bars, round(total_area, 3), clear_spacing, width_in)
best_results.append(best)
# bar size, number of bars, total area, spacing
OUT = best_results
, check if the section is tension controlled
— Moment Capacity of a particular critical section
Calculates volume of steel (it is assumed that the top reinforcement covers 25% of each span from each end (50% total) and the bottom reinforcement covers the whole span) for one entire floor.
Calculates volume of concrete (slab + joists).
Calculates total weight by using 0.2836 lb/in3 - density of steel and 150 lb/ft3 for concrete
clearance = floor_height - slab_thickness - max(girder_height, joist_height)
Teaser Image:
Recorded DEMO:
Note: I did try to reduce the length of the video, however I felt like I was omitting to much information, hence I left it as it was originally ~ 3min.