隧道荷载结构模式计算时,在节点上添加等效节点力的时候是比较麻烦的事。受力计算简图:



现提供自动荷载添加程序。

“Apply_Load.txt”命令流文件:ANSYS中隧道荷载——结构模式自动施加节点力,只需选择衬砌单元并设置Q1, Q2, E1, E2, E3, E4即可。
“Demo.txt”命令流文件:演示 。
Apply_Load 子程序:
|
Apply_Load.txt |
|
! 本子程序适用于隧道荷载——结构模式计算荷载施加。 ! 用户选择衬砌单元,并设置Q1, Q2, E1, E2, E3, E4 ! 程序会根据选择集自动判断节点并加载节点力。 ! 注意事项:(1) 结构尽量为封闭环状; ! (2) 结构需关于x、y轴对称; ! (3) 单元划分较细,忽略等效节点弯矩。 ! ! 西南交通大学地下工程系,求是工作室 ! g.wang.89@foxmail.com 2013/12/12
! *SET,_Q1,42410 ! *SET,_Q2,62410 ! *SET,_E1,12482 ! *SET,_E2,22482 ! *SET,_E3,22482 ! *SET,_E4,32482
! LSEL,S,MAT,,1 ! ESLL,S NSLE,S
*GET,_E_MAX,ELEM,,NUM,MAX *GET,_E_MIN,ELEM,,NUM,MIN *GET,_E_COUNT,ELEM,,COUNT *GET,_N_MAX,NODE,,NUM,MAX *GET,_N_MIN,NODE,,NUM,MIN *GET,_N_COUNT,NODE,,COUNT *GET,_LOC_X_MAX,NODE,,MXLOC,X *GET,_LOC_X_MIN,NODE,,MNLOC,X *GET,_LOC_Y_MAX,NODE,,MXLOC,Y *GET,_LOC_Y_MIN,NODE,,MNLOC,Y *SET,_WIDTH,_LOC_X_MAX-_LOC_X_MIN *SET,_HEIGHT,_LOC_Y_MAX-_LOC_Y_MIN *SET,_CENT_X,(_LOC_X_MAX+_LOC_X_MIN)/2 *SET,_CENT_Y,(_LOC_Y_MAX+_LOC_Y_MIN)/2 *SET,_I_ND,_N_MIN *SET,_I_EL,_E_MIN *DIM,_NF_INFO,ARRAY,_N_COUNT,4 *DIM,_ND_INDEX,ARRAY,_N_MAX
*DO,I,1,_N_COUNT,1 *IF,NX(_I_ND),EQ,_LOC_X_MAX,THEN _CENT_Y=NY(_I_ND) *ENDIF *IF,NY(_I_ND),EQ,_LOC_Y_MAX,THEN _CENT_X=NX(_I_ND) *ENDIF _NF_INFO(I,1)=_I_ND _ND_INDEX(_I_ND)=I _I_ND=NDNEXT(_I_ND) *ENDDO
*DO,I,1,_E_COUNT,1 _NI=NELEM(_I_EL,1) _NJ=NELEM(_I_EL,2) _LOC_XI=NX(_NI)-_LOC_X_MIN _LOC_YI=NY(_NI)-_LOC_Y_MIN _LOC_XJ=NX(_NJ)-_LOC_X_MIN _LOC_YJ=NY(_NJ)-_LOC_Y_MIN *GET,_E_CENT_X,ELEM,_I_EL,CENT,X *GET,_E_CENT_Y,ELEM,_I_EL,CENT,Y
*IF,_E_CENT_X,GT,_CENT_X,THEN *IF,_E_CENT_Y,GT,_CENT_Y,THEN _E_I=-_E3-(_E4-_E3)*(1-_LOC_YI/_HEIGHT) _Q_I=-_Q1-(_Q2-_Q1)*_LOC_XI/_WIDTH _E_J=-_E3-(_E4-_E3)*(1-_LOC_YJ/_HEIGHT) _Q_J=-_Q1-(_Q2-_Q1)*_LOC_XJ/_WIDTH *ELSE _E_I=-_E3-(_E4-_E3)*(1-_LOC_YI/_HEIGHT) _Q_I=0 _E_J=-_E3-(_E4-_E3)*(1-_LOC_YJ/_HEIGHT) _Q_J=0 *ENDIF *ELSE *IF,_E_CENT_Y,GT,_CENT_Y,THEN _E_I= _E1+(_E2-_E1)*(1-_LOC_YI/_HEIGHT) _Q_I=-_Q1-(_Q2-_Q1)*_LOC_XI/_WIDTH _E_J= _E1+(_E2-_E1)*(1-_LOC_YJ/_HEIGHT) _Q_J=-_Q1-(_Q2-_Q1)*_LOC_XJ/_WIDTH *ELSE _E_I=_E1+(_E2-_E1)*(1-_LOC_YI/_HEIGHT) _Q_I=0 _E_J=_E1+(_E2-_E1)*(1-_LOC_YJ/_HEIGHT) _Q_J=0 *ENDIF *ENDIF _FX_I=0.05*(7*_E_J+3*_E_I)*ABS(_LOC_YJ-_LOC_YI) _FY_I=0.05*(7*_Q_I+3*_Q_J)*ABS(_LOC_XJ-_LOC_XI) _FX_J=0.05*(3*_E_J+7*_E_I)*ABS(_LOC_YJ-_LOC_YI) _FY_J=0.05*(3*_Q_I+7*_Q_J)*ABS(_LOC_XJ-_LOC_XI)
_NF_INFO(_ND_INDEX(_NI),2)=_NF_INFO(_ND_INDEX(_NI),2)+_FX_I _NF_INFO(_ND_INDEX(_NI),3)=_NF_INFO(_ND_INDEX(_NI),3)+_FY_I _NF_INFO(_ND_INDEX(_NJ),2)=_NF_INFO(_ND_INDEX(_NJ),2)+_FX_J _NF_INFO(_ND_INDEX(_NJ),3)=_NF_INFO(_ND_INDEX(_NJ),3)+_FY_J ! MZ _I_EL=ELNEXT(_I_EL) *ENDDO
*DO,I,1,_N_COUNT,1 F,_NF_INFO(I,1),FX,_NF_INFO(I,2) F,_NF_INFO(I,1),FY,_NF_INFO(I,3) ! MZ *ENDDO
! FREE THE MEMORY *DEL,_ND_INDEX,,NOPR *DEL,_NF_INFO,,NOPR |
演示:
|
Demo.txt |
|
finish /clear /prep7 k,1,0,10.382543,0 k,2,-3.827191,-3.339448,0 k,3,3.827191,-3.339448,0 k,4,-3.197118,-1.080406,0 k,5,-5.418947,-1.831231,0 k,6,-3.82719,-3.339448,0 k,7,0,0,0 k,8,5.418947,-1.831232,0 k,9,3.38019,4.614403,0 k,10,-3.38019,4.614403,0 k,11,-5.418947,-1.831232,0 k,12,3.197118,-1.080406,0 k,13,3.82719,-3.339448,0 k,14,5.418947,-1.831231,0 k,15,5.04,-1.703174,0 k,16,3.143813,4.291718,0 k,17,-3.143813,4.291718,0 k,18,-5.04,-1.703174,0 k,19,3.372632,-1.139718,0 k,20,3.867053,-2.828844,0 k,21,0,10.382444,0 k,22,-3.867053,-2.828844,0 k,23,-3.372632,-1.139718,0 larc,2,3,1,14.245716 larc,5,6,4,2.345264 larc,8,9,7,5.72 larc,9,10,7,5.72 larc,10,11,7,5.72 larc,13,14,12,2.345264 larc,15,16,7,5.32 larc,16,17,7,5.32 larc,17,18,7,5.32 larc,20,15,19,1.76 larc,22,20,21,13.765618 larc,18,22,23,1.76 nummrg,all,0.1 $ numcmp,all et,1,3 $ esize,0.2 ! lmesh,all lsel,s,,,1,11,2 $ lmesh,all lsel,s,,,2,12,2 $ lmesh,all lsel,s,,,7,12 $ esll,s eplot
*set,_Q1,42410 *set,_Q2,62410 *set,_E1,12482 *set,_E2,22482 *set,_E3,22482 *set,_E4,32482 /input,apply_load,txt |