不知火舞的被虐|伊人天伊人天天综合网|博洛尼亚天气|任你懆这里只有精品4|久久美日韩精品久久|掌中之物漫画免费阅读观看|0丨d老妇

在使用fortran編寫UMAT子程序時求積分上限時一直報錯? 20

瀏覽:1781 回答:6

需要求一個積分的上限,求積分上限的程序是這樣的

E_mn=0.5*D0_eff*T0_eff
   do while(E_mn.lt.Gsc)
       Df_eff=Df_eff+0.001
    E_mn=E_mn+0.001*exp(T0_eff*D0_eff/(Gc-0.5*T0_eff*D0_eff)*(1.0-Df_eff/D0_eff))*T0_eff
   end do

這是那一整部分程序

if (ftype.lt.1.0) then
! else  ! check for matrix failure
     if  (sigma_N.ge.0) then; 
      elt_m=(sigma_N/yt)**2+(tau_T/st)**2+(tau_L/sl)**2
  else
   elt_m=(tau_T/(st+sigma_N/tan(2*phio)))**2 &
       +(tau_L/(sl+sigma_N/tan(2*phio)))**2
  endif 
        if ((elt_m .ge. 1.0).and.(sigma_N.ge.0)) then !---------matrix tensile cracking---------
   Gnc=Gnct
   
     ftype=1.0
     T0_eff=T_eff/sqrt(elt_m)
     D0_eff=D_eff/sqrt(elt_m)
   Gc=Gnc+(Gsc-Gnc)*(Gs/(Gn+Gs))**eta
   Df_eff=D0_eff
   E_mn=0.5*D0_eff*T0_eff
   do while(E_mn.lt.Gc)
       Df_eff=Df_eff+0.001
    E_mn=E_mn+0.001*exp(T0_eff*D0_eff/(Gc-0.5*T0_eff*D0_eff)*(1.0-Df_eff/D0_eff))*T0_eff
   end do
   if(Df_eff.le.D0_eff) then
    dm=dgdf2
    ftype=1.5
   endif
      else if ((elt_m .ge. 1).and.(sigma_N.lt.0)) then !---------matrix compressive cracking---------
   
   ftype=2.0
   T0_eff=T_eff/sqrt(elt_m)
     D0_eff=D_eff/sqrt(elt_m)
     Df_eff=D0_eff
   E_mn=0.5*D0_eff*T0_eff
   do while(E_mn.lt.Gsc)
       Df_eff=Df_eff+0.001
    E_mn=E_mn+0.001*exp(T0_eff*D0_eff/(Gc-0.5*T0_eff*D0_eff)*(1.0-Df_eff/D0_eff))*T0_eff
   end do
   endif      
       
   if(Df_eff.le.D0_eff) then
    dm=dgdf2
    ftype=2.5
      endif
      else 
   dm=0.0
   ftype=0.0
     endif
 endif

但是提交之后一直報錯,Error: Expecting END SUBROUTINE statement at (1)。

不知道是哪里有問題,請懂的前輩不吝賜教。

或者說,提示這樣的錯誤是程序哪里出了問題呢?

邀請回答 我來回答

全部回答

(3)
默認 最新
技術鄰問答
如果覺得回答對你有幫助,請記得及時采納哦
2017年11月15日
評論 點贊
干貨有限元
如果沒看錯 你的do while 那個值 越來越小 所以跳不出循環來
2017年8月18日
評論 點贊
干貨有限元
subroutine 結束后 要有end語句呀
2017年8月16日
評論 3 點贊

沒解決?試試專家一對一服務

換一批
    App下載
    技術鄰APP
    工程師必備
    • 項目客服
    • 培訓客服
    • 平臺客服

    TOP