Документация SkyCiv

Ваш путеводитель по программному обеспечению SkyCiv — учебные пособия, практические руководства и технические статьи

Схемы сочетания нагрузок

В последнем обновлении генератора комбинаций нагрузок, мы упростили внутреннюю работу модуля и добавили следующий функционал:

  • Генерация комбинации нагрузок определяется одним файлом .json. (Схема) для каждого стандарта.
  • Группы и комбинации нагрузок можно создавать без необходимости предварительного назначения нагрузок в пространстве S3D-моделирования..
  • Узоры, которые основаны на старых “Расширьте ветровые нагрузки” флажок, теперь работаем с любыми вариантами нагрузки.

Номенклатура

В последней версии генератора комбинаций нагрузок, имя варианта нагрузки, которое использовалось для многих вещей:

  • Действовать как уникальный идентификатор.
  • Различать нагрузку супер чехол и загружение, и всегда требуют одного значения в каждом (приводящие к странным вещам, таким как мертв: мертвых).
  • Оставаться читабельным для человека, при этом оставаясь достаточно маленьким для выпадающих меню путем сокращения слов (Жить: Q-расстояние-крыша-пол).

В самом последнем обновлении, мы разделили названия вариантов нагрузки на символы, которые компактны и используются в условиях ограниченного пространства (например, при названии сочетаний нагрузок: 1.25G1 + 1.5Qa + 1.5Qd + 0.5Sl + 0.5T), и этикетки, который будет описательным (используется, например, в раскрывающихся списках). Оба символы и этикетки должно быть уникальным в рамках данного стандарта. Мы также позволим случаи нагрузки называться так же, как нагрузка супер чехол, обычно для варианта нагрузки по умолчанию (наиболее часто используемый). Два примера, использованные выше, будут разделены следующим образом.:

{“G”: "Мертвый"}
{“Qdr”: "Жить - Распределенный, Крыши, Пол"}

В символ должен состоять минимум из одной заглавной буквы, который определяет суперслучай. В супер чехол это новая концепция, используется для группировки аналогичных случаев нагрузки, которые обычно действуют вместе. В супер чехол метка указывается в начале метки варианта нагрузки (перед тире). В примере выше (КАК 1170.0) the load case Qdr would be part of the Q super case (под названием Live на лейбле), alongside other load cases like Qdd and Qdo. За кулисами, в супер чехол в основном используется для обеспечения соблюдения правил фильтрации, то есть определить, какие строки схемы необходимо сохранить, а какие удалить..

Первая часть этикетки (перед тире) это имя супер чехол. Вторая часть - описание, использование запятых для отделения категорий от подкатегорий. Вторая часть необязательна, но только один вариант нагрузки может принимать значение по умолчанию супер чехол место. Each load case also stores an html version of its symbol, which uses subscripts for display (for example Qdr for Qdr).

Строки стандартных схем

Каждый стандарт имеет схема который полностью определяет все возможные комбинации нагрузок по настоящему стандарту.. В Схема.json файл довольно простой, но это может стать довольно длинным, особенно в стандартах (как Еврокод) которые требуют множества перестановок. Возьмем простой пример, возьмем следующий пример требования.

1.2*D + 1.5*L + (0.5*S или 0,5*W или 0,5*T)

Чтобы преобразовать это в наш схема, нам нужно разбить его на каждую возможную перестановку:

1.2*D + 1.5*L
1.2*D + 1.5*L + 0.5*S
1.2*D + 1.5*L + 0.5*W
1.2*D + 1.5*L + 0.5*T
1.2*D + 1.5*L + 0.5*S + 0.5*W
1.2*D + 1.5*L + 0.5*W + 0.5*T
1.2*D + 1.5*L + 0.5*T + 0.5*S
1.2*D + 1.5*L + 0.5*S + 0.5*W + 0.5*T

После того, как каждое сочетание нагрузок будет указано таким образом,, вы можете построить схему, выполнив следующие шаги:

  1. Используйте каждый ключ и коэффициент нагрузки для создания объекта строки схемы..
  2. Назовите каждую строку уникальным идентификатором. (так как это будет объект). Соглашение заключается в использовании тире для разделения различных элементов имени..
  3. На один уровень выше, группировать строки по критериям (Сила, Удобство обслуживания, Другой, и т.п.). The criteria names are used to populate the Criteria dropdown.

Конечный результат должен выглядеть примерно так:

"ряды": {
  "Сила":{
    "А-1-у": {"D": 1.40},
    "А-2а-у":{"D": 1.25, "L": 1.50, "Лс": 1.50},
    "А-2б-у":{"D": 1.25, "L": 1.50, "Лс": 1.50, "S": 1.00},
    "А-2с-у":{"D": 1.25, "L": 1.50, "Лс": 1.50, "W": 0.40},
    "А-3а-у":{"D": 1.25, "S": 1.50}
  }
}

Алгоритм формирования комбинации нагрузок

Алгоритм проходит несколько этапов для создания окончательного объекта комбинации нагрузок.:

  • В схема как определено выше, необходимо. Оно будет передано в функцию формирования основной комбинации нагрузок..
  • Создан объект для группировки количества случаи нагрузки по шаблон. Например, давайте рассмотрим запрос на варианты нагрузки ниже:
2 Мертвая нагрузка, with a simultaneous pattern
4 Варианты ветровой нагрузки, with an independent pattern
1 Снеговые нагрузки, with an independent pattern
2 Случаи мертвой нагрузки, with a simultaneous pattern

Группировка узоры по загружение даст следующий объект, который будет передан в функцию формирования основной комбинации нагрузок. Each load case holds one array per pattern (одновременный, independent, sweep, зеркало, paired and checker). Each array entry represents one row of the load case table, and stores its quantity, load group names, main ratio and alternate ratio. Omitted properties are shown as “…” ниже.

input_by_case = 
  {
    "D": {"одновременный": [{"quantity": 2, ...}, {"quantity": 2, ...}], "independent": [], ...},
    "W": {"одновременный": [], "independent": [{"quantity": 4, ...}], ...},
    "S": {"одновременный": [], "independent": [{"quantity": 1, ...}], ...}
  }
  • The function also receives the combination naming option, two filtering objects, которые позволяют фильтровать по критерии или по ключу схемы, and the load case exceptions from the schema meta data.
  • Как только он получит все необходимые аргументы, функция формирования основной комбинации нагрузок называется. Эта функция проходит несколько вложенных циклов для создания каждой необходимой комбинации., которые объяснены в следующих пунктах списка, и показано на следующем рисунке.
    • На самом высоком уровне, он проходит по строкам схемы. Each row is checked using the filtering objects and specific logic that is described in the section below. Rather than being skipped at this step, each row is tagged either as kept or with the reason it was rejected (filtered, redundant or superfluous).
    • В первый цикл вложен второй, который проходит через каждый запрошенный загружение в строке схемы. Если запрошенный загружение also exists in the schema row (запросы суммируются в объекте input_by_case), тогда мы переходим на следующий уровень.
    • Во второй цикл вложен третий, который проходит через все возможные шаблон чтобы увидеть, есть ли в них группы нагрузки, которые можно создать, и запускает функцию, чтобы называть и генерировать их, когда они это делают.
    • После того как все варианты нагрузки в строке схемы созданы и им присвоены имена, они рекомбинированы (вместе с их коэффициентами) в одну или несколько комбинаций нагрузок.

  • Этот процесс повторяется для каждой строки схемы., помещение всех сгенерированных сочетаний нагрузок в окончательный объект сочетания нагрузок. Rejected combinations are then removed as described in the section below.

It is worth noting that all of the logic related to patterns is happening while inside a single schema row. Знание этого важно для понимания поведения шаблонов.. The simultaneous pattern, Например, не позволяет объединить что-либо, кроме загружения, которому оно присвоено. Это означает, что вы не можете:

  • Объединение различных вариантов нагрузки вместе, как попытка объединить группы нагрузки D1 ​​и L1.
  • Объединить одинаковые варианты нагрузки в разных строках входной таблицы.. Например, в примере, приведенном в пункте #2 выше, нас просят сгенерировать 2 dead loads using the simultaneous pattern on two separate rows. Конечные комбинации результатов будут выглядеть примерно так::
1.2*Д1 + 1.2*Д2 + 1.5*L
1.2*Д3 + 1.2*Д4 + 1.5*L
1.2*Д1 + 1.2*Д2 + 1.5*L + 0.5*S
1.2*Д3 + 1.2*Д4 + 1.5*L + 0.5*S
1.2*Д1 + 1.2*Д2 + 1.5*L + 0.5*W
1.2*Д3 + 1.2*Д4 + 1.5*L + 0.5*W

Автоматическая фильтрация ненужных сочетаний нагрузок

Хотя приведенный выше алгоритм работает без какой-либо фильтрации, это может привести к избыточным сочетаниям нагрузок, что приводит к дополнительному вычислительному времени и избыточным результатам. Примите следующие комбинации нагрузок:

1.2*D + 1.5*L
1.2*D + 1.5*L + 0.5*S
1.2*D + 1.5*L + 0.5*W
1.2*D + 1.5*L + 0.5*T

Если у нас есть один случай постоянной нагрузки, эти четыре сочетания нагрузок приведут к идентичным сочетаниям нагрузок:

1.2*D
1.2*D
1.2*D
1.2*D

Чтобы избежать этой ситуации, используются четыре правила, каждое из которых содержит небольшие исключения. Первый, давайте посмотрим на правила. По умолчанию комбинация сохраняется, а правила используются для определения того, какую из них следует исключить.. Combinations excluded by the first two rules (filtering) are always removed. Combinations excluded by the last two rules (redundant and superfluous) are flagged in the report’s All Possible Combinations table, but are only removed when the Remove Unnecessary setting is enabled.

Фильтрация по критериям

Этот случай довольно понятен. Если критерии не запрашивается, все строки схемы, связанные с этим критерии отброшены.

Фильтрация по символам ключа схемы

Schema keys are usually dash separated pointers to the original reference. Например, в примере NBCC ниже, ключ состоит из трех компонентов:

  • А: Первый термин обычно является основной ссылкой, обратитесь к таблице, в которой взята эта часть нагрузок.
  • 2б: Второй термин обычно представляет собой уникальный идентификатор сочетания нагрузок внутри таблицы..
  • U: Третий термин обычно зарезервирован для обозначения случая, когда большое количество сочетаний нагрузок переставляются с небольшими изменениями.. Например, он может указывать, являются ли статические нагрузки в сочетании нагрузок благоприятными ( е ) или неблагоприятный ( U ).
{
  "прочность":{
    "А-2б-у":{"D": 1.25, "L": 1.50, "Лс": 1.50, "S": 1.00},
  }
}

Фильтрацию по ключу схемы можно выполнить для любого из этих терминов.. Например, если мы хотим фильтровать по третьему члену, мы можем добавить следующий фильтр, который создаст раскрывающийся список фильтрации для этого термина:

"name_filters": {
  "Сила": {
    "Мертвая нагрузка": {
      "позиция": 2,
      "подсказка": "",
      "выбор": "multi",
      "предметы": {
        "Благоприятный": "е",
        "Неблагоприятный": "U"
      },
      "значения по умолчанию": ["Благоприятный", "Неблагоприятный"]
    }
  }
}

Все возможные названия раскрывающегося списка и связанные с ними термины должны быть перечислены в разделе «Элементы».. The “selection” property can be set to “multi” to allow several items to be selected, or to “single” to allow only one (only the first item in “defaults” is then selected by default). Будут сохранены только строки схемы с совпадающими символами.. Если необходимо сохранить строку схемы независимо от того, что введено в фильтр, the term can be left blank or replaced by a plus sign (for example +-ii.1-f in AS 1170.0). Любой ключ схемы, который не содержит все соответствующие термины раскрывающегося списка, будет удален..

Избыточные комбинации

Если строка схемы не отфильтровывается на первых двух шагах, он переходит к шагу номер три. На этом этапе, решена проблема избыточности из приведенного выше примера.. Сделать это, нам нужно смотреть на два объекта одновременно, строка схемы и отсортированный объект input_by_case (смотри описание выше), который описывает, какие варианты нагрузки были запрошены. Если строка схемы содержит какой-либо суперслучай, которого нет в объекте input_by_case, комбинация нагрузок удалена. Брать, Например, следующая строка схемы:

"А-2а-у":{"D": 1.25, "L": 1.50, "S": 1.50}

и следующий объект input_by_case:

input_by_case = 
{
  "D": {"одновременный": [], "independent": [{"quantity": 1, ...}], ...},
  "L": {"одновременный": [], "independent": [{"quantity": 4, ...}], ...}
}

В этом примере, строка схемы содержит супер чехол S, который не был запрошен. Сохранение этой строки приведет к тому, что сочетание нагрузок будет идентично сочетанию нагрузок, связанному со строкой схемы ниже., поэтому оно удалено.

"А-1а-у":{"D": 1.25, "L": 1.50}

Исключения

Хотя такое поведение обычно желательно, бывают случаи, когда НЕ удаление строки при отсутствии варианта нагрузки приводит к гораздо более простой схеме. Например, если у нас есть горизонтальные нагрузки на землю, которые следует добавлять к каждой комбинации схемы, но не всегда присутствуют, мы могли бы скопировать и вставить все комбинации нагрузок и изменить ключ схемы для новых строк, добавив суффикс типа «h» для горизонтальных нагрузок на землю.. альтернативно, мы можем просто добавить горизонтальную нагрузку на землю во все случаи и добавить исключение сохранения для варианта нагрузки в метаданных. Таким образом, если вариант нагрузки не запрошен, оно не появится, но строка все равно сохранится. Результат выглядит примерно так в метасвойстве схемы.:

"ЧАС": {
  "этикетка": "Боковая земля - Неблагоприятный",
  "HTML": "ЧАС",
  "классифицировать": 1,
  "исключения": ["держать"],
  "старые_лейблы": []
},

Лишние комбинации

Если строка схемы не отфильтровывается на первых трех шагах, он переходит к шагу номер четыре. На этом этапе, проблема сопоставления конкретных случаев нагрузки между схемой и тем, что запрашивается. Если строка схемы и запрос имеют совпадающие суперслучаи, но запрошенный конкретный вариант нагрузки отсутствует в схеме, строка не будет сохранена. Брать, Например, следующая строка схемы:

"А-2а-у":{"D": 1.25, "Sl": 1.50}

и следующий input_by_case:

input_by_case = 
{
  "D": {"одновременный": [], "independent": [{"quantity": 1, ...}], ...},
  "Ш": {"одновременный": [], "independent": [{"quantity": 1, ...}], ...}
}

В этом примере, и строка схемы, и запрос имеют совпадающие суперслучаи. тем не мение, запрос требует комбинации с Sh, чего строка схемы не предоставляет. таким образом, строка схемы не сохраняется.

Исключения

Снова, такое поведение обычно желательно, но может привести к проблемам. Одна из таких проблем заключается в том, что в стандартах есть варианты нагружения, которые имеют общий суперслучай., но не действуйте одновременно. Например, в ASCE, ветровые нагрузки W и смерчовые нагрузки Wt действуют не одновременно, хотя у них один и тот же суперслучай W. Когда мы сталкиваемся с этой проблемой, мы можем добавить исключение для переключения на другой супер чехол прежде чем код запустится в метаданных. За кулисами, символ, следующий за “->” символы будут относиться к варианту нагрузки, который будет моделировать варианты нагрузки, действующие в этом супер чехол. Результат выглядит примерно так в метасвойстве схемы.:

"вес" : {
  "этикетка": "ветер - Торнадо",
  "HTML": "W<sub>T</sub>",
  "классифицировать": 8,
  "исключения": ["суперкейс->И"],
  "старые_лейблы": []
},

В случае выше, в супер чехол “W” будет заменен на “И” до запуска кода. Эту функцию также можно использовать для отправки групповых загружений с уникальными супер чехол символы вместе.

Как мы можем помочь?

×

Перейти наверх