Resources Numerical accuracy

Calculations

Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

Calculations

  • Local origin of the site

    The point subtracted from every element position so the file holds small coordinates.

    origin = round(first x ÷ 100) × 100, round(first y ÷ 100) × 100

    Landscape IFC export landscape/ifc-landscape.js
    • CivilCraft
    64-bit
  • Element position and rotation

    Each element's position relative to the site origin, in meters, and its rotation as a direction.

    p = ((x − oₓ) × k, (y − oᵧ) × k, z × k); direction = (cos rot, sin rot, 0)

    Landscape IFC export landscape/ifc-landscape.js
    • CivilCraft
    64-bit
  • Profiles and extrusions

    The circles, polygons and extrusion depths that make each element's body.

    point = (x × k, y × k); depth = max(1e-4, (z₁ − z₀) × k)

    Landscape IFC export landscape/ifc-landscape.js
    • CivilCraft
    64-bit
  • Mesh body

    A freeform object's vertices and triangles as a triangulated face set.

    vertex = (x × k, y × k, z × k), 6 decimals each

    Landscape IFC export landscape/ifc-landscape.js
    • CivilCraft
    64-bit
  • Quantity sets

    Areas, lengths and volumes converted to square meters, meters and cubic meters for the file.

    area × k²; volume × k³; length × k

    Landscape IFC export landscape/ifc-landscape.js
    • CivilCraft
    64-bit
  • Plant, bed and hedge bodies

    The simple solids and property values that stand for plants, beds and hedges in the file.

    tree: trunk r = max(0.05 m, 8% of crown radius) to 40% of height, crown above; bed height = share-weighted mean plant height

    Landscape IFC export landscape/ifc-landscape.js
    • CivilCraft
    64-bit
  • Pressure and flow unit constants

    The factors between kPa and meters of water, kPa and psi, and L/min and US gallons per minute.

    kPa per m = 9.80665; kPa per psi = 6.894757; L/min per gpm = 3.785412

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Pipe inside diameters

    The inside diameter of each pipe size, from its outside diameter and dimension ratio.

    ID = (OD − 2 × OD ÷ SDR) × 0.0254 m (inch sizes); ID = (OD − 2 × OD ÷ 11) ÷ 1000 m (metric)

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Hazen-Williams loss in one pipe

    The head loss, pressure loss and velocity for a flow in a pipe.

    hf = 10.67 × L × q^1.852 ÷ (C^1.852 × d^4.8704), q in m³/s; kPa = hf × 9.80665; v = q ÷ (π d² ÷ 4)

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Loss in psi per 100 ft

    The US form of the Hazen-Williams formula.

    psi per 100 ft = 4.52 × Q^1.852 ÷ (C^1.852 × d^4.87) × 100

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Multiple-outlet factor

    The reduction in friction loss for a pipe that discharges through N evenly spaced outlets.

    F = 1 ÷ (m + 1) + 1 ÷ (2N) + √(m − 1) ÷ (6N²)

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Precipitation rate

    Millimeters of water per hour from a flow spread over an area.

    mm/h = 60 × L/min ÷ m²

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Precipitation rate, US form

    Inches of water per hour from gallons per minute over square feet.

    in/h = 96.3 × gpm ÷ ft²

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Flow of one head

    The flow of a sprinkler head, from its own listed flow or from its design precipitation rate.

    L/min = pr × r² × (arc ÷ 360) ÷ 60

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Precipitation rate at a head spacing

    The precipitation rate of heads of one type set out on a square or triangular grid.

    area = s² (square) or 0.866 × s² (triangular)

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Joining pipe ends into nodes

    Decides which pipe ends, heads and drip lines meet at the same point.

    same node when distance ≤ join tolerance ÷ meters per project unit

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Flow of a drip line

    The flow of a drip line from its length, emitter spacing and emitter rate.

    L/min = (⌊length ÷ spacing⌋ + 1) × (L/h per emitter ÷ 60)

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Pressure needed at the valve

    The loss from the valve to every head and the pressure the worst head needs.

    loss to node = loss to parent + friction kPa + (z node − z parent) × 9.80665; need = max(head nominal pressure + loss) + valve loss

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Pressure needed at the supply

    The loss along the mainline from the supply to a zone's valve and the pressure that zone needs at the supply.

    at supply = zone need + Σ (friction + elevation) along the main + supply loss

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Zone precipitation rate and weekly run time

    The precipitation rate of a zone and the minutes a week it must run for the weekly water depth.

    pr = 60 × Σ flow ÷ Σ (r² × arc ÷ 360); minutes = weekly mm ÷ pr × 60

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Bill of materials

    Counts of heads, total pipe length by size, drip length and emitter count.

    pipe length = Σ √(Δx² + Δy²) × meters per project unit

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Coverage grid and head-to-head check

    The share of the area reached by no head, one head or two and more, and the heads whose nearest neighbor is beyond their throw.

    cell = larger extent ÷ 200, grown by 1.5 until at most 200000 cells; far when nearest head > 1.0001 × throw

    Irrigation zones: flow, pressure and coverage landscape/irrigation.js
    • CivilCraft
    64-bit
  • Unit text for labels, the check table and its CSV

    Turns kPa, L/min, meters and mm/h into the text shown, in US units for a feet project.

    psi = kPa ÷ 6.894757; gpm = L/min ÷ 3.785412; ft = m ÷ 0.3048; in/h = mm/h ÷ 25.4

    Irrigation zones: flow, pressure and coverage landscape/irr-ui.js
    • CivilCraft
    64-bit
  • Head radius typed in feet

    Stores a head's throw radius, typed in project units, as meters.

    radius (m) = typed feet × 0.3048

    Irrigation zones: flow, pressure and coverage landscape/irr-ui.js
    • CivilCraft
    64-bit
  • Supply pressure, flow and loss typed in US units

    Stores the supply's pressure, available flow and loss in kPa and L/min from values typed in psi and gpm.

    kPa = psi × 6.894757; L/min = gpm × 3.785412

    Irrigation zones: flow, pressure and coverage landscape/irr-ui.js
    • CivilCraft
    64-bit
  • Irrigation quantities for takeoff

    Head counts and pipe and drip lengths passed to TakeoffCraft.

    LF = round(m ÷ 0.3048 × 100) ÷ 100

    Irrigation zones: flow, pressure and coverage landscape/irr-ui.js
    • CivilCraft
    64-bit
  • Meters per project unit

    The length of one project unit in meters, used by every landscape calculation that works in meters.

    1 ft = 1200 ÷ 3937 m (US survey foot); 1 m = 1

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    Exact
  • Bed area

    The plan area of a bed outline.

    A = |Σ (xⱼ + xᵢ)(yⱼ − yᵢ)| ÷ 2

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    64-bit
  • Whole plant counts from percentages

    Splits a number of plants among species so the counts add up to exactly that number.

    count = ⌊pct ÷ Σpct × n⌋, then the leftover goes to the largest remainders

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    64-bit
  • Spacing from the plant list

    The spacing a bed or hedge is filled at when none is typed: the species' spacings weighted by their share.

    s = Σ (pct × spacing) ÷ Σ pct

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    64-bit
  • Plants in a bed

    The position of every plant in a bed at the given spacing and pattern, and the count per species.

    grid step s, row pitch s (square) or s·√3 ÷ 2 (triangular); keep when inside and at least s ÷ 2 − 1e-9 from the edge

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    64-bit
  • Plants along a hedge

    The number and positions of plants along a hedge line in one or two rows.

    n = ⌊length ÷ s + 1e-9⌋ + 1; first plant at (length − (n − 1)·s) ÷ 2

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    64-bit
  • Offset of an open line

    A line moved sideways by a distance with mitred corners, used for hedge and path edges, obstacle footprints and IFC bodies.

    corner = p + m × d ÷ max(0.25, m·n₁), m = normalized sum of the two edge normals

    Planting: bed and hedge fills, planted areas and their quantities landscape/planting.js
    • CivilCraft
    64-bit
  • Default build-up depths

    The topsoil and mulch depths a new planted area starts with, in project units.

    feet = round(meters ÷ 0.3048 × 100) ÷ 100

    Planting: bed and hedge fills, planted areas and their quantities landscape/planted.js
    • CivilCraft
    64-bit
  • Plants in a clipped planted area

    The plants of a planted area after paving, walls and steps are cut out of it.

    keep when inside what is left and at least s ÷ 2 − 1e-9 from a cut edge

    Planting: bed and hedge fills, planted areas and their quantities landscape/planted.js
    • CivilCraft
    64-bit
  • Planted area quantities

    The net area, perimeter, edging length, topsoil and mulch volumes and plant count of a planted area.

    topsoil = net area × topsoil depth; mulch = net area × mulch depth; edging = outline length left after clipping

    Planting: bed and hedge fills, planted areas and their quantities landscape/planted.js
    • CivilCraft
    64-bit
  • Planted area quantities for takeoff

    The area, topsoil, mulch, membrane and edging quantities passed to TakeoffCraft.

    qty = round(v × 100) ÷ 100; cubic yards = cubic feet ÷ 27

    Planting: bed and hedge fills, planted areas and their quantities landscape/planted.js
    • CivilCraft
    64-bit
  • Overlap area of two modifiers

    The plan area where two ground-shaping objects overlap.

    overlap = |area of a| − area of (a with b cut out)

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/stack.js
    • CivilCraft
    64-bit
  • Cut and fill per modifier

    The cut volume, fill volume and area that each ground-shaping object accounts for.

    cell = √(W × H ÷ 200000); fill += (z proposed − z existing) × cell² when positive, cut when negative

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/stack.js
    • CivilCraft
    64-bit
  • Spot level and gradient

    The level at a point, or the fall, run, percent and ratio between two points on the surface.

    pct = |z₂ − z₁| ÷ run × 100; ratio = run ÷ |z₂ − z₁|

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/stack.js
    • CivilCraft
    64-bit
  • Typical thresholds in project units

    The level difference that counts as meeting and the drop that counts as a trip edge.

    meet = 0.01 m × k; drop = 0.15 m × k; k = 1 ÷ 0.3048 for feet

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/problems-landscape.js
    • CivilCraft
    64-bit
  • Paving level at a point

    The finished level of a paved area at any point: flat, on its cross-fall plane, or on its cone to a drain.

    cross: z = z₀ − (pct ÷ 100)((x − cx)·cos a + (y − cy)·sin a); drain: z = z₀ + (pct ÷ 100) × distance to the drain

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/problems-landscape.js
    • CivilCraft
    64-bit
  • Ground against a wall's top and footing

    Finds where the ground on the high side is above the wall's top or the ground on the low side is below the footing's top.

    over = max(ground left, ground right) − top; footing shows = footing − min(ground left, ground right)

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/problems-landscape.js
    • CivilCraft
    64-bit
  • Steps against the paving they land on

    The level difference between a flight's bottom or top and the paving at that point.

    d = z of the flight's end − paving level there

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/problems-landscape.js
    • CivilCraft
    64-bit
  • Planted area level against a paving edge

    The largest level difference between a planted area's finished level and the paving along the edge they share.

    d = area level − paving level at the midpoint of each cut edge

    Ground modifiers: cut and fill, overlaps, level labels and junction checks landscape/problems-landscape.js
    • CivilCraft
    64-bit
  • Where the section line is inside an outline

    The stretches of the section line, as distances along it, that lie inside a closed outline.

    d = distance to the segment start + t × segment length, for every crossing t

    Landscape sections and detail drawings landscape/section.js
    • CivilCraft
    64-bit
  • Where the section line crosses an open line

    The distances along the section line where it crosses a wall or other open line.

    d = distance to the segment start + t × segment length

    Landscape sections and detail drawings landscape/section.js
    • CivilCraft
    64-bit
  • Distance along and across the section line

    How far along the section line a point is and how far to its side, used to pick the plants drawn in the section.

    t = clamp(((p − a)·(b − a)) ÷ |b − a|², 0, 1); offset = ±|p − (a + t(b − a))|

    Landscape sections and detail drawings landscape/section.js
    • CivilCraft
    64-bit
  • Proposed ground level at a distance

    The level of the proposed ground at a distance along the section, between the cut's points.

    z = z₀ + (d − d₀) ÷ (d₁ − d₀) × (z₁ − z₀)

    Landscape sections and detail drawings landscape/section.js
    • CivilCraft
    64-bit
  • Build-up layers under the ground line

    Each layer of a paving or planted-area build-up drawn as a band hanging below the proposed ground.

    top of layer = ground − Σ thickness of the layers above; y = z × vertical exaggeration

    Landscape sections and detail drawings landscape/section.js
    • CivilCraft
    64-bit

A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.