using System;
using Rugrid.Sdaid.Notation.Documents;
namespace Rugrid.Sdaid.Epas.Ntr.Backend.Calc
{
/// <summary>
/// Перенесено дословно из ntr-01/ntr-calc/ee_calc.md.
/// Каждый заголовок источника — отдельная секция; идентификаторы methodSectionId
/// сохранены статиками и служат ключом трассировки на калькуляторы src/Ntr.Calc.
/// </summary>
public class DOC_EeCalc : IApplicationServiceDocument, IHasStructuralLinks, IFolder<NtrBackendFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Backend.Calc.DOC_CalcModel>(),
};
public static string _refName = "Расчёт по электричеству (ЭЭ)";
public string Name => "Расчёт по электричеству (ЭЭ)";
public string Description => @"Этот файл содержит методику расчёта потребления электрической энергии для модели объекта потребления: **модель освещения** и **модель токоприёмников**.";
public string Version => "1.0";
public string Status => "accepted";
public string[] Comments => new string[0];
}
/// <summary>Секция методики.</summary>
public class EeOboznacheniya : ISdaidDocumentSection
{
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(object);
public int Order => 10;
public string Number => "";
public string Name => "Обозначения";
public string Body => """"
- $P_k$ — мощность вида (освещения или токоприёмников) k, кВт.
- $Q_k$ — энергия (годовое потребление) вида k, кВт·ч.
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики.</summary>
public class EeMetodikaRascheta : ISdaidDocumentSection
{
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(object);
public int Order => 20;
public string Number => "";
public string Name => "Методика расчёта";
public string Body => """"
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики: ee.lighting_kind_power.</summary>
public class EeLightingKindPower : ISdaidDocumentSection
{
/// <summary>Идентификатор секции методики; тот же идентификатор стоит в XML-doc калькулятора Ntr.Calc.</summary>
public static string MethodSectionId = "ee.lighting_kind_power";
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(EeMetodikaRascheta);
public int Order => 30;
public string Number => "";
public string Name => "Вид освещения — установленная мощность, кВт";
public string Body => """"
`methodSectionId: ee.lighting_kind_power`
$$P_k = N_{fix} \cdot N_{lamp} \cdot P_{lamp}$$
где:
- $N_{fix}$ — количество светильников, шт.
- $N_{lamp}$ — количество ламп в светильнике, шт.
- $P_{lamp}$ — мощность одной лампы, Вт.
- $P_k$ — установленная мощность вида освещения k, кВт.
**Правила валидации:**
- $N_{fix} \ge 1$;
- $N_{lamp} \ge 1$;
- $P_{lamp} > 0$.
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики: ee.lighting_kind_consumption.</summary>
public class EeLightingKindConsumption : ISdaidDocumentSection
{
/// <summary>Идентификатор секции методики; тот же идентификатор стоит в XML-doc калькулятора Ntr.Calc.</summary>
public static string MethodSectionId = "ee.lighting_kind_consumption";
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(EeMetodikaRascheta);
public int Order => 40;
public string Number => "";
public string Name => "Вид освещения — потребление ЭЭ в год, кВт·ч";
public string Body => """"
`methodSectionId: ee.lighting_kind_consumption`
$$Q_k = P_k \cdot t_{day} \cdot D_{year}$$
где:
- $P_k$ — установленная мощность вида освещения k, кВт. Расчётный параметр секции `ee.lighting_kind_power`.
- $t_{day}$ — среднее время работы в сутках, ч.
- $D_{year}$ — количество дней работы в году, дней.
- $Q_k$ — потребление ЭЭ вида освещения k в год, кВт·ч.
**Правила валидации:**
- $t_{day} \in [0; 24]$;
- $D_{year} \in [0; 365]$.
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики: ee.lighting_model_totals.</summary>
public class EeLightingModelTotals : ISdaidDocumentSection
{
/// <summary>Идентификатор секции методики; тот же идентификатор стоит в XML-doc калькулятора Ntr.Calc.</summary>
public static string MethodSectionId = "ee.lighting_model_totals";
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(EeMetodikaRascheta);
public int Order => 50;
public string Number => "";
public string Name => "Модель освещения — сводные показатели";
public string Body => """"
`methodSectionId: ee.lighting_model_totals`
Установленная мощность:
$$P_{light} = \sum_{k} P_{k}$$
Потребление ЭЭ в год:
$$Q_{light} = \sum_{k} Q_{k}$$
где $k$ — индекс вида освещения.
**Правила валидации:** собственных правил нет — все слагаемые провалидированы в секциях `ee.lighting_kind_power` и `ee.lighting_kind_consumption`. Пустой список видов освещения допускается; в этом случае $P_{light} = 0$, $Q_{light} = 0$.
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики: ee.receiver_kind_consumption.</summary>
public class EeReceiverKindConsumption : ISdaidDocumentSection
{
/// <summary>Идентификатор секции методики; тот же идентификатор стоит в XML-doc калькулятора Ntr.Calc.</summary>
public static string MethodSectionId = "ee.receiver_kind_consumption";
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(EeMetodikaRascheta);
public int Order => 60;
public string Number => "";
public string Name => "Вид токоприёмников — потребление ЭЭ в год, кВт·ч";
public string Body => """"
`methodSectionId: ee.receiver_kind_consumption`
$$Q_k = P_k \cdot t_{day} \cdot D_{year}$$
где:
- $P_k$ — суммарная мощность вида токоприёмников k, кВт.
- $t_{day}$ — среднее время работы в сутках, ч.
- $D_{year}$ — количество дней работы в году, дней.
- $Q_k$ — потребление ЭЭ вида токоприёмников k в год, кВт·ч.
**Правила валидации:**
- $P_k > 0$;
- $t_{day} \in [0; 24]$;
- $D_{year} \in [0; 365]$.
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики: ee.receiver_model_totals.</summary>
public class EeReceiverModelTotals : ISdaidDocumentSection
{
/// <summary>Идентификатор секции методики; тот же идентификатор стоит в XML-doc калькулятора Ntr.Calc.</summary>
public static string MethodSectionId = "ee.receiver_model_totals";
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(EeMetodikaRascheta);
public int Order => 70;
public string Number => "";
public string Name => "Модель токоприёмников — сводные показатели";
public string Body => """"
`methodSectionId: ee.receiver_model_totals`
Установленная мощность:
$$P_{rec} = \sum_{k} P_{k}$$
Потребление ЭЭ в год:
$$Q_{rec} = \sum_{k} Q_{k}$$
где $k$ — индекс вида токоприёмников.
**Правила валидации:** собственных правил нет — все слагаемые провалидированы в секции `ee.receiver_kind_consumption`. Пустой список видов токоприёмников допускается; в этом случае $P_{rec} = 0$, $Q_{rec} = 0$.
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
/// <summary>Секция методики: ee.ee_consumption_kwh.</summary>
public class EeEeConsumptionKwh : ISdaidDocumentSection
{
/// <summary>Идентификатор секции методики; тот же идентификатор стоит в XML-doc калькулятора Ntr.Calc.</summary>
public static string MethodSectionId = "ee.ee_consumption_kwh";
public Type Document => typeof(DOC_EeCalc);
public Type Parent => typeof(EeMetodikaRascheta);
public int Order => 80;
public string Number => "";
public string Name => "Итог по потребителям ЭЭ здания";
public string Body => """"
`methodSectionId: ee.ee_consumption_kwh`
Итоговая установленная мощность потребителей ЭЭ:
$$P_{ээ} = P_{light} + P_{rec}$$
Итоговое годовое потребление ЭЭ:
$$E_{c}^{kWh} = Q_{light} + Q_{rec}$$
Разбиение итогов:
- по светильникам: $P_{light}$, $Q_{light}$
- по токоприёмникам: $P_{rec}$, $Q_{rec}$
**Правила валидации:** собственных правил нет — все слагаемые провалидированы в смежных секциях (`ee.lighting_model_totals`, `ee.receiver_model_totals`).
"""";
public string Version => "";
public string Status => "";
public string[] Comments => new string[0];
}
}