Reinforcement (Data Model)

Reinforcement (Data Model)

Reinforcement contains all steel reinforcement definitions including prestressing strands, mild steel rebar, transverse reinforcement, and welded wire reinforcement.

Structure

public class Reinforcement
{
    public Prestress Prestress { get; set; }
    public Rebar Rebar { get; set; }
    public TransverseReinforcement TransverseReinforcement { get; set; }
    public WeldedWireReinforcement WeldedWireReinforcement { get; set; }
}

Prestress

Prestressing strand configuration.

var prestress = design.Reinforcement.Prestress;

// Access strand groups
var strandGroups = prestress.StrandGroups;

foreach (var group in strandGroups)
{
    Console.WriteLine($"Strands: {group.NumberOfStrands} at {group.BottomCover}\" from bottom");
}

Prestress Properties

PropertyTypeDescription
StrandGroupsListCollection of strand group definitions
StrandDiameterdoubleStrand diameter (inches)
StrandAreadoubleArea per strand (sq in)
FpudoubleUltimate strength (psi)
FpydoubleYield strength (psi)
InitialStressdoubleJacking stress (psi)

StrandGroup Properties

PropertyTypeUnitDescription
NumberOfStrandsint-Number of strands in group
BottomCoverdoubleinchesDistance from bottom fiber
IsHarpedbool-Whether strands are harped
HarpPoint1doubleinchesFirst harp point location
HarpPoint2doubleinchesSecond harp point location
EndEccentricitydoubleinchesStrand height at ends (harped)
DebondLengthdoubleinchesLength of debonding
DebondLeftbool-Debond at left end
DebondRightbool-Debond at right end

Example: Prestress Configuration

var design = await client.PullBeamDesignerAsync();
var prestress = design.Reinforcement.Prestress;

// Clear existing and add new strand groups
prestress.StrandGroups.Clear();

// Bottom straight strands
prestress.StrandGroups.Add(new StrandGroup
{
    NumberOfStrands = 8,
    BottomCover = 2.0,
    IsHarped = false
});

// Harped strands
prestress.StrandGroups.Add(new StrandGroup
{
    NumberOfStrands = 4,
    BottomCover = 4.0,
    IsHarped = true,
    HarpPoint1 = 48,      // 4' from left
    HarpPoint2 = 192,     // 4' from right (on 20' beam)
    EndEccentricity = 18  // Rise to 18" at ends
});

await client.PushBeamDesignerAsync("", design);

Rebar

Mild steel longitudinal reinforcement.

var rebar = design.Reinforcement.Rebar;

// Access top and bottom bars
var topBars = rebar.TopBars;
var bottomBars = rebar.BottomBars;

Rebar Properties

PropertyTypeDescription
TopBarsListTop longitudinal bars
BottomBarsListBottom longitudinal bars
SideBarsListSide face reinforcement

RebarGroup Properties

PropertyTypeUnitDescription
BarSizeBarSize-Bar designation (#3, #4, etc.)
NumberOfBarsint-Number of bars
CoverdoubleinchesClear cover
StartLocationdoubleinchesBar start position
EndLocationdoubleinchesBar end position
GradeintksiSteel grade (60, 80, etc.)

Example: Rebar Configuration

var design = await client.PullBeamDesignerAsync();
var rebar = design.Reinforcement.Rebar;

// Add top bars
rebar.TopBars.Clear();
rebar.TopBars.Add(new RebarGroup
{
    BarSize = BarSize.No5,
    NumberOfBars = 2,
    Cover = 2.0,
    StartLocation = 0,
    EndLocation = 240,  // Full length
    Grade = 60
});

// Add bottom bars
rebar.BottomBars.Clear();
rebar.BottomBars.Add(new RebarGroup
{
    BarSize = BarSize.No4,
    NumberOfBars = 2,
    Cover = 1.5,
    StartLocation = 0,
    EndLocation = 240,
    Grade = 60
});

await client.PushBeamDesignerAsync("", design);

TransverseReinforcement

Shear reinforcement (stirrups).

var transverse = design.Reinforcement.TransverseReinforcement;

// Access stirrup zones
var zones = transverse.Zones;

TransverseZone Properties

PropertyTypeUnitDescription
StartLocationdoubleinchesZone start
EndLocationdoubleinchesZone end
BarSizeBarSize-Stirrup bar size
SpacingdoubleinchesStirrup spacing
Legsint-Number of legs

Example: Stirrups

var design = await client.PullBeamDesignerAsync();
var transverse = design.Reinforcement.TransverseReinforcement;

// Clear and add stirrup zones
transverse.Zones.Clear();

// End zone - tighter spacing
transverse.Zones.Add(new TransverseZone
{
    StartLocation = 0,
    EndLocation = 48,     // 4' end zone
    BarSize = BarSize.No4,
    Spacing = 4,          // 4" spacing
    Legs = 2
});

// Middle zone - wider spacing
transverse.Zones.Add(new TransverseZone
{
    StartLocation = 48,
    EndLocation = 192,
    BarSize = BarSize.No4,
    Spacing = 12,         // 12" spacing
    Legs = 2
});

// Other end zone
transverse.Zones.Add(new TransverseZone
{
    StartLocation = 192,
    EndLocation = 240,
    BarSize = BarSize.No4,
    Spacing = 4,
    Legs = 2
});

await client.PushBeamDesignerAsync("", design);

WeldedWireReinforcement

Welded wire mesh reinforcement.

var wwr = design.Reinforcement.WeldedWireReinforcement;

// Access WWR layers
var layers = wwr.Layers;

WWRLayer Properties

PropertyTypeUnitDescription
Designationstring-Wire designation (e.g., "6x6-W2.9xW2.9")
CoverdoubleinchesClear cover
StartLocationdoubleinchesStart position
EndLocationdoubleinchesEnd position

BarSize Enumeration

ValueDescription
No3#3 bar (0.375" dia)
No4#4 bar (0.500" dia)
No5#5 bar (0.625" dia)
No6#6 bar (0.750" dia)
No7#7 bar (0.875" dia)
No8#8 bar (1.000" dia)
No9#9 bar (1.128" dia)
No10#10 bar (1.270" dia)
No11#11 bar (1.410" dia)

Complete Example

using System;
using System.Threading.Tasks;
using ErikssonBeam.API.BeamClient;
using ErikssonBeam.API.BeamDesigner;

class ReinforcementExample
{
    static async Task ConfigureReinforcement(ErikssonBeamClient client)
    {
        var design = await client.PullBeamDesignerAsync();
        var reinf = design.Reinforcement;

        // Prestressing
        reinf.Prestress.StrandGroups.Clear();
        reinf.Prestress.StrandGroups.Add(new StrandGroup
        {
            NumberOfStrands = 10,
            BottomCover = 2.5,
            IsHarped = false
        });

        // Top mild steel
        reinf.Rebar.TopBars.Clear();
        reinf.Rebar.TopBars.Add(new RebarGroup
        {
            BarSize = BarSize.No5,
            NumberOfBars = 2,
            Cover = 2.0,
            StartLocation = 0,
            EndLocation = 240
        });

        // Stirrups
        reinf.TransverseReinforcement.Zones.Clear();
        reinf.TransverseReinforcement.Zones.Add(new TransverseZone
        {
            StartLocation = 0,
            EndLocation = 240,
            BarSize = BarSize.No4,
            Spacing = 6,
            Legs = 2
        });

        await client.PushBeamDesignerAsync("", design);
        Console.WriteLine("Reinforcement configured");
    }

    static async Task DisplayReinforcement(ErikssonBeamClient client)
    {
        var design = await client.PullBeamDesignerAsync();
        var reinf = design.Reinforcement;

        Console.WriteLine("=== Reinforcement Summary ===\n");

        // Prestress
        Console.WriteLine("Prestressing:");
        foreach (var group in reinf.Prestress.StrandGroups ?? Enumerable.Empty<StrandGroup>())
        {
            string type = group.IsHarped ? "Harped" : "Straight";
            Console.WriteLine($"  {group.NumberOfStrands} strands at {group.BottomCover}\" ({type})");
        }

        // Rebar
        Console.WriteLine("\nMild Steel:");
        Console.WriteLine($"  Top Bars: {reinf.Rebar.TopBars?.Count ?? 0} groups");
        Console.WriteLine($"  Bottom Bars: {reinf.Rebar.BottomBars?.Count ?? 0} groups");

        // Transverse
        Console.WriteLine("\nTransverse Reinforcement:");
        foreach (var zone in reinf.TransverseReinforcement.Zones ?? Enumerable.Empty<TransverseZone>())
        {
            Console.WriteLine($"  {zone.StartLocation}\"-{zone.EndLocation}\": {zone.BarSize} @ {zone.Spacing}\"");
        }
    }
}

See Also