PFC中用户可以在plot中绘制自己想要的变量,标量、矢量、张量分别对应UDScalar、UDVector、UDTensor。这三个变量的设定都需要plot中的位置信息(pos),以及数值(value)。
前面文章中讲述了使用UDTensor绘制应力十字架,以及使用UDVector绘制剪力弯矩图(离散元模拟C30混凝土构件)。这里使用UDScalar绘制裂纹热点图,这样三个变量的基本demo就全了,大家可以根据自己需求进行开发使用。
下面的result为单轴算例的结果,outqipao函数就是绘制热点图的函数,需要用户传入模型的轮廓,这里只能绘制矩形试样。用户可以自己去调整搜索的分割数,以及搜索半径。这里的逻辑就是遍历模型中的点,然后以这个点为圆心,计算搜索半径内的裂纹数。
restore result
def outqipao(x_min,x_max,y_min,y_max)
n_split_x=20.0
n_split_y=40.0
x_inri=(x_max-x_min)/n_split_x
y_inri=(y_max-y_min)/n_split_y
sousuo_rad=x_inri
weizhi_count=1
array redianarr(10000)
loop n(1,n_split_x-1)
loop m(1,n_split_y-1)
x_pos=x_min x_inri*n
y_pos=y_min y_inri*m
n_count=0
loop foreach frac dfn.fracture.list
dist=math.sqrt((dfn.fracture.pos.x(frac)-x_pos)^2 (dfn.fracture.pos.y(frac)-y_pos)^2)
if dist<sousuo_rad then
1 =
endif
endloop
p_sc = user.scalar.create(x_pos,y_pos)
n_count =
p_sc =
1 =
endloop
endloop
end
@outqipao([-wlx*0.5*1.1],[wlx*0.5*1.1],[-wly*0.5],[wly*0.5])
这里显示出运行结果,不光颜色,大小也可以看出裂纹的热度。
注意这个函数对搜索分割数和搜索半径比较敏感,用户可以进行调整。
半径扩大到x_inri的两倍时,过渡性会更加好点。
分割数为30,60时,整个精度也会高很多。
这个处理方式目前应该还没人做过,大家感兴趣可以将这个方法引入自己论文中,可以比较直观的看出模型中裂纹数目的区别。