与弹塑性变形相关的子程序 (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: 第二 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)