在学习了版主dynamax 的《用tecplot对flac3d计算结果进行后处理》后,很受启发,鉴于Sufer也是一个比较方便的出等值线的软件,所以抛砖引玉,编制了flac3d计算结果导出到sufer可以处理的数据的命令流,这个命令流可以同时出x方向位移和y方向位移等值线图以及最大主应力和最小主应力等值线图。关于如何用sufer对flac3d计算结果进行后处理,我给出了一个简单的边坡的例子以及录像供大家学习。命令流和资料已经传到flac的共享空间中。
SimWe个人空间'wL5mB-hw[0]
最后,呵呵,预祝大家端午节快乐......
DJT
Nq5|a0
下面为flac3d中边坡三次开挖的位移矢量动画图 和 sufer中出的位移等值线图。
d\!R)t~3Px4i:K4?g0
;**********************************************************
SimWe个人空间Ve#y|4_
g^9K
[
;---本程序是将flac3d计算的位移和应力输出为sufer的格式
tes
}I*Z `
o0
;---Code by haitang 2006-05-30
9i,]BIB2L_.g#B&Z\0
;**********************************************************
SimWe个人空间 jo.X+air-Mr`
new
SimWe个人空间
g*leZk:c.gB
res Slope_第三步开挖后.SAV ;这里改成你要输出数据的sav文件。
}r&]-_m0
SimWe个人空间([?3LLst
;; Initialization
(qpF^x3W7PJ0
def initialization
SimWe个人空间Owu:b-n|-_0X
IO_READ = 0
SimWe个人空间t!b1Zvw^-QJ
IO_WRITE = 1
SimWe个人空间
KJt6EId3\5R
IO_FISH = 0
SimWe个人空间6cW|rF
IO_ASCII = 1
SimWe个人空间0E{%\Ru_6Io*u
Sufer_dispX= '01_Sufer_dispX.txt'
;Nm&t;y*so0
Sufer_dispY= '02_Sufer_dispY.txt'
k;HAL%VH*Z A0
Sufer_Sigma1='03_Sufer_Sigma1.txt'
SimWe个人空间&j)WEk+c1e}
Sufer_Sigma3='04_Sufer_Sigma3.txt'
SimWe个人空间*?\*N-s$l}.^
array message(1)
SimWe个人空间7ZcL0C,_V;i3\
end
SimWe个人空间XFq4_4nAmj\M
initialization
SimWe个人空间*q.RA{p2t,Z:SL&q
-N9mhz5t)X$`F7F0
def writehead
;GR`K~&PU0
pnt1=zone_head
SimWe个人空间6F0T1tr2V8@ca0[7V r.d
pnt2=gp_head
SimWe个人空间Z5Q:iq3b@wVH"Zey
Z_total=0
SimWe个人空间7}B S~b's r
P_total=0
SimWe个人空间p
ppl-]1jxu
loop while pnt1 # null
SimWe个人空间D)n8T;h(K
Z_total=Z_total+1
SimWe个人空间-~vj_*]qg^ H
pnt1=z_next(pnt1)
Z%TB'DCQt3O5_'nlKb0
endloop
SimWe个人空间U)yR$Hsb_b,Y
SimWe个人空间$}}5T/M5g9UG A
loop while pnt2 # null
Ak'@,}M4o`0
P_total=P_total+1
Y0mvB$o:gF0
pnt2=gp_next(pnt2)
UuV'DwG]0
endloop
SimWe个人空间/G1h5Nx-p&f};u
end
SimWe个人空间8Ab9S{nu{FDp
writehead
V1Q$ty;RtinK'`0
SimWe个人空间pW$HG5Zk
Y
define GetZoneSigma1
SimWe个人空间0O9l$YZvV(k;S(l
Z1_p=zone_head
SimWe个人空间8Tp-T5J5]b j
loop n (1,Z_total)
z"T_-l})m#m&t0
Z1_No=z_id(Z1_p)
SimWe个人空间,S$P*Y A+XTg6e
message(1)= string(z_xcen(Z1_p))
.`tHB/~!N [6Ii ] EYi0
message(1)=message(1)+','+string(z_ycen(Z1_p))
(_ZKBd4Z+F0
message(1)=message(1)+','+string(z_sig3(Z1_p)/1.0e6)
SimWe个人空间{-H9s)w+e;x2rq
status = write(message,1)
v:O2Tl cH0
Z1_p=z_next(Z1_p)
SimWe个人空间`\
U"lz6Be9N
endloop
SimWe个人空间 pN9_4tiy,Y6o
END
tO.XBT'F0
X:Gj3|$f#o0
define GetZoneSigma3
SimWe个人空间mO$H0pb\k
Z1_p=zone_head
[ nQ&z|nU0
loop n (1,Z_total)
SimWe个人空间!X7x3B5k"|
fj:m8H
Z1_No=z_id(Z1_p)
SimWe个人空间,Gn(yx5H$]
vI
message(1)= string(z_xcen(Z1_p))
SimWe个人空间t:wK:rL5m;Y7k8fu
message(1)=message(1)+','+string(z_ycen(Z1_p))
SimWe个人空间5v7`Q7@q7s
message(1)=message(1)+','+string(z_sig1(Z1_p)/1.0e6)
SimWe个人空间+m)h,rF/z7L s~*iw
status = write(message,1)
@{O%u.]#}Y$h-VA0
Z1_p=z_next(Z1_p)
SimWe个人空间$W2Ku/d:MXs
endloop
t!xV*uS'U5d0
END
SimWe个人空间 z`2zH,[ N!g2e#R
SimWe个人空间GrR`$xgu(cH
DEFINE GetGPDispX
)s O+mE{VFu,W0
P1_p=gp_head
SimWe个人空间aB4I4F#v-Il/{
loop n (1,P_total)
Zz8ou#Mf'^ pCs0
node_id=gp_id(p1_p)
SimWe个人空间0{l6^L/{G
message(1)= string(gp_xpos(P1_p))
SimWe个人空间1E0S&zl
@,P!F
message(1)=message(1)+','+string(gp_ypos(P1_p))
SimWe个人空间5D.m:pNc
message(1)=message(1)+','+string(gp_xdisp(P1_p)*1000)
SimWe个人空间b [^F%F*D o2R%?tN^
status = write(message,1)
'a2~`jD7~+q0
P1_p=gp_next(P1_p)
-XYi{ L8G0
endloop
*Y[:\wJh0
END
k?"Cp&G5d(n0
n|c9Z"~)r;N0
DEFINE GetGPDispY
SimWe个人空间;]!s*a;P1{
y4e#] {,x
g%m"D3x
P1_p=gp_head
+R(|8SxWOvv0
loop n (1,P_total)
SimWe个人空间y(huwO`*?e
node_id=gp_id(p1_p)
FCG9Tu}4k:S0
message(1)= string(gp_xpos(P1_p))
SimWe个人空间5].W5h+nHF)f`
message(1)=message(1)+','+string(gp_ypos(P1_p))
SimWe个人空间!w&A!Mu7R"V
message(1)=message(1)+','+string(gp_ydisp(P1_p)*1000)
SimWe个人空间/?)D G+n:j)V
status = write(message,1)
SimWe个人空间NK5Eh^
P1_p=gp_next(P1_p)
SimWe个人空间3?aK/t
Q
K@f
endloop
'sz.Vk`|2ym0
END
n;P G`8s0
-a;@f&PH%dq9Zs0
; Main Function
:Mu{Q"r+N+e4p0
def haitang
&q/Rh"\ImM0
message(1)=' \n'
wgH2{7]Nj0
message(1)=message(1)+'------------------------------------------------------------------ \n'
SimWe个人空间J1I5x^#U/f[k
message(1)=message(1)+'This is a free soft for exporting the data from Flac3d to Sufer! \n'
tt/I
r$?J0
message(1)=message(1)+' Code by haitang 2006-05-31 于端午节 \n'
;iw9}CL:l(}?0A0
message(1)=message(1)+'------------------------------------------------------------------ \n'
SimWe个人空间1Yo F1| @"|eQj3\
message(1)=message(1)+'The Number of Nodes and Elements \n'
SimWe个人空间
~*y~ZE1rP
printmessage=out(message(1))
SimWe个人空间.Xfe
\:Hd]G8H
printmessage=out('Z_total= '+string(Z_total)+' P_total= '+string(P_total))
SimWe个人空间^ jb1T1i
status = close
)drKabR,o0
status = open(Sufer_dispX,IO_WRITE,IO_ASCII)
SimWe个人空间 Y7ceug
if status = 0 then
SimWe个人空间dGV7UP5p
GetGPDispX
N O(@ `7fVy/}0
status = close
SimWe个人空间W"Yn^.PME"r
ii = out('Successfully Write Data Into File ' + Sufer_dispX)
SimWe个人空间
S-W#dm}0G
else
DG7Mq5A0
ii=out('Open File Error! Status = ' + string(status))
o^0G1V1C,@0
endif
n.\$}8G$y7kdW.l0
SimWe个人空间/V;cW|x6J5c{6V
status = open(Sufer_dispY,IO_WRITE,IO_ASCII)
SimWe个人空间8~G7po1bQ0s`
if status = 0 then
SimWe个人空间iI#B2L,a;CK0g
GetGPDispY
SimWe个人空间-gA.[R;^*mx5y)S
status = close
SimWe个人空间%s-YJ4t C
ii = out('Successfully Write Data Into File ' + Sufer_dispY)
SimWe个人空间4~#] tF[E
else
SimWe个人空间Y`-_:j8u0Z#D7D6~CN
ii=out('Open File Error! Status = ' + string(status))
SimWe个人空间8cd7b5d0R{*Ez#V.R
endif
fx/ux;Z(WAFc0
SimWe个人空间tJKHg)nV
status = open(Sufer_Sigma1,IO_WRITE,IO_ASCII)
r"Wv7O8[6A]0
if status = 0 then
iE/H,MtJm,V0
GetZoneSigma1
SimWe个人空间 O;L)D'm%yoME
status = close
l
^9a G)|hPK0
ii = out('Successfully Write Data Into File ' + Sufer_Sigma1)
SimWe个人空间Ro'?FV&Q"^[
else
SimWe个人空间U FM6sz)Ms.@
ii=out('Open File Error! Status = ' + string(status))
8F D6L{'ZY0
endif
SimWe个人空间3[L:R;VgwY
SimWe个人空间3S3C$ZuNVIr8q+\
status = open(Sufer_Sigma3,IO_WRITE,IO_ASCII)
SimWe个人空间2hQ
@r'u|
if status = 0 then
SimWe个人空间C`E*]d ^wOn
GetZoneSigma3
SimWe个人空间+u'ZE+ZG:oeb`
status = close
SimWe个人空间,vD2H2MC+Wi5{
ii = out('Successfully Write Data Into File ' + Sufer_Sigma3)
SimWe个人空间L9c't/xB
else
1x
y6b ~]~j'@1j!|0
ii=out('Open File Error! Status = ' + string(status))
HZJ8?A0
endif
SimWe个人空间b;c5s2?E&?
end
5C|}9yP,W"H%Tr5?0
haitang
ovh@E%Sm0
SimWe个人空间Y3~2r)v#hg0RKslope_disp.gif
SimWe个人空间,L R1y8|"RX
SimWe个人空间i/t_\4f'ysufer.gif