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]

Bases: str, Enum

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]

Bases: str, Enum

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: object

Load factor configuration.

dead_load: float = 1.5
live_load: float = 1.5
wind_load: float = 1.5
__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: object

Material properties container.

fy_steel: float
fu_steel: float
fck_concrete: float
fyb_bolt: float
fub_bolt: float
__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: object

Geometry parameters container.

column_depth: float
column_width: float
column_thickness: float
plate_length: float
plate_width: float
edge_distance: float
bolt_diameter: float
__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: Protocol

Strategy interface for different base plate calculation approaches.

calculate_plate_dimensions(forces, geometry, materials)[source]

Calculate required plate dimensions.

Return type:

Dict[str, float]

check_bearing_capacity(forces, dimensions, materials)[source]

Check concrete bearing capacity.

Return type:

Dict[str, Any]

__init__(*args, **kwargs)
class api.app.calculators.steel.base_plate.CompressionDominatedStrategy[source]

Bases: object

Strategy for compression-dominated base plates.

calculate_plate_dimensions(forces, geometry, materials)[source]

Calculate dimensions for compression-dominated plates using functional approach.

Return type:

Dict[str, float]

check_bearing_capacity(forces, dimensions, materials)[source]

Check bearing capacity using functional validation.

Return type:

Dict[str, Any]

class api.app.calculators.steel.base_plate.TensionDominatedStrategy[source]

Bases: object

Strategy for tension-dominated base plates.

calculate_plate_dimensions(forces, geometry, materials)[source]

Calculate dimensions considering tension effects.

Return type:

Dict[str, float]

check_bearing_capacity(forces, dimensions, materials)[source]

Check bearing with tension considerations.

Return type:

Dict[str, Any]

class api.app.calculators.steel.base_plate.BasePlateDesignInput(**data)[source]

Bases: BaseModel

Input schema for base plate design calculation.

column_depth: float
column_width: float
column_thickness: float
axial_force: float
shear_x: float
shear_y: float
moment_x: float
moment_y: float
steel_grade: SteelGrade
concrete_grade: ConcreteGrade
anchor_bolt_grade: str
anchor_bolt_diameter: float
edge_distance: float
base_plate_length: float
base_plate_width: float
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.BasePlateDesignOutput(**data)[source]

Bases: BaseModel

Output schema for base plate design results.

inputs: Dict[str, Any]
plate_length: float
plate_width: float
plate_thickness: float
concrete_bearing_stress: float
utilization_ratio: float
is_safe: bool
passed_checks: List[str]
failed_checks: List[str]
design_forces: Dict[str, float]
code_references: List[str]
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: BaseCalculator

Refactored base plate calculator with reduced cyclomatic complexity. Uses strategy pattern and functional programming for maintainability.

__init__()[source]

Initialize the calculator.

Parameters:
  • calculator_type – Type identifier for the calculator

  • version – Calculator version

property input_schema: Type[BaseModel]

Return the Pydantic schema for input validation.

property output_schema: Type[BaseModel]

Return the Pydantic schema for output formatting.

calculate(inputs)[source]

Perform base plate design calculation with reduced complexity. Complexity reduced from 17 to <10 through strategy pattern.

Return type:

Dict[str, Any]

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]

Bases: str, Enum

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]

Bases: str, Enum

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]

Bases: str, Enum

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]

Bases: str, Enum

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]

Bases: str, Enum

Section property source.

DATABASE = 'database'
MANUAL = 'manual'
BUILDUP = 'buildup'
class api.app.calculators.steel.steel_column.SteelColumnInput(**data)[source]

Bases: BaseModel

Input schema for steel column design (beam-column).

section_source: SectionSource
section_database_id: Optional[str]
section_type: SectionType
section_designation: str
area: float
depth: float
width: float
thickness_web: float
thickness_flange: float
radius_gyration_major: float
radius_gyration_minor: float
plastic_modulus_major: float
plastic_modulus_minor: float
axial_load: float
moment_major: float
moment_minor: float
length_major: float
length_minor: float
end_condition_major: EndCondition
end_condition_minor: EndCondition
k_factor_major: Optional[float]
k_factor_minor: Optional[float]
lateral_support_spacing: Optional[float]
steel_grade: SteelGrade
classmethod validate_designation(v)[source]

Validate section designation format.

Return type:

str

classmethod validate_k_factors(v, info)[source]

Validate K-factors when CUSTOM end condition is specified.

Return type:

Optional[float]

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.SlendernessCheck(**data)[source]

Bases: BaseModel

Slenderness ratio check results.

lambda_major: float
lambda_minor: float
lambda_effective: float
limit: float
status: str
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: BaseModel

Buckling analysis results.

buckling_class_major: BucklingClass
buckling_class_minor: BucklingClass
imperfection_factor_major: float
imperfection_factor_minor: float
non_dimensional_slenderness_major: float
non_dimensional_slenderness_minor: float
stress_reduction_factor_major: float
stress_reduction_factor_minor: float
governing_axis: str
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.LTBCheck(**data)[source]

Bases: BaseModel

Lateral-torsional buckling check results.

is_applicable: bool
effective_length_ltb: Optional[float]
non_dimensional_slenderness_ltb: Optional[float]
stress_reduction_factor_ltb: Optional[float]
design_bending_strength_major: Optional[float]
design_bending_strength_minor: Optional[float]
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: BaseModel

IS 800:2007 Section 9.3 interaction check.

compression_ratio: float
moment_major_ratio: float
moment_minor_ratio: float
interaction_ratio_1: float
interaction_ratio_2: float
governing_interaction: float
status: str
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: BaseModel

Design strength check results.

design_strength_compression: float
design_strength_moment_major: float
design_strength_moment_minor: float
applied_load: float
applied_moment_major: float
applied_moment_minor: float
utilization_compression: float
utilization_bending_major: float
utilization_bending_minor: float
overall_utilization: float
status: str
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: BaseModel

Output schema for steel column design results.

inputs: SteelColumnInput
section_full_name: str
yield_strength: float
effective_length_major: float
effective_length_minor: float
effective_length_factor_major: float
effective_length_factor_minor: float
slenderness: SlendernessCheck
buckling: BucklingAnalysis
ltb_check: LTBCheck
interaction: InteractionCheck
design_check: DesignCheck
status: str
design_type: str
remarks: List[str]
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.SteelColumnCalculator[source]

Bases: BaseCalculator

Calculator 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}
E_STEEL: float = 200000.0
GAMMA_M0: float = 1.1
__init__()[source]

Initialize the calculator.

Parameters:
  • calculator_type – Type identifier for the calculator

  • version – Calculator version

property input_schema: Type[BaseModel]

Return input validation schema.

property output_schema: Type[BaseModel]

Return output formatting schema.

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

Return type:

Dict[str, Any]

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: BaseModel

Section properties for cold-formed steel purlin.

profile_name: Optional[str]
profile_type: Optional[Literal['Z45', 'Z90', 'C']]
thickness: Optional[float]
depth: Optional[float]
flange_width_tp: Optional[float]
flange_width_bt: Optional[float]
lip_depth: Optional[float]
lip_angle: Optional[float]
Ixx: Optional[float]
Iyy: Optional[float]
Zxx_tp: Optional[float]
Zxx_bt: Optional[float]
Zyy: Optional[float]
area: Optional[float]
Rad: Optional[float]
get_properties()[source]

Get section properties, either from profile lookup or manual input.

Return type:

Dict[str, float]

validate_profile_selection()[source]

Validate profile selection after all fields are set.

Return type:

SectionProperties

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.

Parameters:
  • self (BaseModel) – The BaseModel instance.

  • context (Any) – The context.

Return type:

None

class api.app.calculators.steel.purlin_design.MaterialProperties(**data)[source]

Bases: BaseModel

Material properties for steel.

Fy: float
E: float
classmethod validate_yield_strength(v)[source]

Validate yield strength range for cold-formed steel.

Return type:

float

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: BaseModel

Loading data for purlin design.

roof: float
purlin: float
live: float
wind: float
classmethod validate_wind_load(v)[source]

Validate wind load range.

Return type:

float

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: BaseModel

Input schema for purlin design calculation.

span: float
spacing: float
sag_rods: int
inclination: float
section: SectionProperties
material: MaterialProperties
loads: LoadingData
classmethod validate_span(v)[source]

Validate span range.

Return type:

float

classmethod validate_spacing(v)[source]

Validate spacing range.

Return type:

float

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.LoadResults(**data)[source]

Bases: BaseModel

Load calculation results.

DL: float
LL: float
WL: float
DL_major: float
DL_minor: float
LL_major: float
LL_minor: float
WL_major: float
WL_minor: float
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: BaseModel

Moment and shear calculation results.

M_DL_LL_major: float
M_DL_LL_minor: float
M_DL_WL_major: float
M_DL_WL_minor: float
V_DL_LL: float
V_DL_WL: float
max_moment: float
max_shear: float
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: BaseModel

Stiffener adequacy check results.

stiffener_ok: bool
I_actual: float
I_min: float
d_min: float
lip_depth_ok: bool
web_depth_ok: bool
web_stiffened: bool
is_code_reference: str
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: BaseModel

Bending stress check results.

bending_stress_major: float
bending_stress_minor: float
allowable_bending_major: float
allowable_bending_minor: float
combined_bending_ratio: float
bending_safe: bool
utilization_ratio: float
spans: Dict[str, float]
is_code_reference: str
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: BaseModel

Web crippling check results.

Pmax: float
Pmax_end: float
Pmax_interior: float
controlling_case: str
shear_force: float
web_crippling_ok: bool
utilization_ratio: float
is_code_reference: str
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: BaseModel

Deflection check results.

actual_deflection: float
permissible_deflection: float
deflection_safe: bool
deflection_ratio: str
utilization_ratio: float
is_code_reference: str
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: BaseModel

Output 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
design_safe: bool
critical_check: str
max_utilization_ratio: float
design_recommendations: list[str]
code_compliance: Dict[str, Any]
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.PurlinDesignCalculator[source]

Bases: BaseCalculator

Cold-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'
__init__()[source]

Initialize the calculator.

Parameters:
  • calculator_type – Type identifier for the calculator

  • version – Calculator version

property input_schema: Type[BaseModel]

Return input validation schema class.

property output_schema: Type[BaseModel]

Return output formatting schema class.

get_name()[source]

Return calculator name.

Return type:

str

get_description()[source]

Return calculator description.

Return type:

str

calculate(inputs)[source]

Perform purlin design calculation.

Parameters:

inputs (Dict[str, Any]) – Validated input parameters

Return type:

Dict[str, Any]

Returns:

Dictionary containing calculation results

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: BaseModel

Input schema for gantry girder design.

span: float
self_weight: float
crane_capacity: float
crane_span: float
crane_self_weight: float
crab_weight: float
min_hook_approach: float
wheel_base: float
rail_weight: float
rail_height: float
steel_grade: float
crane_type: Literal['manual', 'eot_upto_50t', 'eot_over_50t']
beam_section: str
has_surge_girder: bool
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: BaseModel

Properties of structural sections.

depth: float
width: float
area: float
ixx: float
iyy: float
weight: float
tw: Optional[float]
tf: Optional[float]
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: BaseModel

Results of load analysis.

max_wheel_load: float
static_wheel_load: float
lateral_force: float
longitudinal_force: float
max_bending_moment: float
max_shear_force: float
lateral_moment: float
lateral_shear: float
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: BaseModel

Individual design check result.

permissible_value: float
calculated_value: float
utilization: float
status: str
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: BaseModel

Output schema for gantry girder design results.

inputs: GantryGirderInput
load_analysis: LoadAnalysis
section_properties: Dict[str, float]
bending_tension: DesignCheck
bending_compression: DesignCheck
shear: DesignCheck
deflection: DesignCheck
longitudinal_stress: DesignCheck
web_buckling: DesignCheck
web_crippling: DesignCheck
overall_status: str
utilization_ratio: float
recommendations: List[str]
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.GantryGirderCalculator[source]

Bases: BaseCalculator

Calculator for steel gantry girder design.

__init__()[source]

Initialize the calculator.

Parameters:
  • calculator_type – Type identifier for the calculator

  • version – Calculator version

get_section_properties(section_name, section_data=None)[source]

Get section properties from steel sections database.

Fetches from provided section_data if given to avoid additional global lookups, improving thread-safety during concurrent tests.

Return type:

SectionProperties

property input_schema: Type[BaseModel]

Return a Pydantic model class for input validation.

property output_schema: Type[BaseModel]

Return a Pydantic model class for output formatting.

calculate(inputs)[source]

Perform gantry girder design calculation.

Return type:

Dict[str, Any]

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

api.app.calculators.steel.purlin_profiles.get_profile_properties(section_name, profile_type)[source]

Get section properties for a given profile name and type.

Return type:

Optional[Dict[str, Union[str, float]]]