Trapezoidal channel hydraulic radius
A channel 10 wide at the bed, 2 deep and with 1.5:1 banks has a flow area of 26 and a hydraulic radius of about 1.510653, in the same length units you typed. Set the side slope to zero for a rectangular section. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Base width
- 10
- Depth
- 2
- Side slope
- 1.5
- Section type
- trapezoidal
- Top width
- 16
- Flow area
- 26
- Wetted perimeter
- 17.2111025509
Open-channel designers and civil engineering students need the geometric properties of a trapezoidal section before Manning, Chezy, or critical-flow formulas can run. Hand sketches of bank slope and freeboard often leave flow area and wetted perimeter miscalculated when the side slope is written as z-to-one instead of an angle. This trapezoidal channel hydraulic radius calculator accepts bottom width, flow depth, and the horizontal-to-vertical side slope ratio, then returns flow area, free-surface top width, wetted perimeter, hydraulic radius R equals A over P, and hydraulic depth A over T in the same length units you used. Side slope zero recovers a rectangular channel without a separate tool.
Trapezoidal open-channel formulas for area, perimeter, and R
A trapezoidal open channel has a flat bed of width b, nearly straight banks at a constant side slope, and a free water surface at vertical depth y. Side slope is expressed as z to one, meaning z horizontal units of bank for each one vertical unit of depth. The free-surface top width is then T equals b plus two z y, because each bank contributes a horizontal projection z times y.
Flow area—the cross-sectional area of water—is the average of bed width and top width times depth, which simplifies to A equals y times open parenthesis b plus z y close parenthesis. Wetted perimeter is the length of solid boundary in contact with the water: the bed plus the two slanted bank faces. Each bank face has length y times the square root of one plus z squared, so P equals b plus two y times that slant factor.
Hydraulic radius R is defined as A divided by P; it is the characteristic length that appears in resistance formulas such as Manning’s and Darcy–Weisbach for open channels. Hydraulic depth D equals A divided by T and is used in Froude-number and critical-flow checks. When z is zero the banks are vertical, T collapses to b, A becomes b y, P becomes b plus two y, and R becomes b y over b plus two y—the classical rectangular section.
All outputs share the same length unit family as the inputs; convert feet to metres yourself before calling if you need SI resistance coefficients.
When this channel geometry saves you time
Drainage and irrigation designers size roadside ditches and earthen canals with trapezoidal templates; getting A, P, and R right is the first step before applying Manning’s equation for normal depth or capacity checks. Municipal stormwater spreadsheets that mix rectangular and trapezoidal reaches need a deterministic oracle so a side-slope of one-and-a-half to one never becomes an angle-in-degrees bug. University open-channel courses and exam generators need both the trapezoidal case and the rectangular limit without maintaining two code paths.
Field apps used by survey crews can accept measured bed width, staff-gauge depth, and design bank slope and return hydraulic radius for roughness calibration. Invalid input is not billed. Keep requests small, pin the rounded area and radius fields in tests, and you get reproducible section geometry for civil CAD plugins, LMS auto-graders, and edge workers without standing up a full hydraulic modelling suite.
What you can do with it
Canal and ditch capacity prep
Compute flow area, wetted perimeter, and hydraulic radius for a design bed width, depth, and z:1 bank slope before applying Manning or Chezy for discharge.
Homework and exam auto-grading
Mark open-channel geometry items with a deterministic oracle that also covers the rectangular limit when side slope is zero.
FAQ
What does side slope z:1 mean?
z is horizontal run per unit vertical rise. A side slope of 1.5 means 1.5 horizontal units for each 1 unit of depth on each bank.
What units should I use?
Outputs are in the same unit family. Convert to SI yourself if your resistance formula expects metres.
Does this solve Manning discharge or normal depth?
No. It returns geometric section properties only (area, top width, wetted perimeter, hydraulic radius, hydraulic depth). Apply your own n, S0, and resistance equation next.
How do I calculate the hydraulic radius of a trapezoidal channel?
Divide the flow area by the wetted perimeter. The area is depth times (bed width plus side slope times depth); the perimeter adds the bed and the two sloping banks. With 10, 2 and 1.5:1 you get 26 over about 17.211103, so roughly 1.510653.
What is the hydraulic depth of a channel?
It is the flow area divided by the width of the water surface, and it is the depth used in Froude number and critical-flow checks. In the example of 10, 2 and 1.5:1, an area of 26 over a top width of 16 gives 1.625.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/eng/trap-channel-geo \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base_width":10,"depth":2,"side_slope":1.5}'const res = await fetch("https://api.kit.forhosting.com/eng/trap-channel-geo", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base_width": 10,
"depth": 2,
"side_slope": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/trap-channel-geo",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base_width": 10,
"depth": 2,
"side_slope": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/trap-channel-geo", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base_width":10,"depth":2,"side_slope":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base_width":10,"depth":2,"side_slope":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/trap-channel-geo", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"base_width": 10,
"depth": 2,
"side_slope": 1.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.trap_channel_geo",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Invalid input—missing fields, non-positive width or depth, or a negative side slope—fails with invalid_input and is not billed.
Input contract, aliases, response shape, and errors
Numeric results are rounded to twelve decimal places for stable automation. Pair the geometry with your own Manning n and bed slope if you need discharge; this capability computes section properties only and does not solve gradually varied flow or sediment transport. POST a JSON body with three required finite numbers: base_width (positive bed width b; aliases b, bottom_width, width, bed_width), depth (positive flow depth y; aliases y, flow_depth, water_depth, h), and side_slope (non-negative z in z-to-one form; aliases z, z_ratio, side_slope_z, m). Values may arrive as JSON numbers or numeric strings. Missing fields, non-finite values, non-positive base_width or depth, or a negative side_slope fail with invalid_input and a message that names the field; those failures are not billed. On success the body echoes the three inputs, reports section_type as trapezoidal or rectangular when z is zero, and returns top_width, flow_area, wetted_perimeter, hydraulic_radius, hydraulic_depth, a compact formula string, and a short human-readable message. Example: base_width ten, depth two, side_slope one point five yields top width sixteen, flow area twenty-six, wetted perimeter ten plus four times square root of three point two five, and hydraulic radius equal to area over that perimeter—all in the same length units.
Integration use cases
Stormwater spreadsheet and GIS tools
Call the API from municipal drainage sheets so mixed rectangular and trapezoidal reaches use the same A, P, and R formulas as the free browser widget.
Technical questions
How do I calculate hydraulic radius of a trapezoidal channel?
Send positive base_width b, positive depth y, and non-negative side_slope z (z:1). Read flow_area A = y(b+zy), wetted_perimeter P = b+2y√(1+z²), and hydraulic_radius R = A/P.
What does the trapezoidal channel calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.