Vlad Clima - Module 9 - Part 2

QuickRC Design

Click Here for the tool contents!

image

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:

  1. Define Building Inputs:
    1. Start by entering the building geometry:

    2. Building Length and Width – overall plan dimensions.
    3. Floor-to-Floor Height – used for headroom calculations and coordination.
    4. Floor Thickness – typically a concrete slab thickness.
    5. Girder Dimensions – girder height and width; used in layout and depth checks.
    6. Column Size – for framing and structural spacing.
  2. Set Joist Layout Parameters:
    1. Configure the joist system:

    2. Joist Width and Height – used to evaluate code compliance and moment capacity.
    3. Number of Bays (U and V Divisions) – how many bays in each direction (used to determine span lengths and critical moment locations).
    4. Number of Joists per Bay – determines tributary width and joist spacing.
    5. 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).
    6. 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.
    7. 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.
  3. What the tool does:
    1. Computes moment demands based on ACI 318 moment coefficients:
      1. 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)
      2. image
      3. For 1 bay it uses standard formulas (wL2/12 at supports and wL2/24 at midspan)
      4. 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.
      5. The tool uses steel with a yield strength of 60 ksi and Normal Weight Concrete of 4 ksi.
    2. Verifies joist dimensions:
      1. Initial Reinforcement Ratio
      2. ρinitial=fc×β14×fy\rho_{initial} = \frac{f'_c \,\times \, \beta_1}{4 \, \times \, f_y}

      3. R-factor:
      4. ω=ρinitial×fyfc\omega = \rho_{initial}\,\times\,\frac{f_y}{f'_c}

        R=ωfc(10.59ω)R = \omega\,f'_c\,\,(1\,-\,0.59\omega)

      5. Re-evaluate the trial beam size based on tension-controlled flexural strength conditions:
      6. bd2MuϕRandhd+2.5"bd^2\,\geq\, \frac{M_u}{\phi R}\,and\,\,h\approx d\,+\,2.5" ,this is the minimum h for the section to be tension-controlled (ductility limit)

        hmin=L18.5h_{min}\,=\,\frac{L}{18.5}, this is the ACI 318 limit based on span

    3. Calculates Required Steel Area:
    4. As,required=Mu4dA_{s,\,required}=\frac{M_u}{4d}

    5. Chooses Bar Sizes and Number of bars based on the required area and minimum and maximum bar spacing requirements:
      1. Effective width for Negative Moment Regions:
      2. image

        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:

        smax15×4000023(fypsi)2.5(2)12×4000023(fypsi)s_{max} \leq 15\,\times\,\frac{40000}{\frac{2}{3}(f_y\,psi)}\,-\,2.5(2)\,\leq\,12\,\times\,\frac{40000}{\frac{2}{3}(f_y\,psi)}

        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
    6. Calculates the moment capacity at each critical location:
    7. a=As×fy0.85fc(borbeff)a = \frac{A_s\times f_y}{0.85\,f'_c(b\,or\,b_{eff})}

      c=aβ1c = \frac{a}{\beta_1}

      εt=εcu(dcc)\varepsilon_t = \varepsilon_{cu}(\frac{d\,-\,c}{c}), check if the section is tension controlled

      ϕMn=ϕAsfy(da2)\phi M_n = \phi A_s f_y(d\,-\,\frac{a}{2}) — Moment Capacity of a particular critical section

    8. Calculates total weight:
    9. 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

    10. Calculates embodied carbon using the volume from above:
      1. Density Steel - 7850 kg/m3
      2. Density Concrete - 2400 kg/m3
      3. kgCO2e/kg 4ksi Concrete - 0.13
      4. kgCO2e/kg rebar - 0.76
    11. Calculates the total cost by using the volumes from above:
      1. Cost Steel - 760 USD per metric ton steel
      2. Cost Concrete - 110 USD per yd3 concrete
    12. Calculates total clearance:
    13. clearance = floor_height - slab_thickness - max(girder_height, joist_height)

Teaser Image:

image
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.