Essa usermat está particionada em vários arquivos e subrotinas, para usar basta compilar o arquivo usermat que o compilador encontra o resto se estiver na mesma pasta. Não há nada que impeça de juntar todas as rotinas no mesmo arquivo, montei assim para facilitar a programação e organização.
Minha usermat é para estado plano (usermatps
) e considera concreto com ou sem fibras de aço, explicações sobre a entrada de dados estão na planilha vars_estado.xlsx
.
A organização é essencialmente: no arquivo usermatps
esta o corpo da subrotina que tecnicamente não precisará sofrer grandes alterações com o desenvolvimento do código, quase tudo que precisa ser mudado é chamado em subrotinas que chamam outras subrotinas (isso facilita muito a manutenção do código). A edição do vetor de variáveis de estado é realizada pelas "rotinas_estado"
, assim posso apenas carregar o vetor de ustatev
para todos lados e trabalhar como se fosse um programa orientado a objetos, e ainda posso alterar facilmente a posição dos dados no vetor. Caso as propriedades do concreto variem no tempo/solução deve ser removido o trecho das rotinas de estado que calcula apenas na primeira vez os valores dos parametros (exemplo: a linha 342 do arquivo rotinas_estado
onde calc
testa se os parametros são conhecidos, se eles variam isso deve ser recalculado em cada etapa).
A construção do código foi baseada no trabalho da Prof. Paula M. Lazzari, mas foi tudo reescrito e comentado com minhas interpretações (talvez erradas...).
O algoritmo de fissuração foi reduzido para o estado plano podendo ter apenas duas fissuras perpendiculares (cálcula a primeira e a segunda está a 90°). Foi ainda criado um critério no Tension-stiffening para permitir a falha por corte em vigas sem estribos (ver minha dissertação pra isso).
O algoritmo plástico foi muito alterado, foram criadas funções para determinar o numero de plasticidade f
em função da superfície de ruptura e da regra de endurecimento (que são subrotinas), assim posso derivar f
numéricamente e aplicar Newton-Raphoson + line search para encontrar a deformação de endurecimento (acredito que a deformação plástica equivalente tenha algum problema em sua formulação, mas isso foi ignorado e mantido igual aos demais trabalhos). O algoritmo plástico foi construído no estado plano, mas a maioria das funções depende apenas das tensões principais e invariantes de tensão, asssim considerando todas componentes nessas etapas o algoritmo deve funcionar em 3D. As propriedades do concreto são parametros determinados por rotinas adjacentes, então podem ser alteradas sem mexer no código principal, isso deve facilitar a consideração de visco e de problemas térmicos.
Existem alguns exemplos na pasta apdls
, mas estão incompletos.
.
Para fazer download de todos os arquivos clique aqui.
Recomendo ainda usar o debbuger do VS para trabalhar com isso, tutorial aqui.
.
Boa sorte!
Eduardo P. Titello,
maio de 2020
.
PS: O arquivo em Python plota a fissuração com o avanço da carga, mas pra isso precisa compilar o user01.f, ativar a exportação do estágio de fissuração e configurar o script em Python para ler, não é nada muito dificil, mas não é para principiantes...