Ir para o conteúdo

Sub-rotinas relacionadas à deformação elastoplástica (uyield.f90)

São fornecidas sub-rotinas para calcular a matriz de rigidez elastoplástica e o return mapping da tensão. Ao utilizar uma função de escoamento definida pelo usuário, primeiro defina !PLASTIC, YIELD=USER no arquivo de entrada e informe as constantes de material necessárias, e, em seguida, é necessário criar a função uElastoPlasticNumStatus e as sub-rotinas uElastoPlasticMatrix e uBackwardEuler correspondentes.

(1) Função que retorna o número de variáveis de estado reais

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • matl: matriz que armazena as constantes do material (1-100: constantes de material definidas pelo sistema; 101-200: constantes de material definidas pelo usuário)

(2) Sub-rotina para cálculo da matriz de rigidez elastoplástica

  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: matriz que armazena as constantes do material (1-100: constantes de material definidas pelo sistema; 101-200: constantes de material definidas pelo usuário)
  • stress: tensão de 2º Piola-Kirchhoff
  • istat: variável de estado inteira
  • fstat: matriz de variáveis de estado reais
  • plstrain: deformação plástica no início do subpasso atual
  • D: matriz elastoplástica
  • temp: temperatura
  • hdflag: calcula todos os componentes (0), somente os componentes desviadores (1) ou somente os componentes volumétricos (2)

(3) Sub-rotina para cálculo do return mapping da tensão

  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: matriz que armazena as constantes do material (1-100: constantes de material definidas pelo sistema; 101-200: constantes de material definidas pelo usuário)
  • stress: tensão de 2º Piola-Kirchhoff obtida como trial stress assumindo deformação elástica
  • plstrain: deformação plástica no início do subpasso atual
  • istat: variável de estado inteira
  • fstat: matriz de variáveis de estado reais
  • temp: temperatura
  • hdflag: calcula todos os componentes (0), somente os componentes desviadores (1) ou somente os componentes volumétricos (2)