Skip to content

Subroutines for Elastoplastic Deformation (uyield.f90)

Subroutines are provided for calculating the elastoplastic stiffness matrix and stress return mapping. When using a user-defined yield function, first set !PLASTIC, YIELD=USER in the input file and enter the required material constants, then the function uElastoPlasticNumStatus and the subroutines uElastoPlasticMatrix and uBackwardEuler must be created.

(1) Function that returns the number of real state variables

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • matl: Array storing material constants (1-100: system-defined material constants, 101-200: user-defined material constants)

(2) Subroutine for calculating the elastoplastic stiffness matrix

  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 storing material constants (1-100: system-defined material constants, 101-200: user-defined material constants)
  • stress: 2nd Piola-Kirchhoff stress
  • istat: Integer state variable
  • fstat: Array of real state variables
  • plstrain: Plastic strain at the beginning of the current substep
  • D: Elastoplastic matrix
  • temp: Temperature
  • hdflag: Calculate all components (0), deviatoric components only (1), or volumetric components only (2)

(3) Subroutine for stress return mapping calculation

  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 storing material constants (1-100: system-defined material constants, 101-200: user-defined material constants)
  • stress: 2nd Piola-Kirchhoff stress obtained by assuming elastic deformation for the trial stress
  • plstrain: Plastic strain at the beginning of the current substep
  • istat: Integer state variable
  • fstat: Array of real state variables
  • temp: Temperature
  • hdflag: Calculate all components (0), deviatoric components only (1), or volumetric components only (2)