> For the complete documentation index, see [llms.txt](https://docs.openbrim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openbrim.org/templates/truss-bridge-workflow/loading-tb/loads-tb/wind-load-tb/wind-load-on-structure-tb/ws-height-dependent-tb.md).

# WS Height Dependent \[TB]

Wind load on the structure from a pressure that **varies with elevation**, applied to the members you pick.

Use this when the design pressure is given as a profile up the structure rather than as a single value. On a tall truss, a tower or a pylon the AASHTO 3.8.1 velocity pressure changes materially between the bottom chord and the top, and a wind calculation done outside OpenBrIM usually arrives as a table of pressure against elevation. You enter that table once, and every member you pick reads it at its own elevation.

Two things separate it from the other wind objects:

* **Nothing is derived.** Unlike **WS AASHTO**, there is no design wind speed, exposure category, gust factor or drag coefficient to enter — the pressure in your table is the pressure that gets applied.
* **There is no attack angle.** Unlike **WS Custom**, direction comes from a pair of pressure profiles, one for X and one for Y, scaled per load case by a pair of factors. A 30° skew is entered as its two coefficients rather than as an angle, which is how AASHTO's own skew table is tabulated and how wind calculations are usually delivered.

## How the load is built

The profile is read at each member's two end elevations and a single **linearly varying line load** spans between them — the same thing a hand calculation does when it evaluates the pressure at each joint elevation. Members are **not** subdivided at the profile's own breakpoints; on a realistic profile that changes the total by well under 0.1 % while multiplying the number of loads several times over.

Between two points the pressure is interpolated linearly. Outside the profile's range it is **clamped, never extrapolated** — a member above the top point of the table keeps that top pressure rather than running off the end of the curve.

A member's wind area is its exposed width times its **full three-dimensional length**, not its projected length. For a steeply inclined member — a cable, a truss diagonal — that is deliberately conservative: a member rising 60 over a run of 100 takes about 17 % more wind than its projection would. Enter a reduced pressure factor on that member if you need the projected area instead.

Each row of the wind-case table becomes its own analysis case, applied in a sub-stage of the stage you choose. On top of those the object builds one **envelope** case over every row; point the wind row of your limit-state table at that envelope rather than at an individual case.

A member can only be picked if its library object publishes the geometry, FE group and exposed width the wind needs. Truss members and end posts, floor beams, girders, decks, pier caps, columns, pylons, cables and pier or pylon bracing all do. If you pick something that does not, the object names it and refuses to compile rather than applying nothing.

## General

**Stage:** The stage the wind acts in. Required. The wind does not appear in that stage itself — one sub-stage is generated beneath it per wind case, and the results live there. Each sub-stage inherits the stage's construction method, day and solver settings, so the wind is analysed on the same structure the stage builds. Defined by a **Construction Stage** object.

**Pressure Direction System \[Alignment/Global]:** Which axes the two pressure columns act along. *Alignment* resolves X along each member's own alignment tangent and Y along its offset direction, so on a curved bridge the wind follows the curve. *Global* uses the model's global X and Y for every member.

**Pressure Profile Reference \[Elevation/Height Above Datum]:** How the first column of the profile is read. *Elevation* takes it as a true elevation in the model. *Height Above Datum* takes it as a height measured up from the **Datum Elevation** below, which is the form a wind report usually uses when it measures from the water line or from ground level.

**Datum Elevation:** The elevation the profile heights are measured from. Shown only when the reference above is *Height Above Datum*.

**Wind Pressure Profile:** The pressure table, one row per elevation, charted as you edit it.

* **Elevation or Height:** The elevation, or the height above the datum, that the row's pressures apply at. Every row needs one, and the same elevation may not appear twice.
* **Pressure X:** The pressure acting along X at that elevation.
* **Pressure Y:** The pressure acting along Y at that elevation.

A pressure column may be filled in completely or left **entirely empty**; empty means there is no wind in that direction at all, which is exactly the 0° skew case. Only both columns empty is refused. A zero is a real value, not an empty cell — enter 0 where the pressure genuinely is zero.

**Wind Cases (Pressure Factors):** One row per wind case, up to twenty.

* **Pressure X Factor:** Multiplier applied to the whole X profile for this case.
* **Pressure Y Factor:** Multiplier applied to the whole Y profile for this case.

This is where the angle of attack goes. AASHTO's skew table gives, for each skew angle, a longitudinal and a transverse fraction of the base pressure — 0 % / 100 % at 0°, about 34 % / 87 % at 30°, 67 % / 32 % at 60° and 100 % / 0 % at 90° — so each skew angle is one row of two factors. Leaving the table empty applies the profiles unscaled as a single case.

**Structural Objects:** The members the wind acts on. Required, at least one.

* **Structural Object:** The member, picked from the model.
* **Override Exposed Width \[Yes/No]:** *No* takes the wind face from the member itself — a girder's total depth, a truss member's section dimension facing the wind, a deck's thickness. *Yes* lets you type it.
* **Exposed Width:** The wind face to use. Shown only when the override above is *Yes*, and it must be greater than zero.
* **Exposed Width From Object (readonly):** The width the member reports for itself, shown so you can see what the override would replace. Shown when the override is *No*. (Read-only)
* **Pressure X Factor:** Per-member multiplier on the X pressure.
* **Pressure Y Factor:** Per-member multiplier on the Y pressure.

The per-member factors are how shielding and leeward faces are handled. AASHTO loads the windward face once and treats what stands behind it as shielded, so a leeward truss plane is commonly entered at a reduced factor (a drag coefficient of 1.0 behind a windward 2.0 is a factor of 0.5), and an interior girder standing behind the exterior one is entered at zero rather than removed from the table. The case factors above apply to every member in the object, so when two member types need different coefficients at the same skew angle, use a second wind object for the second set.

**Generate Wind Load Report \[Yes/No]:** When *Yes*, the object produces its own calculation document listing the design basis, the profile, the cases and every loaded member with its pressures and its resulting force. The document is built during the compile, so switching it off on a model with several hundred loaded members noticeably shortens the compile.

**Is Active \[Yes/No]:** Set to *No* to switch every load this object generates off without deleting it.

## Results

Each wind case produces an analysis case in its own sub-stage, and a single **envelope** case collects them and reports the critical value. Design should read the envelope; the individual cases are there to inspect one skew angle on its own.

The pressure is yours rather than a code-derived one, so there is a single set of cases with no limit-state factors built in — apply the load factor for each limit state in the load combination, the way you would for any user-defined load.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.openbrim.org/templates/truss-bridge-workflow/loading-tb/loads-tb/wind-load-tb/wind-load-on-structure-tb/ws-height-dependent-tb.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
