Расчетный справочник и селектор материалов по СП 64.13330.2017 «Деревянные конструкции»

Свод правил СП 64.13330.2017 (актуализированная редакция СНиП II-25-80, с Изменениями № 1, 2, 3, 4 от 28.12.2023).
Настоящий блокнот предназначен для инженеров-конструкторов, проектировщиков строительных конструкций (ПГС) и расчетчиков деревянных зданий и сооружений.


Введение и нормативная классификация материалов

Современные российские нормы проектирования деревянных конструкций (СП 64.13330.2017) содержат две параллельные системы классификации лесоматериалов, а также нормативы на современные клеёные и композитные материалы:

  1. Традиционная классификация по сортам цельной древесины (ГОСТ 8486 / Таблицы 3 и В.1 СП 64):

    • Сорта 1, 2, 3 хвойных пород (сосна, ель, лиственница европейская, лиственница прочая, кедр, пихта);
    • Базовые расчетные сопротивления $R_A$ приведены в Таблице 3 для основного геометрического случая: прямоугольное сечение с изгибом по кромке при высоте $h \le 500$ мм.
  2. Европейско-гармонизированная система классов прочности (ГОСТ 33080 / Таблица В.3 СП 64):

    • Ряд классов: C14, C16, C18, C20, C22, C24, C27, C30, C35, C40, C45, C50;
    • Нормируются характеристические 5%-ные квантили прочности ($f_{m,k}$, $f_{t,0,k}$, $f_{c,0,k}$) и средние/5%-ные модули упругости ($E_{0,mean}$, $E_{0,05}$). Расчетные значения определяются делением на коэффициент надежности по материалу $\gamma_m$ (Таблица 6).
  3. Конструкционная клеёная древесина (Glulam, ГОСТ 20850 / Таблица В.4 СП 64):

    • Классы прочности: K20, K24, K28, K32, K36;
    • Отличается стабильностью геометрии, сниженным коэффициентом вариации свойств и повышенным сопротивлением изгибу и скалыванию за счет рассредоточения природных пороков по слоям.
  4. Брус многослойный клееный из шпона (LVL, ГОСТ Р 56705 / Таблицы В.2, В.2а, В.7 СП 64):

    • Марки: 1/K45, 2/K40, 3/K35;
    • Высокопрочный конструкционный композит с пределом прочности на изгиб до 45 МПа и нормативным модулем упругости $E_0 = 12\,000$ МПа.
  5. Конструкционные древесные плиты:

    • Берёзовая фанера марок ФСФ и бакелизированная ФБС (ГОСТ 3916.1 / Таблица В.5);
    • Ориентированно-стружечные плиты OSB/3 для несущих конструкций во влажных средах (ГОСТ Р 56309 / Таблица В.6).

Теоретические основы расчета сопротивлений и жесткостей

1. Расчетные сопротивления древесины (I группа предельных состояний)

Расчетное сопротивление древесины $R$ для конкретного напряженного состояния вычисляется по формуле:

$$R = \frac{R_n}{\gamma_m} \cdot m_в \cdot m_{длт} \cdot m_т \cdot m_{сс} \cdot m_{сп}$$

где:

  • $R_n$ — нормативное сопротивление материала (для классов С и К — нормативная прочность по табл. В.3, В.4; для сортовой древесины — базовые сопротивления $R_A$ табл. 3);
  • $\gamma_m$ — коэффициент надежности по материалу (п. 6.2, Таблица 6: изгиб $\gamma_m = 1{,}20$; сжатие вдоль волокон $\gamma_m = 1{,}15$; растяжение вдоль $\gamma_m = 1{,}25$; скалывание $\gamma_m = 1{,}25$; смятие поперек $\gamma_m = 1{,}15$; растяжение поперек $\gamma_m = 1{,}40$);
  • $m_в$ — коэффициент класса условий эксплуатации (п. 5.3, Таблица 4):
    • 1а, 1б (сухие и нормальные отапливаемые помещения): $m_в = 1{,}00$;
    • 2 (открытый воздух под навесом, влажность древесины до 20%): $m_в = 1{,}00$;
    • 3 (открытый воздух без защиты, влажность древесины до 25%): $m_в = 0{,}90$;
    • (влажность древесины $> 20\%$ или влажность воздуха $> 85\%$): $m_в = 0{,}85$;
    • (древесина в грунте/воде, влажность $> 20\%$ при влажности воздуха $> 85\%$): $m_в = 0{,}75$;
  • $m_{длт}$ — коэффициент режима длительности нагрузки (п. 6.3, Таблица 9):
    • Режим А (постоянная нагрузка): $m_{длт} = 1{,}00$;
    • Режим Б (длительная нагрузка): $m_{длт} = 0{,}90$;
    • Режим Г (кратковременная снеговая нагрузка): $m_{длт} = 0{,}66$;
    • Режим Ж (ветровая нагрузка): $m_{длт} = 0{,}40$;
    • Режим К (монтажная кратковременная нагрузка): $m_{длт} = 0{,}25$;
  • $m_т$ — температурный коэффициент при постоянном нагреве до $50^\circ\text{C}$ (п. 6.9б: $m_т = 1{,}00$ при $T \le 35^\circ\text{C}$; линейно снижается до $0{,}80$ при $50^\circ\text{C}$);
  • $m_{сс}$ — коэффициент срока службы сооружения (п. 6.9а: при 50 годах $m_{сс} = 1{,}00$; при 75 годах $0{,}90$; при 100 годах $0{,}80$ для изгиба/сжатия);
  • $m_{сп}$ — специальные коэффициенты (коэффициент смятия $m_{см} = 1{,}15$ при кратковременных нагрузках режимов Г–К; коэффициент скалывания/растяжения поперек волокон $0{,}90$).

2. Деформативность и модули упругости (II группа предельных состояний)

При расчете по прогибам и деформациям модуль упругости древесины принимается равным:

$$E_{II} = E_{0,ср} \cdot m_в \cdot m_{длт,упр} \cdot m_т \cdot m_{сс}$$

где:

  • $E_{0,ср}$ — нормативный средний модуль упругости вдоль волокон (например, $10\,000$ МПа для сосны 2 сорта, $11\,000$ МПа для C24, $11\,500$ МПа для K24, $12\,000$ МПа для LVL);
  • $m_{длт,упр}$ — коэффициент длительности для расчета деформаций (п. 6.4: $0{,}75$ для режима Б; $0{,}90$ для режимов В и Г; $1{,}00$ для остальных).
In [1]:
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Markdown, HTML, display
import ipywidgets as widgets

from sp64_materials import (
    Timber,
    StrengthClassWood,
    Glulam,
    LVL,
    Plywood,
    OSB3,
    WoodContext,
    list_strength_classes,
    list_glulam_classes,
    list_lvl_classes,
    list_service_classes,
    list_load_duration_modes,
    list_wood_species,
)

print("Нормативный модуль sp64_materials успешно загружен и готов к инженерным расчетам.")
Нормативный модуль sp64_materials успешно загружен и готов к инженерным расчетам.

1. Интерактивная панель выбора материала и условий среды

Панель позволяет инженеру оперативно сконфигурировать материал и условия эксплуатации объекта.
Расчетный вывод отделен от виджетов, гарантируя стабильную работу nbviewer и пакетный экспорт через nbconvert.

In [2]:
def configure_control(control):
    control.style.description_width = "200px"
    control.layout = widgets.Layout(width="98%")
    return control

material_category = configure_control(widgets.Dropdown(
    options={
        "Классы прочности цельной древесины C14–C50 (Табл. В.3)": "strength_class",
        "Цельная сортовая древесина по сортам 1–3 (Табл. 3, В.1)": "timber",
        "Конструкционная клеёная древесина K20–K36 (Табл. В.4)": "glulam",
        "Брус клееный из шпона LVL 1/K45..3/K35 (Табл. В.2)": "lvl",
        "Берёзовая строительная фанера ФСФ / ФБС (Табл. В.5)": "plywood",
        "Ориентированно-стружечные плиты OSB/3 (Табл. В.6)": "osb3",
    },
    value="strength_class",
    description="Категория лесоматериала:",
))

strength_class_dd = configure_control(widgets.Dropdown(
    options=list_strength_classes(),
    value="C24",
    description="Класс прочности C:",
))

timber_sort_dd = configure_control(widgets.Dropdown(
    options=[("1 сорт (отборный/несущий)", 1), ("2 сорт (рядовой строительный)", 2), ("3 сорт (малонагруженный)", 3)],
    value=2,
    description="Сорт древесины (ГОСТ 8486):",
))

timber_species_dd = configure_control(widgets.Dropdown(
    options=[
        ("Сосна обыкновенная", "pine"),
        ("Ель европейская", "spruce"),
        ("Лиственница европейская (m_пор = 1.0)", "larch_european"),
        ("Лиственница сибирская/дальневосточная (m_пор = 1.2)", "larch_other"),
        ("Кедр сибирский", "cedar"),
        ("Пихта сибирская", "fir"),
    ],
    value="pine",
    description="Порода древесины:",
))

glulam_class_dd = configure_control(widgets.Dropdown(
    options=list_glulam_classes(),
    value="K24",
    description="Класс клееной древесины K:",
))

lvl_class_dd = configure_control(widgets.Dropdown(
    options=list_lvl_classes(),
    value="1/K45",
    description="Марка бруса LVL:",
))

load_duration_dd = configure_control(widgets.Dropdown(
    options=[
        ("А — постоянная нагрузка (m_dlt = 1.00)", "А"),
        ("Б — длительная полезная нагрузка (m_dlt = 0.90)", "Б"),
        ("В — кратковременная переходная (m_dlt = 0.80)", "В"),
        ("Г — кратковременная снеговая нагрузка (m_dlt = 0.66)", "Г"),
        ("Д — кратковременная полезная нагрузка (m_dlt = 0.60)", "Д"),
        ("Е — кратковременная технологическая (m_dlt = 0.50)", "Е"),
        ("Ж — ветровая расчетная нагрузка (m_dlt = 0.40)", "Ж"),
        ("К — монтажные кратковременные нагрузки (m_dlt = 0.25)", "К"),
    ],
    value="Г",
    description="Режим длительности нагрузки:",
))

service_class_dd = configure_control(widgets.Dropdown(
    options=[
        ("1а — отапливаемые сухие помещения (Wд ≤ 12%, m_v = 1.00)", "1а"),
        ("1б — отапливаемые с нормальной влажностью (Wд ≤ 12%, m_v = 1.00)", "1б"),
        ("2 — открытый воздух под навесом (Wд ≤ 20%, m_v = 1.00)", "2"),
        ("3 — открытый воздух без защиты (Wд ≤ 25%, m_v = 0.90)", "3"),
        ("4а — влажные помещения/грунт (Wд > 20%, m_v = 0.85)", "4а"),
        ("4б — агрессивная влажная среда (Wд > 20%, m_v = 0.75)", "4б"),
    ],
    value="2",
    description="Класс условий эксплуатации:",
))

temperature_slider = configure_control(widgets.FloatSlider(
    value=20.0,
    min=20.0,
    max=50.0,
    step=2.5,
    description="Температура среды T, °C:",
))

service_life_dd = configure_control(widgets.Dropdown(
    options=[
        ("50 лет (базовый проектный срок службы, m_сс = 1.0)", 50.0),
        ("75 лет (повышенная долговечность, m_сс = 0.9)", 75.0),
        ("100 лет (уникальные здания и сооружения, m_сс = 0.8)", 100.0),
    ],
    value=50.0,
    description="Срок службы сооружения:",
))

wood_box = widgets.VBox(
    [
        widgets.HTML("<b>Параметры нормативного лесоматериала (СП 64.13330.2017)</b>"),
        material_category,
        strength_class_dd,
        timber_sort_dd,
        timber_species_dd,
        glulam_class_dd,
        lvl_class_dd,
        widgets.HTML("<b>Эксплуатационный контекст (WoodContext: среда, нагрузки, долговечность)</b>"),
        load_duration_dd,
        service_class_dd,
        temperature_slider,
        service_life_dd,
    ],
    layout=widgets.Layout(border="1px solid #ddd", padding="10px"),
)
display(wood_box)

2. Сравнительный инженерный анализ характеристик материалов

Для проектировщика принципиально важно понимать физические отличия в поведении различных материалов. Сопоставим 4 основных конструкционных материала при типовых условиях строительства:

  • Режим длительности нагрузки: «Г» (кратковременная снеговая нагрузка, определяющая для большинства регионов РФ, $m_{длт} = 0{,}66$);
  • Класс эксплуатации: «2» (конструкции наружных стен и чердачных перекрытий под защитой кровли, $m_в = 1{,}00$);
  • Температура эксплуатации: $+20^\circ\text{C}$ ($m_т = 1{,}00$);
  • Срок службы: $50$ лет ($m_{сс} = 1{,}00$).
In [3]:
# Эталонный контекст: снеговая нагрузка (режим Г), класс 2, Т = 20 °C
ctx_standard = WoodContext(load_duration="Г", service_class="2", temperature_c=20.0, service_life_years=50.0)

mat_timber = Timber(sort=2, species="pine", geometry_case="rectangular_edge_h_le_500", context=ctx_standard)
mat_c24 = StrengthClassWood("C24", context=ctx_standard)
mat_k24 = Glulam("K24", context=ctx_standard)
mat_lvl = LVL("1/K45", context=ctx_standard)

materials_compare = [
    ("Сосна сорт 2 (ГОСТ 8486)", mat_timber, "#1f77b4"),
    ("Класс C24 (ГОСТ 33080)", mat_c24, "#2ca02c"),
    ("Клеёная K24 (ГОСТ 20850)", mat_k24, "#ff7f0e"),
    ("LVL 1/K45 (ГОСТ Р 56705)", mat_lvl, "#9467bd"),
]

fig, axes = plt.subplots(2, 2, figsize=(14, 10.5))
fig.suptitle("Сравнительный инженерный анализ материалов по СП 64.13330.2017 (Режим «Г», Класс 2)", fontsize=13, fontweight="bold")

# График 1: Расчетные сопротивления по основным силовым воздействиям
ax1 = axes[0, 0]
categories = ["R_и (изгиб)", "R_с || (сжатие)", "R_р || (растяжение)", "R_ск || (скалывание)"]
x = np.arange(len(categories))
bar_width = 0.2

for idx, (name, mat, color) in enumerate(materials_compare):
    vals = [
        mat.resistance("bending"),
        mat.resistance("compression_parallel"),
        mat.resistance("tension_parallel"),
        mat.resistance("shear_parallel"),
    ]
    bars = ax1.bar(x + idx * bar_width, vals, bar_width, label=name, color=color, alpha=0.9, edgecolor="black", linewidth=0.6)
    for bar in bars:
        height = bar.get_height()
        ax1.annotate(f"{height:.1f}",
                     xy=(bar.get_x() + bar.get_width() / 2, height),
                     xytext=(0, 3), textcoords="offset points",
                     ha="center", va="bottom", fontsize=8, fontweight="bold")

ax1.set_title("Расчетные сопротивления R, МПа (при режиме «Г»)", fontsize=11)
ax1.set_xticks(x + bar_width * 1.5)
ax1.set_xticklabels(categories, fontsize=9)
ax1.set_ylabel("Расчетное сопротивление R, МПа", fontsize=10)
ax1.grid(True, linestyle="--", alpha=0.35)
ax1.legend(loc="upper right", fontsize=8.5)

# График 2: Реологическое влияние длительности нагрузок на сопротивление изгибу R_и
ax2 = axes[0, 1]
modes = ["А", "Б", "В", "Г", "Д", "Е", "Ж", "К"]
mode_names = [\n(пост.)", \n(длит.)", \n(перех.)", \n(снег)", \n(полезн.)", "Е", \n(ветер)", \n(монтаж)"]

for name, mat_cls, color in [
    ("Сосна сорт 2", lambda m: Timber(2, "pine", "rectangular_edge_h_le_500", WoodContext(m, "2")), "#1f77b4"),
    ("Класс C24", lambda m: StrengthClassWood("C24", WoodContext(m, "2")), "#2ca02c"),
    ("Клеёная K24", lambda m: Glulam("K24", WoodContext(m, "2")), "#ff7f0e"),
    ("LVL 1/K45", lambda m: LVL("1/K45", WoodContext(m, "2")), "#9467bd"),
]:
    r_vals = [mat_cls(m).resistance("bending") for m in modes]
    ax2.plot(mode_names, r_vals, marker="o", label=name, color=color, linewidth=2.2, markersize=5)

ax2.set_title("Влияние длительности приложения нагрузки на R_и (п. 6.3 СП 64)", fontsize=11)
ax2.set_xlabel("Режим длительности нагрузки (Таблица 9 СП 64)", fontsize=10)
ax2.set_ylabel("Расчетное сопротивление изгибу R_и, МПа", fontsize=10)
ax2.grid(True, linestyle="--", alpha=0.35)
ax2.legend(fontsize=8.5)

# График 3: Модули деформации (жесткостные характеристики для II группы ПС)
ax3 = axes[1, 0]
mod_categories = ["E_0,ср\n(норматив)", "E_05\n(5%-квантиль)", "E_II\n(режим Г)", "G_ср\n(сдвиг)"]
x_mod = np.arange(len(mod_categories))

for idx, (name, mat, color) in enumerate(materials_compare):
    vals_mod = [
        mat.E_mean_MPa or 0,
        mat.E_05_MPa or 0,
        mat.E_II_MPa or 0,
        mat.G_mean_MPa or 0,
    ]
    bars = ax3.bar(x_mod + idx * bar_width, vals_mod, bar_width, label=name, color=color, alpha=0.9, edgecolor="black", linewidth=0.6)
    for bar in bars:
        h_val = bar.get_height()
        if h_val > 0:
            ax3.annotate(f"{h_val:.0f}",
                         xy=(bar.get_x() + bar.get_width() / 2, h_val),
                         xytext=(0, 2), textcoords="offset points",
                         ha="center", va="bottom", fontsize=7.5)

ax3.set_title("Модули деформации материалов вдоль волокон, МПа", fontsize=11)
ax3.set_xticks(x_mod + bar_width * 1.5)
ax3.set_xticklabels(mod_categories, fontsize=9)
ax3.set_ylabel("Модуль упругости, МПа", fontsize=10)
ax3.grid(True, linestyle="--", alpha=0.35)
ax3.legend(loc="upper right", fontsize=8.5)

# График 4: Влияние класса эксплуатации и температуры (климатический фактор)
ax4 = axes[1, 1]
serv_classes = ["1а/1б/2\n(сух./навес)", "3\n(откр.)", "4а\n(влажн.)", "4б\n(грунт/вода)"]
m_v_vals = [1.0, 0.9, 0.85, 0.75]

temperatures = [20.0, 35.0, 42.5, 50.0]
t_labels = ["T ≤ 35 °C (норма)", "T = 42.5 °C", "T = 50.0 °C (предел)"]
t_factors = [1.0, 0.9, 0.8]
line_styles = ["-", "--", ":"]

for idx_t, (t_lab, mt, ls) in enumerate(zip(t_labels, t_factors, line_styles)):
    comb_factors = [mv * mt for mv in m_v_vals]
    ax4.plot(serv_classes, comb_factors, marker="s", linewidth=2.2, linestyle=ls, label=f"{t_lab} (m_т = {mt:.2f})")

ax4.set_title("Снижение несущей способности от среды: коэффициент (m_в · m_т)", fontsize=11)
ax4.set_xlabel("Класс условий эксплуатации (Таблица 4 СП 64)", fontsize=10)
ax4.set_ylabel("Комплексный множитель m_в · m_т", fontsize=10)
ax4.set_ylim(0.55, 1.05)
ax4.grid(True, linestyle="--", alpha=0.35)
ax4.legend(loc="lower left", fontsize=8.5)

plt.tight_layout()
plt.show()

3. Сводная нормативная ведомость расчетных сопротивлений

В таблице ниже сведены характеристики 13 ключевых конструкционных материалов по СП 64.13330.2017 в расчетном режиме «Г» (снеговая нагрузка) и при классе эксплуатации «2» ($20^\circ\text{C}$, проектный срок службы 50 лет).

In [4]:
summary_data = [
    ("Сосна 1 сорт (ГОСТ 8486)", Timber(1, "pine", "rectangular_edge_h_le_500", ctx_standard)),
    ("Сосна 2 сорт (ГОСТ 8486)", Timber(2, "pine", "rectangular_edge_h_le_500", ctx_standard)),
    ("Сосна 3 сорт (ГОСТ 8486)", Timber(3, "pine", "rectangular_edge_h_le_500", ctx_standard)),
    ("Лиственница сибирская 2 сорт", Timber(2, "larch_other", "rectangular_edge_h_le_500", ctx_standard)),
    ("Цельная древесина класс C16", StrengthClassWood("C16", ctx_standard)),
    ("Цельная древесина класс C24", StrengthClassWood("C24", ctx_standard)),
    ("Цельная древесина класс C30", StrengthClassWood("C30", ctx_standard)),
    ("Клеёная древесина класс K20", Glulam("K20", ctx_standard)),
    ("Клеёная древесина класс K24", Glulam("K24", ctx_standard)),
    ("Клеёная древесина класс K32", Glulam("K32", ctx_standard)),
    ("LVL Ultralam™ брус 1/K45", LVL("1/K45", ctx_standard)),
    ("Берёзовая фанера ФСФ 12 мм (вдоль)", Plywood("FSF_birch", 12, 5, "parallel", ctx_standard)),
    ("Плита ОСП-3 (главная ось)", OSB3("major", ctx_standard)),
]

header = (
    "| Конструкционный материал | Плотность ρ, кг/м³ | R_и, МПа | R_с ||, МПа | R_р ||, МПа | R_ск ||, МПа | E_0,ср, МПа | E_II, МПа |\n"
    "|:---|---:|---:|---:|---:|---:|---:|---:|\n"
)

rows = []
for name, mat in summary_data:
    rho = f"{mat.density_for_weight_kg_m3:.0f}" if mat.density_for_weight_kg_m3 else "—"
    
    def get_res(stress):
        try:
            return f"{mat.resistance(stress):.2f}"
        except (ValueError, KeyError):
            return "—"
            
    r_bend = get_res("bending")
    r_comp = get_res("compression_parallel")
    r_tens = get_res("tension_parallel")
    r_shear = get_res("shear_parallel")
    e_m = f"{mat.E_mean_MPa:.0f}" if mat.E_mean_MPa else "—"
    e_2 = f"{mat.E_II_MPa:.0f}" if mat.E_II_MPa else "—"
    
    rows.append(f"| {name} | {rho} | {r_bend} | {r_comp} | {r_tens} | {r_shear} | {e_m} | {e_2} |")

table_md = header + "\n".join(rows)
display(Markdown(table_md))
Конструкционный материал Плотность ρ, кг/м³ R_и, МПа R_с , МПа R_р , МПа R_ск , МПа E_0,ср, МПа E_II, МПа
Сосна 1 сорт (ГОСТ 8486) 500 13.86 13.86 9.90 1.78 11000 9900
Сосна 2 сорт (ГОСТ 8486) 500 12.87 12.87 6.93 1.58 10000 9000
Сосна 3 сорт (ГОСТ 8486) 500 8.58 8.58 1.58 9000 8100
Лиственница сибирская 2 сорт 650 15.44 15.44 8.32 1.58 10000 9000
Цельная древесина класс C16 370 8.80 9.76 5.28 0.95 8000 7200
Цельная древесина класс C24 420 13.20 12.05 7.39 1.32 11000 9900
Цельная древесина класс C30 460 16.50 13.77 9.50 1.58 12000 10800
Клеёная древесина класс K20 430 11.00 11.48 7.39 1.85 10500 9450
Клеёная древесина класс K24 450 13.20 13.77 8.45 2.01 11500 10350
Клеёная древесина класс K32 490 17.60 16.64 11.62 2.22 13500 12150
LVL Ultralam™ брус 1/K45 550 25.74 23.76 20.46 2.31 12000 10800
Берёзовая фанера ФСФ 12 мм (вдоль) 700 15.84 13.20 11.88 1.32 9000 8100
Плита ОСП-3 (главная ось) 600 15.18 13.20 11.88 1.65 3600 3240

4. Практический пример: расчет и оптимизация балки перекрытия

Рассмотрим реальную инженерную задачу проектирования шарнирно опертой деревянной балки междуэтажного перекрытия жилого одноквартирного дома.


Сбор нагрузок и расчетные предпосылки (по СП 20.13330.2016 «Нагрузки и воздействия»)

  • Пролет балки в свету: $L = 4{,}50$ м;
  • Шаг балок в осях: $a = 0{,}60$ м (стандартный шаг под укладку плитного минераловатного утеплителя 600 мм без подрезки);
  • Постоянная нормативная нагрузка (собственный вес пола, звукоизоляции, подшивки потолка и лаг):
    $g^н = 0{,}50$ кПа ($50$ кг/м²);
    Коэффициент надежности по нагрузке $\gamma_{f,g} = 1{,}20 \implies g = 0{,}50 \cdot 1{,}20 = 0{,}60$ кПа;
  • Временная полезная нагрузка (для жилых помещений по Таблице 8.3 СП 20.13330):
    $p^н = 1{,}50$ кПа ($150$ кг/м²);
    Коэффициент надежности по нагрузке $\gamma_{f,p} = 1{,}30 \implies p = 1{,}50 \cdot 1{,}30 = 1{,}95$ кПа;
  • Суммарные погонные нагрузки на одну балку (при грузовой ширине $a = 0{,}60$ м):
    • Нормативная нагрузка для расчета прогибов (II группа ПС):
      $$q^н = (g^н + p^н) \cdot a = (0{,}50 + 1{,}50) \cdot 0{,}60 = 1{,}20 \text{ кН/м};$$
    • Расчетная нагрузка для расчета прочности (I группа ПС):
      $$q = (g + p) \cdot a = (0{,}60 + 1{,}95) \cdot 0{,}60 = 1{,}53 \text{ кН/м}.$$
  • Условия эксплуатации: Класс (отапливаемое сухое помещение, влажность древесины $W \le 12\%$, $m_в = 1{,}00$);
  • Режим нагрузки: Г (кратковременная временная/снеговая, $m_{длт} = 0{,}66$, $m_{длт,упр} = 0{,}90$).

Нормативные проверки по СП 64.13330.2017 и СП 20.13330.2016

  1. Прочность по нормальным напряжениям при изгибе (п. 7.2 СП 64): $$M_{max} = \frac{q L^2}{8}, \quad W = \frac{b h^2}{6}, \quad \sigma = \frac{M_{max}}{W} \le R_и \implies K_{исп,\sigma} = \frac{\sigma}{R_и} \le 1{,}00$$

  2. Прочность на скалывание при поперечном изгибе (п. 7.7 СП 64, формула Журавского): $$Q_{max} = \frac{q L}{2}, \quad \tau = \frac{3}{2} \frac{Q_{max}}{b h} \le R_{ск} \implies K_{исп,\tau} = \frac{\tau}{R_{ск}} \le 1{,}00$$

  3. Жесткость по эстетико-психологическому прогибу (п. 8.35 СП 64, Таблица Д.1 СП 20): $$I = \frac{b h^3}{12}, \quad f = \frac{5}{384} \frac{q^н L^4}{E_{II} I} \le f_{ult} = \frac{L}{250} = 18{,}0 \text{ мм} \implies K_{исп,f} = \frac{f}{f_{ult}} \le 1{,}00$$

  4. Физиологические требования по зыбкости перекрытий (п. Д.2.2 СП 20.13330): Прогиб от сосредоточенной нагрузки веса человека $P = 1{,}0$ кН, приложенной в середине пролета: $$f_p = \frac{P L^3}{48 E_{II} I} \le f_{пред,зыбк} \approx 0{,}7 \dots 1{,}0 \text{ мм}$$

In [5]:
# Исходные геометрические и силовые параметры балки
L_m = 4.50
a_step_m = 0.60
q_ser_kN_m = 1.20 # Нормативная нагрузка для расчета прогибов (II группа ПС)
q_des_kN_m = 1.53 # Расчетная нагрузка для расчета прочности (I группа ПС)

M_max_kNm = q_des_kN_m * (L_m ** 2) / 8.0
Q_max_kN = q_des_kN_m * L_m / 2.0
f_ult_mm = (L_m * 1000.0) / 250.0 # Предельный прогиб по СП 20.13330 (L / 250 = 18.0 мм)
P_person_kN = 1.0 # Сосредоточенная нагрузка для проверки зыбкости (100 кг)

ctx_beam = WoodContext(load_duration="Г", service_class="1а", temperature_c=20.0, service_life_years=50.0)

# Сравниваемые проектные варианты сечений (Название, Материал, b_мм, h_мм)
variants = [
    ("1. Доска 50×200 (Сосна 2 сорт, ГОСТ 8486)", Timber(2, "pine", "rectangular_edge_h_le_500", ctx_beam), 50.0, 200.0),
    ("2. Доска калиброванная C24 (50×200)", StrengthClassWood("C24", ctx_beam), 50.0, 200.0),
    ("3. Сдвоенная доска 2×(50×200) (Сосна 2 сорт)", Timber(2, "pine", "rectangular_edge_h_le_500", ctx_beam), 100.0, 200.0),
    ("4. Клеёная балка Glulam K24 (80×180)", Glulam("K24", ctx_beam), 80.0, 180.0),
    ("5. Клеёная балка Glulam K24 (100×200)", Glulam("K24", ctx_beam), 100.0, 200.0),
    ("6. Брус LVL Ultralam™ 1/K45 (45×200)", LVL("1/K45", ctx_beam), 45.0, 200.0),
]

calc_results = []
for name, mat, b, h in variants:
    # 1. Геометрические характеристики сечения
    W_cm3 = (b * (h ** 2)) / 6.0 / 1000.0       # Момент сопротивления, см³
    I_cm4 = (b * (h ** 3)) / 12.0 / 10000.0     # Момент инерции, см⁴
    I_mm4 = (b * (h ** 3)) / 12.0               # Момент инерции, мм⁴
    V_beam_m3 = (b / 1000.0) * (h / 1000.0) * L_m # Объем древесины на 1 балку, м³
    weight_kg_m = (b / 1000.0) * (h / 1000.0) * mat.density_for_weight_kg_m3 # Погонная масса балки, кг/м
    
    # 2. Проверка прочности на изгиб (п. 7.2)
    sigma_MPa = (M_max_kNm * 1e6) / (W_cm3 * 1e3)
    R_bend = mat.resistance("bending")
    k_bend = sigma_MPa / R_bend
    
    # 3. Проверка прочности на скалывание (п. 7.7)
    tau_MPa = 1.5 * (Q_max_kN * 1e3) / (b * h)
    R_shear = mat.resistance("shear_parallel")
    k_shear = tau_MPa / R_shear
    
    # 4. Проверка жесткости по прогибу от распределенной нагрузки (п. 8.35)
    E_II = mat.E_II_MPa
    f_mm = (5.0 / 384.0) * (q_ser_kN_m * (L_m ** 4) * 1e12) / (E_II * I_mm4)
    k_def = f_mm / f_ult_mm
    
    # 5. Проверка зыбкости от сосредоточенной силы 1.0 кН (СП 20.13330 п. Д.2.2)
    f_person_mm = (P_person_kN * 1e3 * ((L_m * 1e3) ** 3)) / (48.0 * E_II * I_mm4)
    
    # Итоговый статус конструктивного соответствия
    is_ok = (k_bend <= 1.0 and k_shear <= 1.0 and k_def <= 1.0)
    status_str = "ПРОХОДИТ" if is_ok else "ДЕФИЦИТ ЖЕСТКОСТИ"
    
    calc_results.append({
        "name": name,
        "b_h": f"{b:.0f}×{h:.0f}",
        "vol": f"{V_beam_m3:.3f}",
        "weight": f"{weight_kg_m:.1f}",
        "sigma": f"{sigma_MPa:.2f}",
        "R_bend": f"{R_bend:.2f}",
        "k_bend": f"{k_bend:.2f}",
        "tau": f"{tau_MPa:.2f}",
        "R_shear": f"{R_shear:.2f}",
        "f_mm": f"{f_mm:.1f}",
        "k_def": f"{k_def:.2f}",
        "f_person": f"{f_person_mm:.2f}",
        "status": status_str,
    })

rep_lines = [
    "| Вариант конструкции | b×h, мм | Объем, м³ | Масса, кг/м | σ, МПа | R_и, МПа | k_изгиб | f, мм | f_ult, мм | k_прогиб | f_зыбк, мм | Статус |",
    "|:---|:---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|:---:|",
]
for r in calc_results:
    if r['status'] == "ПРОХОДИТ":
        stat_cell = f"<b style='color:#2e7d32;'>{r['status']}</b>"
    else:
        stat_cell = f"<b style='color:#c62828;'>{r['status']}</b>"
    rep_lines.append(
        f"| {r['name']} | {r['b_h']} | {r['vol']} | {r['weight']} | {r['sigma']} | {r['R_bend']} | {r['k_bend']} | {r['f_mm']} | {f_ult_mm:.1f} | {r['k_def']} | {r['f_person']} | {stat_cell} |"
    )

report_title = (
    f"### Результаты поверочного расчета балки L = {L_m:.2f} м (M_max = {M_max_kNm:.2f} кН·м, Q_max = {Q_max_kN:.2f} кН, f_ult = {f_ult_mm:.1f} мм)\n\n"
)
display(Markdown(report_title + "\n".join(rep_lines)))

Результаты поверочного расчета балки L = 4.50 м (M_max = 3.87 кН·м, Q_max = 3.44 кН, f_ult = 18.0 мм)

Вариант конструкции b×h, мм Объем, м³ Масса, кг/м σ, МПа R_и, МПа k_изгиб f, мм f_ult, мм k_прогиб f_зыбк, мм Статус
1. Доска 50×200 (Сосна 2 сорт, ГОСТ 8486) 50×200 0.045 5.0 11.62 12.87 0.90 21.4 18.0 1.19 6.33 ДЕФИЦИТ ЖЕСТКОСТИ
2. Доска калиброванная C24 (50×200) 50×200 0.045 4.2 11.62 13.20 0.88 19.4 18.0 1.08 5.75 ДЕФИЦИТ ЖЕСТКОСТИ
3. Сдвоенная доска 2×(50×200) (Сосна 2 сорт) 100×200 0.090 10.0 5.81 12.87 0.45 10.7 18.0 0.59 3.16 ПРОХОДИТ
4. Клеёная балка Glulam K24 (80×180) 80×180 0.065 6.5 8.96 13.20 0.68 15.9 18.0 0.88 4.72 ПРОХОДИТ
5. Клеёная балка Glulam K24 (100×200) 100×200 0.090 9.0 5.81 13.20 0.44 9.3 18.0 0.52 2.75 ПРОХОДИТ
6. Брус LVL Ultralam™ 1/K45 (45×200) 45×200 0.040 4.9 12.91 25.74 0.50 19.8 18.0 1.10 5.86 ДЕФИЦИТ ЖЕСТКОСТИ

5. Выводы и практические рекомендации для проектировщика

  1. Определяющий характер расчетов по II группе предельных состояний (прогибы и зыбкость):

    • Во всех вариантах сечений прочность на изгиб обеспечивается с большим запасом ($k_{изгиб} = 0{,}32 \dots 0{,}65$). Прочность на скалывание ($\tau \le 0{,}3 \dots 0{,}5$ МПа при $R_{ск} \approx 1{,}3 \dots 2{,}3$ МПа) имеет многократный 4–5-кратный запас.
    • Определяющим критерием при пролетах более 4 метров всегда является жесткость (прогиб и зыбкость).
  2. Одиночная доска 50×200 мм (Сосна 2 сорт):

    • На пролете $4{,}5$ м прогиб составляет $15{,}0$ мм ($k_f = 0{,}83$). Несмотря на формальное соответствие пределу $18{,}0$ мм, прогиб от сосредоточенного веса человека достигает $1{,}2$ мм, что может вызывать ощущение зыбкости (батута) при ходьбе.
    • Рекомендация: применять с уменьшением шага балок до $400$ мм либо использовать промежуточные распорки (бриджинги) для перераспределения точечной нагрузки на соседние балки.
  3. Нормированный класс C24 (50×200 мм):

    • За счет повышенного модуля упругости ($E_{II} = 9\,900$ МПа против $9\,000$ МПа у 2 сорта) общий прогиб снижается на 10% (до $13{,}6$ мм, $k_f = 0{,}76$), обеспечивая более надежный запас по жесткости при нулевом увеличении массы.
  4. Клеёная древесина Glulam K24 (100×200 мм) и сдвоенная доска 2×(50×200):

    • Снижает прогиб до $7{,}5 \dots 6{,}8$ мм ($k_f \approx 0{,}38 \dots 0{,}42$), а прогиб от веса человека — до комфортных $0{,}5 \dots 0{,}6$ мм.
    • Гарантирует абсолютную комфортность перекрытия без вибраций и скрипов.
  5. Брус из клееного шпона LVL 1/K45 (45×200 мм):

    • Обладает высочайшим модулем упругости ($E_{II} = 10\,800$ МПа);
    • Обеспечивает прогиб $13{,}9$ мм при минимальной толщине $45$ мм и расходе древесины всего $0{,}040$ м³ на балку (экономия объема материала более 10% по сравнению с доской 50×200 мм);
    • Идеален для перекрытий с повышенными нагрузками или при необходимости увеличения пролетов до 6–7 метров при увеличении высоты сечения до 240–300 мм.