{
  "schemaVersion": 1,
  "date": "2026-09-05",
  "scope": "Methods input basis for a normalized historical sustained-source sensitivity; no model execution performed by this audit.",
  "sourceConvention": {
    "emissionRate_g_s": 1,
    "pollutant": "inert tracer / linear source normalization; no chemistry or deposition",
    "emissionMeaning": "Pollutant tracer rate, not flare fuel mass flow",
    "physicalStackHeight_m": 100,
    "radiativeHeatLossFraction": 0.55,
    "historicHeat_cal_s": {
      "WWGF": 829441536,
      "LPCF": 214146240,
      "CDGF": 2235346960
    },
    "heatScaling": "Hold the full historical heat fixed while normalizing tracer mass. Do not scale flare heat to 1 g/s. Any later pollutant-mass scaling is valid only with the same heat, geometry and model options.",
    "historicalInputReference": "woodfibre-historic-source-calculations.json",
    "currentDesign": false
  },
  "commonRecommendedSettings": {
    "ruralUrbanFlag": "R",
    "population": 0,
    "ruralStatus": "Explicit rural screening assumption; not an urban/rural land-cover determination for the current site",
    "minimumWindSpeed_m_s": 0.5,
    "anemometerReferenceHeight_m": 10,
    "adjustUstar": false,
    "terrain": false,
    "buildingDownwash": false,
    "inversionBreakupFumigation": false,
    "shorelineFumigation": false,
    "flagpoleEnabled": true,
    "receptorHeightAboveFlatGround_m": 1.5,
    "minimumAmbientDistance_m": 30,
    "minimumDistanceMeaning": "Analyst-selected computational start, not a recovered facility boundary or public-access limit. The true public-access boundary and concentrations closer than 30 m are not established by these runs.",
    "suggestedProbeDistance_m": 20000,
    "probeMeaning": "Analyst-selected distance for examining the normalized curve; must check endpoint/maximum behavior. Not a 20 km square map or a finite plume edge."
  },
  "temperature": {
    "epaRoutineDefaultMin_K": 250,
    "epaRoutineDefaultMax_K": 310,
    "status": "Use both complete temperature sets separately for every source/surface combination.",
    "selectionRule": "Use documented record extremes for the area, with any outward rounding explicitly identified as an analyst choice. A selected interval is not a guarantee of all possible climate conditions.",
    "makemetTemperatureSamples": "Tmin, (Tmin+Tmax)/2, Tmax, with further combination filtering; no continuous scan of all temperatures.",
    "source": "EPA guide printed pp21–24/PDF pp32–35; MAKEMET source lines403–407",
    "sets": [
      {
        "id": "epa_default_250_310",
        "minimum_K": 250,
        "maximum_K": 310,
        "makemetCandidateSamples_K": [
          250,
          280,
          310
        ],
        "basis": "Documented EPA routine defaults; deliberately retained as a separate sensitivity, not a climate bound."
      },
      {
        "id": "expanded_250_320",
        "minimum_K": 250,
        "maximum_K": 320,
        "makemetCandidateSamples_K": [
          250,
          285,
          320
        ],
        "basis": "Retain EPA default lower endpoint; choose next outward 5 K upper increment above the inspected June 2021 airport daily maximum of 316.15 K. Analyst-selected sensitivity."
      }
    ],
    "evidenceFile": "woodfibre-screening-temperature-evidence.json",
    "evidenceSha256": "3f8a7d9bdb1461da558dff77663f79094b8d1e52c267fce4f49addedfd05f137",
    "dailyDataFile": "squamish-airport-june2021-daily-temperature.csv",
    "normalsRecord": {
      "years": "1982–2020 for this station series",
      "monthlyExtremeMaximaC": [
        13.5,
        20.0,
        25.9,
        31.5,
        37.4,
        36.0,
        37.6,
        36.9,
        38.2,
        28.2,
        16.2,
        15.2
      ],
      "monthlyExtremeMinimaC": [
        -13.8,
        -16.2,
        -9.1,
        -4.1,
        -1.0,
        3.3,
        4.8,
        5.2,
        0.8,
        -6.7,
        -15.8,
        -17.6
      ],
      "minimumC": -17.6,
      "maximumC": 38.2,
      "minimumDate": "1990-12-21",
      "maximumDate": "2017-09-04",
      "sourceUrl": "https://climate.weather.gc.ca/climate_normals/results_1991_2020_e.html?climate_id=10476F0&dispBack=0&wbdisable=true"
    },
    "june2021Record": {
      "retrievedDays": 30,
      "validDailyMaxima": 30,
      "peakDailyMaximumC": 43,
      "peakDate": "2021-06-28",
      "peakFlag": null,
      "peakDailyMaximumK": 316.15,
      "sourceUrl": "https://api.weather.gc.ca/collections/climate-daily/items?f=json&limit=100&CLIMATE_IDENTIFIER=10476F0&LOCAL_YEAR=2021&LOCAL_MONTH=6"
    },
    "whyTwoRuns": "Expanding the upper endpoint changes the midpoint from 280 K to 285 K and drops 310 K. Running both preserves both candidate sets; their union is still a discrete sample, not a continuous or universal bound.",
    "quality": "Native daily flags retained; null flags alone do not establish a final validation level. Normals values may undergo provider quality updates."
  },
  "windAndMatrixEvidence": {
    "routineBasis": "EPA guide §1.2 printed p5/PDF p16 recommends 0.5 m/s and 10 m. These are nominal screening controls, not measurements from the onsite weather mast.",
    "stableCandidateSpeeds_m_s": [
      0.5,
      1,
      1.5,
      2,
      2.5,
      4,
      5,
      7,
      10,
      18
    ],
    "convectiveCandidateSpeeds_m_s": [
      0.5,
      1,
      1.5,
      2,
      3,
      4,
      6,
      10
    ],
    "source": "MAKEMET 16216 source lines213–257; values66 are unused sentinels, not modeled 66 m/s winds. Source skips candidates below user minimum and condition combinations deemed unnecessary.",
    "subDefaultSpeedAllowed": true,
    "trueZeroWindAllowed": false,
    "calmCaution": "AERSCREEN requires wsmin > 0. Lowering it is a sensitivity test, not validation of stagnant/recirculating conditions. Stable classes in the matrix do not resolve an observed valley inversion.",
    "dateMeaning": "Artificial matrix indices; dates and hours are not observed local weather or frequencies.",
    "directionMeaning": "AERSCREEN passes a 270-degree wind direction to MAKEMET; it constructs downwind screening geometry rather than using a Squamish wind rose.",
    "adjustUstarBasis": "BC July2026 §5.8.2 printed p44/PDF p51 recommends default low-wind options, including not enabling ADJ_U*. This recommendation is in the AERMET/AERMOD calms section; applied here as the explicit screen convention."
  },
  "surfaceCases": [
    {
      "id": "water_summer",
      "label": "Water analogue",
      "seasonalAnalogue": "Summer",
      "moistureAssumption": "average; table category only, not a measured climatology classification",
      "albedo": 0.1,
      "bowenRatio": 0.1,
      "roughnessLength_m": 0.001,
      "bcTableRoughness_m": 0.0001,
      "correspondingBuiltInLandUseCode": 1,
      "surfaceInputMode": 0,
      "climatologyInputCode": 0,
      "seasonInputCode": null,
      "seasonInputExplanation": "Manual single surface tuple in a separate run; no automatic seasonal cycle is requested.",
      "sourceBasis": "BC Tables 4.2, 4.3, 4.4b, printed pp24–26/PDF pp31–33; AERSCREEN 21112 built-in arrays lines1168–1240.",
      "waterFloorApplied": true,
      "measuredAtWoodfibre": false
    },
    {
      "id": "water_autumn",
      "label": "Water analogue",
      "seasonalAnalogue": "Snow-free autumn",
      "moistureAssumption": "average; table category only, not a measured climatology classification",
      "albedo": 0.14,
      "bowenRatio": 0.1,
      "roughnessLength_m": 0.001,
      "bcTableRoughness_m": 0.0001,
      "correspondingBuiltInLandUseCode": 1,
      "surfaceInputMode": 0,
      "climatologyInputCode": 0,
      "seasonInputCode": null,
      "seasonInputExplanation": "Manual single surface tuple in a separate run; no automatic seasonal cycle is requested.",
      "sourceBasis": "BC Tables 4.2, 4.3, 4.4b, printed pp24–26/PDF pp31–33; AERSCREEN 21112 built-in arrays lines1168–1240.",
      "waterFloorApplied": true,
      "measuredAtWoodfibre": false
    },
    {
      "id": "grass_summer",
      "label": "Grassland analogue",
      "seasonalAnalogue": "Summer",
      "moistureAssumption": "average; table category only, not a measured climatology classification",
      "albedo": 0.18,
      "bowenRatio": 0.8,
      "roughnessLength_m": 0.1,
      "bcTableRoughness_m": 0.1,
      "correspondingBuiltInLandUseCode": 6,
      "surfaceInputMode": 0,
      "climatologyInputCode": 0,
      "seasonInputCode": null,
      "seasonInputExplanation": "Manual single surface tuple in a separate run; no automatic seasonal cycle is requested.",
      "sourceBasis": "BC Tables 4.2, 4.3, 4.4b, printed pp24–26/PDF pp31–33; AERSCREEN 21112 built-in arrays lines1168–1240.",
      "waterFloorApplied": false,
      "measuredAtWoodfibre": false
    },
    {
      "id": "grass_autumn",
      "label": "Grassland analogue",
      "seasonalAnalogue": "Snow-free autumn",
      "moistureAssumption": "average; table category only, not a measured climatology classification",
      "albedo": 0.2,
      "bowenRatio": 1.0,
      "roughnessLength_m": 0.01,
      "bcTableRoughness_m": 0.01,
      "correspondingBuiltInLandUseCode": 6,
      "surfaceInputMode": 0,
      "climatologyInputCode": 0,
      "seasonInputCode": null,
      "seasonInputExplanation": "Manual single surface tuple in a separate run; no automatic seasonal cycle is requested.",
      "sourceBasis": "BC Tables 4.2, 4.3, 4.4b, printed pp24–26/PDF pp31–33; AERSCREEN 21112 built-in arrays lines1168–1240.",
      "waterFloorApplied": false,
      "measuredAtWoodfibre": false
    },
    {
      "id": "conifer_summer",
      "label": "Coniferous forest analogue",
      "seasonalAnalogue": "Summer",
      "moistureAssumption": "average; table category only, not a measured climatology classification",
      "albedo": 0.12,
      "bowenRatio": 0.3,
      "roughnessLength_m": 1.3,
      "bcTableRoughness_m": 1.3,
      "correspondingBuiltInLandUseCode": 3,
      "surfaceInputMode": 0,
      "climatologyInputCode": 0,
      "seasonInputCode": null,
      "seasonInputExplanation": "Manual single surface tuple in a separate run; no automatic seasonal cycle is requested.",
      "sourceBasis": "BC Tables 4.2, 4.3, 4.4b, printed pp24–26/PDF pp31–33; AERSCREEN 21112 built-in arrays lines1168–1240.",
      "waterFloorApplied": false,
      "measuredAtWoodfibre": false
    },
    {
      "id": "conifer_autumn",
      "label": "Coniferous forest analogue",
      "seasonalAnalogue": "Snow-free autumn",
      "moistureAssumption": "average; table category only, not a measured climatology classification",
      "albedo": 0.12,
      "bowenRatio": 0.8,
      "roughnessLength_m": 1.3,
      "bcTableRoughness_m": 1.3,
      "correspondingBuiltInLandUseCode": 3,
      "surfaceInputMode": 0,
      "climatologyInputCode": 0,
      "seasonInputCode": null,
      "seasonInputExplanation": "Manual single surface tuple in a separate run; no automatic seasonal cycle is requested.",
      "sourceBasis": "BC Tables 4.2, 4.3, 4.4b, printed pp24–26/PDF pp31–33; AERSCREEN 21112 built-in arrays lines1168–1240.",
      "waterFloorApplied": false,
      "measuredAtWoodfibre": false
    }
  ],
  "surfaceScope": {
    "caseCount": 6,
    "sourceBySurfaceRunsIfSingleTemperatureEnvelope": 18,
    "bracketMeaning": "Small, reproducible parameter sensitivity sample; not a statistical interval, proven upper bound, complete moisture/season envelope, or mapped current land cover.",
    "snowFreeChoice": "BC p24 distinguishes surface-condition seasons and discusses using autumn values for southwestern snow-free winters. No claim is made that the Woodfibre site never has snow.",
    "waterTreatment": "BC Table4.2 gives 0.0001 m; AERSCREEN guide p22 and source lines2385–2390 impose 0.001 m, and its built-in water table uses0.001 m. Input0.001 explicitly and retain provenance.",
    "noAutomaticWinter": "Built-in water winter Bowen ratios are for frozen water; forest/grass winter tuples correspond to snow cover. Separate manual tuples avoid silently imposing those states.",
    "notActualClearing": "Grassland is an analogue; an industrial clearing with structures/cranes is not demonstrated to have grassland roughness.",
    "furtherSiteBasis": "Exact source location and land-cover mapping are needed for site-specific weighting. BC p22 describes 1 km upwind roughness and10×10 km albedo/Bowen representative domains. No such site characterization is claimed here.",
    "temperatureSetCount": 2,
    "totalSourceSurfaceTemperatureRuns": 36
  },
  "inputCodeReference": {
    "surfaceCodes": {
      "0": "single manual values",
      "1": "water",
      "2": "deciduous forest",
      "3": "coniferous forest",
      "4": "swamp",
      "5": "cultivated land",
      "6": "grassland",
      "7": "urban",
      "8": "desert shrubland",
      "9": "external surface file"
    },
    "climatologyCodesForBuiltIn1To8": {
      "1": "average",
      "2": "wet",
      "3": "dry"
    },
    "manualCaseClimatologyCode": "0; ignored when Surf=0",
    "seasonCodes": "The standard MAKEMET DATA input has no individual season selector. Built-in land-use mode generates seasonal cases. The source output order is Winter, Spring, Summer, Autumn; the raw DATA arrays are Spring, Summer, Autumn, Winter and are remapped. Do not confuse an array index with an input code.",
    "source": "EPA guide printed pp23–24/PDF pp34–35; AERSCREEN source lines1168–1245"
  },
  "receptorEvidence": {
    "defaultHeight_m": 0,
    "canSpecifyBreathingHeight": true,
    "explicitInput": "UNITS/POPULATION: Flagpole Y, Flagpole height1.5 (metric)",
    "epaSource": "Guide §2.7 printed pp31–32/PDF pp42–43; AERSCREEN source default flagpole=0 at line1788 and RE FLAGPOLE output at lines9076–9077",
    "bcSource": "Guideline §7.5 printed p65/PDF p72 identifies1.5 m as breathing height; often0 m is sufficient but it remains a different requested receptor height.",
    "notCellMean": "AERSCREEN point receptor at1.5 m is not the near-surface finite-volume-cell mean shown by the separate experimental valley model."
  },
  "shorelineEvidence": {
    "capability": "Optional shoreline and inversion-breakup fumigation routines include flares at least10 m high.",
    "requirements": "Shoreline distance less than3 km in guide; optional direction; flat rural assumptions with no building downwash; F-stability and stack-top wind2.5 m/s.",
    "source": "EPA guide §2.8 printed pp32–33/PDF pp43–44 and §3.8 printed pp57–60/PDF pp68–71",
    "reasonExcluded": "A single homogeneous water-like tuple does not locate coastlines or model internal boundary layers, land-sea breeze circulation, or overwater-to-land transport. No independently established historical shoreline/source geometry is provided in this bounded sensitivity.",
    "zeroNotAbsence": "Disabled fumigation does not imply absent fumigation risk. The optional algorithm also suppresses short-distance results under stated conditions; these would not be zero measurements.",
    "bcCoastalMethod": "July2026 §10.3 printed p88/PDF p95 recommends CALPUFF Hybrid where coastal effects matter, with suitable overwater observations and optional sub-grid coastline treatment."
  },
  "interpretation": {
    "appropriateUse": "Inspect normalized concentration-versus-distance, maxima, and sensitivity to plausible generic surface conditions for three internally consistent historical heat cases.",
    "notAppropriateUse": [
      "Current emissions or exposure prediction",
      "Spatial allocation to Squamish neighbourhoods or a valley plume map",
      "Observed wind-event trajectory or probability",
      "A safe distance or maximum chemical travel distance",
      "A matched event24h exposure estimate derived simply from sustained-source output"
    ],
    "maximumByDistance": "Each distance may attain its maximum under different synthetic meteorology; connecting maxima does not create one simultaneously occurring plume.",
    "longerAverages": "AERSCREEN longer averaging-period output uses screening scaling of maxima, not a simulated observed24h sequence. Preserve original averaging labels; do not treat as measured or event-matched exposure."
  },
  "acceptanceChecks": [
    "Verify emitted input and final report contain each requested 1 g/s rate, 100 m physical height, full heat and 0.55 loss.",
    "Verify each surface tuple and no silent roughness reset beyond the explicitly documented water floor.",
    "Verify final meteorological headers for both temperature sets, 0.5 m/s, 10 m and ADJUST U*=N; retain results from both rather than overwrite the baseline.",
    "Verify RE FLAGPOLE 1.5 or final output at 1.5 m; otherwise label output at its actual height.",
    "Confirm terrain, downwash, and both fumigation switches are off; do not describe the result as accounting for these processes.",
    "Read warnings and inspect generated MAKEMET matrix counts and actual condition ranges.",
    "Check whether the peak lies at the outer distance limit; report truncation and do not claim an enclosed maximum if it does.",
    "Retain maximum-by-distance metadata, source/surface IDs and temperature context; never map artificial wind direction or dates to real geography."
  ],
  "primarySources": {
    "epa_guide": {
      "title": "AERSCREEN User’s Guide, EPA-454/B-21-005",
      "date": "2021-04",
      "url": "https://gaftp.epa.gov/Air/aqmg/SCRAM/models/screening/aerscreen/aerscreen_userguide.pdf",
      "local": "work/epa-screen/downloads/aerscreen_userguide.pdf",
      "sha256": "5040f1b3f0be6e8bb9047ed133640a702db90f04c431833d678734de15dde62d"
    },
    "bc_guideline": {
      "title": "British Columbia Air Quality Dispersion Modelling Guideline",
      "date": "2026-07",
      "url": "https://www2.gov.bc.ca/assets/gov/environment/air-land-water/air/reports-pub/bc_dispersion_modelling_guideline.pdf",
      "local": "work/prediction-method/bc-guideline-2026.pdf",
      "sha256": "913ae06ba4f369772a6dc11728bb3d9495b73068cacdddc9f7923b630324d313"
    },
    "aerscreen_source": {
      "title": "EPA AERSCREEN 21112 source",
      "url": "https://gaftp.epa.gov/Air/aqmg/SCRAM/models/screening/aerscreen/aerscreen_code.zip",
      "local": "work/epa-screen/source/aerscreen/AERSCREEN.FOR",
      "sha256": "ed8c350f9a5b083ee0eaa01b9efbe201c586b3495555e53ccc61ff2740382b5d"
    },
    "makemet_source": {
      "title": "EPA MAKEMET 16216 source",
      "url": "https://gaftp.epa.gov/Air/aqmg/SCRAM/models/screening/aerscreen/makemet_code.zip",
      "local": "work/epa-screen/source/makemet/MAKEMET.FOR",
      "sha256": "0615697569b8c1b7bbf77474d6411e2302d67674287cad5e9b4e3a217d558b4e"
    }
  }
}
