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 warp

  • AlignH="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 changes

  • AlignV="Ignore" - Ignore vertical profile

Example:

3. AlignT - Transverse/Superelevation Mode

Controls how objects follow cross-slope rotation.

Values:

  • AlignT="Warp" - Follow superelevation rotation

  • AlignT="Ignore" - No superelevation rotation

  • AlignT="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" or AlignTB="0" - Do not apply transverse banking to this point

  • AlignTB="Yes" or AlignTB="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 Alignment provides base coordinate system

  • SubAlignment provides local path to follow

  • X 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)

Returns all horizontal alignment data at once.

Returns: Object - {X, Y, Angle}

Example:


alignHX(alignment, station, offset)

Returns global X coordinate.

Example:


alignHY(alignment, station, offset)

Returns global Y coordinate.

Example:


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)

Returns horizontal angle (bearing) at station.

Example:


2. Vertical Alignment Functions

alignV(alignment, station)

Returns vertical profile elevation at station.

Example:


3. Transverse/Superelevation Functions

alignT(alignment, station, offset, mode?)

Returns transverse elevation (superelevation) at station and offset.

Parameters:

  • alignment (Alignment): The alignment object

  • station (Number): Station value

  • offset (Number): Transverse offset from centerline

  • mode (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)

Returns transverse slope angle.

Returns: Number - Slope angle in radians


4. Coordinate Conversion Functions

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 follow

  • AlignmentLineX: 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 gridlines

  • AlignmentLine/AlignmentLineX: Station-dependent alignment path

  • MeshDirection: 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, SubAlignment

  • Skew angles: StartSkewX, EndSkewX, SkewOnFacesOnly

  • Transverse banking control: AlignTB="No" for level surfaces

FEA Mesh Alignment:

  • GridLinesY and GridsYAlignH for multi-path meshing

  • SubAlignments array for gridline alignments

  • AlignmentLine/AlignmentLineX for station-dependent paths

  • Thickness 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 geometry

  • Specify AlignTB="No" for non-rotating surfaces

  • Convert 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