隧道荷载结构模式等效节点荷载施加
本帖最后由 echowasd 于 2015-10-17 00:03 编辑隧道荷载结构模式计算时,在节点上添加等效节点力的时候是比较麻烦的事。受力简图:
计算简图:
等效节点力:
自动添加节点命令流:
! 本子程序适用于隧道荷载——结构模式计算荷载施加。
! 用户选择衬砌单元,并设置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
! FOR MORE INFORMATION CONTACT: g.wang.89@foxmail.com
应用实例:
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
-------------------------------------------------------------------------------------------------
更新
apply load V2
! 本子程序适用于隧道荷载——结构模式计算荷载施加。
! 用户选择衬砌单元,并设置Q1, Q2, Q3, Q4, E1, E2, E3, E4
! 程序会根据选择集自动判断节点并加载节点力。
! 注意事项:(1) 结构尽量为封闭环状;
! (2) 结构需关于x、y轴对称;
! (3) 单元划分较细,忽略等效节点弯矩。
!
! 西南交通大学地下工程系,求是工作室
!g.wang.89@foxmail.com 2013/12/12
! v2, 2015/10/16
!*SET,_Q1,42410
!*SET,_Q2,62410
!*SET,_Q3,0
!*SET,_Q4,0
!*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= _Q3-(_Q4-_Q3)*_LOC_XI/_WIDTH
_E_J=-_E3-(_E4-_E3)*(1-_LOC_YJ/_HEIGHT)
_Q_J= _Q3-(_Q4-_Q3)*_LOC_XJ/_WIDTH
*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= _Q3-(_Q4-_Q3)*_LOC_XI/_WIDTH
_E_J=_E1+(_E2-_E1)*(1-_LOC_YJ/_HEIGHT)
_Q_J= _Q3-(_Q4-_Q3)*_LOC_XJ/_WIDTH
*ENDIF
*ENDIF
_FX_I=0.05*(7*_E_I+3*_E_J)*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_I+7*_E_J)*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
! FREEMEMORY
*DEL,_ND_INDEX,,NOPR
*DEL,_NF_INFO,,NOPR!FOR MORE INFORMATION CONTACT: g.wang.89@foxmail.com
楼主很强大,学习学习 楼主好人,这个问题困扰很久了 非常感谢!!!
页:
[1]