跳轉至

與彈塑性變形相關的子程序 (uyield.f90)

提供用於計算彈塑性剛性矩陣及應力返回映射的子程序。 使用使用者自訂降伏函數時,首先在輸入檔案中設定 !PLASTIC, YIELD=USER 並輸入所需的材料常數, 接著必須建立函數 uElastoPlasticNumStatus 以及子程序 uElastoPlasticMatrixuBackwardEuler

(1) 回傳實數狀態變數數量的函數

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • 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)