Перейти до змісту

Підпрограми для пружнопластичної деформації (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)