yuebeifan 发表于 2011-3-24 11:28

移动荷载同时加载多个点,且荷载不一样怎么实现?

在进行板上加载移动荷载时碰到了两个问题:
问题1:在同一个荷载步同时加载多个点,采用如下方式同时加载时得出结果根本不对。OUTRES,ALL,LAST   !定义输出控制,控制输出文件大小,输出每一步结果
NSUBST,5         !定义时间步长
KBC,0            !定义荷载作用方式,斜坡荷载作用。
AUTOTS,OFF         !不激活自动时间步长
M=NINT(I/NSTEP+0.5)         
TIME,I*DELL                     ! 定义时间点(荷载步结束时刻)
fdele,all,all                   ! 删除以前施加的点荷载

   ANUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   F,nodes(k,1),FZ,-PY(ANUM)          !定义荷载作用单元
   F,nodes(k,2),FZ,-PY(ANUM)
   F,nodes(k,3),FZ,-PY(ANUM)
   F,nodes(k,4),FZ,-PY(ANUM) 问题2:同时加载两个不同点,且每个点的荷载不一样,怎么加载,按照下面的方法加载对吗? F,nodes(M),FZ,-PY(FNUM)
F,nodes(M+1),FZ,-PY(SNUM)

Rainyboy 发表于 2011-3-24 12:22

就目前贴出的代码看不出什么问题……

yuebeifan 发表于 2011-3-24 12:40

本帖最后由 yuebeifan 于 2011-3-24 12:41 编辑

Rainyboy 发表于 2011-3-24 12:22 static/image/common/back.gif
就目前贴出的代码看不出什么问题……
那么如果我要加四十个点这样写对吗?还是把四十点选出来,再统一全部加上去。……
……
*Do,k,1,10
   F,nodes(k,1),FZ,-PY(ANUM)
   F,nodes(k,2),FZ,-PY(ANUM)
   F,nodes(k,3),FZ,-PY(ANUM)
   F,nodes(k,4),FZ,-PY(ANUM)
*enddo
……
……

Rainyboy 发表于 2011-3-24 12:41

回复 3 # yuebeifan 的帖子

nods数组存的是什么?

yuebeifan 发表于 2011-3-24 15:26

Rainyboy 发表于 2011-3-24 12:41 static/image/common/back.gif
回复 3 # yuebeifan 的帖子

nods数组存的是什么?

是预先读取的节点编号。您有联系方式吗?想请教一下。

Rainyboy 发表于 2011-3-24 15:44

回复 5 # yuebeifan 的帖子

那应该就没什么问题,瞬态求解花的时间长,不好调试,所以建议现在自由度较少的简单模型上试一试加载代码,再用到想分析的模型上。

yuebeifan 发表于 2011-3-24 15:53

Rainyboy 发表于 2011-3-24 15:44 static/image/common/back.gif
回复 5 # yuebeifan 的帖子

那应该就没什么问题,瞬态求解花的时间长,不好调试,所以建议现在自由度较少的 ...

简单模型运行可以,但是放在实际结构上时,发现得到的加速度响应图形不对称。全部的移动荷载加载命令流如下,麻烦看一下。!6.板上人行荷载瞬态动力学分析---------------------------------------------------

!初始参数设置
!-------------------------------------------------------
!行走每列人数,人的体重,加载次数
!注意在下面定义结束时刻和加载时,也用到了每一步时间公式
!-------------------------------------------------------
/prep7      
NSTEP=50                  ! 每步荷载分段数
NWS=5*ns                  ! 行走步数   number of strip
NP=10                     ! 行走每列人数   Number of person
wp=60                  ! 人的平均体重 weight of person=60Kg
NLT=NWS+NP                ! 加载次数(由第一个人的行走步数决定)
!计算Reilegh阻尼的系数
FRE1=FI(1)                ! 第一阶频率
FRE2=FI(2)                ! 第二阶频率
PI=3.1415926      
C=0.05                  ! 结构阻尼比
ALFA=2*C*FRE1*FRE2/(FRE1+FRE2)    !质量阻尼系数
BETA=2*C/(FRE1+FRE2)            !刚度阻尼系数
!每步行走频率
*DIM,DIFRE,ARRAY,NLT   !行走频率数组
*DIM,BETIME,ARRAY,NLT!开始时间数组
*DIM,ENTIME,ARRAY,NLT!结束时间数组
*DO,I,1,NLT
DIFRE(I)=fw
*if,I,LT,2,then
BETIME(I)=0
*else
BETIME(I)=BETIME(I-1)+1/DIFRE(I)
*endif
ENTIME(I)=BETIME(I)+1/0.76/DIFRE(I)
*ENDDO
!*VEDIT,BETIME
!*VEDIT,ENTIME   

!定义力的二维数组
ASIZE=100            !数组行数       
*DIM,PY,ARRAY,ASIZE,NLT      !定义荷载为数组,维度最大为100
*DIM,PY1,ARRAY,ASIZE,NLT
*DIM,PY2,ARRAY,ASIZE,NLT
*DIM,PY3,ARRAY,ASIZE,NLT
*DIM,PY4,ARRAY,ASIZE,NLT
*DIM,PY5,ARRAY,ASIZE,NLT
*DO,I,1,NLT
*if,DIFRE(I),LE,2.32,then          !计算荷载系数
   a1=-0.0698*DIFRE(I)+1.211
   a2=0.1052*DIFRE(I)-0.1284
   a3=0.3002*DIFRE(I)-0.1534
   a4=0.0416*DIFRE(I)-0.0288
   a5=-0.0275*DIFRE(I)+0.0608
*else
    a1=-0.1784*DIFRE(I)+1.463
    a2=-0.4716*DIFRE(I)+1.210
    a3=-0.0118*DIFRE(I)+0.5703
    a4=-0.2600*DIFRE(I)+0.6711
    a5=0.0906*DIFRE(I)-0.2132
*endif
DELTT=1/0.76/DIFRE(I) !时间周期×××××××××修改
*DO,J,1,ASIZE
TIM=J*DELTT/ASIZE
PY1(J,I)=a1*sin(pi*TIM/DELTT)
PY2(J,I)=a2*sin(2*pi*TIM/DELTT)
PY3(J,I)=a3*sin(3*pi*TIM/DELTT)
PY4(J,I)=a4*sin(4*pi*TIM/DELTT)
PY5(J,I)=a5*sin(5*pi*TIM/DELTT)
PY(J,I)=wp*GRA*(PY1(J,I)+PY2(J,I)+PY3(J,I)+PY4(J,I)+PY5(J,I))
*ENDDO
*ENDDO
!*VEDIT,PY !检查荷载数组值

!读取行走节点
*DIM,nodes,array,5*ns+1,4   !第一列行走节点
*DO,I,1,5*ns+1
nodes(I,1)=node(32809,41200+(I-1)*kll/ns,11160)
nodes(I,2)=node(33809,41200+(I-1)*kll/ns,11160)
nodes(I,3)=node(34809,41200+(I-1)*kll/ns,11160)
nodes(I,4)=node(35809,41200+(I-1)*kll/ns,11160)
*ENDDO
!*VEDIT,nodes       !写出节点标号,进行检查

NLOAD=NSTEP*NLT   !加载次数
DELL=ENTIME(NLT)/NLOAD   ! 荷载时间步长
!Transient dynamic analysis process
finish
/SOLU
ANTYPE,TRANS   !定义为瞬态动力分析      
Trnopt,full      !完全法进行瞬态动力分析
ALPHAD,ALFA      !定义质量阻尼系数                  
BETAD,BETA       !定义刚度阻尼系数                           
NLGEOM,Off      !不考虑大变形效应                              
nropt,full,,on    !完全NEWTON-Rafason法                     
solcontrol,on   !激活优化缺省值                              
TIMINT,ON   
! 多人行走
!*******四列NP人行走*********!
*DO,I,1,NLOAD
OUTRES,ALL,LAST   !定义输出控制,控制输出文件大小,输出每一步结果
NSUBST,5         !定义时间步长
KBC,0            !定义荷载作用方式,斜坡荷载作用。
AUTOTS,OFF         !不激活自动时间步长
M=NINT(I/NSTEP+0.5)         
TIME,I*DELL                     ! 定义时间点(荷载步结束时刻)
fdele,all,all                   ! 删除以前施加的点荷载
!---------------------------------------------------------------------
!首先每列人数少于NP人,则之前的每个点都要加上单步荷载
   *IF,M,LE,NP,THEN                !因为人数的限制,所以要判断人数是否全部在行走区域
   *Do,k,1,M
    *if,I*DELL,LE,BETIME(M+1),then
   ANUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   F,nodes(k,1),FZ,-PY(ANUM)          !定义荷载作用单元
   F,nodes(k,2),FZ,-PY(ANUM)
   F,nodes(k,3),FZ,-PY(ANUM)
   F,nodes(k,4),FZ,-PY(ANUM)
   *else
   FNUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   SNUM=NINT(100*(I*DELL-BETIME(M+1))/(ENTIME(M+1)-BETIME(M+1)))+1 !求出该时刻最近的荷载值   
   F,nodes(k,1),FZ,-PY(FNUM)
   F,nodes(k,2),FZ,-PY(FNUM)
   F,nodes(k,3),FZ,-PY(FNUM)
   F,nodes(k,4),FZ,-PY(FNUM)
   F,nodes(k+1,1),FZ,-PY(SNUM)
   F,nodes(k+1,2),FZ,-PY(SNUM)
   F,nodes(k+1,3),FZ,-PY(SNUM)
   F,nodes(k+1,4),FZ,-PY(SNUM)
   *endif
   *ENDDO
!---------------------------------------------------------------------
!在中间阶段,每列NP个人都在板上行走   
   *ELSEIF,M,LE,NWS,AND,M,GT,NP
*Do,k,M-NP+1,M
   *if,I*DELL,LE,BETIME(M+1),then
   ANUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   F,nodes(k,1),FZ,-PY(ANUM)          !定义荷载作用单元
   F,nodes(k,2),FZ,-PY(ANUM)
   F,nodes(k,3),FZ,-PY(ANUM)
   F,nodes(k,4),FZ,-PY(ANUM)
   *else
   FNUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   SNUM=NINT(100*(I*DELL-BETIME(M+1))/(ENTIME(M+1)-BETIME(M+1)))+1 !求出该时刻最近的荷载值   
   F,nodes(k,1),FZ,-PY(FNUM)
   F,nodes(k,2),FZ,-PY(FNUM)
   F,nodes(k,3),FZ,-PY(FNUM)
   F,nodes(k,4),FZ,-PY(FNUM)
   F,nodes(k+1,1),FZ,-PY(SNUM)
   F,nodes(k+1,2),FZ,-PY(SNUM)
   F,nodes(k+1,3),FZ,-PY(SNUM)
   F,nodes(k+1,4),FZ,-PY(SNUM)
   *endif
   *ENDDO
!------------------------------------------------------------------------
!结束阶段,有一部分人走出去
*ELSE      
*Do,k,M-NP+1,NWS   
    *if,I*DELL,LE,BETIME(M+1),then
   ANUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   F,nodes(k,1),FZ,-PY(ANUM)          !定义荷载作用单元
   F,nodes(k,2),FZ,-PY(ANUM)
   F,nodes(k,3),FZ,-PY(ANUM)
   F,nodes(k,4),FZ,-PY(ANUM)
   *else   
   FNUM=NINT(100*(I*DELL-BETIME(M))/(ENTIME(M)-BETIME(M)))+1 !求出该时刻最近的荷载值
   SNUM=NINT(100*(I*DELL-BETIME(M+1))/(ENTIME(M+1)-BETIME(M+1)))+1 !求出该时刻最近的荷载值   
   F,nodes(k,1),FZ,-PY(FNUM)
   F,nodes(k,2),FZ,-PY(FNUM)
   F,nodes(k,3),FZ,-PY(FNUM)
   F,nodes(k,4),FZ,-PY(FNUM)
   F,nodes(k+1,1),FZ,-PY(SNUM)
   F,nodes(k+1,2),FZ,-PY(SNUM)
   F,nodes(k+1,3),FZ,-PY(SNUM)
   F,nodes(k+1,4),FZ,-PY(SNUM)
   *endif                                       
   *ENDDO
   F,nodes(NWS+1,1),FZ,-PY(FNUM)
   F,nodes(NWS+1,2),FZ,-PY(FNUM)
   F,nodes(NWS+1,3),FZ,-PY(FNUM)
   F,nodes(NWS+1,4),FZ,-PY(FNUM)   
   *ENDIF   
LSWRITE,I                  ! 将荷载步写入荷载步文件
        SOLVE
Save   
*ENDDO   
FINISH

Rainyboy 发表于 2011-3-24 16:17

看了下代码,你是想算一些人走过一个结构时的响应对吧?所以期望在这些人依次进入时,以及他们依次退出时,有相同的(或者说对称的)响应是么?但是我觉得只算一个周期(即一些人进入——通过——走出)的话,响应本身就不是对称的,多算几个周期可能会得到较好的结果吧。

其实是这个意思,比如对一个单自由度系统,只算一个周期的正弦激励,是不会得到与之周期相同的完美的响应的。。。

yuebeifan 发表于 2011-3-24 16:20

Rainyboy 发表于 2011-3-24 16:17 static/image/common/back.gif
看了下代码,你是想算一些人走过一个结构时的响应对吧?所以期望在这些人依次进入时,以及他们依次退出时, ...

在ANSYS里面怎么实现多算一些周期。不太懂。请求点拨。

Rainyboy 发表于 2011-3-24 16:26

比如,修改前(只计算一个周期):*DO,I,1,NLOAD
!一些设置
TIME,DT*I
F,5,FX,SIN(OMEGA*DT*I)
!另一些设置
*ENDDO

修改后(10个周期):
*DO,RI,0,9
*DO,I,1,NLOAD
    !一些设置
    TIME,DT*(I+RI*NLOAD)
    F,5,FX,SIN(OMEGA*DT*I)
    !另一些设置
*ENDDO
*ENDDO


yuebeifan 发表于 2011-3-24 16:54

Rainyboy 发表于 2011-3-24 16:26 static/image/common/back.gif
比如,修改前(只计算一个周期):

修改后(10个周期):

好像不是这样的。我所指的对称是加速度响应关于x轴对称。比如采用一列人在板上行走时,得到的加速度响应是

多列人行走时


这是什么情况?

Rainyboy 发表于 2011-3-24 18:02

一个时间点只有一个值……怎么会存在“关于X轴对称”的说法……说的是峰值对称吧?
但是蓝色的图也没有太“对称”……
其实多个人过桥可以简单的认为就是一个人过桥的信号改变相位再加起来的结果,试试把蓝色的图按照多个人之间的时间差移动后加起来,看看是个什么样?

Chelsea 发表于 2011-3-25 01:18

本帖最后由 Chelsea 于 2011-3-25 01:18 编辑

可以参考一下下面这个火车过桥的加载

yuebeifan 发表于 2011-3-25 10:09

Chelsea 发表于 2011-3-25 01:18 static/image/common/back.gif
可以参考一下下面这个火车过桥的加载

谢谢。不错,这个是静力分析,不知是否有动力分析的实例?

Chelsea 发表于 2011-3-26 06:53

yuebeifan 发表于 2011-3-25 10:09 static/image/common/back.gif
谢谢。不错,这个是静力分析,不知是否有动力分析的实例?

FINI
/CLE
!设置参数
/CONFIG,NRES,2000
*SET,LONG,40    !梁长度
*SET,NE,20    !单元数
*SET,DL,LONG/NE    !单元长度
*SET,NN,NE+1    !节点数
*SET,FF,5000    !移动的集中力
*SET,VV,80    !移动速度
*SET,DT,DL/VV*3.6   !移动经过一个单元所需时间
!定义单元材料实常数
/PREP7
ET,1,BEAM3    !梁单元
MP,EX,1,50E9    !弹性模量
MP,DENS,1,2500    !密度
MP,NUXY,1,0.2
R,1,0.5,0.041667,1   !几何常数
!建立模型
*DO,I,1,NN,1
N,I,(I-1)*DL    !建立
*ENDDO
*DO,I,1,NE
E,I,I+1
*ENDDO
FINI
!加载与求解
/SOL
D,1,ALL
D,NN,ALL
ANTYPE,4    !瞬态分析
TRNOPT,FULL
TIMINT,OFF
OUTRES,BASIC,ALL    !输出基本项,每一步都输出
KBC,1       !指定载荷类型
TIME,1E-10   !指定载荷步结束时间
NSUB,4,8      !指定载荷子步数为4,最大子步数为8
SSTIF,ON      !打开应力刚化效应
ACEL,0,9.8,0   !施加重力加速度
ALLS       !选中所有元素
SOLVE       !求解第一个载荷步
TIMINT,ON
*DO,II,1,NN,1
OUTRES,ALL,ALL    !输出所有加载子步的所有结果
TIME,II*DT    !每个荷载步的求解时间
NSUBST,5    !每个荷载步包含五个子步
FDELE,ALL,ALL    !删除所有的集中力荷载
NSEL,S,LOC,X,(II-1)*DL !选择集中力作用节点
F,ALL,FY,-FF    !施加集中荷载
ALLSEL    !选择所有
SOLVE
*ENDDO
SAVE
FINI
/POST1
SET,NE/2+1,LAST    !设定读取的载荷步
/ESHAPE,1    !显示梁形状
PLNSOL,U,Y,0,1.0   !Y向位移
PLNSOL,S,EQV,0,1.0   !等效应力
FINI
/POST26
NSOL,2,NE/2+1,U,Y,UY_M       !取出梁中部节点Y方向的位移
XVAR,1                   !定义时间变量为坐标横轴
PLVAR,2                  !绘制位移随时间变化的图形
DERIV,3,2,1,,,,,1      !对梁中部节点的Y向位移进行微分运算,得到Y向速度
PLVAR,3                  !绘制速度随时间变化的图形
DERIV,4,3,1,,,,,1      !对梁中部节点的Y向速度进行微分运算,得到Y向加速度
PLVAR,4                  !绘制加速度随时间变化的图形
页: [1] 2
查看完整版本: 移动荷载同时加载多个点,且荷载不一样怎么实现?