当前位置:文档之家› flac怎样输出制定节点的应力值

flac怎样输出制定节点的应力值

flac怎样输出制定节点的应力值
flac怎样输出制定节点的应力值

怎样输出制定节点的应力值

我计算一个模型有几万个节点,我怎么才能把指定的节点应力输出。

指定节点的应力?到底是节点的力嘛,还是单元的应力哦?两个办法:

1. 先plot block model id on,然后找到你想看的那个单元的id,假设是10,然后就plot con szz out on range id 10;

2. 用fish,通过gp_head,gp_near,gp_id等等获得你要的节点,然后可以得到gridpoint的各种信息。

通过flac的fish语言,写节点信息和相关的力到文件

既然,ansys的格式文件能够导入到flac文件,那么用fish肯定能够导出相关的数据,然后再看处理结果。

如题,我建议,

通过flac的fish语言,写节点信息和相关的力,请帮主支持。

如果能够把相关的信息导入到文件,那么就很容易的对数据进行处理。

我先贴一个:

用fish写文件的,当然也是从这个网络上找到的,我解释一下,也不算直接抄袭。

;; Initialization

;初始化

def ini_mesh2tec

IO_READ = 0

;定义读文件关闭吧?!!

IO_WRITE = 1

;定义写文件

IO_FISH = 0

;定义一个???

IO_ASCII = 1

;定义用asci码i

array buf(1)

;定义一个数组,

tec_file = 'tec10.dat'

;打开文件的名字

zone_ngp = z_numgp(zone_head)

;zone 的标志数

end

ini_mesh2tec

;; Write Tecplot File Head

def write_mesh_head

buf(1) = 'TITLE = "Flac3d Mesh to Tecplot Version 10" \n'

buf(1) = buf(1) + 'VARIABLES = "X" "Y" "Z" "XDISP" "YDISP" "ZDISP"\n' buf(1) = buf(1) + 'ZONE T="Tecplot v10" \n'

buf(1) = buf(1) + ' N=' + string(ngp) + ','

buf(1) = buf(1) + ' E=' + string(nzone) + ','

if zone_ngp = 4 then

buf(1) = buf(1) + ' ZONETYPE=FETETRAHEDRON \n'

else

buf(1) = buf(1) + ' ZONETYPE=FEBrick \n'

endif

buf(1) = buf(1) + ' DATAPACKING=POINT \n'

buf(1) = buf(1) + ' DT=(SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE)' status = write(buf,1)

end

;; Write Grid Point Coordinates and Displacements

;写节点信息

def write_gp

p_gp = gp_head

loop while p_gp # null

;这个循环,叫做遍历所有节点

buf(1) = string(gp_xpos(p_gp))

buf(1) = buf(1) + ' ' + string(gp_ypos(p_gp))

buf(1) = buf(1) + ' ' + string(gp_zpos(p_gp))

buf(1) = buf(1) + ' ' + string(gp_xdisp(p_gp))

buf(1) = buf(1) + ' ' + string(gp_ydisp(p_gp))

buf(1) = buf(1) + ' ' + string(gp_zdisp(p_gp))

;这就是传说中的写

status = write(buf,1)

p_gp = gp_next(p_gp)

endloop

end

;; Write Zone Connectivity

;写单元信息

def write_zone

p_z = zone_head

;获得单元的最高号码

loop while p_z # null

;循环,或者叫做遍历

buf(1) = ''

if zone_ngp = 4 then

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 1))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 2))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 3))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 4))) + ' '

else

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 1))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 2))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 5))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 3))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 4))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 7))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 8))) + ' '

buf(1) = buf(1) + string(gp_id(z_gp(p_z, 6))) + ' '

endif

status = write(buf,1)

p_z = z_next(p_z)

endloop

end

;; Main Function

def mesh2tec

status = close

status = open(tec_file,IO_WRITE,IO_ASCII)

if status = 0 then

write_mesh_head

write_gp

write_zone

status = close

;关闭文件

ii = out('Successfully Write Data Into File ' + tec_file)

;显示信息

else

ii=out('Open File Error! Status = ' + string(status))

endif

end

mesh2tec

;调用

把所有的记录文件写到文件中,名字不一样,

那出来给大家共享,如果谁知道谁自动获得最大的记录的编号,

那么这个程序就真正完美了,不过,可以凑合一下哦!!!

文件名是循环生成的哦,最大数是300,请使用的时候,修改这个值 loop iixx_ (1,300)

上面的300,是根据自己的项目变化的哦!!!

def write_log

loop iixx_ (1,300)

logfile11= 'log' + string ( iixx_ ) + '.his'

command

his write iixx_ file logfile11

end_command

end_loop

end

write_log

自动生成的,乖乖,好多哦!!!!

一个一个的看吧!!!

一下是异想天开几点:

1.一个文件写n行,现在是一个文件写2行

2.直接导入到excel,然后就作图

3.想办法和上面的那个loop结合起来,导入到能够画等值线的程序中,如ansys,显示结果!!!

set log on

pr hist

set log off

然后算一下有多少行

就知道有多少纪录了

如何寻求cable中的应力值

试试plot add sel cable grout

可以通过直径显示应力大小,加颜色可以表示出应力方向

补充一下plot add sel cable grout stress

首先谢谢ying111

您所说的是,从图像上确定cable的受力性状;如何确定cable中沿轴线方向任何一点的具体应力值,能否说的更清楚一些!请赐教。

可以试试:

hist sel cable id=n grout stress x,y,z

请问大虾们,print gp disp出来的数据如何保存吗??

使用命令中的文件菜单显示记录功能。logfile

设置log打开

刚才试了一下好象不行:仅给出这样一个文件:

;****************************************

;Log File Started 13:17:48 Thu Apr 15 2004

;Using FLAC3D version 2.10-239

;By: Itasca Consulting Group, Inc.

; Minneapolis, MN USA

;Job:

Flac3D>

;Log File Ended 13:18:47 Thu Apr 15 2004

;****************************************

不知道问题出在什么地方。

最好的办法是:hist write 1(或你前面记录的任何因素,作为纵坐标;最多可以写12个因素)vs (或你前面记录的任何因素,作为横坐标)(skip 步数)file 你定义的文件名。这样可以任意输出你需要点的或区域的位移历史或应力历史的数据,保存在记事本文件中很方便应用的。比print 好多了!

log file配合list命令

FLAC的缺省计算模式就是平面应变问题.如要进行平面应力分析,设定命令: config P_stress

understand it?

相关主题
文本预览
相关文档 最新文档