DesignCriteria

DesignCriteria

DesignCriteria contains project information, material properties, load combinations, and various design settings.

Structure

public class DesignCriteria
{
    public ProjectInformation ProjectInformation { get; set; }
    public MaterialProperties MaterialProperties { get; set; }
    public LoadCombinations LoadCombinations { get; set; }
    public Settings Settings { get; set; }
}

ProjectInformation

Basic project metadata.

var info = design.DesignCriteria.ProjectInformation;

// Read values
string projectName = info.ProjectName;
string clientName = info.ClientName;
string designerName = info.DesignerName;
DateTime date = info.Date;

// Modify values
info.ProjectName = "Bridge Beam A1";
info.ClientName = "ACME Construction";
info.DesignerName = "Jane Doe";
info.Date = DateTime.Now;

Properties

PropertyTypeDescription
ProjectNamestringProject identifier
ClientNamestringClient or owner name
DesignerNamestringEngineer’s name
DateDateTimeDesign date
NotesstringAdditional notes

MaterialProperties

Concrete and reinforcement material definitions.

var materials = design.DesignCriteria.MaterialProperties;

// Access concrete properties
var concrete = materials.Concrete;

// Access reinforcement properties
var prestressSteel = materials.PrestressSteel;
var mildSteel = materials.MildSteel;

Concrete Properties

PropertyTypeUnitDescription
fcidoublepsiInitial concrete strength
fcdoublepsi28-day concrete strength
EcidoublepsiInitial modulus of elasticity
EcdoublepsiFinal modulus of elasticity
UnitWeightdoublepcfConcrete unit weight

Example: Material Setup

var design = await client.PullBeamDesignerAsync();
var materials = design.DesignCriteria.MaterialProperties;

// Set concrete properties
materials.Concrete.fc = 6000;      // 6000 psi
materials.Concrete.fci = 4500;     // 4500 psi initial
materials.Concrete.UnitWeight = 150;  // 150 pcf

await client.PushBeamDesignerAsync("", design);

LoadCombinations

Design load combinations for various limit states.

var loadCombos = design.DesignCriteria.LoadCombinations;

// Access combination list
var combinations = loadCombos.Combinations;

foreach (var combo in combinations)
{
    Console.WriteLine($"{combo.Name}: {combo.Description}");
}

Load Combination Properties

PropertyTypeDescription
NamestringCombination identifier
DescriptionstringCombination description
LoadFactorsDictionaryLoad type to factor mapping
LimitStateLimitStateService, Strength, etc.

Settings

Various design and analysis settings organized by category.

var settings = design.DesignCriteria.Settings;

// Access different setting categories
var transferSettings = settings.Transfer;
var flexureSettings = settings.Flexure;
var shearSettings = settings.Shear;
var deflectionSettings = settings.Deflection;
var developmentSettings = settings.Development;

Transfer Settings

Settings for transfer (release) condition.

PropertyTypeDescription
TransferLengthdoubleStrand transfer length
CheckTopTensionboolCheck top fiber tension
MaxTopTensiondoubleMaximum top tension allowed

Flexure Settings

Flexural design parameters.

PropertyTypeDescription
PhiFlexuredoubleFlexure strength reduction factor
CheckMinReinforcementboolApply minimum reinforcement check

Shear Settings

Shear design parameters.

PropertyTypeDescription
PhiSheardoubleShear strength reduction factor
ShearMethodShearMethodShear calculation method

Torsion Settings

Torsion design parameters.

PropertyTypeDescription
PhiTorsiondoubleTorsion strength reduction factor
IncludeTorsionboolInclude torsion in design

Deflection Settings

Deflection analysis parameters.

PropertyTypeDescription
LongTermFactordoubleLong-term deflection multiplier
DeflectionLimitdoubleMaximum allowable deflection

Development Settings

Reinforcement development parameters.

PropertyTypeDescription
TopBarFactordoubleTop bar modification factor
CoatingFactordoubleEpoxy coating factor

Complete Example

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

class DesignCriteriaExample
{
    static async Task ConfigureDesignCriteria(ErikssonBeamClient client)
    {
        var design = await client.PullBeamDesignerAsync();
        var criteria = design.DesignCriteria;

        // Project Information
        criteria.ProjectInformation.ProjectName = "Highway Bridge Beam";
        criteria.ProjectInformation.ClientName = "State DOT";
        criteria.ProjectInformation.DesignerName = "J. Smith, P.E.";
        criteria.ProjectInformation.Date = DateTime.Now;

        // Materials
        var materials = criteria.MaterialProperties;
        materials.Concrete.fc = 8000;      // High-strength concrete
        materials.Concrete.fci = 6000;
        materials.Concrete.UnitWeight = 150;

        // Design Settings
        var settings = criteria.Settings;
        settings.Flexure.PhiFlexure = 0.9;
        settings.Shear.PhiShear = 0.75;

        // Deflection criteria
        settings.Deflection.LongTermFactor = 2.0;

        await client.PushBeamDesignerAsync("", design);

        Console.WriteLine("Design criteria configured successfully");
    }

    static async Task DisplayCriteria(ErikssonBeamClient client)
    {
        var design = await client.PullBeamDesignerAsync();
        var criteria = design.DesignCriteria;

        Console.WriteLine("=== Design Criteria ===\n");

        // Project Info
        var info = criteria.ProjectInformation;
        Console.WriteLine("Project Information:");
        Console.WriteLine($"  Project: {info.ProjectName}");
        Console.WriteLine($"  Client: {info.ClientName}");
        Console.WriteLine($"  Designer: {info.DesignerName}");
        Console.WriteLine($"  Date: {info.Date:yyyy-MM-dd}");

        // Materials
        var concrete = criteria.MaterialProperties.Concrete;
        Console.WriteLine("\nConcrete Properties:");
        Console.WriteLine($"  f'c: {concrete.fc} psi");
        Console.WriteLine($"  f'ci: {concrete.fci} psi");
        Console.WriteLine($"  Unit Weight: {concrete.UnitWeight} pcf");

        // Settings
        var settings = criteria.Settings;
        Console.WriteLine("\nDesign Settings:");
        Console.WriteLine($"  Phi Flexure: {settings.Flexure.PhiFlexure}");
        Console.WriteLine($"  Phi Shear: {settings.Shear.PhiShear}");
    }
}

See Also