Vai al contenuto

Subroutine per la deformazione elastoplastica (uyield.f90)

Sono fornite subroutine per calcolare la matrice di rigidezza elastoplastica e il return mapping delle tensioni. Quando si utilizza una funzione di snervamento definita dall'utente, impostare innanzitutto !PLASTIC, YIELD=USER nel file di input e inserire le costanti del materiale necessarie, quindi la funzione uElastoPlasticNumStatus e le subroutine uElastoPlasticMatrix e uBackwardEuler devono essere create.

(1) Funzione che restituisce il numero di variabili di stato reali

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • matl: Array che memorizza le costanti del materiale (1-100: costanti del materiale definite dal sistema, 101-200: costanti del materiale definite dall'utente)

(2) Subroutine per il calcolo della matrice di rigidezza elastoplastica

  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 che memorizza le costanti del materiale (1-100: costanti del materiale definite dal sistema, 101-200: costanti del materiale definite dall'utente)
  • stress: Tensione di 2° Piola-Kirchhoff
  • istat: Variabile di stato intera
  • fstat: Array di variabili di stato reali
  • plstrain: Deformazione plastica all'inizio del substep corrente
  • D: Matrice elastoplastica
  • temp: Temperatura
  • hdflag: Calcola tutti i componenti (0), solo i componenti deviatorici (1) o solo i componenti volumetrici (2)

(3) Subroutine per il calcolo del return mapping delle tensioni

  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 che memorizza le costanti del materiale (1-100: costanti del materiale definite dal sistema, 101-200: costanti del materiale definite dall'utente)
  • stress: Tensione di 2° Piola-Kirchhoff ottenuta assumendo una deformazione elastica per la trial stress
  • plstrain: Deformazione plastica all'inizio del substep corrente
  • istat: Variabile di stato intera
  • fstat: Array di variabili di stato reali
  • temp: Temperatura
  • hdflag: Calcola tutti i componenti (0), solo i componenti deviatorici (1) o solo i componenti volumetrici (2)