|
楼主 |
发表于 2011-3-24 15:53
|
显示全部楼层
Rainyboy 发表于 2011-3-24 15:44
回复 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
复制代码 |
|