ABAQUS有限元模拟双稳态折纸立方体折叠,从初始展开状态,沿高度方向,压缩至折叠状态,可参考公众号STEMer里的推文《具有双稳态特性origami单体结构》

在工程与科研领域,有限元模拟是探索复杂结构力学行为的重要手段。今天咱们就来聊聊利用 ABAQUS 对双稳态折纸立方体从初始展开状态沿高度方向压缩至折叠状态的模拟过程。

双稳态折纸立方体的魅力

双稳态折纸结构,就像公众号 STEMer 里《具有双稳态特性 origami 单体结构》推文中提到的,具有两种稳定状态,这一特性使其在众多领域有着潜在应用,比如航空航天的可展开结构、生物医学的微创介入器械等。而折纸立方体作为基础结构单元,研究它的折叠过程能为理解复杂双稳态结构行为打下基础。

ABAQUS 模拟步骤

模型建立

  1. 几何建模
    首先要在 ABAQUS 中创建折纸立方体的几何模型。我们可以通过草图绘制工具来构建立方体展开状态的二维轮廓。例如,假设每个面的边长为 \(a\),在草图模块中,绘制六个相连的正方形组成展开图。
    python
    # 这里虽然 ABAQUS 主要是图形化界面操作,但类似建模的逻辑在编程中也常见
    sidelength = 10 # 假设边长为10mm
    # 想象用代码构建类似展开图的逻辑
    for i in range(6):
    if i < 4:
    # 构建四个相连正方形
    rectangle((i sidelength, 0), (i
    sidelength + sidelength, sidelength))
    elif i == 4:
    rectangle((0, side
    length), (sidelength, 2 sidelength))
    else:
    rectangle((sidelength, sidelength), (2
    sidelength, 2 * sidelength))

    这段简单的代码类比展示了构建展开图的逻辑,在 ABAQUS 里就是通过图形化界面精确绘制这样的展开图轮廓。
  2. 材料属性定义

折纸结构材料属性对其折叠行为影响很大。一般可假设为线弹性材料,比如常见的纸张或一些轻质塑料材料。在材料模块中,定义弹性模量 \(E\) 和泊松比 \(\nu\)。例如,若模拟纸张,弹性模量 \(E = 1000MPa\),泊松比 \(\nu = 0.3\)。

`python

# 假设用代码定义材料属性(实际 ABAQUS 有专门界面)

material = Material('Paper - like')

material.Elastic(table = ((1000, 0.3),))

`

这段代码模拟了在编程环境中定义材料属性,在 ABAQUS 里通过对应界面输入这些参数即可赋予模型材料特性。

网格划分

网格划分的质量直接影响模拟精度与计算效率。对于折纸立方体,由于其结构特点,在折叠区域和关键部位要进行加密网格划分。比如在面与面的连接处,使用扫掠网格划分技术,确保网格的规整性与合理性。

`python

# 同样类比代码中的网格划分逻辑

part = mdb.models['Model - 1'].parts['Part - 1']

elem_type1 = mesh.ElemType(elemCode = C3D8R, elemLibrary = STANDARD)

part.setElementType(regions = part.cells, elemTypes = (elem_type1,))

part.seedPart(size = 1.0, deviationFactor = 0.1, minSizeFactor = 0.1)

part.generateMesh()

`

这部分代码展示了在 Python 脚本控制下 ABAQUS 的网格划分过程,实际操作可通过图形界面一步步完成这些设置。

边界条件与载荷施加

  1. 边界条件

为模拟沿高度方向压缩,在立方体底部固定约束,限制其在 \(x\)、\(y\)、\(z\) 三个方向的平动和转动。在 ABAQUS 中,选择底部面,施加固定约束边界条件。

  1. 载荷施加

在顶部面施加沿 \(z\) 轴负方向的位移载荷,使其从初始展开状态逐渐压缩至折叠状态。例如,设定位移值为立方体高度值,让模型逐步变形。

`python

# 用代码模拟施加边界条件和载荷

ABAQUS有限元模拟双稳态折纸立方体折叠,从初始展开状态,沿高度方向,压缩至折叠状态,可参考公众号STEMer里的推文《具有双稳态特性origami单体结构》

assembly = mdb.models['Model - 1'].rootAssembly

instance = assembly.instances['Part - 1 - 1']

region = instance.sets['Bottom - Set']

mdb.models['Model - 1'].EncastreBC(name = 'Fixed - BC', createStepName = 'Initial', region = region)

region = instance.sets['Top - Set']

mdb.models['Model - 1'].DisplacementBC(name = 'Compression - Load', createStepName = 'Step - 1', region = region, u3 = -10) # 假设高度为10mm

`

这段代码模拟了如何在 ABAQUS 模型中通过脚本施加边界条件和载荷,实际操作可直接在界面中选择对应区域设置。

求解与结果分析

完成上述设置后,提交作业进行求解。求解完成后,可查看模型在压缩过程中的应力、应变分布以及位移变化。例如,通过 ABAQUS 的后处理模块,绘制应力云图,观察折叠过程中应力集中区域,这对于分析结构的薄弱点和稳定性非常关键。

`python

# 代码模拟查看结果(实际在界面中操作)

odb = openOdb(path = 'Job - 1.odb')

step = odb.steps['Step - 1']

frame = step.frames[-1]

stress = frame.fieldOutputs['S']

stress.printField()

`

这段代码展示了通过脚本获取并打印应力结果,实际操作在 ABAQUS 后处理界面可直观查看各种云图和数据图表。

通过 ABAQUS 对双稳态折纸立方体折叠过程的模拟,我们能深入了解其力学行为,为进一步优化结构设计和拓展应用提供有力依据。希望大家也能尝试探索这个有趣的模拟过程!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐