zzshenlu 发表于 2006-3-31 10:35:14

平面渗流计算—迭代计算浸润线

对网上一位老兄的渗流计算程序进行了修改,计算稳定渗流,根据前次计算结果,不断修改浸润线出口位置。迭代过程比较简单,容易收敛。算例是《土工原理与计算》第三章中的矩形土坝。与初学者分享。
fini
/cle
/prep7
!定义材料,建模,剖分网格
et,1,plane55
mp,kxx,1,1e-7
k,1,0,0
k,2,4,0
k,3,4,6
k,4,0,6
a,1,2,3,4
lesize,1,,,10
lesize,2,,,15
mshape,0
mshkey,1
mat,1
amesh,all
nummrg,node
*get,n_max,node,,num,max
*dim,n_temp,array,n_max
!定义上游边界条件
lsel,s,line,,4
nsll,s,1
d,all,temp,6
!定义下游边界条件
lsel,s,line,,2
nsll,s,1
*get,n_num,node,,count
*dim,n_no,array,n_num
ii=0
*do,i,1,n_max
*if,nsel(i),eq,1,then
ii=ii+1
n_no(ii)=i
*endif
*enddo
cyd=2
nsel,r,loc,y,0,cyd
*get,n_num1,node,,count
*dim,n_no1,array,n_num1
ii=0
*do,i,1,n_max
*if,nsel(i),eq,1,then
ii=ii+1
n_no1(ii)=i
*endif
*enddo
*do,i,1,n_num1
d,n_no1(i),temp,ny(n_no1(i))
*enddo
!第一次求解
/solu
antype,0
solve
fini
!迭代计算
*do,com_num,1,5
/post1
set,1
*do,i,1,n_max
n_temp(i)=temp(i)
*enddo
!重新定义下游边界条件
/solu
lsel,s,line,,2
nsll,s,1
ddel,all,temp
cyd1=0
*do,i,1,n_num
*if,n_temp(n_no(i)),ge,ny(n_no(i)),then
d,n_no(i),temp,ny(n_no(i))
*if,ny(n_no(i)),gt,cyd1,then
cyd1=ny(n_no(i))
*endif
*endif
*enddo
*if,abs(cyd-cyd1),gt,0.001,then
cyd=cyd1
*else
*exit
*endif
solve
fini
*enddo

jiangyu5291169 发表于 2009-7-24 10:22:49

计算结果有没有验证过啊?老兄,我用你的代码做出来的浸润线好像有点问题呀

ylliuhaixin 发表于 2010-3-30 09:48:11

1# zzshenlu
不知道真的假的

hrc2823 发表于 2010-7-25 09:49:19

请假楼主做过三维心墙坝渗流吗 我用这个例子改的算例浸润线在心墙中降低不多 溢出点也高 请教怎么改进 谢谢
页: [1]
查看完整版本: 平面渗流计算—迭代计算浸润线