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

abaqus的Vgetvrm所提取的第一主應力為什么等于0? 20

瀏覽:3108 回答:5

具體程序段如下:

call vgetvrm( 'SP', rData, jData, cData, jStatus )

      SIG1(K)=RDATA(K)                       輸出值為0

call vgetvrm( 'SP', rData, jData, cData, jStatus )

      SIG1(K)=RDATA(2*NBLOCK+K)     有輸出值

看完兵哥的視頻后就在想是不是2022版本abaqus的主應力也是

S1   S1   S1......NBLOCK      

S2   S2   S2......NBLOCK

S3   S3   S3......NBLOCK

或者是

S3   S3   S3......NBLOCK      

S2   S2   S2......NBLOCK

S1   S1   S1......NBLOCK

試過了SIG1(K)=RDATA(K),但這樣輸出是0

如果通過提取主應力的那個子程序或者直接提取應力分量自己算,又會出現云圖顯示不全(大部分區域為黑色,少部分為彩色)的問題,abaqus2022我看幫助文件已經可以用vgetvrm提取了。。。。

最后附上能算的程序,但損傷值一直輸出為0

      NCL損傷模型

       subroutine vusdfld(

c Read only variables -

     1   nblock, nstatev, nfieldv, nprops, ndir, nshr, 

     2   jElem, kIntPt, kLayer, kSecPt, 

     3   stepTime, totalTime, dt, cmname, 

     4   coordMp, direct, T, charLength, props, 

     5   stateOld, 

c Write only variables -

     6   stateNew, field )

c

      include 'vaba_param.inc'

c

      dimension jElem(nblock), coordMp(nblock,*), 

     1          direct(nblock,3,3), T(nblock,3,3), 

     2          charLength(nblock), props(nprops), 

     3          stateOld(nblock,nstatev), 

     4          stateNew(nblock,nstatev),

     5          field(nblock,nfieldv)

      character*80 cmname

c

c     Local arrays from vgetvrm are dimensioned to 

c     maximum block size (maxblk)

c

      parameter( nrData=6 )

      character*3 cData(maxblk*nrData)

      dimension rData(maxblk*nrData), jData(maxblk*nrData)

      real*8 s(NBLOCK,NDIR+NSHR),SIG1(NBLOCK)

      real*8 eigVal(NBLOCK,3)

      real*8 Xdamg(NBLOCK),XDD(NBLOCK),SEQ(NBLOCK),SEQE(NBLOCK)

      REAL*8 DSEQE(NBLOCK)

c

      do k = 1, nblock

C      提取米賽斯等效應力(親測abaqus2022版本可以)

      call vgetvrm( 'MISES', rData, jData, cData, jStatus )

      SEQ(K)=rData(K)

C    提取主應力(最搞不清楚這個)

      call vgetvrm( 'SP', rData, jData, cData, jStatus )

      SIG1(K)=RDATA(K)

      STATENEW(K,4)=SIG1(2*NBLOCK+K)

C    計算等效應變(vgetvrm無法提取總應變E,只能提取塑性應變或者對數應變(真實應變)幫助文檔里沒

C    寫,但試了下有值,但為了避免出錯還是采用LE)

      call vgetvrm( 'LE', rData, jData, cData, jStatus )

      EE1=rDATA(K)

      EE2=rDATA(K+NBLOCK)

      EE3=rDATA(K+2*NBLOCK)

      EE4=rDATA(3*NBLOCK+K)

      EE5=rDATA(4*NBLOCK+K)

      EE6=rDATA(5*NBLOCK+K)

C   計算當前步等效應變

      SEQE(K)=sqrt(((EE1-EE2)**2+(EE2-EE3)**2+ (EE1-EE3)**2+ 

     1 6*(EE4**2+EE5**2+EE6**2))*(2.0d0/9.0D0))

C   計算等效應變增量,用分析步結束后的值-前的值

      DSEQE(K)=SEQE(K)-STATEOLD(K,3)

C   存儲當前步等效應變

      STATENEW(K,3)=SEQE(K)

C   導入上一步損傷值

      XDAMG(K)=STATEOLD(K,2)

C   若最大主應力小于等于0,則不增加損傷值。

      if(SIG1(k).LE.0)then

          xdamg(k)=STATEOLD(K,2)

      else  

C   當前步損傷值=上一步損傷值+最大主應力*等效應變增量/等效應力  

          XDAMG(K)=XDAMG(K)+SIG1(K)*DSEQE(K)/SEQ(K)

      endif

C  更新損傷狀態變量

      STATENEW(K,2)=XDAMG(K)

C   若損傷狀態變量大于等于0.58則刪除單元

          IF( STATENEW(K,2).GE.0.58)THEN

              STATENEW(K,1)=0.0

          ELSE

              STATENEW(K,1)=1.0

          ENDIF

      ENDDO

c

      return

      end


邀請回答 我來回答

全部回答

(3)
默認 最新
11111111111112232321

樓主解決了嘛?我現在也遇到這個問題

2025年4月9日
評論 1 點贊 1
echo_niko

寫的不對,本人目前用的是早期的,不太清楚后期的變化,但是有些是共性問題。

vgetvrm獲得的是至少2階數組,SEQ(K)=rData(K)等等以下均不對,可以改成rData(K,1),rData(K,2)。。。獲取特定值,rData變量盡量改一下,不要都用一個,看著就亂。

2025年12月9日
評論 1 點贊
民_2382
大佬我不會您的問題,但是我想問一下您如何確認輸出的為0,確認輸出的值是什么。難道都要等待漫長的計算之后在從后處理云圖里看嗎
2023年12月20日
評論 點贊

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

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

    TOP