跳转至

与弹塑性变形相关的子程序 (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: 第二 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: 假定弹性变形得到的 trial stress,即第二 Piola-Kirchhoff 应力
  • plstrain: 当前子步开始时的塑性应变
  • istat: 整数状态变量
  • fstat: 实数状态变量数组
  • temp: 温度
  • hdflag: 计算全部分量(0)、仅偏差分量(1)或仅体积分量(2)