{
  "evidenceVersion": "internal-worked-cases-2026-09-22-v1",
  "evidenceClass": "internal-reproducible-equation-check",
  "independentProfessionalReview": "not-completed",
  "toleranceBasis": "Absolute numerical-agreement tolerance only; not physical accuracy, field validation or project acceptance.",
  "inputBasis": "Synthetic fixed inputs; no live weather, customer data, manufacturer certification or equipment recommendation.",
  "sourceHashes": {
    "scripts/methodology-evidence/cases.ts": "e9dbf5788e29cae39d4c970b6adc90312022e1237a02a09a80f21c01e02fa511",
    "scripts/methodology-evidence/fixtures.ts": "fcbe0d0cf6e00b6294ee3477b8228bf04ce107480f074e8f2295ded297cc6485",
    "scripts/methodology-evidence/reference.ts": "bdc66c1e28a201d168e5611bf446ed47d2b185fbb478ae9033d7efa72ad32f50",
    "src/lib/calc/constants.ts": "7a38008e9d7ea49b9fefbed44794d2800c3ebb0f9d648031d294e2ddbfafbf20",
    "src/lib/calc/engine.ts": "1c97945da4637f7f8bcbdf284dba7d4dd91dac96890fccbdee1159abd1428123",
    "src/lib/calc/index.ts": "355e67d5c19af1b3b8b58d2ff2b323c495dc528f2ba2074d5a43c9d4dea370d8",
    "src/lib/calc/insights.ts": "49d6e63a946eeb0e85b86f7532ccd6b34c36b4ebea36954bbd9ba0e18b4cea12",
    "src/lib/calc/psychrometrics.ts": "9a4c2417275846a99e424ef23f16a3bf879134cbb6eee6b683e68b998f3b60b2",
    "src/lib/calc/q1_heatup.ts": "78972fe903c1c3b46fea3f5fa1f099edce231f0d9db0772ece59d90663ddfd23",
    "src/lib/calc/q2_convection.ts": "c0425932413a49ea275e698dff3925af71cd6462996f0627fa1a8d262e437117",
    "src/lib/calc/q3_evaporation.ts": "5951c0d2e9cda67ab0335c59c100c8f9294648d0e067f3184d3d4b99f0929707",
    "src/lib/calc/q4_pipework.ts": "66758f8be8515dd8177d8bbad155099f18a3c57297bab9a53998be0eb165db96",
    "src/lib/calc/q5_solar.ts": "e866a91744827f81b7c558c12af1dd1422d4e4fdb7d1321a19dce8513be67c85",
    "src/lib/calc/q6_radiation.ts": "937bbb9158e8c1e29c52c0eec257d92598a568fc9d66796c42a114502d11475b",
    "src/lib/calc/q7_ventilation.ts": "577cbd82e570cd8805992df40dd4217f1d1997951c1657eb5e2040e1f826ee79",
    "src/lib/calc/q8_walls.ts": "adda445abba5e122852bc081ac585d8d110d97097432f75f7d00f9760e74ea35",
    "src/lib/calc/topContributors.ts": "20eab77f1a28b970349c601391c0ae2b89472c342eee2f58cae4dfaf38fc65a6",
    "src/lib/calc/types.ts": "2d6b77c4dcf675d399fdf00053dcc62065e61267476e8dd52a703b62f4104655",
    "src/lib/calc/waterProperties.ts": "69b8ff58963fa6c92a0fd2880bd5dbeb16aaa0d6d3236effd0d8468c96a847db",
    "src/lib/plant/pump/constants.ts": "acbd6db352ca5f1c24f758249a660bfa02ff39304e182330647bb39f0ee44257",
    "src/lib/plant/pump/index.ts": "65873071a9569c0a2fa12570cc97cb9e75059927b62a71b2209d335b5237f76d",
    "src/lib/plant/pump/pump.ts": "e75294c2b94f0b1c449d37754b8d60101924e001cca9c0db89fe9e32a428696c",
    "src/lib/plant/pump/types.ts": "4e4fbc7b8205d19958979fb3e0807a0e64bed5406ac94fa7f38c0bfc24d56b0a"
  },
  "cases": [
    {
      "id": "outdoor-heating",
      "method": "thermal-phase1-v2",
      "input": {
        "thermalMethodology": "thermal-phase1-v2",
        "systemRequirement": "heating",
        "poolType": "In-ground concrete, uninsulated",
        "indoorOutdoor": "Outdoor",
        "L": 10,
        "W": 5,
        "D": 1.5,
        "theta1_h": 48,
        "theta1_c": 48,
        "T1_h": 28,
        "T2_h": 15,
        "T1_c": 24,
        "T2_c": 32,
        "poolCoverDuringHeatup": "NO",
        "activityFactor": "Public, schools - 1",
        "pipeLength": 15,
        "pipeConfig": "Uninsulated PVC, outdoor exposed (wind)",
        "customPipeU": 0,
        "T_indoor": 30,
        "RH_indoor": 0.6,
        "ventilationMode": "CIBSE/ASHRAE 62.1 (fixed L/s/m²)",
        "ventRate": 0.72,
        "deckFactor": 1.5,
        "hrvEfficiency": 0,
        "T_amb_avg": 10,
        "T_amb_h": 5,
        "T_amb_c": 35,
        "windOutdoor": 2,
        "windOutdoor_h": 1.227,
        "windOutdoor_c": 1.538,
        "RH_winter": 0.6,
        "RH_summer": 0.6,
        "elevation": 0,
        "I_solar": 0,
        "I_solar_h": 0,
        "I_solar_c": 0,
        "alpha_water": 0.85,
        "solarApplies": "NO",
        "includeSolarInHeatingSizing": false
      },
      "status": "internal-equation-agreement",
      "reference": "separate-internal-outdoor-arithmetic",
      "checks": [
        {
          "metric": "Q1",
          "unit": "kW",
          "expected": 23.538027468462715,
          "actual": 23.538027468462715,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q2",
          "unit": "kW",
          "expected": 2.484368138263503,
          "actual": 2.484368138263503,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q3",
          "unit": "kW",
          "expected": 30.115116635610963,
          "actual": 30.115116635610963,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q4",
          "unit": "kW",
          "expected": 0.749925,
          "actual": 0.749925,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q5",
          "unit": "kW",
          "expected": 0,
          "actual": 0,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q6",
          "unit": "kW",
          "expected": 8.6377973993423,
          "actual": 8.6377973993423,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q7",
          "unit": "kW",
          "expected": 0,
          "actual": 0,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q8",
          "unit": "kW",
          "expected": 2.73125,
          "actual": 2.73125,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "poolWaterHeatingKw",
          "unit": "kW",
          "expected": 68.25648464167948,
          "actual": 68.25648464167948,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "ventilationHeatingKw",
          "unit": "kW",
          "expected": 0,
          "actual": 0,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        }
      ]
    },
    {
      "id": "indoor-water",
      "method": "thermal-phase1-v2",
      "input": {
        "thermalMethodology": "thermal-phase1-v2",
        "systemRequirement": "heating",
        "poolType": "In-ground concrete, uninsulated",
        "indoorOutdoor": "Indoor",
        "L": 10,
        "W": 5,
        "D": 1.5,
        "theta1_h": 48,
        "theta1_c": 48,
        "T1_h": 28,
        "T2_h": 15,
        "T1_c": 24,
        "T2_c": 32,
        "poolCoverDuringHeatup": "NO",
        "activityFactor": "Hotel - 0.8",
        "pipeLength": 15,
        "pipeConfig": "Uninsulated PVC, indoor",
        "customPipeU": 0,
        "T_indoor": 30,
        "RH_indoor": 0.6,
        "ventilationMode": "CIBSE/ASHRAE 62.1 (fixed L/s/m²)",
        "ventRate": 0.72,
        "deckFactor": 1.5,
        "hrvEfficiency": 0,
        "T_amb_avg": 10,
        "T_amb_h": 5,
        "T_amb_c": 35,
        "windOutdoor": 2,
        "windOutdoor_h": 1.227,
        "windOutdoor_c": 1.538,
        "RH_winter": 0.6,
        "RH_summer": 0.6,
        "elevation": 0,
        "I_solar": 0,
        "I_solar_h": 0,
        "I_solar_c": 0,
        "alpha_water": 0.85,
        "solarApplies": "NO",
        "includeSolarInHeatingSizing": false
      },
      "status": "internal-equation-agreement",
      "reference": "separate-internal-indoor-arithmetic",
      "checks": [
        {
          "metric": "Q1",
          "unit": "kW",
          "expected": 23.538027468462715,
          "actual": 23.538027468462715,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q2",
          "unit": "kW",
          "expected": -0.05691369826038976,
          "actual": -0.05691369826038976,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q3",
          "unit": "kW",
          "expected": 5.031143529006642,
          "actual": 5.031143529006642,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q4",
          "unit": "kW",
          "expected": -0.108375,
          "actual": -0.108375,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q5",
          "unit": "kW",
          "expected": 0,
          "actual": 0,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q6",
          "unit": "kW",
          "expected": -0.5943458140026271,
          "actual": -0.5943458140026271,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q7",
          "unit": "kW",
          "expected": 0,
          "actual": 0,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "Q8",
          "unit": "kW",
          "expected": 2.73125,
          "actual": 2.73125,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "poolWaterHeatingKw",
          "unit": "kW",
          "expected": 30.54078648520634,
          "actual": 30.54078648520634,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "ventilationHeatingKw",
          "unit": "kW",
          "expected": 1.6199999999999999,
          "actual": 1.6199999999999999,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        }
      ]
    },
    {
      "id": "circulation-pump",
      "method": "hazen-williams-fixed-duty-internal-v1",
      "input": {
        "designFlowM3h": 171.4,
        "skimmerType": "skimmer",
        "pumpArrangement": "flooded",
        "backwashType": "multiport",
        "filterMedia": "high_rate_sand",
        "balanceTankLiftM": 0,
        "pumpHeightVsWaterM": 1,
        "waterTempC": 28,
        "atmosphericKpa": 101.3,
        "filterAreaM2": 4,
        "filterCleanKpa": 30,
        "filterDirtyKpa": 70,
        "suction": {
          "material": "pvc",
          "boreMm": 200,
          "lengthM": 8
        },
        "discharge": {
          "material": "pvc",
          "boreMm": 160,
          "lengthM": 15
        },
        "strainerKpa": 10,
        "skimmerKpa": 5,
        "nozzleKpa": 15,
        "fittings": [
          {
            "type": "90_elbow",
            "suctionCount": 2,
            "dischargeCount": 3
          },
          {
            "type": "tee_run",
            "suctionCount": 0,
            "dischargeCount": 1
          },
          {
            "type": "gate_valve",
            "suctionCount": 1,
            "dischargeCount": 1
          },
          {
            "type": "check_valve",
            "suctionCount": 0,
            "dischargeCount": 1
          },
          {
            "type": "entrance_sharp",
            "suctionCount": 1,
            "dischargeCount": 0
          },
          {
            "type": "exit",
            "suctionCount": 0,
            "dischargeCount": 1
          }
        ],
        "equipment": [
          {
            "name": "Heat exchanger",
            "dpKpa": 25
          },
          {
            "name": "UV",
            "dpKpa": 15
          },
          {
            "name": "Flow meter",
            "dpKpa": 5
          }
        ],
        "pump": {
          "headAtDesignM": 20,
          "npshrM": 3
        },
        "npshMarginM": 0.6,
        "headMarginPct": 10
      },
      "status": "internal-equation-agreement",
      "reference": "separate-internal-hydraulic-arithmetic",
      "checks": [
        {
          "metric": "suctionVelocityMs",
          "unit": "m/s",
          "expected": 1.5155087358861588,
          "actual": 1.5155087358861588,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "dischargeVelocityMs",
          "unit": "m/s",
          "expected": 2.3679823998221234,
          "actual": 2.367982399822123,
          "difference": -4.440892098500626e-16,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "suctionLossM",
          "unit": "m",
          "expected": 1.896636749583302,
          "actual": 1.8966367495833025,
          "difference": 4.440892098500626e-16,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "dischargeLossM",
          "unit": "m",
          "expected": 3.7892865877816595,
          "actual": 3.7892865877816595,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "tdhCleanM",
          "unit": "m",
          "expected": 13.346504438404962,
          "actual": 13.34650443840496,
          "difference": -1.7763568394002505e-15,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "tdhDirtyM",
          "unit": "m",
          "expected": 17.43214769229296,
          "actual": 17.43214769229296,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "headRequiredM",
          "unit": "m",
          "expected": 19.17536246152226,
          "actual": 19.17536246152226,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "npshaM",
          "unit": "m",
          "expected": 9.064181258075923,
          "actual": 9.064181258075923,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "npshMarginActualM",
          "unit": "m",
          "expected": 6.064181258075923,
          "actual": 6.064181258075923,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "backwashFlowM3h",
          "unit": "m³/h",
          "expected": 148,
          "actual": 148,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        },
        {
          "metric": "governingFlowM3h",
          "unit": "m³/h",
          "expected": 171.4,
          "actual": 171.4,
          "difference": 0,
          "absoluteTolerance": 0.001,
          "withinTolerance": true
        }
      ],
      "expectedAssurance": "INDETERMINATE",
      "actualAssurance": "INDETERMINATE"
    }
  ]
}
