
發布
注冊
/
登錄abaqus子程序編寫的案例
ABAQUS子程序編寫教程pdf
Writing+User+Subroutines+with+ABAQUS.pdf
為什么abaqus編寫子程序要使用FROTRAN語言
這個流程的開發是非常早的,科學家們很早就對求解方程這個核心的、統一化的、重復化的計算過程進行程序開發,甚至在早期的“穿孔紙帶式的早期計算機”就已經開始了。紙帶有一定的寬度,所以在FROTRAN語言的固定格式中,程序語句只能寫在第7-72列中,第1-6列只能寫部分特殊字符用于續行或者語句標號或者注釋,第73列以后的語句則會被忽略。即使是后續開發的自由格式,也仍然是限制132個字符。</p><p><br></p><p><br></p><p><br></p>
展開 ABAQUS任意路徑移動熱源Dflux子程序編寫 ¥20
ABAQUS復雜路徑雙橢球體熱源Dflux子程序,直線-圓弧-斜線,平面坐標變換
Abaqus用戶子程序DFLUX和VDLOAD編寫實例講解
Abaqus用戶子程序DFLUX和VDLOAD編寫實例講解

告別Fortran,只需要C++就可以編寫Abaqus UMat等用戶子程序 ¥1
隨著這些年編譯器和相應標準的發展,C++的運行效率已經與Fortran旗鼓相當,而在開發和維護問題上,大型應用軟件幾乎都采用C++編寫框架底層,優勢自不必說。再者,受國內教學環境的影響,大多數人在編程這塊也只能是對C++算得上熟悉了。這里,筆者將給出使用C++編寫Abaqus用戶子程序的方法,并不是替代Fortran,而是給用戶多一種選擇。采用本文中的方法,用戶將無需再安裝Fortran編譯器。
從編程角度看本文方法的實現原理比較簡單。以UMAT為例,Abaqus在提交計算任務后會將用戶指定的for文件或者obj文件編譯成為standardU.dll,然后連同安裝目錄下的standard.exe一起拷貝到臨時目錄下,然后運行standard.exe進行計算。在計算進行到用戶自定義材料時,Abaqus會自動去standardU.dll里尋找umat函數,也就是用戶指定源文件里的umat函數。因此,如果用C++寫出一個函數能夠讓standard.exe識別為 umat函數,并且接口變量一致,那么用戶自然就可以用C++寫出umat的用戶子程序。至于如何讓standard.exe認為就是umat函數,附件給出了具體的實現方法。
C++編寫用戶子程序實現方法.pdf
展開 ABAQUS焊接模擬-Python編寫移動高斯熱源子程序-不帶生死單元
ABAQUS平板對接-不帶生死單元。Python編寫移動高斯熱源子程序(包括高斯面熱源、雙橢球熱源)
模型作如下假設:材料為各向同性材料,不考慮熔池流動及相變影響。
考慮到過來學習的大多都是和我一樣的學生黨,因此設置了一個大家都能接受的價格。
如果視頻中有什么錯誤或沒講清的大家可以留言!!
編寫umat疲勞子程序嵌入abaqus中分析的時候為啥沒有循環模型直接就分析好了。
我編寫了一個復合材料疲勞的umat子程序,設置了兩個分析步,如下圖文獻中描述的一樣,施加的是力拉伸,但是把umat接入abaqus中去的時候,提交作業能正常運行,很快兩個分析步就完成了,好像程序根本沒起作用,很快就分析完成了根本沒有循環。進入后處理之后,點擊云圖跳出:the selected primary variable is not available in the current frame for any elements in the current display group。狀態變量都沒有結果,但是存儲初始剛度強度等狀態變量能顯示初始的結果,表明也并沒有進行循環,剛度強度沒有退化。所以想問問各位大佬怎么回事,是不是umat是材料子程序,需要和其他程序結合,比如uel?
展開 ABAQUS VUMAT 彈性材料子程序 ¥5
這是我在學習ABAQUS VUMAT子程序編寫過程中,最先編寫的一個VUMAT文件。僅供交流學習。
umat子程序編寫常用的fortran函數分享(四)
四階張量雙點乘:
subroutine aaaa_dot_dot_bbbb(n,a,b,c)
include 'ABA_PARAM.INC'
dimension a(n,n,n,n), b(n,n,n,n), c(n,n,n,n)
do i = 1,n
do j = 1,n
do k = 1,n
do l = 1,n
c(i,j,k,l) = 0
do m1 = 1,n
do m2 = 1,n
c(i,j,k,l) = c(i,j,k,l) + a(i,j,m1,m2) * b(m1,m2,k,l)
end do !m2
end do !m1
end do !l
end do !k
end do !j
end do !i
return
end
四階張量與二階張量雙點乘:
展開 umat子程序編寫常用的fortran函數分享(三)
計算3*3矩陣的逆矩陣
subroutine inv3x3(A,invA,det)
implicit none
real(8), intent(in) :: A(3,3)
real(8), intent(out) :: invA(3,3), det
integer :: i,j
call deter3x3(A,det)
if (abs(det) < 1e-6) then
invA=0.0d+0
else
invA(1,1)=((A(2,2)*A(3,3))-(A(2,3)*A(3,2)))/det
invA(2,1)=-((A(2,1)*A(3,3))-(A(2,3)*A(3,1)))/det
invA(3,1)=((A(2,1)*A(3,2))-(A(2,2)*A(3,1)))/det
invA(1,2)=-((A(1,2)*A(3,3))-(A(1,3)*A(3,2)))/det
invA(2,2)=((A(1,1)*A(3,3))-(A(1,3)*A(3,1)))/det
invA(3,2)=-((A(1,1)*A(3,2))-(A(1,2)*A(3,1)))/det
invA(1,3)=((A(1,2)*A(2,3))-(A(1,3)*A(2,2)))/det
invA(2,3)=-((A(1,1)*A(2,3))-(A(2,1)*A(1,3)))/det
invA(3,3)=((A(1,1)*A(2,2))-(A(1,2)*A(2,1)))/det
endif
return
end subroutine inv3x3
計算2*2矩陣的逆:
subroutine inv2x2(A
展開 umat子程序編寫常用的fortran函數分享(二)
3*1向量叉乘:
subroutine vecprod(dvin1,dvin2,dvout)
implicit none
real(8), intent(in) :: dvin1(3), dvin2(3)
real(8), intent(out) :: dvout(3)
dvout(1)=dvin1(2)*dvin2(3)-dvin1(3)*dvin2(2)
dvout(2)=dvin1(3)*dvin2(1)-dvin1(1)*dvin2(3)
dvout(3)=dvin1(1)*dvin2(2)-dvin1(2)*dvin2(1)
return
end subroutine vecprod
3*1向量點乘:
subroutine dotprod(dvin1,dvin2,dvout)
implicit none
real(8), intent(in) :: dvin1(3), dvin2(3)
real(8), intent(out) :: dvout(3)
dvout = dvin1(1)*dvin2(1)+dvin1(2)*dvin2(2)+dvin1(3)*dvin2(3)
dvout = abs(dvout)
return
end subroutine dotprod
3*3矩陣的行列式的值:
subroutine deter3x3(dmin,d)
implicit none
real(8), intent(in) :: dmin(3,3
展開 
umat子程序編寫常用的fortran函數分享(一)
計算2*2矩陣的跡:
subroutine trace2x2(a,aii)
implicit none
real(8), intent(in) :: a(2,2)
real(8), intent(out) :: aii
aii = a(1,1)+a(2,2)
return
end subroutine trace2x2
計算3*3矩陣的跡:
subroutine trace3x3(a,aii)
implicit none
real(8), intent(in) :: a(3,3)
real(8), intent(out) :: aii
aii = a(1,1)+a(2,2)+a(3,3)
return
end subroutine trace3x3
將向量(9*1:變形梯度)轉化為3*3矩陣存儲
subroutine vecmat9(dvin,dmout)
implicit none
real(8), intent(in) :: dvin(9)
real(8), intent(out) :: dmout(3,3)
integer :: i
dmout(1,1) = dvin(1)
dmout(1,2) = dvin(2)
dmout(1,3) = dvin(3)
dmout(2,1) = dvin(4)
dmout(2,2) = dvin(5)
dmout(2,3
展開 模擬雙層平板焊接inp文件(含編寫子程序) ¥3
本ABAQUS的inp算例為通過編寫Fortran子程序(在附件中)實現的模擬平板雙層焊接的算例(在附件中),傾情奉獻。
線性強化彈塑性umat子程序-umat在abaqus計算流程中的意義及調試方法
abaqus子程序用fortran語言編寫,且子程序又通過abaqus調用,因而涉及到很多的力學及有限元理論知識,使得調試難度陡然增加。那么abaqus子程序常用的調試方法是什么呢?其實說出來也很簡單,就是打印變量法,即把程序中的變量打印出來(一般打印結果在當前工作目錄下的job-name.log的文件里),然后考察其合理性。
如在上述umat子程序中定義了一個save在內存的變量,用來記錄進入umat的次數。
直接打印變量的方法很有用,但是當單元數增加后,眾多的打印信息形成很多的干擾因素,這時候我們需要控制打印的頻率,常用的方法為針對某個單元的某個積分點打印,如下面的一段程序所示,紅色圓圈里內容的含義是當單元編號為1且積分點編號為1時才打印相關信息,這樣調試更具針對性。
我們通過打印信息發現,一次迭代二次進入umat,第一次進入umat僅是給abaqus返回雅可比矩陣,第二次進入umat的目的是為了更新應力等信息。
視頻教程有這個帖子的更詳細解釋,感興趣的點擊下面的鏈接觀看
http://www.yqgqt.org.cn/college/video/c14014
展開 一個abaqus用戶材料子程序(UMAT)問題解決說明 附Abaqus用戶子程序專題下載
在開展abaqus用戶子程序的項目時,容易出現很多bug問題,下面是一個比較典型的容易遇到的報錯。
The job input file "Job-1.inp" has been submitted for analysis.
Job Job-1: Analysis Input File Processor aborted due to errors.
Error in job Job-1: Analysis Input File Processor exited with an error.
檢查工作路徑下的log文件(Job-1.log),提示無法識別“ifort”,這就意味著這個命令在系統路徑中無法被識別。實際上,“ifort”適用于編譯Fortran文件的,如果無法使用則無法完成編譯。
log文件內容
為了解決這個問題,在系統文件中找到“ifort.exe”,并將其添加到環境變量path中,然后重啟軟件即可解決。
添加路徑
下載地址:Abaqus用戶子程序專題
展開