Steel Design Module
Steel design calculators following IS 800:2007.
Base Plate Design Calculator
Design steel base plates for columns following IS 800:2007.
Refactored Base Plate Calculator
Base plate design calculation as per IS 800:2007. Refactored using strategy pattern to reduce complexity from 17 to under 10. Applies functional programming patterns for improved maintainability.
- class api.app.calculators.steel.base_plate.SteelGrade(*values)[source]
-
Valid steel grades for base plate design.
- FE250 = 'Fe250'
- FE415 = 'Fe415'
- FE500 = 'Fe500'
- FE550 = 'Fe550'
- class api.app.calculators.steel.base_plate.ConcreteGrade(*values)[source]
-
Valid concrete grades for base plate design.
- M15 = 'M15'
- M20 = 'M20'
- M25 = 'M25'
- M30 = 'M30'
- M35 = 'M35'
- M40 = 'M40'
- M45 = 'M45'
- M50 = 'M50'
- class api.app.calculators.steel.base_plate.LoadFactors(dead_load=1.5, live_load=1.5, wind_load=1.5)[source]
Bases:
objectLoad factor configuration.
- __init__(dead_load=1.5, live_load=1.5, wind_load=1.5)
- class api.app.calculators.steel.base_plate.MaterialProperties(fy_steel, fu_steel, fck_concrete, fyb_bolt, fub_bolt)[source]
Bases:
objectMaterial properties container.
- __init__(fy_steel, fu_steel, fck_concrete, fyb_bolt, fub_bolt)
- class api.app.calculators.steel.base_plate.GeometryParameters(column_depth, column_width, column_thickness, plate_length, plate_width, edge_distance, bolt_diameter)[source]
Bases:
objectGeometry parameters container.
- __init__(column_depth, column_width, column_thickness, plate_length, plate_width, edge_distance, bolt_diameter)
- class api.app.calculators.steel.base_plate.BasePlateCalculationStrategy(*args, **kwargs)[source]
Bases:
ProtocolStrategy interface for different base plate calculation approaches.
- calculate_plate_dimensions(forces, geometry, materials)[source]
Calculate required plate dimensions.
- __init__(*args, **kwargs)
- class api.app.calculators.steel.base_plate.CompressionDominatedStrategy[source]
Bases:
objectStrategy for compression-dominated base plates.
- class api.app.calculators.steel.base_plate.TensionDominatedStrategy[source]
Bases:
objectStrategy for tension-dominated base plates.
- class api.app.calculators.steel.base_plate.BasePlateDesignInput(**data)[source]
Bases:
BaseModelInput schema for base plate design calculation.
-
steel_grade:
SteelGrade
-
concrete_grade:
ConcreteGrade
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
steel_grade:
- class api.app.calculators.steel.base_plate.BasePlateDesignOutput(**data)[source]
Bases:
BaseModelOutput schema for base plate design results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.base_plate.RefactoredBasePlateCalculator[source]
Bases:
BaseCalculatorRefactored base plate calculator with reduced cyclomatic complexity. Uses strategy pattern and functional programming for maintainability.
Steel Column Design Calculator
Design steel compression members following IS 800:2007.
Steel Column Design Calculator - IS 800:2007 (Complete Implementation)
Comprehensive steel beam-column (compression + bending) design as per IS 800:2007. Includes: - Pure compression (Section 7) - Combined axial load + biaxial bending (Section 9.3) - Lateral-torsional buckling checks (Section 8.2.2) - Interaction checks for beam-columns - Section database integration ready - Separate effective lengths for major/minor axes
- class api.app.calculators.steel.steel_column.SectionType(*values)[source]
-
Standard steel section types.
- ISHB = 'ISHB'
- ISJB = 'ISJB'
- ISLB = 'ISLB'
- ISMC = 'ISMC'
- ISMB = 'ISMB'
- ISWB = 'ISWB'
- TUBULAR = 'TUBULAR'
- class api.app.calculators.steel.steel_column.EndCondition(*values)[source]
-
Column end conditions for effective length calculation.
- FIXED_FIXED = 'fixed_fixed'
- FIXED_PINNED = 'fixed_pinned'
- PINNED_PINNED = 'pinned_pinned'
- FIXED_FREE = 'fixed_free'
- CUSTOM = 'custom'
- class api.app.calculators.steel.steel_column.BucklingClass(*values)[source]
-
Buckling classes as per IS 800:2007 Table 10.
- A = 'a'
- B = 'b'
- C = 'c'
- D = 'd'
- class api.app.calculators.steel.steel_column.SteelGrade(*values)[source]
-
Steel grades (E-series only, no Fe-series).
- E250 = 'E250'
- E350 = 'E350'
- E410 = 'E410'
- E450 = 'E450'
- class api.app.calculators.steel.steel_column.SectionSource(*values)[source]
-
Section property source.
- DATABASE = 'database'
- MANUAL = 'manual'
- BUILDUP = 'buildup'
- class api.app.calculators.steel.steel_column.SteelColumnInput(**data)[source]
Bases:
BaseModelInput schema for steel column design (beam-column).
-
section_source:
SectionSource
-
section_type:
SectionType
-
end_condition_major:
EndCondition
-
end_condition_minor:
EndCondition
-
steel_grade:
SteelGrade
- classmethod validate_k_factors(v, info)[source]
Validate K-factors when CUSTOM end condition is specified.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
section_source:
- class api.app.calculators.steel.steel_column.SlendernessCheck(**data)[source]
Bases:
BaseModelSlenderness ratio check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.steel_column.BucklingAnalysis(**data)[source]
Bases:
BaseModelBuckling analysis results.
-
buckling_class_major:
BucklingClass
-
buckling_class_minor:
BucklingClass
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
buckling_class_major:
- class api.app.calculators.steel.steel_column.LTBCheck(**data)[source]
Bases:
BaseModelLateral-torsional buckling check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.steel_column.InteractionCheck(**data)[source]
Bases:
BaseModelIS 800:2007 Section 9.3 interaction check.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.steel_column.DesignCheck(**data)[source]
Bases:
BaseModelDesign strength check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.steel_column.SteelColumnOutput(**data)[source]
Bases:
BaseModelOutput schema for steel column design results.
-
inputs:
SteelColumnInput
-
slenderness:
SlendernessCheck
-
buckling:
BucklingAnalysis
-
interaction:
InteractionCheck
-
design_check:
DesignCheck
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
inputs:
- class api.app.calculators.steel.steel_column.SteelColumnCalculator[source]
Bases:
BaseCalculatorCalculator for steel beam-column design per IS 800:2007.
Implements comprehensive steel member design including: - Pure compression (Section 7) - Combined compression + biaxial bending (Section 9.3) - Effective length calculation (Clause 7.2) - Slenderness ratio checks (Table 3) - Buckling class determination (Table 10) - Design compressive strength (Clause 7.1) - Design bending strength (Clause 8.2) - Lateral-torsional buckling (Clause 8.2.2) - Interaction checks (Clause 9.3.2.2) - Perry-Robertson formula for buckling
-
EFFECTIVE_LENGTH_FACTORS:
ClassVar[Dict[EndCondition,float]] = {EndCondition.FIXED_FIXED: 0.65, EndCondition.FIXED_FREE: 2.0, EndCondition.FIXED_PINNED: 0.8, EndCondition.PINNED_PINNED: 1.0}
-
YIELD_STRENGTHS:
ClassVar[Dict[SteelGrade,float]] = {SteelGrade.E250: 250.0, SteelGrade.E350: 350.0, SteelGrade.E410: 410.0, SteelGrade.E450: 450.0}
-
IMPERFECTION_FACTORS:
ClassVar[Dict[BucklingClass,float]] = {BucklingClass.A: 0.21, BucklingClass.B: 0.34, BucklingClass.C: 0.49, BucklingClass.D: 0.76}
- __init__()[source]
Initialize the calculator.
- Parameters:
calculator_type – Type identifier for the calculator
version – Calculator version
- calculate(inputs)[source]
Perform comprehensive steel beam-column design calculation.
Calculation sequence: 1. Extract and validate inputs 2. Determine material properties 3. Calculate effective lengths 4. Check slenderness ratios 5. Determine buckling classes 6. Calculate design compressive strength (Section 7) 7. Calculate design bending strength with LTB check (Section 8) 8. Perform interaction checks (Section 9.3) 9. Generate remarks and recommendations
-
EFFECTIVE_LENGTH_FACTORS:
Purlin Design Calculator
Design cold-formed steel purlins for roof systems following IS 800:2007.
Purlin Design Calculator
Cold-formed steel purlin design as per IS 801:1975. Performs comprehensive design including bending, shear, web crippling, deflection checks.
- class api.app.calculators.steel.purlin_design.SectionProperties(**data)[source]
Bases:
BaseModelSection properties for cold-formed steel purlin.
- validate_profile_selection()[source]
Validate profile selection after all fields are set.
- Return type:
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
- class api.app.calculators.steel.purlin_design.MaterialProperties(**data)[source]
Bases:
BaseModelMaterial properties for steel.
- classmethod validate_yield_strength(v)[source]
Validate yield strength range for cold-formed steel.
- Return type:
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.LoadingData(**data)[source]
Bases:
BaseModelLoading data for purlin design.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.PurlinDesignInput(**data)[source]
Bases:
BaseModelInput schema for purlin design calculation.
-
section:
SectionProperties
-
material:
MaterialProperties
-
loads:
LoadingData
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
section:
- class api.app.calculators.steel.purlin_design.LoadResults(**data)[source]
Bases:
BaseModelLoad calculation results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.MomentShearResults(**data)[source]
Bases:
BaseModelMoment and shear calculation results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.StiffenerCheck(**data)[source]
Bases:
BaseModelStiffener adequacy check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.BendingCheck(**data)[source]
Bases:
BaseModelBending stress check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.WebCripplingCheck(**data)[source]
Bases:
BaseModelWeb crippling check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.DeflectionCheck(**data)[source]
Bases:
BaseModelDeflection check results.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.purlin_design.PurlinDesignOutput(**data)[source]
Bases:
BaseModelOutput schema for purlin design results.
-
inputs:
PurlinDesignInput
-
loads:
LoadResults
-
moments_shears:
MomentShearResults
-
stiffener_check:
StiffenerCheck
-
bending_check:
BendingCheck
-
web_crippling_check:
WebCripplingCheck
-
deflection_check_major:
DeflectionCheck
-
deflection_check_minor:
DeflectionCheck
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
inputs:
- class api.app.calculators.steel.purlin_design.PurlinDesignCalculator[source]
Bases:
BaseCalculatorCold-formed steel purlin design calculator per IS 801:1975.
Performs comprehensive analysis including: - Load resolution and combinations - Bending stress analysis with lateral buckling - Web crippling checks - Deflection analysis - Stiffener adequacy verification
- name = 'Purlin Design'
Gantry Girder Design Calculator
Design gantry girders for crane loads following IS 800:2007.
Gantry Girder Design Calculator
Steel gantry girder design as per IS 800:2007. Performs comprehensive design checks including bending, shear, deflection, and stability.
- class api.app.calculators.steel.gantry_girder.GantryGirderInput(**data)[source]
Bases:
BaseModelInput schema for gantry girder design.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.gantry_girder.SectionProperties(**data)[source]
Bases:
BaseModelProperties of structural sections.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.gantry_girder.LoadAnalysis(**data)[source]
Bases:
BaseModelResults of load analysis.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.gantry_girder.DesignCheck(**data)[source]
Bases:
BaseModelIndividual design check result.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class api.app.calculators.steel.gantry_girder.GantryGirderOutput(**data)[source]
Bases:
BaseModelOutput schema for gantry girder design results.
-
inputs:
GantryGirderInput
-
load_analysis:
LoadAnalysis
-
bending_tension:
DesignCheck
-
bending_compression:
DesignCheck
-
shear:
DesignCheck
-
deflection:
DesignCheck
-
longitudinal_stress:
DesignCheck
-
web_buckling:
DesignCheck
-
web_crippling:
DesignCheck
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
inputs:
- class api.app.calculators.steel.gantry_girder.GantryGirderCalculator[source]
Bases:
BaseCalculatorCalculator for steel gantry girder design.
- __init__()[source]
Initialize the calculator.
- Parameters:
calculator_type – Type identifier for the calculator
version – Calculator version
Purlin Profiles
Standard cold-formed steel profiles for purlin design.
Purlin Profile Database
This module contains standardized cold-formed steel purlin profiles (Z and C sections) as per IS 801:1975 standards.
Profile data structure (all units standardized to mm system): - name: Profile identifier (e.g., ‘Z15010’) - designation: Full designation with mass (e.g., ‘Z15010_2.36Kg/m’) - profile_type: Section type (‘Z45’, ‘Z90’, ‘C’) - depth: Section depth in mm - flange_width_tp: Top flange width in mm - flange_width_bt: Bottom flange width in mm - thickness: Material thickness in mm - lip_depth: Lip depth in mm - lip_angle: Lip angle in degrees - rad: Corner radius in mm - mass_per_meter: Mass per meter in kg/m - area: Cross-sectional area in mm² - Ixx: Major axis moment of inertia in mm⁴ - Zxx_tp: Top fiber section modulus in mm³ - Zxx_bt: Bottom fiber section modulus in mm³ - Rx: Radius of gyration about x-axis in mm - Iyy: Minor axis moment of inertia in mm⁴ - Zyy: Section modulus about y-axis in mm³ - Ry: Radius of gyration about y-axis in mm - Yb: Distance to centroid in mm
All units are consistent with IS 801:1975 calculations (mm-based system).
- class api.app.calculators.steel.purlin_profiles.Profile(name, designation, profile_type, depth, flange_width_tp, flange_width_bt, thickness, lip_depth, lip_angle, rad, mass_per_meter, area, Ixx, Zxx_tp, Zxx_bt, Rx, Iyy, Zyy, Ry, Yb)
Bases:
tuple- Ixx
Alias for field number 12
- Iyy
Alias for field number 16
- Rx
Alias for field number 15
- Ry
Alias for field number 18
- Yb
Alias for field number 19
- Zxx_bt
Alias for field number 14
- Zxx_tp
Alias for field number 13
- Zyy
Alias for field number 17
- area
Alias for field number 11
- depth
Alias for field number 3
- designation
Alias for field number 1
- flange_width_bt
Alias for field number 5
- flange_width_tp
Alias for field number 4
- lip_angle
Alias for field number 8
- lip_depth
Alias for field number 7
- mass_per_meter
Alias for field number 10
- name
Alias for field number 0
- profile_type
Alias for field number 2
- rad
Alias for field number 9
- thickness
Alias for field number 6