技术邻 > CAE仿真 > Ansys ansys apdl张弦梁拉索滑移? 浏览:1062 回答:1 版本是2025R1,想要模拟一个张弦梁的拉索滑移的过程,我是对撑杆的下端节点施加了一个位移,但是计算之后的结果就是这个撑杆会滑移离开拉索。 想请问一下,是因为我没有生成接触对的原因吗? 并且我的命令流里面有生成接触对的命令,但是就是无法生成,请大神们教教我,到底错在哪里,已经被折磨了三个月了
/clear
/prep7
/units,si
! 1. 创建所有关键点
k,1,-35.975,25.1458,35.706 ! 上弦关键点1(原21.289→25.1458)
k,2,-35.975,10.0366,35.706 ! 上弦关键点2(原11.824→10.0366)
k,3,-35.975,-5.0726,35.706 ! 上弦关键点3(原-7.057→-5.0726)
k,4,-35.975,-20.1818,35.706 ! 上弦关键点4(原-16.481→-20.1818)
k,5,-35.975,-35.291,35.706 ! 下弦支座关键点(不变)
k,6,-35.975,40.255,35.706 ! 拉索锚固关键点(不变)
k,7,-35.975,25.1458,26.351 ! 撑杆下关键点(原21.171→25.1458)
k,8,-35.975,10.0366,23.124 ! 撑杆下关键点(原11.727→10.0366)
k,9,-35.975,-5.0726,23.124 ! 撑杆下关键点(原-7.122→-5.0726)
k,10,-35.975,-20.1818,26.351 ! 撑杆下关键点(原-16.529→-20.1818)
! 2. 拉索滑移关键点
! 偏移量确保接触有效但不穿透
k,11,-35.975,25.1458,26.351 ! 拉索1(原21.171→25.1458)
k,12,-35.975,10.0366,23.124 ! 拉索2(原11.727→10.0366)
k,13,-35.975,-5.0726,23.124 ! 拉索3(原-7.122→-5.0726)
k,14,-35.975,-20.1818,26.351 ! 拉索4(原-16.529→-20.1818)
! 3. 创建所有线(拉索连接滑移关键点)
l,6,11 ! 拉索1
l,11,12 ! 拉索2
l,12,13 ! 拉索3
l,13,14 ! 拉索4
l,14,5 ! 拉索5
l,6,1 ! 主梁1
l,1,2 ! 主梁2
l,2,3 ! 主梁3
l,3,4 ! 主梁4
l,4,5 ! 主梁5
l,1,7 ! 撑杆1
l,2,8 ! 撑杆2
l,3,9 ! 撑杆3
l,4,10 ! 撑杆4
! 4. 定义单元类型
et,1,beam188 ! 主梁单元
keyopt,1,1,1 ! 启用大变形(主梁可能伴随大位移)
et,2,link180 ! 悬索单元(拉索)
keyopt,2,2,0 ! 保留全部自由度(UX/UY/UZ),避免限制滑动方向
et,3,beam188 ! 撑杆单元
keyopt,3,1,1 ! 启用大变形
et,4,mass21 ! 质量单元
et,5,conta175 ! 接触单元(滑移节点)
keyopt,5,1,0 ! 包含UX/UY/UZ平动自由度(默认,但需显式确认)
keyopt,5,5,1 ! 自动接触闭合(CNOF=ON),解决初始间隙问题
keyopt,5,6,2 !
keyopt,5,12,0 ! 标准模式
keyopt,5,2,1 ! 罚函数
keyopt,5,4,1 ! 指定接触法向方向
et,6,targe170 ! 目标单元(索体)
keyopt,6,1,0 ! 正确取值:0=直线段目标(三维空间中有效)
keyopt,6,2,0 ! 不限制目标单元的自由度方向(默认,三维兼容)
keyopt,6,3,1 ! 保留所有节点自由度信息(包括UZ)
keyopt,6,9,0 ! 不抑制任何自由度传递(确保接触单元能识别UZ)
etlist
! 5. 定义材料属性
mp,ex,1,2.06e11 ! 主梁材料
mp,nuxy,1,0.3
mp,dens,1,7850
mp,ex,2,1.95e11 ! 拉索/撑杆材料
mp,nuxy,2,0.3
mp,dens,2,7850
! 6. 定义截面
sectype,1,beam,hrec
secdata,0.8,1.1,0.035,0.035,0.035,0.035 ! 主梁截面
sectype,2,link ! 悬索截面(保持LINK180)
secdata,8.031e-03
sectype,3,beam,ctube ! 撑杆截面(BEAM188)
secdata,0.05,0.055
! 7. 网格划分
! 主梁网格
lsel,s,,,6,10,1 ! 主梁线编号6-10
latt,1,,1,,,,1 ! 为选中线设置属性
lesize,all,,,3 ! 设置网格划分参数
lmesh,all ! 划分网格
allsel ! 全选所有实体
nsel,all ! 选择所有节点
esel,all ! 选择所有单元
! 撑杆网格
lsel,s,,,11,14,1 ! 撑杆线编号11-14
latt,2,,3,,,,3 ! 为选中线设置属性
lesize,all,,,5 ! 设置网格划分参数
lmesh,all ! 划分网格
allsel ! 全选所有实体
nsel,all ! 选择所有节点
esel,all ! 选择所有单元
! 悬索网格
lsel,s,,,1,5,1
latt,2,,2,,,,2 ! 为选中线设置属性
lesize,all,,,16 ! 设置网格划分参数
lmesh,all ! 划分网格
elist ! 确认显示LINK180单元(编号≥1)
allsel ! 全选所有实体
nsel,all ! 选择所有节点
esel,all ! 选择所有单元
! 8.定义实常数10
real,10
r,10,0.05,0.001,0.01,1e5,0.5,,0.0001,0.1 !
! R1=0.05 → 搜索半径(覆盖可能的几何间隙)
! R2=0.001 → 初始接触容差
! R3=0.01 → 最大自动闭合间隙
! R4=1e5 → 罚函数刚度(适中值,平衡稳定性与收敛性)
! R5=0.5 → 接触阻尼(减少迭代震荡)
! R8:摩擦系数=0.1(可选,若需考虑滑动摩擦,防止无约束滑动)
! 9.定义接触对
! 定义目标面(拉索线)
lsel,s,,,1,5 ! 选择拉索线
nsll,s ! 选择线上所有节点
cm,targ_nodes,node ! 创建目标节点组件
type,6 ! TARGE170单元
real,10
mat,2
esurf,1
allsel
! 定义接触面(撑杆下端节点)
ksel,s,,,7,10 ! 选择撑杆下端关键点
nslk,s ! 关联节点
cm,cont_nodes,node
type,5 ! CONTA175单元
real,10
mat,2
eintf,node,line ! 节点-线接触自动生成(更可靠)
allsel
! 10. 拉索预张力
lsel,s,,,1,5 ! 对拉索施加初应变
esll,s
inistate,set,dtyp,epel
inistate,defi,,,,,1.9305e-3
allsel
! 11. 质量单元
! 关键点1-4的质量
allsel
ksel,s,,,1,4
nslk,s
*get,nodnum,node,0,count
*dim,aa,array,nodnum,4
*get,nd,node,0,num,min
*do,i,1,nodnum,1
aa(i,1)=nd
aa(i,2)=Nx(nd)
aa(i,3)=Ny(nd)
aa(i,4)=Nz(nd)
nd=NDNEXT(nd)
*enddo
*do,i,1,nodnum
r,2,5786,5786,5786,0,0,0
type,4
real,2
e,aa(i)
*enddo
allsel
! 关键点5和6的质量
allsel
ksel,s,,,5,6
nslk,s
*get,nodnum,node,0,count
*dim,bb,array,nodnum,4
*get,nd,node,0,num,min
*do,i,1,nodnum,1
bb(i,1)=nd
bb(i,2)=Nx(nd)
bb(i,3)=Ny(nd)
bb(i,4)=Nz(nd)
nd=NDNEXT(nd)
*enddo
*do,i,1,nodnum
r,3,5106,5106,5106,0,0,0
type,4
real,3
e,bb(i)
*enddo
allsel
! 关键点7-10的质量
allsel
ksel,s,,,7,10
nslk,s
*get,nodnum,node,0,count
*dim,cc,array,nodnum,4
*get,nd,node,0,num,min
*do,i,1,nodnum,1
cc(i,1)=nd
cc(i,2)=Nx(nd)
cc(i,3)=Ny(nd)
cc(i,4)=Nz(nd)
nd=NDNEXT(nd)
*enddo
*do,i,1,nodnum
r,4,260,260,260,0,0,0
type,4
real,4
e,cc(i)
*enddo
allsel
! 12. 约束
ksel,s,,,5 ! 下弦支座关键点
nslk,s
d,all,ux,0 ! 限制X向平动
d,all,uy,0 ! 限制Y向平动
d,all,uz,0 ! 限制Z向平动
! 释放所有转动自由度(ROTX/ROTY/ROTZ),模拟铰支座
allsel
ksel,s,,,6 ! 拉索锚固关键点
nslk,s
d,all,ux,0 ! 限制X向平动
d,all,uy,0 ! 限制Y向平动
d,all,uz,0 ! 限制Z向平动(锚固点固定不动)
allsel
ksel,s,,,7,10 ! 选择关键点7,8,9,10(模拟铰接)
nslk,s ! 选择这些关键点上的节点
d,all,rotx,0 ! 约束绕X轴的转动
d,all,roty,0 ! 约束绕Y轴的转动
d,all,rotz,0 ! 约束绕Z轴的转动
allsel
ksel,s,,,1,4 ! 选择关键点1,2,3,4(模拟铰接)
nslk,s ! 选择这些关键点上的节点
d,all,rotx,0 ! 约束绕X轴的转动
d,all,roty,0 ! 约束绕Y轴的转动
d,all,rotz,0 ! 约束绕Z轴的转动
allsel
! 13. 添加荷载并求解
nsel,s,node,,32 ! 选择节点32
d,all,uy,0.6 ! 在节点32上施加Y方向的位移0.6米
allsel
finish
/solu
antype,static ! 静力分析
nlgeom,on ! 开启几何非线性(悬索大变形+接触滑动)
sstif,on ! 自动更新刚度矩阵(接触状态变化时)
nsubst,200,500,100 ! 最小子步100,最大500,初始200(细化滑动过程)
autots,on ! 自动时间步长(根据刚度变化调整子步)
time,3.0 ! 总时间3(对应3个荷载步)
! 收敛准则:力+位移双控,放宽接触问题收敛标准
cnvtol,f,1e-3,0.1,0 ! 力收敛容差1e-3,参考力取10%
cnvtol,u,1e-4,0.1,0 ! 位移收敛容差1e-4,参考位移取10%
cnvtol,m,1e-3,0.1,0 ! 力矩收敛容差(针对梁单元)
neqit,500 ! 最大迭代次数500
! 分步求解
solve,next ! 第一荷载步(位移0.1米)
solve,next ! 第二荷载步(位移0.2米)
solve,next ! 第三荷载步(位移0.2米)
! 14. 后处理查看滑移结果
/post1
set,last ! 读取最后结果
plnsol,u,sum ! 整体位移云图(检查是否有异常跳动)
pldisp,1 ! 显示变形后的形状和变形前的轮廓(虚线)
cmsel,s,cont_nodes ! 选择接触节点
! 输出关键节点滑动轨迹
cmsel,s,cont_nodes ! 选择滑移节点组件
*get,node1,node,,num,min
prnsol,u,comp ! 输出滑移节点各方向位移
*do,i,1,3 ! 输出3个荷载步的滑动位置
set,i
*get,u1,node,node1,u,x
*get,u2,node,node1,u,y
*get,u3,node,node1,u,z
*msg,,['荷载步',i,': 滑移节点坐标 (',u1,',',u2,',',u3,')']
*enddo
cmsel,s,targ_nodes ! 选择目标节点
! 输出关键节点滑动轨迹
cmsel,s,targ_nodes ! 选择滑移节点组件
*get,node1,node,,num,min
prnsol,u,comp ! 输出滑移节点各方向位移
*do,i,1,3 ! 输出3个荷载步的滑动位置
set,i
*get,u1,node,node1,u,x
*get,u2,node,node1,u,y
*get,u3,node,node1,u,z
*msg,,['荷载步',i,': 滑移节点坐标 (',u1,',',u2,',',u3,')']
*enddo
这个是我的命令流,请大神们看看哪里有问题