# EPW-003: проектная методика многолетних расчётных дней

Дата постановки: 22.10.2026. База `812efee510c1b1af88e18e188bf8c094faa34a3a`.
Метод `power_hourly_design_conditions_v1`. Область: подготовка DDY и вебвыдача;
модель здания не изменяется. Это производная оценка по сеточным данным NASA,
не опубликованные станционные данные ASHRAE и не новая полевая валидация.

## Постановка до реализации

Факт первоисточника: ASHRAE разделяет годовые условия сухого/влажного
термометра и точки росы с совпадающими значениями других величин. Для
суточных размахов используется другая, условная по дням выборка.
[ASHRAE Fundamentals 2017, глава 14](https://handbook.ashrae.org/Handbooks/F17/SI/f17_ch14/f17_ch14_si.aspx).
Версия 2017 здесь фиксирует опубликованный методический ориентир;
соответствие всем требованиям более поздних редакций не утверждается.

Проектный выбор v1 — 13 сценариев: heating DB и humidification DP при
99.6/99% превышения; cooling DB, cooling WB и dehumidification DP при
0.4/1/2% превышения. Энтальпийные, месячные и возвратные экстремумы не входят.
Условия вычисляются из всех годовых входов до выбора месяцев TMY.

### Входы и оценивание

- Не менее 20 последовательных полных лет, включая 29 февраля. Порог —
  правило проекта, не доказанная универсальная достаточность выборки.
- Одна площадка, высота и фиксированное местное стандартное время. NASA-only,
  без станционной коррекции, TMY, будущего morphing или восстановления пропусков.
- Основа — прочитанные обратно annual EPW, то есть уже округлённые значения;
  hashes годовых EPW, provenance и доступных provider bytes входят в паспорт.
- Из влажностных полей используется точка росы/инея с объявленной Buck-phase
  основой. Сначала восстанавливается давление пара, затем вычисляются
  влажностные характеристики. Часовой WB использует часовое давление.
- Квантиль — линейный эмпирический H&F type 7. Совпадающая выборка:
  основная температура в полосе ±0.5 °C от квантиля, минимум 20 часов.
  Автоматического расширения полосы нет. Это проектный estimator;
  оригинальные совместные таблицы частот ASHRAE не воспроизводятся дословно.
- Сохраняются часы, дни, годы и распределение по годам совпадающей выборки.
  Количество часов не обозначается числом независимых наблюдений.
- Heating DB использует среднее совпадающее давление пара. DP-сценарии
  используют квантиль фазово согласованной точки росы и совпадающий DB.
  Если средний DB ниже ведущей DP, DB поднимается до DP с явной записью
  поправки; ведущая DP сохраняется. Heating DB при необходимости ограничивает
  совпадающее давление пара насыщением при ведущем DB, что также отражено.
- Средний ветер — та же совпадающая выборка; направление — наиболее частый
  из 16 секторов среди часов со скоростью не менее 0.5 m/s. При равенстве
  выбирается меньший сектор; при полном штиле DDY требует числовое направление
  0°, которое в паспорте обозначается условным, а не измеренным северным.

### Суточные условия и экспорт

Design pressure — стандартная атмосфера на высоте площадки. Используются
уравнения психрометрии и температурные пределы EnergyPlus 26.1; различие
Buck входа и native saturation basis учитывается через давление пара.
[Психрометрическая основа](https://handbook.ashrae.org/Handbooks/F17/SI/f17_ch01/f17_ch01_si.aspx).

Для шести cooling DB/WB дней размахи DB/WB оцениваются по полным дням
самого тёплого по среднему DB месяца, у которых максимум ведущей величины
строго выше её месячного 5%-го порога. Минимальная поддержка — 20 дней.
Для вырожденного постоянного месячного ряда используются все дни и нулевой
размах ведущей величины; размах сопутствующей величины вычисляется по этим
дням. Эта ветвь отмечается отдельно. Равенство округлённому порогу для
обычного переменного ряда не включается в хвост.
Температуры строятся по 24 стандартным множителям; при DB-driven профиле
WB ограничивается сверху DB, при WB-driven — DB снизу WB. Из полученных
пар вычисляется RH; все изменения ограничителя сохраняются.

Экспортируются `Schedule:Day:Interval` с `Interpolate to Timestep=No`:
каждый час задаёт постоянное значение внутри своего интервала.
`TemperatureProfileSchedule` и `RelativeHumiditySchedule` сохраняют именно
эти согласованные профили. Не утверждается восстановление реального дня.
Множители Table 6 описаны ASHRAE для номинального солнечного времени;
применение их к фиксированным локальным часовым интервалам здесь — явное
проектное приближение, без заявления о точном воспроизведении solar-time метода.
Все 13 дней передаются одинаково через DB/RH schedules, включая постоянные.
Поля Maximum DB и Daily Range оставлены пустыми, поскольку профиль задаётся
полностью. Native prototype показал изменение W на 0.82% в пути
`HumidityRatio` из-за внутреннего обратного пересчёта WB; этот путь исключён.

Семь heating/humidification/dehumidification дней постоянны по температуре
и влагосодержанию. Нулевой размах dehumidification — явное проектное
ограничение; этот сценарий не оценивает реальную суточную энергию.
День месяца — 21, холодный/тёплый месяц определяются по среднему DB.
Solar — `ASHRAEClearSky`, clearness 0 для зимних и 1 для летних условий;
неподтверждённые tau-коэффициенты не назначаются. Rain/Snow/DST — No.
Это сценарные политики, не совместно наблюдённые экстремумы всех величин.

[Формат DesignDay EnergyPlus 26.1](https://bigladdersoftware.com/epx/docs/26-1/input-output-reference/group-location-climate-weather-file-access.html#sizingperioddesignday)
сверяется с установленным `C:/EnergyPlusV26/Energy+.idd`.
Все изменяемые значения и коэффициенты находятся в `00_parameters`.
Исходные SHA в низкоуровневом API являются декларациями вызывающего кода;
проверенный file loader должен подтвердить байты и read-back. Паспорт отдельно
сохраняет digest реально использованных полей и hash загруженной реализации.

### Проверка и границы

DDY проверяет используемые T/moisture/P/wind и полный календарь. Радиация
исходного annual EPW не участвует: её отрицательный QC не скрывается и
не заменяется общим physical pass. Вычислимость DDY не доказывает его
локальную точность или максимум нагрузки любой системы.

Регрессионные проверки должны обнаруживать неправильный хвост/квантиль,
потерю экстремального года, неправильный фазовый переход, неполный календарь,
подмену источника, преждевременную публикацию и расхождение web recipe.
Native-приёмка: все 13 environments участвуют в sizing; фактические
T/RH/P/wind и расписания сверяются с паспортом на субчасовом шаге;
сохранены непустые sizing outputs, warnings/severe и точные входные SHA.

Ресурсный протокол: один тяжёлый процесс, numerical threads ≤2, tmp на D:;
адресный pytest ≤180–360 s, полный pytest ≤3600 s, архивный export ≤300 s;
native ≤120 s/run, до трёх подготовительных и трёх итоговых запусков,
native outputs ≤200 MB, общий резерв доказательств ≤2 GiB. Имеющийся архив
предпочтителен; новые массовые погодные загрузки не нужны. При timeout
результат incomplete, отрицательные receipts сохраняются.

## Состояние проверки

Постановка записана до production-реализации. Независимый критик проверил
разделение percentile/coincident/range и границу задачи. По его замечаниям
исправлены сохранение ведущей DP и идентичность загруженной реализации;
регрессии также проверяют хвост размахов, оба ограничителя и отрицательные
температуры. Адресный core-набор: 24 passed, rc0, Python 3.14.2.

Фактический пример: сохранённые NASA EPW Faridpur 2006–2025, 175320 часов,
13 design days. EnergyPlus 26.1.0-6f2e40d102 выполнил все 13 в zone и system
sizing, SQL содержит 13 environments по 144 timestep; 10 ZoneSizes,
2 SystemSizes и 45 записей autosized capacity/flow. Код возврата 0,
3 предупреждения о нулевой мощности/расходе OA heating coil независимого
штатного примера `5ZoneAirCooled`; severe=0. Это не результат птичника.

Паспорт сопоставлен с SQL по 1872 значениям каждого поля. Максимальные
абсолютные различия: DB 4.983e-10 °C, RH 4.971e-10 процентного пункта,
W 1.354e-9 kg/kg сухого воздуха, WB 1.929e-5 °C. Отдельная manufactured
выборка DB=−10 °C / Buck DP=−20 °C подтверждена для 13 дней, с 6 предупреждениями
штатного потребителя и без severe. Её декларации источника синтетические и
не являются наблюдениями или реальными NASA-ответами. Первичный verifier
ошибочно отвергал пустое имя пика при нулевой нагрузке; отрицательный receipt
сохранён, проверка исправлена через RED/GREEN, прежние SQL разобраны повторно.
Допуски погодных величин не ослаблялись и EnergyPlus повторно не запускался.

Доказательства находятся в `tmp/epw_ddy_2026-10-22/`; публичный reference
[receipt](receipt.json)
связан с конкретными DDY/паспортом и не подтверждает расчёт нового пользователя.
Полная программная и пакетная приёмка фиксируется в итоговом отчёте задачи.

## Воспроизведение и использование

Экспорт готового серверного архива: `python -m epw_morph.cli ddy ARCHIVE OUTPUT
--start-year 2006 --end-year 2025`. В ARCHIVE должны находиться
`year_YYYY/weather.epw` и `provenance.json` каждого года. Команда читает и
хеширует файлы, проверяет общую площадку, часовой календарь и роли источников;
она не загружает погоду. Выход — `weather.ddy` и `design_conditions.json`.

Для использования DDY импортируют объекты Site:Location, SizingPeriod:DesignDay,
ScheduleTypeLimits и Schedule:Day:Interval в IDF, избегая дубликатов имён.
В SimulationControl включают zone/system sizing и выполнение sizing periods;
соответствующие Sizing:Zone/Sizing:System и Autosize относятся к модели
здания. DDY не является часовым EPW и сам по себе не запускает sizing.
Воспроизводимый пример: `python -m scripts.verify_epw_ddy_sizing --ddy FILE.ddy
--output NEW_DIRECTORY --energyplus C:/EnergyPlusV26/energyplus.exe`.
Скрипт использует отдельный штатный пример и проверяет следы каждого дня,
SQL-погоду, sizing time series и реальные autosizing outputs.

В работе применены TDD, python-testing, python-patterns, независимый критик,
verification-before-completion и scientific-critical-thinking. Процедурный
вклад последнего отмечен по условиям skill: Kassis T., Agarwal V., He Y.,
Patel D., Brueckner A. M. (2026), *Scientific Agent Skills: A Library of
Procedural Knowledge for Research Agents*, [arXiv:2609.00065](https://doi.org/10.48550/arXiv.2609.00065).
Метаданные проверены 22.10.2026; текущая запись v2 от 02.09.2026. Это ссылка
на рабочую процедуру агента, а не источник климатической методики.
