echowasd 发表于 2013-12-14 14:16:53

隧道荷载结构模式等效节点荷载施加

本帖最后由 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




sjzdh 发表于 2013-12-14 15:44:49

楼主很强大,学习学习

satanyyyyy 发表于 2015-2-16 11:16:22

楼主好人,这个问题困扰很久了

liuhaitaozky 发表于 2017-3-4 12:29:34

非常感谢!!!
页: [1]
查看完整版本: 隧道荷载结构模式等效节点荷载施加