Перейти к содержанию

Подпрограммы для упругопластической деформации (uyield.f90)

Предусмотрены подпрограммы для вычисления упругопластической матрицы жёсткости и возвратного отображения напряжений. При использовании пользовательской функции текучести сначала задайте !PLASTIC, YIELD=USER во входном файле и введите необходимые константы материала, после чего необходимо создать функцию uElastoPlasticNumStatus и подпрограммы uElastoPlasticMatrix и uBackwardEuler.

(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: Второй тензор напряжений Пиолы—Кирхгофа
  • 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: Второй тензор напряжений Пиолы—Кирхгофа, полученный для пробного напряжения в предположении упругой деформации
  • plstrain: Пластическая деформация в начале текущего подшага
  • istat: Целочисленная переменная состояния
  • fstat: Массив вещественных переменных состояния
  • temp: Температура
  • hdflag: Вычислять все компоненты (0), только девиаторные компоненты (1) или только объёмные компоненты (2)