问题来源于某二手交易平台,这位卖家在Flac3d里面实现了以下效果,让人不得不膜拜大佬。
图1-1 问题来源
选取一跨简支梁作为案例,梁长l=10m,在全梁上受集度为q=10kN/m的均布荷载作用。计算图示如下:
图2-1 计算图示
根据材料力学知识,易知本案例中梁体弯矩呈抛物线分布,最大弯矩值Mmax=125kN·m。计算代码参考内置案例"Simple Beam—Two Equal Concentrated Loads—Beam Elements"进行编写,详情如下:
model new
struct beam create by-line ( 0, 0, 0) ( 10 0, 0) id=1 segments= 50
struct beam property young=2e11 poisson=0.30 cross-sectional-area=6e-3 moi-polar=0.0 moi-y=200e-6 moi-z=200e-6
struct node fix velocity-y rotation-x rotation-z
struct node fix velocity-z range union position-x=0 position-x=10
struct beam apply 0 -1e4
model solve ratio-local 1e-7
由图2-2可知,Flac3D计算出的最大弯矩值与理论值基本一致。计算完成后,将梁单元弯矩以“.txt”的格式输出,代码如下:
fish def _dataExport
;将第一个端点至倒数第二个端点处的弯矩值依次输出至table
count = 1
loop foreach sp struct.list
np = struct.node(sp,1)
table.x(1,count) = struct.node.pos.x(np)
table.y(1,count) = struct.beam.moment.y(sp,1)
count += 1
endloop
;输出另一侧端点处的弯矩值至table
np = struct.node(sp,2)
table.x(1,count) = struct.node.pos.x(np)
table.y(1,count) = struct.beam.moment.y(sp,2)
end
@_dataExport
;将table数据输出至txt文件
table '1' export 'moment.txt'
图2-3 弯矩输出结果
数据处理步骤如下:
(1)新建一个excel文件并打开
(2)在excel内打开moment.txt文件
(1)绘制曲线图。将处理好的数据导入origin并绘制折线图。
对于开口向下的抛物线,到这一步已经完成填充。对于开口向上的抛物线,则需要双击坐标轴后按步骤添加网格附加线。左、右向开口的曲线亦按上述步骤操作。
填充后的图形如下所示:
(4)创建图例。点击左侧工具栏按钮添加颜色标尺,并右键选择属性,勾选隐藏头尾两级。
(5)根据个人审美,在Origin中调整图片大小、坐标轴显示格式、图例显示格式等。最终成果如下所示。
图3-1 弯矩图
以上仅为个人见解。水平有限,难免有错,敬请谅解。读者若能在Flac3D中直接实现弯矩图绘制,恳请大方分享。