Bridge Alignment Guide
Overview
Bridge alignments define the horizontal and vertical geometry of roadways and structures. In OpenBrIM, all 3D geometry and FEA models are positioned relative to alignments using station-based coordinates. This guide explains how to implement alignment-based positioning for bridge objects.
Key Concepts:
Alignment: A 3D curve defined by horizontal geometry, vertical profile, and cross-slope (transverse)
Station: Distance along the alignment centerline (longitudinal coordinate)
Offset: Perpendicular distance from alignment centerline (transverse coordinate)
Elevation: Vertical coordinate derived from vertical profile and superelevation
Alignment Modes: How objects follow alignment geometry (Warp, Orient, Ignore)
Sub-Alignments: Secondary alignments for edges, gridlines, and complex geometry
Alignment Coordinate Systems
1. Global vs Alignment-Based Coordinates
Global Coordinates (X, Y, Z):
Standard Cartesian coordinates
Project-wide coordinate system
Used for fixed geometry
Alignment-Based Coordinates (Station, Offset, Elevation):
Station (X): Distance along alignment centerline
Offset (Y): Perpendicular distance from centerline (positive typically = left)
Elevation (Z): Height relative to alignment vertical profile
2. Alignment Components
Horizontal Alignment:
Tangents, curves, spirals
Defines plan view geometry
Accessed via
alignH(),alignHX(),alignHY(),alignHA()functions
Vertical Alignment:
Grades, vertical curves (parabolic)
Defines profile elevation
Accessed via
alignV()function
Transverse/Superelevation:
Cross-slope rotation of roadway
Banking in curves
Accessed via
alignT(),alignTA()functions
Alignment Modes
1. AlignH - Horizontal Alignment Mode
Controls how objects follow the horizontal alignment curvature.
Values:
AlignH="Warp"- Follow alignment curvature (default for most bridge objects)AlignH="Orient"- Orient tangent to alignment but don't warpAlignH="Ignore"- Ignore horizontal alignment (straight in global coordinates)AlignH="0"(Right),AlignH="1"(Center),AlignH="2"(Left) - Alignment rule for girders
Example - Deck Following Alignment:
Warp vs Orient:
Warp: Cross-section follows alignment curvature (curves with road)
Orient: Cross-section rotates to be tangent but remains planar
2. AlignV - Vertical Alignment Mode
Controls how objects follow the vertical profile.
Values:
AlignV="Warp"- Follow vertical profile elevation changesAlignV="Ignore"- Ignore vertical profile
Example:
3. AlignT - Transverse/Superelevation Mode
Controls how objects follow cross-slope rotation.
Values:
AlignT="Warp"- Follow superelevation rotationAlignT="Ignore"- No superelevation rotationAlignT="mid_grd_algnT"- Custom transverse mode from parameter
Example - Deck Section with Selective Transverse:
4. AlignTB - Transverse Banking
Controls transverse rotation behavior for individual points.
Values:
AlignTB="No"orAlignTB="0"- Do not apply transverse banking to this pointAlignTB="Yes"orAlignTB="2"- Apply transverse banking (default)
Primary Alignment Reference
Specifying the Alignment
Use the Alignment attribute to reference the alignment object:
Parameter Definition:
Station-Based Geometry
Points are defined using station (X coordinate):
Key Points:
X = Station along alignment
Y = Offset from centerline (+ = left, - = right typically)
Z = Elevation offset from alignment vertical profile
Sub-Alignments
Sub-alignments allow objects to follow secondary alignment paths (deck edges, girder paths, etc.).
1. SubAlignment Attribute
Syntax:
Use Cases:
Deck edge geometry following independent edge paths
Girder paths that may vary from deck centerline
Utility conduits with custom routing
2. Deck Edge Sub-Alignments
Pattern:
When Using Sub-Alignments:
Primary
Alignmentprovides base coordinate systemSubAlignmentprovides local path to followX coordinate on sub-alignment is relative to sub-alignment's station
Useful for variable-width structures with independent edge geometries
3. Girder Path Sub-Alignments
Pattern:
Purpose:
Deck section points follow girder paths for haunches
Each girder can have unique horizontal geometry
Creates variable deck thickness over girders
Alignment Functions
1. Horizontal Alignment Functions
alignH(alignment, station, offset)
alignH(alignment, station, offset)Returns all horizontal alignment data at once.
Returns: Object - {X, Y, Angle}
Example:
alignHX(alignment, station, offset)
alignHX(alignment, station, offset)Returns global X coordinate.
Example:
alignHY(alignment, station, offset)
alignHY(alignment, station, offset)Returns global Y coordinate.
Example:
alignHZ(alignment, station, offset)
alignHZ(alignment, station, offset)Returns global Z coordinate (horizontal plane only, NOT vertical profile).
Note: Use alignV() for vertical profile elevation.
alignHA(alignment, station, offset)
alignHA(alignment, station, offset)Returns horizontal angle (bearing) at station.
Example:
2. Vertical Alignment Functions
alignV(alignment, station)
alignV(alignment, station)Returns vertical profile elevation at station.
Example:
3. Transverse/Superelevation Functions
alignT(alignment, station, offset, mode?)
alignT(alignment, station, offset, mode?)Returns transverse elevation (superelevation) at station and offset.
Parameters:
alignment(Alignment): The alignment objectstation(Number): Station valueoffset(Number): Transverse offset from centerlinemode(Number, optional): Calculation mode
Returns: Number - Transverse elevation
Example:
Use Cases:
Computing deck cross-slope
Variable deck thickness due to superelevation
Barrier/rail positioning
alignTA(alignment, station, offset)
alignTA(alignment, station, offset)Returns transverse slope angle.
Returns: Number - Slope angle in radians
4. Coordinate Conversion Functions
alignLocal(alignment, x, y, z)
alignLocal(alignment, x, y, z)Converts global coordinates to local alignment coordinates.
Returns: Object - {Station, Offset}
Example:
Station-Dependent Parameters
1. Station-Dependent Values
Parameters can vary along alignment station using the station-dependent format or makestadep() function.
Array Format:
makestadep Function:
2. Using atstation() with Alignment Values
Evaluate station-dependent parameters at specific locations:
Alignment Lines for Sections
1. AlignmentLine and AlignmentLineX
For sections with multiple points following different paths, use alignment lines to map points to their respective paths.
Syntax:
Where:
AlignmentLine: Array of path coordinates defining the line to followAlignmentLineX: Array of stations where alignment line is defined
Example - Girder Haunch Points:
Purpose:
Section points follow girder paths instead of deck centerline
Creates haunches, variable thickness over supports
Each point can follow independent alignment path
2. Grid Lines and GridsYAlignH
For FEA meshing with multiple gridlines following different alignments.
Syntax:
Where:
GridLinesY: Array of gridline paths (typically girder centerlines)GridsYAlignH: Array of alignment rules for each gridline (0=Right, 1=Center, 2=Left)
Example:
Skew and Rotation
1. Skew Angles
Apply skew angles at start and end of objects using StartSkewX and EndSkewX.
Syntax:
Example - Computing Skew from Support Lines:
SkewOnFacesOnly:
SkewOnFacesOnly="1": Apply skew only to end faces (most common for bridges)SkewOnFacesOnly="0": Skew entire object geometry
2. Skew Compensation in Section Points
When skew is applied, section points may need coordinate adjustments:
Complete Deck Alignment Example
Deck Object with Full Alignment Implementation
FEA Mesh Alignment Implementation
FEMeshSurface with Multiple Gridlines
Key FEA Alignment Parameters:
GridLinesY: Array of gridline paths (girder centerlines, deck edges)GridsYAlignH: Alignment rule for each gridline (0/1/2)SubAlignments: Array of sub-alignment objects for gridlinesAlignmentLine/AlignmentLineX: Station-dependent alignment pathMeshDirection: Orientation of mesh quad elements
Best Practices
1. Alignment Reference Organization
Organize alignment parameters in a dedicated group:
2. Station Extent Calculations
Always compute station extents from span data:
3. Conditional Sub-Alignments
Use guards to switch between centerline and edge alignments:
4. Station-Dependent Paths
Use makestadep for girder paths with varying offsets:
5. Transverse Elevation Differences
Compute relative transverse elevations for variable thickness:
6. Mesh Alignment Lines
Provide alignment lines for complex mesh geometry:
Common Pitfalls
1. Missing Alignment Mode Specifications
Problem: Not specifying AlignH/AlignV/AlignT
Solution: Always specify alignment modes explicitly
2. Incorrect AlignTB Usage
Problem: Forgetting AlignTB="No" for points that shouldn't rotate
Solution: Explicitly disable transverse banking where needed
3. Sub-Alignment Without Primary Alignment
Problem: Using SubAlignment without Alignment
Solution: Always specify both
4. Station vs Global Coordinates Confusion
Problem: Using global coordinates when alignment is specified
Solution: Use station-based coordinates
5. Skew Angle Units
Problem: Using degrees instead of radians
Solution: Convert to radians
Summary
Bridge alignment implementation in OpenBrIM uses station-based positioning to create complex 3D geometry and FEA models:
Core Concepts:
Alignment Modes: AlignH, AlignV, AlignT control how objects follow alignment geometry
Station Coordinates: X = station, Y = offset, Z = elevation offset
Sub-Alignments: Secondary paths for edges, girders, and complex geometry
Alignment Functions: alignH(), alignV(), alignT() for coordinate transformation
Key Patterns:
Primary alignment reference with
Alignment="deck_alignment"Alignment modes:
AlignH="Warp",AlignV="Warp",AlignT="Warp"Sub-alignments for deck edges:
SubAlignment="left_edge_alignment"Girder path following:
AlignmentLine,AlignmentLineX,SubAlignmentSkew angles:
StartSkewX,EndSkewX,SkewOnFacesOnlyTransverse banking control:
AlignTB="No"for level surfaces
FEA Mesh Alignment:
GridLinesYandGridsYAlignHfor multi-path meshingSubAlignmentsarray for gridline alignmentsAlignmentLine/AlignmentLineXfor station-dependent pathsThickness and offset overrides with
FEMeshRegion
Best Practices:
Always specify alignment modes explicitly
Use guards for conditional sub-alignments
Compute station extents from span data
Use
makestadep()for station-dependent geometrySpecify
AlignTB="No"for non-rotating surfacesConvert skew angles to radians
By following these patterns, AI agents can create accurate bridge geometry that follows roadway alignments through horizontal curves, vertical grades, and superelevation transitions.
Last updated