Skip to content

Subroutines for User-Defined Materials (umat.f)

Provides an interface for deformation analysis of general materials, regardless of whether they are elastic, hyperelastic, or elastoplastic. To use a user-defined material, first set !USER_MATERIAL in the input file and enter the required material constants, and then create the uMatlMatrix and uUpdate subroutines.

(1) Subroutine for Calculating the Stiffness Matrix

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: Material name
  • matl: Array storing material constants (maximum 100)
  • strain: Green-Lagrange strain
  • stress: 2nd Piola-Kirchhoff stress
  • fstat: State variables
  • D: Constitutive relation
  • dtime: Time increment
  • ttime: Total time at the start of the current time increment
  • temperature: Temperature

(2) Subroutine for Updating Strain and Stress

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: Material name
  • matl: Array storing material constants (maximum 100)
  • strain: Strain
  • stress: 2nd Piola-Kirchhoff stress
  • fstat: State variables
  • dtime: Time increment
  • ttime: Total time at the start of the current time increment
  • temperature: Temperature