pfc3d三维接触力组构图。 以单轴压缩试验和单剪试验为例展示效果。 直接在软件内生成,无需导出数据再画图。 云图颜色表示不同方向接触力的个数。
在岩土力学等相关研究领域,PFC3D(Particle Flow Code in 3 Dimensions)是一款强大的离散元数值模拟软件。其中,三维接触力组构图的绘制对于理解颗粒间相互作用有着重要意义。今天咱们就以单轴压缩试验和单剪试验为例,来看看如何在PFC3D中直接生成接触力组构图,无需导出数据再进行绘制,并且利用云图颜色来表示不同方向接触力的个数。
单轴压缩试验下的接触力组构图实现
在PFC3D里,我们先构建单轴压缩试验的模型。假设有这么一段基础代码来初始化颗粒集合:
# 创建颗粒集合 ball.set_radius(0.01, 0.02) # 设置颗粒半径范围 ball.gen(region.cylinder(0, 0, 0, 0, 0, 1, 0.1)) # 在圆柱区域内生成颗粒上述代码简单来说,就是设定颗粒半径在0.01到0.02之间,然后在一个高为1,半径为0.1的圆柱区域内生成颗粒,这就模拟了单轴压缩试验中的试件部分。
接着,为了施加轴向压力,我们可以这样写代码:
# 施加轴向压力 wall.create(1, 0, 0, 0, 0, 1, 0, 0, 0) # 创建底部墙体 wall.create(0, 0, -1, 0, 0, 1, 0, 0, 0) # 创建顶部墙体 f = servo() # 创建伺服控制对象 f.target(1, vel=0, goal=-0.001) # 顶部墙体以0.001的速度向下移动施加压力这里先是创建了底部和顶部的墙体,然后通过伺服控制对象,让顶部墙体以一定速度向下移动,以此来模拟单轴压缩的加载过程。
在模拟完成后,要绘制三维接触力组构图且用云图颜色表示不同方向接触力个数,PFC3D提供了相应的命令:
# 绘制接触力组构图 plot.contact_force(color='direction') # 以方向作为云图颜色依据绘制接触力图这里的plot.contact_force函数就是关键,通过color='direction'参数,使得云图颜色能直观地展示不同方向接触力的个数,这样我们就能很清晰地看到在单轴压缩过程中,颗粒间不同方向接触力的分布情况。
单剪试验下的接触力组构图实现
对于单剪试验,模型构建又有所不同。先看构建颗粒区域的代码:
# 创建单剪试验颗粒区域 ball.set_radius(0.005, 0.01) # 设置颗粒半径 ball.gen(region.block(0, 0.2, 0, 0.2, 0, 0.1)) # 在长方体区域生成颗粒这段代码设置颗粒半径范围,并在一个长0.2,宽0.2,高0.1的长方体区域内生成颗粒,构建了单剪试验试件的颗粒部分。
pfc3d三维接触力组构图。 以单轴压缩试验和单剪试验为例展示效果。 直接在软件内生成,无需导出数据再画图。 云图颜色表示不同方向接触力的个数。
接下来设置剪切边界条件:
# 设置剪切边界条件 wall.create(1, 0, 0, 0, 0, 0.1, 0, 0, 0) # 左侧墙体 wall.create(-1, 0, 0, 0.2, 0, 0.1, 0, 0, 0) # 右侧墙体 wall.create(0, 1, 0, 0, 0, 0.1, 0, 0, 0) # 前侧墙体 wall.create(0, -1, 0, 0, 0.2, 0.1, 0, 0, 0) # 后侧墙体 wall.create(0, 0, 1, 0, 0, 0, 0, 0, 0) # 底部墙体 wall.create(0, 0, -1, 0, 0, 0.1, 0, 0, 0) # 顶部墙体 f1 = servo() # 伺服控制对象1 f1.target(1, vel=0.001, goal=0) # 右侧墙体施加水平速度这里创建了六个墙体来围住颗粒,形成封闭空间,并且通过伺服控制对象让右侧墙体以0.001的速度水平移动,从而实现单剪的加载。
最后绘制接触力组构图的代码和单轴类似:
# 绘制单剪试验接触力组构图 plot.contact_force(color='direction') # 同样以方向区分颜色绘制通过这行代码,我们就能得到单剪试验下的三维接触力组构图,云图颜色依旧反映着不同方向接触力的个数,方便我们分析单剪过程中颗粒间力的相互作用。
通过单轴压缩试验和单剪试验在PFC3D中的实践,我们能直接利用软件生成非常直观的三维接触力组构图,云图颜色这一表示方式更是让不同方向接触力个数的分布一目了然,为我们深入研究颗粒材料的力学特性提供了有力的可视化工具。