StructuralModel

StructuralModel

StructuralModel contains loading definitions, support conditions, and other structural configuration.

Structure

public class StructuralModel
{
    public Loading Loading { get; set; }
    public Bearing Bearing { get; set; }
    public DappedEnds DappedEnds { get; set; }
    public StrippingAndHandling StrippingAndHandling { get; set; }
    public Shoring Shoring { get; set; }
    public VibrationAnalysis VibrationAnalysis { get; set; }
}

Loading

Applied loads on the beam.

var loading = design.StructuralModel.Loading;

// Self-weight configuration
double multiplier = loading.SelfWeightMultiplier;
loading.SelfWeightMultiplier = 1.0;

// Access load collections
var pointLoads = loading.PointLoads;
var distributedLoads = loading.DistributedLoads;
var moments = loading.AppliedMoments;

Loading Properties

PropertyTypeDescription
SelfWeightMultiplierdoubleFactor applied to self-weight
PointLoadsListConcentrated loads
DistributedLoadsListUniform and varying distributed loads
AppliedMomentsListApplied moment loads
LateralLoadsListLateral (horizontal) loads

Point Load Properties

PropertyTypeUnitDescription
LocationdoubleinchesDistance from left end
MagnitudedoublelbsLoad magnitude
LoadTypeLoadType-Dead, Live, etc.
Descriptionstring-Load description

Distributed Load Properties

PropertyTypeUnitDescription
StartLocationdoubleinchesStart position
EndLocationdoubleinchesEnd position
StartMagnitudedoublelbs/inLoad at start
EndMagnitudedoublelbs/inLoad at end
LoadTypeLoadType-Dead, Live, etc.

Example: Adding Loads

var design = await client.PullBeamDesignerAsync();
var loading = design.StructuralModel.Loading;

// Set self-weight
loading.SelfWeightMultiplier = 1.0;

// Add a point load
loading.PointLoads.Add(new PointLoad
{
    Location = 120,        // 10 feet from left
    Magnitude = 5000,      // 5000 lbs
    LoadType = LoadType.Dead,
    Description = "Equipment load"
});

// Add a distributed load
loading.DistributedLoads.Add(new DistributedLoad
{
    StartLocation = 0,
    EndLocation = 240,     // Full span
    StartMagnitude = 100,  // 100 lbs/in
    EndMagnitude = 100,
    LoadType = LoadType.Live,
    Description = "Uniform live load"
});

await client.PushBeamDesignerAsync("", design);

Bearing

Support conditions at beam ends and intermediate locations.

var bearing = design.StructuralModel.Bearing;

// Access bearing properties
var leftSupport = bearing.LeftEnd;
var rightSupport = bearing.RightEnd;
var intermediateSupports = bearing.IntermediateSupports;

Bearing Properties

PropertyTypeDescription
LeftEndEndBearingLeft end support
RightEndEndBearingRight end support
IntermediateSupportsListInterior supports

EndBearing Properties

PropertyTypeUnitDescription
BearingLengthdoubleinchesBearing pad length
BearingWidthdoubleinchesBearing pad width
IsFixedbool-Fixed vs pinned support
SupportTypeSupportType-Support classification

Example: Bearing Configuration

var design = await client.PullBeamDesignerAsync();
var bearing = design.StructuralModel.Bearing;

// Configure left end bearing
bearing.LeftEnd.BearingLength = 8;    // 8" bearing
bearing.LeftEnd.BearingWidth = 12;
bearing.LeftEnd.IsFixed = false;       // Pinned

// Configure right end bearing
bearing.RightEnd.BearingLength = 8;
bearing.RightEnd.BearingWidth = 12;
bearing.RightEnd.IsFixed = false;

await client.PushBeamDesignerAsync("", design);

DappedEnds

Dapped (notched) end configurations.

var dappedEnds = design.StructuralModel.DappedEnds;

// Check if ends are dapped
bool leftDapped = dappedEnds.LeftEnd.IsDapped;
bool rightDapped = dappedEnds.RightEnd.IsDapped;

DappedEnd Properties

PropertyTypeUnitDescription
IsDappedbool-Whether end is dapped
DapLengthdoubleinchesHorizontal dap dimension
DapDepthdoubleinchesVertical dap dimension
ReentrantRadiusdoubleinchesCorner radius

Example: Dapped End

var design = await client.PullBeamDesignerAsync();

// Configure left end dap
var leftDap = design.StructuralModel.DappedEnds.LeftEnd;
leftDap.IsDapped = true;
leftDap.DapLength = 6;
leftDap.DapDepth = 8;
leftDap.ReentrantRadius = 0.5;

await client.PushBeamDesignerAsync("", design);

StrippingAndHandling

Lifting and handling configurations during production.

var handling = design.StructuralModel.StrippingAndHandling;

// Lifting point locations
var liftPoints = handling.LiftingPoints;

Properties

PropertyTypeDescription
LiftingPointsListLifting point locations
DynamicFactordoubleImpact factor for handling
SuctionLoaddoubleForm suction load

Shoring

Temporary support configuration.

var shoring = design.StructuralModel.Shoring;

// Access shore locations
var shores = shoring.ShoreLocations;

// Add a shore
shores.Add(new ShoreLocation
{
    Location = 120,  // 10 feet from left
    IsActive = true
});

Shoring Properties

PropertyTypeDescription
ShoreLocationsListList of shore positions
ShoreRemovalSequenceListOrder of shore removal

VibrationAnalysis

Dynamic response parameters for vibration analysis.

var vibration = design.StructuralModel.VibrationAnalysis;

// Configure vibration parameters
vibration.DampingRatio = 0.02;  // 2% damping

Complete Example

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

class StructuralModelExample
{
    static async Task ConfigureStructuralModel(ErikssonBeamClient client)
    {
        var design = await client.PullBeamDesignerAsync();
        var model = design.StructuralModel;

        // Loading
        model.Loading.SelfWeightMultiplier = 1.0;

        // Clear existing loads and add new ones
        model.Loading.DistributedLoads.Clear();
        model.Loading.DistributedLoads.Add(new DistributedLoad
        {
            StartLocation = 0,
            EndLocation = 240,
            StartMagnitude = 150,
            EndMagnitude = 150,
            LoadType = LoadType.Dead,
            Description = "Superimposed dead load"
        });

        model.Loading.DistributedLoads.Add(new DistributedLoad
        {
            StartLocation = 0,
            EndLocation = 240,
            StartMagnitude = 200,
            EndMagnitude = 200,
            LoadType = LoadType.Live,
            Description = "Design live load"
        });

        // Bearing
        model.Bearing.LeftEnd.BearingLength = 6;
        model.Bearing.LeftEnd.BearingWidth = 10;
        model.Bearing.RightEnd.BearingLength = 6;
        model.Bearing.RightEnd.BearingWidth = 10;

        await client.PushBeamDesignerAsync("", design);

        Console.WriteLine("Structural model configured");
    }

    static async Task DisplayStructuralModel(ErikssonBeamClient client)
    {
        var design = await client.PullBeamDesignerAsync();
        var model = design.StructuralModel;

        Console.WriteLine("=== Structural Model ===\n");

        // Loading summary
        Console.WriteLine("Loading:");
        Console.WriteLine($"  Self-Weight Multiplier: {model.Loading.SelfWeightMultiplier}");
        Console.WriteLine($"  Point Loads: {model.Loading.PointLoads?.Count ?? 0}");
        Console.WriteLine($"  Distributed Loads: {model.Loading.DistributedLoads?.Count ?? 0}");

        // Bearing summary
        Console.WriteLine("\nBearing:");
        Console.WriteLine($"  Left: {model.Bearing.LeftEnd.BearingLength}\" x {model.Bearing.LeftEnd.BearingWidth}\"");
        Console.WriteLine($"  Right: {model.Bearing.RightEnd.BearingLength}\" x {model.Bearing.RightEnd.BearingWidth}\"");

        // Dapped ends
        Console.WriteLine("\nDapped Ends:");
        Console.WriteLine($"  Left Dapped: {model.DappedEnds?.LeftEnd?.IsDapped ?? false}");
        Console.WriteLine($"  Right Dapped: {model.DappedEnds?.RightEnd?.IsDapped ?? false}");
    }
}

See Also