nordic-skating / files / src / ice / strength.ts
strength.ts
| 1 | /** |
| 2 | * How much ice it takes to hold a skater up. |
| 3 | * |
| 4 | * Gold's formula, from the record of what did and did not go through the ice roads of |
| 5 | * Canada: a sheet `h` cm thick carries a load of `A · h²` kg, where `A` says how much |
| 6 | * risk is being run. L. W. Gold, "Use of ice covers for transportation", Canadian |
| 7 | * Geotechnical Journal 8, 170–181 (1971). |
| 8 | */ |
| 9 | |
| 10 | /** Gold's `A`, kg/cm²: safe, failure unlikely. */ |
| 11 | export const A_SAFE = 3.5 |
| 12 | /** The upper limit for ordinary use: beyond it the ice is being asked a lot. */ |
| 13 | export const A_LIMIT = 7 |
| 14 | /** Beyond this, failure should be expected. */ |
| 15 | export const A_FAILURE = 17 |
| 16 | |
| 17 | /** A skater with clothes, skates and a pack, kg. */ |
| 18 | export const SKATER_MASS = 80 |
| 19 | |
| 20 | /** Thickness of ice, metres, that carries `mass` kg at risk `a`. */ |
| 21 | export function bearingThickness(mass: number, a: number): number { |
| 22 | return Math.sqrt(mass / a) / 100 |
| 23 | } |
| 24 | |
| 25 | /** |
| 26 | * The three thicknesses that matter to one skater, metres. They are the zones of the |
| 27 | * lake, and nothing about them is chosen: they are Gold's three values of `A`. |
| 28 | * |
| 29 | * - Thinner than `BREAKING` (2.2 cm) the ice gives way. |
| 30 | * - Up to `CRACKING` (3.4 cm) it holds, and cracks under the skater as it does. |
| 31 | * - Up to `SAFE` (4.8 cm) it is sound ice run close to its limit: the ice of the film, |
| 32 | * at 4.1 cm, and the ice that sings best. |
| 33 | * - Beyond that it is safe, and sings lower the thicker it gets. |
| 34 | */ |
| 35 | export const BREAKING_THICKNESS = bearingThickness(SKATER_MASS, A_FAILURE) |
| 36 | export const CRACKING_THICKNESS = bearingThickness(SKATER_MASS, A_LIMIT) |
| 37 | export const SAFE_THICKNESS = bearingThickness(SKATER_MASS, A_SAFE) |