Model railway grade transition calculator

Calculate constant middle grade and constant-grade middle length with your own figures.

Your numbers

Use the units shown. Results update as you change valid inputs.

Use constant middle grade and constant-grade middle length to compare changes to your inputs. The method and limits below explain the scope.

Examples

Examples

Try the starting example

Required rise (millimetres)
100
Total horizontal run (millimetres)
4000
Each transition horizontal length (millimetres)
500
Constant middle grade (percent)
2.857143
Constant-grade middle length (millimetres)
3000
Grade profile [run,grade percent] (JSON)
[[0,0],[500,2.85714285714],[3500,2.85714285714],[4000,0]]

Try another scenario

Required rise (millimetres)
120
Total horizontal run (millimetres)
5000
Each transition horizontal length (millimetres)
1000
Constant middle grade (percent)
3
Constant-grade middle length (millimetres)
3000
Grade profile [run,grade percent] (JSON)
[[0,0],[1000,3],[4000,3],[5000,0]]
Calculation method

Calculation method

Constant middle grade (percent)

100×rise/(total run−one transition length); each ramp averages half the middle grade.

Constant-grade middle length (millimetres)

Total run−2×transition length.

Grade profile [run,grade percent] (JSON)

[0,0],[transition,g],[run−transition,g],[run,0].

Symbols and units
a
Required rise (millimetres)
b
Total horizontal run (millimetres)
c
Each transition horizontal length (millimetres)

Use the units shown. A list keeps the order in which you enter its values. The symbol ^ means “raised to the power of”.

Assumptions & limits

Assumptions & limits

  • Symmetric linear grade ramps from level to constant grade and back; each transition consumes supplied run. Supported limits: All numeric inputs and computed intermediates must remain finite. Supported numeric input magnitude is zero or 1e-12 through 1e12 in absolute value; reject values outside this bounded range. All lists/JSON record tables are limited to 100 records unless a stricter bound is stated; reject malformed record arity and wrong member types. Total run>0; 0<=transition<=total run/2; rise>=0.
Are these inputs private?

These calculations run in your browser. A shared link contains the values you choose to share. Only questions submitted to the separate AI finder are sent to OpenAI.

Share this page
Share this calculator

Leave unchecked to share the page without your entered values.