Ir para o conteúdo

Sub-rotinas para 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 cedência definida pelo utilizador, comece por definir !PLASTIC, YIELD=USER no ficheiro de entrada e introduza as constantes de material necessárias, devendo depois a função uElastoPlasticNumStatus e as sub-rotinas uElastoPlasticMatrix e uBackwardEuler ser criadas.

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

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • matl: Array que armazena constantes de material (1-100: constantes de material definidas pelo sistema, 101-200: constantes de material definidas pelo utilizador)

(2) Sub-rotina para calcular a 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: Array que armazena constantes de material (1-100: constantes de material definidas pelo sistema, 101-200: constantes de material definidas pelo utilizador)
  • stress: 2.ª tensão de Piola-Kirchhoff
  • istat: Variável de estado inteira
  • fstat: Array de variáveis de estado reais
  • plstrain: Extensão plástica no início do subpasso atual
  • D: Matriz elastoplástica
  • temp: Temperatura
  • hdflag: Calcular todas as componentes (0), apenas as componentes desviadoras (1) ou apenas as componentes volumétricas (2)

(3) Sub-rotina para o 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: Array que armazena constantes de material (1-100: constantes de material definidas pelo sistema, 101-200: constantes de material definidas pelo utilizador)
  • stress: 2.ª tensão de Piola-Kirchhoff obtida assumindo deformação elástica para a tensão de ensaio
  • plstrain: Extensão plástica no início do subpasso atual
  • istat: Variável de estado inteira
  • fstat: Array de variáveis de estado reais
  • temp: Temperatura
  • hdflag: Calcular todas as componentes (0), apenas as componentes desviadoras (1) ou apenas as componentes volumétricas (2)