與彈塑性變形相關的子程序 (uyield.f90)¶
提供用於計算彈塑性剛性矩陣及應力返回映射的子程序。
使用使用者自訂降伏函數時,首先在輸入檔案中設定 !PLASTIC, YIELD=USER 並輸入所需的材料常數,
接著必須建立函數 uElastoPlasticNumStatus 以及子程序 uElastoPlasticMatrix 和 uBackwardEuler
。
(1) 回傳實數狀態變數數量的函數¶
matl: 儲存材料常數的陣列(1-100:系統定義的材料常數,101-200:使用者定義的材料常數)
(2) 計算彈塑性剛性矩陣的子程序¶
subroutine uElastoPlasticMatrix( matl, stress, istat, fstat, plstrain, D, temp, hdflag )
real(kind=kreal), intent(in) :: matl(:)
real(kind=kreal), intent(in) :: stress(6)
integer(kind=kint), intent(in) :: istat
real(kind=kreal), intent(in) :: fstat(:)
real(kind=kreal), intent(in) :: plstrain
real(kind=kreal), intent(out) :: D(:,:)
real(kind=kreal), intent(in) :: temp
integer(kind=kint), intent(in) :: hdflag
matl: 儲存材料常數的陣列(1-100:系統定義的材料常數,101-200:使用者定義的材料常數)stress: 2nd Piola-Kirchhoff 應力istat: 整數狀態變數fstat: 實數狀態變數陣列plstrain: 目前子步驟開始時的塑性應變D: 彈塑性矩陣temp: 溫度hdflag: 計算全部成分 (0)、僅偏差成分 (1) 或僅體積成分 (2)
(3) 計算應力返回映射的子程序¶
subroutine uBackwardEuler( matl, stress, plstrain, istat, fstat, temp, hdflag )
real(kind=kreal), intent(in) :: matl(:)
real(kind=kreal), intent(inout) :: stress(6)
real(kind=kreal), intent(in) :: plstrain
integer(kind=kint), intent(inout) :: istat
real(kind=kreal), intent(inout) :: fstat(:)
real(kind=kreal), intent(in) :: temp
integer(kind=kint), intent(in) :: hdflag
matl: 儲存材料常數的陣列(1-100:系統定義的材料常數,101-200:使用者定義的材料常數)stress: 假設試應力為彈性變形所得的 2nd Piola-Kirchhoff 應力plstrain: 目前子步驟開始時的塑性應變istat: 整數狀態變數fstat: 實數狀態變數陣列temp: 溫度hdflag: 計算全部成分 (0)、僅偏差成分 (1) 或僅體積成分 (2)