Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Soil Texture Catalog

USDA soil texture classification (developed in the US but used internationally as the standard texture taxonomy; the classes apply to any soil, anywhere). LocalSky uses field capacity (FC), wilting point (WP), available water (AW = FC - WP), and infiltration rate per texture + slope. Source: src/engine/soil_catalog.rs.

Pick texture per zone in the zone editor. If unsure, use the USDA texture triangle: rub moist soil between your fingers and match to the closest class.

Catalog

Water holding per FAO-56 Table 19 (Allen et al., 1998); infiltration per USDA NRCS Part 652 Table 11-3. Every FC and WP below sits inside the range Table 19 publishes for that class, and a test in the engine keeps it that way.

TextureFC (m³/m³)WP (m³/m³)AW (mm/m)Infil flat (mm/hr)Infil 3-5% (mm/hr)Infil >5% (mm/hr)
Sand0.090.0360503525
Loamy sand0.140.0680352518
Sandy loam0.230.10130251812
Loam0.270.1215013107
Silt loam0.320.151701085
Clay loam0.360.20160864
Clay0.380.24140543

How the values map into the engine

Total Available Water (TAW)

TAW_mm = (FC - WP) * root_depth_mm

This is the depth of water the zone can hold between field capacity (fully wet, no gravity drainage) and the wilting point (so dry the plant gives up). St. Augustine on sandy loam at the default 150 mm root depth: TAW = (0.23 - 0.10) * 150 = 19.5 mm. Tall fescue on loam at its 250 mm default depth: TAW = (0.27 - 0.12) * 250 = 37.5 mm, nearly double the buffer.

Readily Available Water (RAW)

RAW_mm = TAW_mm * MAD_pct

MAD (Management Allowed Depletion) comes from the species catalog. RAW is the depletion beyond which the plant starts to stress. It is a reference threshold the tuning report uses when it estimates a watering interval; it is not the live irrigation trigger. See the irrigation engine for what decides watering today.

St. Augustine on sandy loam with default 50% MAD: RAW = 19.5 * 0.50 = 9.75 mm. That is the depletion at which St. Augustine on this soil would start to stress, which is why the tuning report flags an interval much longer than about two days here.

Infiltration rate

Determines whether cycle-and-soak is needed. The three slope bands per row reflect that water runs off faster on a hillside than on a level patch. The cycle-and-soak splitter divides total runtime when the sprinkler’s precipitation rate exceeds infiltration.

Example: MP rotator (14 mm/hr precip) on clay flat (5 mm/hr infiltration). Each minute of runtime delivers 14/60 = 0.23 mm but the soil can only absorb 5/60 = 0.083 mm. Cycling 1 minute on, 4 minutes “soak” wouldn’t actually work because evaporation losses kick in. The splitter computes the maximum continuous on-time at ~(infiltration/precip) * 60 minutes, never shorter than 3 minutes. Each soak gap is derived rather than fixed: the depth left standing when the head shuts off, divided by the infiltration rate, floored at 5, 10, or 15 minutes by texture and at your own engine.soak_minutes (default 5). See cycle-and-soak for a worked example.

Picking the right texture for your zone

Without a soil test, two practical methods:

Ribbon test

  1. Take a handful of moist (not wet) soil. Squeeze into a ball.
  2. Squeeze the ball through your thumb and forefinger to form a ribbon.
  3. Categorize:
    • No ribbon, falls apart: sand or loamy sand
    • Weak ribbon (<2.5 cm before breaking): sandy loam or loam
    • Medium ribbon (2.5-5 cm): clay loam or silt loam
    • Strong ribbon (>5 cm): clay

Jar test

  1. Half-fill a one-litre (quart) jar with soil from the zone’s root depth.
  2. Fill the rest with water + a teaspoon of dish soap.
  3. Shake hard. Set aside.
  4. After 1 minute, mark the sand layer (settles first).
  5. After 2 hours, mark the silt layer.
  6. After 24-48 hours, mark the clay layer (or what hasn’t settled yet).
  7. Use the USDA triangle to classify based on relative thicknesses.

When in doubt

If you genuinely don’t know, sandy loam is the safest guess: it sits mid-triangle and the engine’s math is most forgiving when off by one texture class in either direction (loamy sand or loam).

Contributing a texture

The catalog is a fixed enumeration (USDA’s classification is the standard; “soil 1” and “soil 2” aren’t textures). New entries are not expected. If you need finer-grained soil characterization, override per zone via direct FC/WP/AW values in a future iteration’s ZoneConfig.soil_overrides block.

Further reading