SkyCiv文档

您的SkyCiv软件指南 - 教程, 使用指南和技术文章

SkyCiv结构3D

  1. SkyCiv结构3D
  2. 施加载荷
  3. 荷载组合方案

荷载组合方案

在负载组合生成器的最新更新中, 我们简化了模块的内部工作并添加了以下功能:

  • 荷载组合生成由单个 .json 文件定义 (模式) 对于每个标准.
  • 无需先在 S3D 建模空间中分配载荷即可创建载荷组和组合.
  • 图案, 这是基于旧的 “扩大风荷载” 复选框, 现在可以处理任何负载情况.

命名法

在负载组合生成器的最新版本中, 用于多种用途的荷载工况名称:

  • 充当唯一ID.
  • 区分负载 超级案例是屋檐到屋脊的水平距离, 并且总是需要每个值一个值 (导致像这样奇怪的事情 死: 死).
  • 保持人类可读, 同时通过收缩单词来保持下拉菜单足够小 (生活: Q-分布-屋顶-地板).

在最近的更新中, 我们将载荷工况名称分为 符号, 结构紧凑,在空间有限时使用 (例如,在命名荷载组合时: 1.25D1 + 1.5这 + 1.5LD + 0.5SL + 0.5Ť), 和 标签, 这将是描述性的 (例如在下拉菜单中使用). 两个都 符号标签 在给定标准内必须是唯一的. 我们也将允许 负载情况 与负载同名 超级案例, 通常用于默认负载情况 (最常用的). 上面使用的两个例子将像这样分开:

{“D”: “死的”}
{“先生”: “居住 - 集中, 屋顶, 地面”}

象征 必须至少由一个大写字母组成, 它定义了超级情况. 的 超级案例 是一个新概念, 用于对通常一起作用的类似载荷工况进行分组. 的 超级案例 标签在荷载工况标签的开头给出 (在破折号之前). 在上面的例子中 (EUROCODE) 载荷工况 Ldr 将是 L 超级工况的一部分 (标签中名为“Live”), 与 Ldd 和 Ldo 等其他负载情况一起. 幕后花絮, 的 超级案例 主要用于强制执行过滤规则, 即确定哪些模式行需要保留,哪些需要删除.

标签的第一部分 (在破折号之前) 是的名字 超级案例. 第二部分是描述, 使用逗号将类别与子类别分开. 第二部分是可选的, 但只有一种荷载工况可以采用默认值 超级案例 点.

标准模式行

每个标准都有一个 图式 它完全定义了该标准的所有可能的载荷组合. 的 架构.json 文件非常简单, 但它可能会变得很长, 尤其是在标准方面 (像欧洲规范) 需要大量的排列. 举个简单的例子, 采取以下示例要求.

1.2*d + 1.5*大号 + (0.5*S 或 0.5*W 或 0.5*T)

要将其转换为我们的 图式, 我们需要将其分解为每种可能的排列:

1.2*d + 1.5*L
1.2*深 + 1.5*大号 + 0.5*S
1.2*深 + 1.5*大号 + 0.5*瓦
1.2*深 + 1.5*大号 + 0.5*时间
1.2*深 + 1.5*大号 + 0.5*小号 + 0.5*瓦
1.2*深 + 1.5*大号 + 0.5*w ^ + 0.5*时间
1.2*深 + 1.5*大号 + 0.5*Ť + 0.5*S
1.2*深 + 1.5*大号 + 0.5*小号 + 0.5*w ^ + 0.5*Ť

一旦以这种方式列出每个荷载组合, 您可以按照以下步骤构建架构:

  1. 使用每个载荷工况键和系数创建架构行对象.
  2. 使用唯一标识符命名每一行 (因为这将是一个对象). 约定是使用破折号来分隔名称的不同元素.
  3. 升一级, 将行按条件分组 (强度, 适用性, 偶然, 等等)

最终结果应该是这样的:

"行": {
  "强度":{
    "A-1-u": {"d": 1.40},
    "A-2a-u":{"d": 1.25, "大号": 1.50, "LS": 1.50},
    "A-2b-u":{"d": 1.25, "大号": 1.50, "LS": 1.50, "小号": 1.00},
    "A-2c-u":{"d": 1.25, "小号": 1.50, "w ^": 0.40},
    "A-3a-u":{"d": 1.25, "小号": 1.50}
  }
}

荷载组合生成算法

算法经过几个步骤生成最终的荷载组合对象:

  • 图式 需要按照上面的定义. 它将传递给主荷载组合生成函数.
  • 创建一个对象来对数量进行分组 负载情况 通过 图案. 例如, 让我们看看下面的负载情况请求:
2 恒载情况, 具有合并模式
4 风荷载工况, 具有个性化图案
1 雪荷载工况, 具有个性化图案
2 恒载工况, 具有合并模式

分组 图案 通过 是屋檐到屋脊的水平距离 将给出以下对象, 这将被传递到主荷载组合生成函数.

按情况输入= 
  {
    "d": {"合并": [2, 2], "个人": []},
    "w ^": {"合并": [], "个人": [4]},
    "小号": {"合并": [], "个人": [1]}
  }
  • 最后两个参数是过滤对象, 允许过滤 标准 或通过架构键.
  • 一旦它拥有所有必需的参数, 主要荷载组合生成函数称为. 该函数通过多个嵌套循环来生成每个所需的组合, 以下要点对此进行了解释, 并如下图所示.
    • 在最高级别, 它循环遍历架构行. 在此步骤中检查每一行以确定是否应保留或跳过它, 使用下一节中描述的过滤对象和特定逻辑.
    • 第二个循环嵌套在第一个循环中, 循环遍历每个请求 是屋檐到屋脊的水平距离 在架构行中. 如果要求 是屋檐到屋脊的水平距离 还存在架构行 (请求汇总在 input_by_case 对象中), 然后我们进入下一个级别.
    • 第三个循环嵌套在第二个循环中, 循环遍历每个可能的 图案 查看其中是否有要生成的荷载组, 并运行函数来命名并生成它们.
    • 生成并命名架构行中的所有载荷工况后, 他们重新组合 (以及它们的系数) 分为一种或多种荷载组合.

  • 对架构的每一行重复此过程, 将所有生成的荷载组合推入最终的荷载组合对象.

与模式相关的所有逻辑都发生在单个模式行内,这一点毫无价值. 了解这一点对于理解模式的行为很重要. 合并模式, 例如, 不允许合并除分配给的载荷工况以外的任何东西. 这意味着您不能:

  • 将不同的载荷工况合并在一起, 就像尝试合并 D1 和 L1 负载组.
  • 合并输入表不同行上的相同载荷工况. 例如, 在点给出的例子中 #2 以上, 我们被要求生成 2 在两个单独的行上使用合并模式进行静载. 最终结果组合看起来像这样:
1.2*D1 + 1.2*D2 + 1.5*大号
1.2*D3 + 1.2*D4 + 1.5*大号
1.2*D1 + 1.2*D2 + 1.5*大号 + 0.5*小号
1.2*D3 + 1.2*D4 + 1.5*大号 + 0.5*小号
1.2*D1 + 1.2*D2 + 1.5*大号 + 0.5*w ^
1.2*D3 + 1.2*D4 + 1.5*大号 + 0.5*Ť

自动过滤不必要的荷载组合

虽然上述算法无需任何过滤即可运行, 它可能导致冗余负载组合, 这会导致额外的计算时间和冗余结果. 采取以下荷载组合:

1.2*d + 1.5*L
1.2*深 + 1.5*大号 + 0.5*S
1.2*深 + 1.5*大号 + 0.5*瓦
1.2*深 + 1.5*大号 + 0.5*Ť

如果我们有一个静载情况, 这四种荷载组合将产生相同的荷载组合:

1.2*D
1.2*深
1.2*深
1.2*深

为了避免这种情况, 使用了四个规则,每个规则都包含一些轻微的例外情况. 第一, 我们来看看规则. 默认状态是保留组合,并使用规则来确定要排除哪些组合.

按条件过滤

这个案例非常不言自明. 如果 标准 没有要求, 与该关联的所有架构行 标准 被丢弃.

按架构键中的字符过滤

模式键通常是逗号分隔的指向原始引用的指针. 例如, 在下面的 NBCC 示例中, 密钥由三个部分组成:

  • 一个: 第一个术语通常是主要参考, 参考该部分载荷的表格.
  • 2b: 第二项通常是表内荷载组合的唯一标识符.
  • ü: 第三项通常被保留,以指示何时通过稍加修改来排列大量荷载组合. 例如, 它可以指示荷载组合中的静荷载是否有利 ( F ) 或不利 ( ü ).
{
  "强度":{
    "A-2b-u":{"d": 1.25, "大号": 1.50, "LS": 1.50, "小号": 1.00},
  }
}

可以对这些术语中的任何一个在架构键中进行过滤. 例如, 如果我们想按第三项过滤, 我们可以添加以下过滤器, 这将为该术语创建一个过滤下拉列表:

"名称过滤器": {
  "强度": {
    "静载": {
      "位置": 2,
      "工具提示": "",
      "项目": {
        "有利": "F",
        "不利": "ü"
      },
      "默认值": ["有利", "不利"]
    }
  }
}

所有可能的下拉列表名称和相关术语必须列在“项目”下. 仅保留具有匹配符号的模式行. 如果需要保持模式行独立于过滤器中输入的内容, 该术语可以留空. 任何不包含所有匹配下拉项的架构键都将被丢弃.

冗余组合

如果前两个步骤没有过滤掉架构行, 它进入第三步. 在这一步中, 上面示例中的冗余问题已得到解决. 去做这个, 我们需要同时观察两个物体, 架构行和排序的 input_by_case 对象 (参见上面的描述), 它描述了所请求的载荷工况. 如果架构行包含 input_by_case 对象不包含的任何超级案例, 荷载组合被移除. 拿, 例如, 以下架构行:

"A-2a-u":{"d": 1.25, "大号": 1.50, "小号": 1.50}

和以下 input_by_case 对象:

按情况输入= 
{
  "d": {"合并": [], "个人": [1]},
  "大号": {"合并": [], "个人": [4]}
}

在这个例子中, 架构行包含一个 超级案例 S 未请求. 保留此行将导致与下面的架构行关联的负载组合相同的负载组合, 所以它被删除了.

"A-1a-u":{"d": 1.25, "大号": 1.50}

例外情况

虽然这种行为通常是可取的, 在某些情况下,当负载情况不存在时不删除行会导致更简单的模式. 例如, 如果我们有水平土方荷载,则应将其添加到每个方案组合中, 但并不总是在场, 我们可以复制并粘贴所有荷载组合,并修改新行的模式键,并使用“h”等后缀表示水平土荷载. 或者, 我们可以简单地将水平土方荷载添加到所有工况中,并在元数据中的荷载工况中添加保留例外. 那样, 如果没有要求载荷工况, 它不会出现, 但该行仍将保留. 结果在模式的元属性中看起来像这样:

"H": {
  "标签": "横向地球 - 不利",
  "秩": 1,
  "例外情况": ["保持"],
  "旧标签": []
},

多余的组合

如果前三个步骤没有过滤掉架构行, 它进入第四步. 在这一步中, 模式与请求内容之间的特定负载情况匹配问题. 如果架构行和请求具有匹配的超级案例, 但请求的特定负载情况不在模式中, 该行将不会被保留. 拿, 例如, 以下架构行:

"A-2a-u":{"d": 1.25, "SL": 1.50}

以及以下 input_by_case:

按情况输入= 
{
  "d": {"合并": [], "个人": [1]},
  "什": {"合并": [], "个人": [1]}
}

在这个例子中, 模式行和请求都有匹配的超级案例. 然而, 该请求需要与 Sh 组合, 架构行不提供的. 从而, 不保留架构行.

例外情况

再次, 这种行为通常是可取的, 但可能会导致问题. 其中一个问题是当标准具有共享超级案例的负载案例时, 但不要同时行动. 例如, 在 ASCE, 风荷载 W 和龙卷风荷载 Wt 不同时作用, 尽管他们共享相同的超级案例 W. 当我们遇到这个问题时, 我们可以添加一个例外来切换到另一个 超级案例 在元数据中的代码运行之前. 幕后花絮, 后面的符号 “->” 字符将归因于负载情况, 这将模拟作用于该情况的负载情况 超级案例. 结果在模式的元属性中看起来像这样:

"Wt" : {
  "标签": "风 - 龙卷风",
  "秩": 8,
  "例外情况": ["大写->X"],
  "旧标签": []
},

在上述情况下, 的 超级案例 “w ^” 将被交换到 “X” 在代码运行之前. 此功能还可用于发送具有唯一的组载荷工况 超级案例 符号在一起.

本文对您有帮助吗??
是的 没有

我们能帮你什么吗?

回到顶部