跳转至

与用户定义材料相关的子程序 (umat.f)

提供用于一般材料变形分析的接口,不限于弹性、超弹性或弹塑性材料。 使用用户定义材料时,首先需要在输入文件中设置!USER_MATERIAL并输入所需材料常数,然后创建子程序uMatlMatrixuUpdate

(1) 计算刚度矩阵的子程序

subroutine uMatlMatrix( mname, matl, strain, stress, fstat, D, dtime, ttime, temperature )
        character(len=*), intent(in)  :: mname
        real(kind=kreal), intent(in)  :: matl(:)
        real(kind=kreal), intent(in)  :: strain(6)
        real(kind=kreal), intent(in)  :: stress(6)
        real(kind=kreal), intent(in)  :: fstat(:)
        real(kind=kreal), intent(out) :: D(:,:)
        real(kind=kreal), intent(in)  :: dtime
        real(kind=kreal), intent(in)  :: ttime
        real(kind=kreal), optional    :: temperature
  • mname: 材料名
  • matl: 保存材料常数的数组(最多100个)
  • strain: Green-Lagrange应变
  • stress: 2nd Piola-Kirchhoff应力
  • fstat: 状态变量
  • D: 本构关系
  • dtime: 时间增量
  • ttime: 当前时间增量开始时刻的总时间
  • temperature: 温度

(2) 更新应变和应力的计算子程序

subroutine uUpdate(  mname, matl, strain, stress, fstat, dtime, ttime, temperature )
        character(len=\*), intent(in)    :: mname
        real(kind=kreal), intent(in)    :: matl(:)
        real(kind=kreal), intent(in)    :: strain(6)
        real(kind=kreal), intent(inout) :: stress(6)
        real(kind=kreal), intent(inout) :: fstat(:)
        real(kind=kreal), intent(in)    :: dtime
        real(kind=kreal), intent(in)    :: ttime
        real(kind=kreal), optional      :: temperature
  • mname: 材料名
  • matl: 保存材料常数的数组(最多100个)
  • strain: 应变
  • stress: 2nd Piola-Kirchhoff应力
  • fstat: 状态变量
  • dtime: 时间增量
  • ttime: 当前时间增量开始时刻的总时间
  • temperature: 温度