Lewati ke isi

Subrutin untuk Deformasi Elastoplastis (uyield.f90)

Subrutin disediakan untuk menghitung matriks kekakuan elastoplastis dan return mapping tegangan. Saat menggunakan fungsi luluh yang ditentukan pengguna, pertama-tama tetapkan !PLASTIC, YIELD=USER dalam file input dan masukkan konstanta material yang diperlukan, kemudian fungsi uElastoPlasticNumStatus dan subrutin uElastoPlasticMatrix serta uBackwardEuler harus dibuat.

(1) Fungsi yang mengembalikan jumlah variabel keadaan real

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • matl: Array yang menyimpan konstanta material (1-100: konstanta material yang ditentukan sistem, 101-200: konstanta material yang ditentukan pengguna)

(2) Subrutin untuk menghitung matriks kekakuan elastoplastis

  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: Array yang menyimpan konstanta material (1-100: konstanta material yang ditentukan sistem, 101-200: konstanta material yang ditentukan pengguna)
  • stress: Tegangan Piola-Kirchhoff kedua
  • istat: Variabel keadaan integer
  • fstat: Array variabel keadaan real
  • plstrain: Regangan plastis pada awal substep saat ini
  • D: Matriks elastoplastis
  • temp: Temperatur
  • hdflag: Hitung semua komponen (0), hanya komponen deviatorik (1), atau hanya komponen volumetrik (2)

(3) Subrutin untuk perhitungan return mapping tegangan

  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: Array yang menyimpan konstanta material (1-100: konstanta material yang ditentukan sistem, 101-200: konstanta material yang ditentukan pengguna)
  • stress: Tegangan Piola-Kirchhoff kedua yang diperoleh dengan mengasumsikan deformasi elastis untuk trial stress
  • plstrain: Regangan plastis pada awal substep saat ini
  • istat: Variabel keadaan integer
  • fstat: Array variabel keadaan real
  • temp: Temperatur
  • hdflag: Hitung semua komponen (0), hanya komponen deviatorik (1), atau hanya komponen volumetrik (2)