U型渡槽动水压力荷载施加命令及说明

  • 程序中需要用到ANSYS重启动,因为需提取前一步加速度结果以施加部分动水压力;
  • 默认Y方向为重力方向,X方向为横槽向,Z方向为纵槽向;
  • 需准备地震波文件;
  • 需先将槽底面和槽壁面编为组元:bottom_areas,left_areas,right_areas,U型渡槽下部曲线在水平向既是槽壁,在竖向又是槽底;

pi=3.1415926

H_water=3.6   !槽内水深

R_water=2.3    !半槽宽

rou_water=1000   !水体密度

M_water=rou_water*(2*R_water*(H_water-R_water)+0.5*pi*R_water**2)

!控制点------截面槽底中心处节点
node_control=8450
coord_y_control=ny(node_control)
coord_x_control=nx(node_control)
coord_z_control=nz(node_control)
coord_y_water=coord_y_control+H_water

/prep7
!定义mass21单元
et,99,mass21
!定义弹簧单元
et,98,combin14
!初始实常数
nr=100

!读入地震波
*SET,NT,200      !地震加速度步数
*SET,DT,0.01      !地震加速度步长
*DIM,accel_x,,NT
*DIM,accel_y,,NT
*DIM,accel_z,,NT
*VREAD,accel_x,'accel_x','txt'
(F12.9)
*VREAD,accel_y,'accel_y','txt'
(F12.9)
*VREAD,accel_z,'accel_z','txt'
(F12.9)

!***********************************附加质量(开始)**********************************

!将附加质量的渡槽底面的所有节点编为一个数组

allsel

CMSEL,S,bottom_areas,AREA

NSLA,S,1

*get,n_bottom,node,,count

*dim,node_bottom,array,n_bottom

*get,nmin,node,,num,min

node_bottom(1)=nmin

*do,i,2,n_bottom

*get,nnum,node,nmin,nxth

nmin=nnum

node_bottom(i)=nmin

*enddo

allsel

!将附加质量的渡槽左壁面的所有节点编为一个数组

CMSEL,S,left_areas,AREA

NSLA,S,1

nsel,U,loc,x,coord_x_control-0.001,coord_x_control+0.001

*get,n_left,node,,count

*dim,node_left,array,n_left

*get,nmin,node,,num,min

node_left(1)=nmin

*do,i,2,n_left

*get,nnum,node,nmin,nxth

nmin=nnum

node_left(i)=nmin

*enddo

allsel

!将附加质量的渡槽右壁面的所有节点编为一个数组

CMSEL,S,right_areas,AREA

NSLA,S,1

nsel,U,loc,x,coord_x_control-0.001,coord_x_control+0.001

*get,n_right,node,,count

*dim,node_right,array,n_right

*get,nmin,node,,num,min

node_right(1)=nmin

*do,i,2,n_right

*get,nnum,node,nmin,nxth

nmin=nnum

node_right(i)=nmin

*enddo

allsel

!附加渡槽底面节点质量(竖向地震作用冲击动水压力)

*do,i,1,n_bottom

nnum=node_bottom(i)

m_wv=0.4*M_water/R_water*ARNODE(nnum)

type,99

nr=nr+1

r,nr,0,0,m_wv

real,nr

e,nnum

*enddo

!附加渡槽左壁面节点质量(横向地震作用冲击动水压力)

*if,(H_water/R_water),le,1.5,then

*do,i,1,n_left

nnum=node_left(i)

coord_y=ny(nnum)-coord_y_control

m_wh=0.5*M_water/R_water*(coord_y/H_water+0.5*(coord_y/H_water)**2)

m_wh=m_wh*sqrt(3)*tanh(sqrt(3)*R_water/H_water)*ARNODE(nnum)

!确保附加的节点位于水面以下

*if,coord_y,le,H_water,then

type,99

nr=nr+1

r,nr,m_wh,0,0

real,nr

e,nnum

*endif

*enddo

*else

*do,i,1,n_left

nnum=node_left(i)

m_wh=0.5*M_water/H_water*ARNODE(nnum)

coord_y=ny(nnum)-coord_y_control

!确保附加的节点位于水面以下

*if,coord_y,le,H_water,then

type,99

nr=nr+1

r,nr,m_wh,0,0

real,nr

e,nnum

*endif

*enddo

*endif

!附加渡槽右壁面节点质量(横向地震作用冲击动水压力)

*if,(H_water/R_water),lt,1.5,then

*do,i,1,n_right

nnum=node_right(i)

coord_y=ny(nnum)-coord_y_control

m_wh=0.5*M_water/R_water*(coord_y/H_water+0.5*(coord_y/H_water)**2)

m_wh=m_wh*sqrt(3)*tanh(sqrt(3)*R_water/H_water)*ARNODE(nnum)

!确保附加的节点位于水面以下

*if,coord_y,le,H_water,then

type,99

nr=nr+1

r,nr,m_wh,0,0

real,nr

e,nnum

*endif

*enddo

*else

*do,i,1,n_right

nnum=node_right(i)

m_wh=0.5*M_water/H_water*ARNODE(nnum)

coord_y=ny(nnum)-coord_y_control

!确保附加的节点位于水面以下

*if,coord_y,le,H_water,then

type,99

nr=nr+1

r,nr,m_wh,0,0

real,nr

e,nnum

*endif

*enddo

*endif

!***********************************附加质量(结束)**********************************

!***********************************施加弹簧(开始)**********************************

g_=9.81

temp=(H_water-R_water)/R_water

M1=M_water*(0.571-1.276/((1+temp)**0.627)*(tanh(0.331*temp))**0.932)

w1_quadratic=1.323+0.228*(tanh(1.505*temp))**0.768-0.105*(tanh(1.105*temp))**4.659

w1_quadratic=w1_quadratic*g_/R_water

K1=M1*w1_quadratic

h1=H_water*(1-(temp**0.664)*(0.394+0.097*sinh(1.534*temp))/cosh(1.534*temp))

!计算槽壁施加弹簧点的x坐标

*if,h1,ge,R_water,then

coord_x_spring_0=R_water

*else

coord_x_spring_0=sqrt(R_water**2+(R_water-h1)**2)

*endif

!寻找按高度施加弹簧的节点

coord_y_spring_0=coord_y_control+h1

allsel

CMSEL,S,left_areas,AREA

CMSEL,A,right_areas,AREA

NSLA,S,1

node_find=node(coord_x_spring_0,coord_y_spring_0,coord_z_control)

coord_y_spring_1=ny(node_find)

NSEL,R,loc,Y,coord_y_spring_1-0.001,coord_y_spring_1+0.001

*get,n_spring,node,,count

*dim,node_spring,array,n_spring

*do,i,1,n_spring

nmin=node(0,0,100000)!选择距离(0,0,100000)最近的点

node_spring(i)=nmin

NSEL,U,node,,nmin!去掉刚选出的节点,重新选择

*enddo

allsel

*get,node_max,node,,num,max

dist1=0

*do,i,1,n_spring,2

nnum1=node_spring(i)

node1_x=nx(nnum1)

node1_y=ny(nnum1)

node1_z=nz(nnum1)

nnum2=node_spring(i+1)

node2_x=nx(nnum2)

*if,i,eq,n_spring-1,then

dist2=0

*else

nnum3=node_spring(i+2)

node3_z=nz(nnum3)

dist2=node1_z-node3_z

*endif

!创建中间节点

node_max=node_max+1

n,node_max,(node1_x+node2_x)*0.5,node1_y,node1_z

d,node_max,uy

d,node_max,uz

type,99

nr=nr+1

r,nr,M1*0.5*(dist2+dist1),0,0

real,nr

e,node_max

!创建弹簧(模拟对流动水压力)

type,98

nr=nr+1

r,nr,K1*0.5*(dist2+dist1)

real,nr

e,nnum1,node_max

e,node_max,nnum2

dist1=dist2

*enddo

!***********************************施加弹簧(结束)**********************************

!**********************施加地震加速度和面荷载形式的动水压力(开始)******************************

!查找槽底槽壁节点对应的渡槽截面中间点

allsel

nsel,s,loc,x,coord_x_control-0.001,coord_x_control+0.001

nsel,r,loc,y,coord_y_control-0.001,coord_y_control+0.001

*dim,node_bottom_near,array,n_bottom,2

*do,i,1,n_bottom

nnum=node_bottom(i)

nnum_near=nnear(nnum)

node_bottom_near(i,1)=nnum_near

*enddo

*dim,node_left_near,array,n_left,2

*do,i,1,n_left

nnum=node_left(i)

nnum_near=nnear(nnum)

node_left_near(i,1)=nnum_near

*enddo

*dim,node_right_near,array,n_right,2

*do,i,1,n_right

nnum=node_right(i)

nnum_near=nnear(nnum)

node_right_near(i,1)=nnum_near

*enddo

/solu

ANTYPE,TRANS

TRNOPT,FULL

OUTRES,ALL,ALL

allsel

!第一步计算

t=1

time,DT*t

acel,accel_x(t),accel_y(t),accel_z(t)

kbc,0

nsubst,1

rescontrol,DEFINE,last,last !最后时间步重启

parsav,all,aqueduct_parameter,sav !参数保存

solve

!rescontrol,file_summary

finish

*do,t,2,5

!从结果提取控制点加速度

/POST1

SET,t-1,1

*do,i,1,n_bottom

*get,node_bottom_near(i,2),node,node_bottom_near(i,1),a,x

*enddo

*do,i,1,n_left

*get,node_left_near(i,2),node,node_left_near(i,1),a,y

*enddo

*do,i,1,n_right

*get,node_right_near(i,2),node,node_right_near(i,1),a,y

*enddo

parsav,all,aqueduct_parameter,sav !参数保存

!再次进入求解模块

/solu

ANTYPE,,REST,t-1,last,0

parres,new,aqueduct_parameter,sav !恢复参数

!依据渡槽宽高比施加槽底动水压力荷载(横向地震作用下槽底的冲击动水压力)

*if,(H_water/R_water),lt,1.5,then

*do,i,1,n_bottom

a_wh=node_bottom_near(i,2)

nnum=node_bottom(i)

coord_x_pbh=coord_x_control-nx(nnum)

p_bh=0.5*M_water/R_water*a_wh

p_bh=p_bh*0.5*sqrt(3)*sinh(sqrt(3)*coord_x_pbh/H_water)/cosh(sqrt(3)*R_water/H_water)

F,nnum,FY,p_bh*ARNODE(nnum)

*enddo

*else

*do,i,1,n_bottom

nnum=node_bottom(i)

coord_x_pbh=coord_x_control-nx(nnum)

p_bh=0.5*M_water/H_water/R_water*coord_x_pbh

F,nnum,FY,p_bh*ARNODE(nnum)

*enddo

*endif

!左槽壁(竖向地震槽壁动水压力)

sign_left=(nx(node_left(1))-coord_x_control)/abs(nx(node_left(1))-coord_x_control)

*do,i,1,n_left

a_wv=node_left_near(i,2)

nnum=node_left(i)

coord_y=ny(nnum)-coord_y_control

*if,coord_y,le,H_water,then

p_wv=0.4*M_water/R_water*a_wv*cos(pi*0.5*coord_y/H_water)

F,nnum,FX,p_wv*ARNODE(nnum)*sign_left

*endif

*enddo

!右槽壁(竖向地震槽壁动水压力)

sign_right=(nx(node_right(1))-coord_x_control)/abs(nx(node_right(1))-coord_x_control)

*do,i,1,n_right

a_wv=node_right_near(i,2)

nnum=node_right(i)

coord_y=ny(nnum)-coord_y_control

*if,coord_y,le,H_water,then

p_wv=0.4*M_water/R_water*a_wv*cos(pi*0.5*coord_y/H_water)

F,nnum,FX,p_wv*ARNODE(nnum)*sign_right

*endif

*enddo

time,DT*t

acel,accel_x(t),accel_y(t),accel_z(t)

nsubst,1

allsel

solve

finish

*enddo

!**********************施加地震加速度和面荷载形式的动水压力(结束)******************************

转载于:https://www.cnblogs.com/w-tao13614/p/10468127.html

ANSYS渡槽槽身动水压力的施加(2)——U型渡槽相关推荐

  1. ANSYS渡槽槽身动水压力的施加(1)——矩形渡槽

    前言 依据水工抗震规范中关于渡槽动水压力的部分编一个用于ANSYS渡槽模型动水压力施加的命令流,是我研究生时一直想要做的一件事,原因嘛主要是想对比一下规范提供的方法和ANSYS声学流体单元模拟水体这两 ...

  2. 不使用机器学习的机器视觉_我关于使用机器学习进行体育博彩的发现使博彩公司总能胜出

    不使用机器学习的机器视觉 One afternoon, in the middle of my holidays the thought of using machine learning to pr ...

  3. ANSYS附加动水质量(westergarrd公式)

    在水工结构的抗震计算中,不可避免的需要考虑动水压力的作用,当前规范中一般是要求将动水压力以附加质量的形式考虑,如果对压力用质量形式考虑有疑惑时,可以这样理解:结构发生振动时,会带动周围的水体发生运动, ...

  4. [渝粤教育] 中国地质大学 高层建筑施工 复习题

    <高层建筑施工>模拟题 一.单选题 1.基坑开挖时沿坑底周围或中央开挖排水沟的最小坡度为() A.0.1%~0.2% B.0.2%~0.5% C.0.5%~0.8% D.0.8%~1.0% ...

  5. 2022年最新广西建筑八大员(土建质量员)考试试题题库及答案

    百分百题库提供建筑八大员(质量员)考试试题.建筑八大员(质量员)考试预测题.建筑八大员(质量员)考试真题.建筑八大员(质量员)证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关. 1.砌砖 ...

  6. 怎么作非线性拟合_值得收藏ansys非线性收敛总结

    ansys计算非线性时会绘出收敛图,其中横坐标是cumulative iteration number 纵坐标是absolute convergence norm.他们分别是累积迭代次数和绝对收敛范数 ...

  7. ANSYS预紧力螺栓连接结构(一HyperMesh添加接触单元)

    上节<Hypermesh添加预紧力单元>中应用钢片夹钢板结构介绍了螺栓预紧力的施加方法.在预紧力存在的条件下,钢板与钢片间依靠着摩擦传递力.在有限元计算中,需要通过建立接触,搭建摩擦传力模 ...

  8. windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...

    邮槽创建在服务程序内,可以创建成功, 但外部客户端连接时 m_hMailslot = CreateFile("\\\\.\\mailslot\\zdpMailslot",GENER ...

  9. 一文了解线控制动市场格局——7家公司10款产品盘点

    当驾驶员将车辆的驾驶操控完全移交给自动驾驶车辆的车载计算机系统后,方向盘.油门和刹车,就都完全由电子信号控制了(之前是通过机械液压的方式),这就是所谓的"线控执行".线控执行主要包 ...

最新文章

  1. UA MATH574M 统计学习V Variable Selection: LASSO
  2. Tencent JDK 国产化CPU架构支持分享
  3. laydate点击输入框闪一下不见了_爱剪辑:如何制作抖音、苹果风格的快闪视频...
  4. gradle 查看依赖类库版本_Android studio中查看依赖的第三方库的历史版本和最新版本...
  5. 深度学习在NLP领域的发展之Transformer
  6. 实验吧Web-易-简单的sql注入之3(报错的sql盲注之exp)
  7. JQuery22( JQ原理 Clone)
  8. Spark SQL简介
  9. 从小白开始教你怎样在Eclipse中使用Git(番外) - 各种图标的含义
  10. 用chatgpt做ppt
  11. mysql查询字段大于小于_sql查询大于字段的所有数据,或小于字段的所有数据
  12. 检索 国家自然科学基金
  13. Linux系统信号定义
  14. 当年明月 Vs. 阎崇年
  15. 关于Unity LitJson写入数据报错的问题
  16. 黄鸭兄《傲慢是精英的耻辱,谦虚是精英的责任》摘录
  17. Java开源生鲜电商平台-深刻理解电商的库存架构与解决方案(源码可下载)
  18. 省市县的json数据
  19. 深度学习与计算机视觉教程(4) | 神经网络与反向传播(CV通关指南·完结)
  20. 腾讯微博平台开发,熟悉API结构,获得头像本地保存

热门文章

  1. 【高等数学】第 6 讲 积分
  2. 01 【初识Django】
  3. 狗狗叫c语言,原来狗狗“呜呜叫”有这些含义,主人:我总算看透它了
  4. 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,用Python编写程序,问有多少种摆法?并列举出所有摆法。
  5. java管理和用户用一个入口登录_五、基于Struts的MVC案例:用户登录
  6. 【对未来机器人的畅想】
  7. 搭建repo服务器管理多个git工程
  8. 电脑wifi可以登录qq,但是不可以上网,怎么办?
  9. requests模块基本使用、代理ip、session访问
  10. php虚拟主机搭建微信公众号服务器