Documente Academic
Documente Profesional
Documente Cultură
Rio de Janeiro
Agosto de 2015
ENGENHARIA
MECNICA
DA
ESCOLA
POLITCNICA
DA
NECESSRIOS
PARA
OBTENO
DO
GRAU
DE
ENGENHEIRO MECNICO.
Aprovado por:
________________________________________________
Prof. Fernando Pereira Duda, D.Sc.
________________________________________________
Prof. Anna Carla Monteiro de Araujo, D.Sc.
________________________________________________
Prof. Lavinia Maria Sanabio Alves Borges, D.Sc.
ii
iii
iv
DEDICATRIA
minha me Aparecida, ao meu pai Srgio e ao meu irmo Lucas, que sempre me
apoiaram incondicionalmente e esto sempre ao meu lado na jornada da vida. Obrigado
por tudo.
vi
vii
AGRADECIMENTOS
Este trabalho no teria sido possvel sem o apoio de minha famlia e amigos.
Agradeo minha famlia, que apesar da distncia, sempre foi muito presente em minha
vida e sempre me apoiou. Adoro vocs.
Aos meus amigos Ana Beatriz, Bruno Chico, Bruno Furmon, Camille, Davi, Gus Ferla,
Jlia, Lvia, Maira, Mariana e Tatiane. Obrigado pelos longos anos de amizade. Amigos
de verdade so para sempre.
Aos amigos da UFRJ, que dividiram comigo os momentos bons e os difceis desta
jornada. Um obrigado especial ao Adriano e Helena que entraram nessa jornada comigo,
desde Clculo I e ao Frederico e pelo companheirismo.
equipe Minerva Baja UFRJ, que foi minha verdadeira turma no curso de Engenharia
Mecnica.
Aos meus mentores de estgio Pedro, Pierre, Daniel, Luciana, Thiara e Sylvestre, que
me acolheram desde o incio e que se tornaram grandes modelos de inspirao na
engenharia. Aos meus colegas Bruno Aguero, Daniel, Renato e Vincius pela parceria
nesse ano final de estgio e faculdade. Obrigado pelo aprendizado.
Ao meu coorientador Pedro Freire Filgueiras, por sua orientao to cuidadosa, que me
despertou o interesse nessa rea do conhecimento.
Ao meu coorientador Pierre Leon-Christian Trublin, pela transmisso de seus
conhecimentos em Abaqus, que permitiu a concluso deste trabalho.
Ao prof. Fernando Pereira Duda, pela orientao no trabalho e pela transmisso de seus
conhecimentos.
Ao Departamento de Engenharia Mecnica da Politcnica e UFRJ.
viii
ix
Agosto/2015
xi
August/2015
The present work introduces a method for identification of the material parameters for
Gurson-Tvergaard-Needleman damage model. The calibration procedure is an iterative
inversion procedure in which force-displacement data from a tensile test is compared
with a finite element analysis. For this, an optimization program by Genetic Algorithm
was developed.
The results of this work is a base of understanding for the ductile damage model of
Gurson and the introduction of a method to calibrate its material parameters
Key-words: Ductile Fracture, Damage Model, Gurson, GTN, Finite Elements, FEM and
Abaqus
xii
xiii
Sumrio
DEDICATRIA .............................................................................................................. vi
AGRADECIMENTOS .................................................................................................. viii
LISTA DE FIGURAS ................................................................................................... xvi
LISTA DE TABELAS ................................................................................................ xviii
1
INTRODUO ........................................................................................................ 1
1.1
Contextualizao ................................................................................................ 1
1.2
Motivao .......................................................................................................... 2
1.3
Objetivos ............................................................................................................ 4
REVISO BIBLIOGRFICA.................................................................................. 5
2.1
2.1.1
2.2
2.2.1
2.2.2
2.3
2.3.1
O Modelo .................................................................................................. 11
2.3.2
2.3.3
2.4
2.4.1
3
METODOLOGIA ................................................................................................... 26
3.1
Material ............................................................................................................ 26
3.1.1
Generalidade do ao ................................................................................. 26
3.1.2
Caracterizao metalrgica....................................................................... 26
3.1.3
3.1.4
xiv
3.2
3.2.1
3.2.2
3.2.3
Propriedades ............................................................................................. 33
3.3
3.3.1
4
4.1.1
4.1.2
4.2
CONCLUSO ........................................................................................................ 41
BIBLIOGRAFIA ..................................................................................................... 42
APNDICES ........................................................................................................... 46
A.
B.
xv
LISTA DE FIGURAS
Figura 1.1 - Regio onde se situa o pr-sal....................................................................... 1
Figura 1.2 - Exemplo de avaliao do limite de resistncia de tubos dcteis trincados
(Motarjemi, 2004). ............................................................................................................ 2
Figura 1.3 - Exemplo de falha dctil em tubos (Alexander, 2010). ................................. 3
Figura 2.1 - Formato tpico da curva tenso-deformao uniaxial de um metal
policristalino. .................................................................................................................... 6
Figura 2.2 - Superfcie de escoamento segundo Mises e Tresca representados no plano
desviador........................................................................................................................... 8
Figura 2.3 - Fratura frgil vs. dctil (a) fratura muito dctil: metais leves (ex. Pb, Au) a
temperatura ambiente, e metais, polmeros, vidros a alta temperatura. (b) fratura dctil
moderada: metais tpicos (c) fratura frgil: metais pouco tenazes e cermicos (RochaRangel, 2011). .................................................................................................................. 9
Figura 2.4 - Representao dos passos da fratura dctil em barras cilndricas. ............. 10
Figura 2.5 - Caminho esquemtico de crescimento dctil sob modo I de fratura. ......... 11
Figura 2.6 - Comparao da superfcie de escoamento de Gurson, Mises e Tresca no
espao de tenses pincipais (Brannon, et al., 2009) ....................................................... 12
Figura 2.7 - Distribuio normal da deformao na qual ocorrer nucleao, para o
modelo de GTN. ............................................................................................................. 14
Figura 2.8 - Evoluo da frao volumtrica de vazios com o aumento da deformao.
A taxa de crescimento da FVV acentuada nos estgios finais do rasgamento dctil. . 15
Figura 2.9 - Comparao computacional da influncia de f0 , comparando com os
ensaios de trao realizado. ............................................................................................ 16
Figura 2.10 - Comparao computacional da influncia de: a) fc e b) ff , comparando
com os ensaios de trao realizado. ................................................................................ 18
Figura 2.11 - Comparao computacional da influncia da nucleao, comparando com
os ensaios de trao realizado......................................................................................... 19
Figura 2.12 - Comparao computacional da influncia de q1 e q2, comparando com os
ensaios de trao realizado. ............................................................................................ 20
Figura 2.13 - Problema tpico de mnimos e mximos locais. Comparao entre: a)
Tcnicas Heursticas; b) Tcnicas Determinsticas. ....................................................... 21
Figura 2.14 Representao do indivduo no GA. ........................................................ 21
Figura 2.15 - Esquema do operador seleo................................................................... 22
xvi
xvii
LISTA DE TABELAS
Tabela 3.1 - Composio qumica do ao em porcentagem retirado por lote. ............... 26
Tabela 3.2 - Amplitude de input da velocidade no Step................................................. 32
Tabela 4.1 - Parmetros de dano obtidos com algoritimo gentico............................... 37
xviii
1 INTRODUO
1.1 Contextualizao
As reservas de petrleo encontradas na camada pr-sal do litoral brasileiro se
estendem entre o litoral dos estados do Esprito Santo at Santa Catarina. Segundo a
escala API, a qualidade deste leo considerada de mdia a alta qualidade, tornando
maior o atrativo para sua explorao.
Estes reservatrios, por sua vez, se situam a profundidades que podem superar
2000 m de lmina d'gua e entre 4000 e 6000 m de profundidade no subsolo, chegando,
portanto a at 7000 m da superfcie do mar, incluindo uma camada de sal que pode
variar de 200 a 2000 m. Na cabea do poo, encontram-se temperaturas de 200C,
presses de 70 MPa e um ambiente altamente corrosivo, com presena de altos teores de
gs carbnico e cido sulfdrico (Caldas, et al., 2015).
1.2 Motivao
Procedimentos convencionais utilizados para a avaliao da integridade
estrutural de tubos utilizam muitas vezes critrios simplificados, incorporando
mecanismos de colapso plstico e propriedades mecnicas (tenso de escoamento e
limite de resistncia) do material. Estes mtodos estabelecem critrios de aceitao de
defeitos baseados em dados experimentais, os quais no refletem necessariamente o
mecanismo de falha real (e.g., crescimento estvel do defeito macroscpico antes do
colapso do tubo) (Motarjemi, 2004).
Atualmente, os mtodos de avaliao de falhas em materiais dcteis envolvem
sempre um elevado grau de conservadorismo em suas anlises e no resultam sempre
eficientes. Alm disso, caso o material seja de natureza tenaz, muitas vezes os modelos
de predio perdem sua validade. Uma melhor caracterizao mecnica dos materiais e
compreenso dos fenmenos atuantes na falha dctil poderia favorecer a utilizao de
modelos de estado limite.
Figura 1.2 - Exemplo de avaliao do limite de resistncia de tubos dcteis trincados (Motarjemi, 2004).
1.3 Objetivos
Um dos grandes desafios ainda na modelagem dctil da fratura so os
parmetros de material associados a seus modelos constitutivos.
O objetivo central deste trabalho consiste no desenvolvimento de um mtodo
capaz de caracterizar estes parmetros de forma a obter uma correta modelagem da
fratura dctil. Mais especificamente, o modelo em estudo o modelo de plasticidade
para materiais porosos de Gurson, que um dos modelos de dano mais utilizados para
descrever a fratura dctil.
Uma calibrao dos parmetros do modelo Gurson-Tvergaard-Needleman foi
feita comparando, por um processo de inverso iterativo, dados de fora-deslocamento
obtidos de um ensaio de trao com corpo de prova cilndrico e o resultado da anlise
em elemento finito. Para isso, um programa identificao e otimizao por algoritmo
gentico (GA) foi desenvolvido em Python.
Finalmente, aps a identificao dos parmetros, dados de fora-deslocamento
obtidos de um ensaio de trao com corpo de prova cilndrico e entalhes de raios de 1.5,
3 e 6 mm foram comparados a anlises numricas do modelo com os parmetros
obtidos.
O material analisado foi o ao E empregado como tubos de revestimento
(casings) na extrao de petrleo. O trabalho experimental foi executado no Laboratrio
de Propriedades Mecnicas (PropMec) da Universidade Federal do Rio de Janeiro
(UFRJ), enquanto as anlises numricas foram feitas atravs do software ABAQUS
v6.13.
Os resultados apresentados neste trabalho fornecem uma base no entendimento
do modelo de dano de Gurson e introduzem um mtodo de calibrao de seus
parmetros de material. O produto final uma ferramenta capaz de identificar os
parmetros de fratura dctil.
2 REVISO BIBLIOGRFICA
Com limitao de escoamento e plasticidade, a mecnica da fratura elstica
linear permite descrever o comportamento fratura de diversos materiais e ligas
metlicas. Entretanto, com o desenvolvimento de aos de grande resistncia e
ductilidade, os quais desenvolvem grande plasticidade antes do colapso total, a MFEL
encontrou srias dificuldades na sua aplicabilidade. Os requisitos dimensionais da
MFEL para estes tipos de aos requerem tamanhos de corpos-de-prova excessivamente
grandes para obter valores vlidos de tenacidade fratura, o que torna os ensaios
proibitivos. Ainda assim, mesmo sendo possvel a sua obteno, estes no so aplicveis
a estruturas com espessura ou dimenses reduzidas (Craveiro, 2007).
Um bom entendimento e modelagem do comportamento plstico do material
um passo necessrio no estudo da fratura dctil. Simulaes de experimentos em
programas de Elementos Finitos fornecem o histrico de tenses e deformaes durante
diferentes fases de carregamento. Na regio onde a fratura experimental esperada,
importante obter a triaxialidade, ngulo de carregamento e deformao plstica
equivalente local. A simulao da fratura considerada relevante se as curvas foradeslocamento do experimento e da simulao computacional so compatveis. Isto
indica que os parmetros de dano so altamente dependentes do modelo de plasticidade
adotado (Marcadet, 2012).
Portanto, para uma anlise do comportamento da fratura dctil necessrio a
compreenso mnima da teoria de Plasticidade e dos mecanismos com que ocorre a
fratura dctil, brevemente apresentadas nas sees 2.1 e 2.2 respectivamente.
Na seo 2.3, apresentado o modelo de dano de Gurson-Tvergaard-Needleman
(GTN) escolhido para o estudo. Ser apresentada sua equao constitutiva, assim como
as consideraes necessrias para a utilizao do modelo.
Por fim, na seo 2.4, apresentado o mtodo de inverso em algoritmo
gentico utilizado para identificar os parmetros do modelo de GTN.
2.1
2.2
A relao imposta pelas Equaes 2.1 e 2.2 perde a validade a partir do ponto D,
havendo a necessidade de extrapolar a curva para grandes deformaes.
2.1.1 Critrio de Escoamento
Um critrio de escoamento uma hiptese que define o limite de elasticidade de
um material e o incio da deformao plstica para qualquer combinao possvel de
tenses. A superfcie de escoamento o lugar geomtrico que delimita estas tenses.
6
Rankine diz que ruptura frgil se inicia quando a tenso principal em um ponto
do material igual a uma propriedade caracterstica do material y :
= = 0
2.3
onde i = 1; 2; 3
O primeiro critrio de escoamento para um estado combinado de tenso para os
metais foi proposto por Tresca (Tresca, 1964), que sugeriu que o escoamento ocorreria
quando a tenso de cisalhamento mxima em um ponto atinge um valor crtico y . Em
termos de tenses principais:
=
1
1
1
1 2 ; 1 3 ; 2 3
2
2
2
= 0
2.4
2.5
1
2 2 + 2 3
6 1
+ 3 1
2.6
Figura 2.2 - Superfcie de escoamento segundo Mises e Tresca representados no plano desviador2
Para a maioria dos metais, o critrio de von Mises representa de maneira mais
precisa seu escoamento do que o critrio de Tresca (Filgueiras, 2014).
Figura 2.3 - Fratura frgil vs. dctil (a) fratura muito dctil: metais leves (ex. Pb, Au) a temperatura
ambiente, e metais, polmeros, vidros a alta temperatura. (b) fratura dctil moderada: metais tpicos (c)
fratura frgil: metais pouco tenazes e cermicos (Rocha-Rangel, 2011).
10
2.7
Figura 2.6 - Comparao da superfcie de escoamento de Gurson, Mises e Tresca no espao de tenses
pincipais (Brannon, et al., 2009)
, , , =
+ 21
32
1 + 3 2 = 0
2
2.8
onde:
=
3
2
= +
Cauchy ;
1
= :
12
2.9
material:
= 1
= + ( + )
2.10
2.11
A Equao 2.10 define taxa de crescimento dos vazios existentes assumindo que
a matriz do material incompressvel. A Equao 2.11 define a quantidade de novos
vazios que so nucleados como resultado do crescimento da deformao e da tenso
plstica.
Chu e Needleman (1980) propuseram uma funo de distribuio normal para
contabilizar a nucleao de vazios para toda a porosidade. A distribuio normal
ilustrada na Figura 2.7 para n.
13
Figura 2.7 - Distribuio normal da deformao na qual ocorrer nucleao, para o modelo de GTN.
1
2
2.12
1
2
2
onde:
o desvio padro;
14
2.13
Figura 2.8 - Evoluo da frao volumtrica de vazios com o aumento da deformao. A taxa de crescimento
da FVV acentuada nos estgios finais do rasgamento dctil.
>
2.14
onde:
2.15
15
realizadas
simulaes
em
Elementos
Finitos
para
estudar
0.001
(%)
2.16
Figura 2.9 - Comparao computacional da influncia de f0 , comparando com os ensaios de trao realizado.
16
17
Figura 2.10 - Comparao computacional da influncia de: a) fc e b) ff , comparando com os ensaios de trao
realizado.
2.17
18
numricas e com testes de trao. Porm, o valor para fn pode variar de acordo com a
interpretao. Rakin (2008) assume que a contribuio para o processo de nucleao
provm de pequenos carbonetos metlicos, enquanto a porosidade inicial responsvel
por grandes incluses. Por outro lado, fn tambm interpretado como a frao de
volume de grandes incluses e carbonetos secundrios (Corigliano, et al., 2000).
Figura 2.11 - Comparao computacional da influncia da nucleao, comparando com os ensaios de trao
realizado.
19
Figura 2.12 - Comparao computacional da influncia de q1 e q2, comparando com os ensaios de trao
realizado.
20
Figura 2.13 - Problema tpico de mnimos e mximos locais. Comparao entre: a) Tcnicas Heursticas; b)
Tcnicas Determinsticas.
x1=5
1
1
alelo
x2=6
0
0
cromossomo
x3=1
1
1
1
x4=7
1
0
1
x5=2
0
Figura 2.14 Representao do indivduo no GA.
O operador cruzamento usado para formar uma nova populao por meio da
recombinao de solues (cromossomos). Neste operador, um par de indivduos
dividido em lugares aleatoriamente escolhidos e o material gentico desses indivduos
pode ser recombinado, possibilitando formar novos indivduos. Estes novos indivduos
so novamente avaliados e, ento, recebem um novo valor de aptido individual. Dentre
as tcnicas de cruzamento, podem ser citados o cruzamento de um ponto, o de mltiplos
pontos, o espalhado (scattered) e o de heursticas.
22
Pais
Escolhe
randomicamente o
ponto de corte
Filhos
1 Troca 1
1 Troca 1
23
Original
Mutante
0 alelo mutado 0
0
Com o uso deste operador, uma maior varredura do espao de busca realizada,
evitando que o GA convirja para mnimos locais. Tcnicas como mutao uniforme e
mutao Gaussiana podem ser usadas.
Na Figura 2.17 est uma representao do uso dos operadores genticos onde
dois indivduos da populao so selecionados (processo de seleo) e seus materiais
genticos so trocados (processo de cruzamento, como por exemplo, o cruzamento de
um ponto), formando novos indivduos (na Figura 2.17, apenas um indivduo est
representado). Quando um gene alterado, o processo de mutao realizado.
O comportamento do GA pode ser influenciado por diversos parmetros, tais
como, o tamanho da populao, o nmero de geraes, a probabilidade de cruzamento e
a probabilidade de mutao. A escolha da melhor configurao para os parmetros do
GA uma tarefa difcil e, alm de depender do tipo de problema a ser tratado,
depender da realizao de um grande nmero de experimentos e testes. O tamanho da
populao influencia no desempenho global do GA. Este parmetro indica o nmero de
cromossomos que h em cada populao, definindo o espao de busca do problema.
Quando este parmetro alto, grande parte do espao de busca do problema varrida,
entretanto, um alto custo computacional obtido para executar muitas avaliaes da
24
funo de aptido (Lopes, 2007). Por outro lado, quando o tamanho da populao
pequeno, o desempenho do algoritmo piora. O nmero de geraes corresponde ao
nmero de iteraes que so realizadas antes do GA parada. A probabilidade de
cruzamento corresponde frao da populao na prxima gerao que criada pela
funo de cruzamento. A probabilidade de mutao (ou frao de mutao) corresponde
probabilidade de mudana das propriedades de um gene. Geralmente o valor desta
frao muito pequeno, assim, o novo cromossomo formado no ser muito diferente
do cromossomo original (Konak, et al., 2008).
Existe ainda outro parmetro do GA que pode ser manipulado, conhecido como
migrao. A migrao representa como os indivduos se movem entre subpopulaes.
Neste caso, os melhores indivduos de uma subpopulao trocam de lugar com os piores
indivduos de outra subpopulao. Os indivduos da subpopulao fonte so apenas
copiados para a subpopulao receptora, no sendo removidos da subpopulao de
origem.
Conforme mencionado, o Algoritmo Gentico comea com uma populao
inicial, representando um conjunto de possveis solues para um dado problema. Para
resolver o problema de deteco de danos, cada cromossomo (indivduo) da populao
pode ser formado de acordo com o vetor apresentado na Equao 2.18.
= [1 , 2 , 3 , 4 ]
2.18
25
3 METODOLOGIA
O projeto foi dividido em trs reas de atividades: uma parte experimental para a
caracterizao metalrgica e mecnica do material, que envolveu ensaios de trao;
modelagem de elementos finitos que visam calibrar e reproduzir os testes de trao, e o
desenvolvimento de um algoritmo de calibrao.
3.1 Material
3.1.1 Generalidade do ao
O material utilizado neste estudo um ao E, obtido por lingotamento contnuo
e fornecido em barras cilndricas. O material posteriormente laminado. O produto final
um tubo sem costura com aplicao para indstria petrolfera como casing e
tubing.
3.1.2 Caracterizao metalrgica
A composio qumica do ao se encontra detalhada na Tabela 3.1.
Tabela 3.1 - Composio qumica do ao em porcentagem retirado por lote.
C (%)
0.4
Si (%)
0.2
Mn (%)
1.71
P (%)
0.3
Fe (%)
--
26
Foram utilizados dois tipos principais de corpo de prova (CP): cilndricos padro
e cilndricos com entalhe circular, com raios de 1.5, 3 e 6 mm. A Figura 3.2 ilustra os
CPs, representando as dimenses mais importantes para os clculos.
Foram realizados, no total, sete ensaios de trao, sendo quatro com CPs
cilndrico padro e trs ensaios de trao com CPs cilndricos com entalhe, um de cada
raio.
27
Figura 3.4 - a) Mquina de ensaios MTS; b) Detalhe de montagem do corpo de prova com o extensmetro; c)
Corpo de prova aps a fratura; d) Corpo de prova com fratura invlida.
28
29
3.1
O mtodo dos mnimos quadrados (no Excel: linha de tendncia) foi usado para
determinar os parmetros A e n., com um ajuste realizado na regio final da curva
tenso-deformao real, vistos na Figura 3.6.
30
Figura 3.7 - Geometria dos corpos de prova modelados: a) Corpo de prova padro; b) Corpo de prova com
entalhe.
3.2.1.2 Elementos
Elementos quadrilaterais axissimtricos bilineares de 4-ns com integrao
reduzida (CAX4R) so utilizados. Os elementos CAX4R so os nicos elementos
quadrilaterais permitidos no Abaqus Explicit.
Um tamanho de elemento Lc = 100m foi escolhida. Com o objetivo de acelerar
o tempo de calculo da calibrao, o refinamento de malha para os CPs padro aplicado
apenas perto do centro do CP e na regio de topo, onde a carga aplicada. A Figura 3.8
apresenta as malhas utilizadas na simulao.
31
Figura 3.8 - Ilustrao da malha aplicada nos modelos de: a) CP padro; b) CP raio 1.5 mm; c) CP raio 3 mm.
D) CP raio 6 mm.
t(s)
0
0.1
1
v(mm/s)
0
3
3
32
33
onde:
34
3.2
FkFE
Fkexp
bk
finitos;
modo,
utilizando
um
mtodo
de
programao
matemtica
3.3
onde:
35
3.4
4 RESULTADOS E DISCUSO
O material pode ser representado por um conjunto de parmetros. O objetivo
deste trabalho determinar os seus valores para um determinado tipo de material,
atravs da soluo de um problema de otimizao
Este captulo reune os resultados da tentativa de identificao dos parmetros de
material do modelo de GTN realizada para o ao estrutural a partir do mtodo de
otimizao por algoritmo gentico desenvolvido. Por fim sero apresentados os
resultados das simulaes, com o intudo de avaliar a eficcia dos parmetros
identificados para outras solicitaes. As anlises foram realizadas de acordo com a
metodologia descrita no captulo 3
36
f0
0.999924
fc
0.084
ff
0.24
fn
0.02
n
0.13
Sn
0.055
A Figura abaixo mostra a evoluo dos fitness dos indivduos ao longo das
geraes. possvel observar a convergncia acontecendo nas primeiras 10 geraes
37
Figura 4.2 - Resultado final da calibrao. No grfico so mostradas curvas de fora-deslocamento dos dados
experimentais, do modelo GTN e de curvas de plasticidade sem dano.
38
Figura 4.3 Configurao final da anlise numrica do corpo de prova padro ps-fratura.
39
Figura 4.4 - Curvas fora-deslocamento dos corpos de prova c/ entalhe com parmetros de dano calibrado e
dos dados experimentais.
possvel observar na Figura 4.5 a configurao deformada final dos CPs com entalhe.
De forma igual ao CP padro, informaes importantes sobre o estado de tenses e
deformaes resultante ps-fratura podem ser obtidos.
Figura 4.5 - Configurao final da anlise numrica do corpo de prova com entalhe ps-fratura.
40
5 CONCLUSO
Neste trabalho, foi apresentada uma abordagem para a determinao de
parmetros de material em modelos de dano. Neste procedimento, a identificao ocorre
com o uso de algoritmo gentico. Por processo de inverso, o algoritmo usa resultados
de testes de trao em um processo iterativo com anlises por elementos finitos.
O problema tem comportamento no convexo de otimizao, portanto a
abordagem por algoritmo gentico torna-se justificvel para a obteno de parmetros
prximo do timo global.
Nesta classe de problemas, mtodos de tentativa e erro puramente no
assegura a unicidade dos parmetros do material. Uma restrio geomtrica foi includa
para ajudar a guiar a identificao das propriedades de dano e corretamente caracterizar
o material modelado, mantendo-se a fsica do problema.
O mtodo desenvolvido ilustrado atravs da caraterizao dos parmetros de
material para modelo de Gurson-Tvergaard-Needleman para um ao estrutural. Os
resultados obtidos demonstram que o mtodo eficaz, pois uma boa calibrao foi
obtida.
Os resultados de calibrao obtidos, apesar de boas, foram para um tamanho de
malha fixo. O tamanho de malha (Lc) um parmetro importante e deve ser estudada a
sua influncia nos resultados finais.
Em relao eficincia do algoritmo, deve-se salientar que, apesar da reduo
de tempo obtida guardando o resultado das simulaes realizadas, o mtodo caro do
ponto de vista computacional. Uma questo que pode ser avaliada para trabalhos futuros
a paralelizao da simulao. Existe, ainda, a possibilidade de otimizao do cdigo
em si.
O trabalho tem como objetivo propor um mtodo de identificao de variveis
para modelos de dano. O modelo de plasticidade para materiais porosos de Gurson foi
escolhido como abordagem inicial. Portanto, existe, ainda, a necessidade de avaliar a
eficcia do mtodo com demais modelos de dano.
Por fim, o modelo de Gurson tem algumas limitaes de aplicaes que no
foram avaliadas neste trabalho. V-se necessrio ento uma comparao entre modelos
de dano para que haja maior confiana ao se escolher um modelo para simular a
propagao de fraturas dcteis.
41
6 BIBLIOGRAFIA
ABAQUS Inc. 2013. ABAQUS Theory Manual. 2013, Version 6.13.
Alexander, C. 2010. Limit State Design Based on Experimental Methods for High
Pressure Subsea Pipeline Design. 8th International Pipeline Conference. 2010.
Beremin, F. M. 1981. Cavity Formation from Inclusions in Ductile Fracture of A508
Steel. Metallurgical Transactions A. 1981, Vol. 12, pp. 723-731.
Bernauer, G., et al. 1999. Hinweise zur Anwendung des GURSON-TVERGAARDNEEDLEMAN-Modells. Institut fr Werkstoffforschung, GKSS-Forschungszentrum
Geesthacht. 1999.
Bouchouicha, A. Slimane/ B. e Benguediab, M. 2015. Parametric study of the ductile
damage by the GursonTvergaardNeedleman model of structuresin carbon steel A48AP. J. mater res technol. 2015.
Brannon, R., et al. 2009. Experimental Assessment of Unvalidated Assumptions in
Classical Plasticity Theory. 2009.
Burczynski, T. e Beluch, W. 2001. The identification of crack using boundary
elements and evolutionary algorithms. Engineering Analysis with Boundary Elements.
2001, Vol. 25, pp. 313-322.
Caldas, L. Q. e Amaral, N. B. 2015. Anlise de viabilidade econmica de projetos de
Explorao e Produo no regime de partilha de produo: Um estudo de caso do
campo de Libra no Pr-Sal. Escola Politcnica , UFRJ. 2015.
Chou, J. H. e Ghaboussi, J. 2001. Genetic algorithm in structural damage detection.
Computers and Structures. 2001, Vol. 79, pp. 1335-1353.
Chu, C. C. e Needleman, A. 1980. Void nucleation effects in biaxially streched sheets.
J. Engng. Mater. Technol. 1980, Vol. 102, pp. 249-256.
Corigliano, A., Mariani, S. e Orsatti, B. 2000. Identification of GursonTvergaard
material model parameters via Kalman filtering technique. I. Theory. International
Journal of Fracture. 2000, Vol. 104, pp. 349373.
42
43
Konak, A., Lopes, P. S. e Lopes, M. E. 2008. On the use of boundary element methods
for inverse problems of damage detection in structures. Advances in Boundary Element
Techniques IX. 2008, pp. 301-307.
Lopes, P. S. 2007. Modelagem de problema inverso de deteco de danos por tcnicas
de identificao de parmetros e de otimizao. Instiruto de Engenharia Mecnica,
Universidade Federal de Itajub. 2007. Tese de Doutorado.
M. Rakin, N. Gubeljak, M. Dobrojevic and A. Sedmak. 2008. Modelling of ductile
fracture initiation in strength mismatched welded joint. Engineering Fracture
Mechanics. 2008, Vol. 75, pp. 3499-3510.
Marcadet, S. 2012. Effect of Non-linear Loading Paths on Sheet Metal Fracture: Large
Strain In-plane Compression Followed by Uniaxial Tension. Department of Mechanical
Engineering, Massachusetts Institute of Technology. 2012. Master of Science Thesis.
McClintock, F. A. 1968. A criterion for ductile fracture by the growth of holes. J. Appl.
Mech. 1968, Vol. 35.
Mises, R. von. 1913. Mechanik der festen Krper im plastisch deformablen Zustand.
Gttin. Nachr. Math. Phys. 1913, Vol. 1, pp. 582-592.
Mitchell, M. 1999. An Introduction to Genetic Algorithms. 5th Edition. Cambridge,
Massachusetts-London, England : MIT Press, 1999.
Motarjemi, A. K. 2004. Fracture Assessment of Through-wall and Surface-cracked
Pipes by BS 7910 and API 579 Assessment Procedures: A Comparative Study.
ASME/JSME 2004 Pressure Vessels and Pipinng Conference. American Society of
Mechanical Engineers, 2004, pp. 57-62.
Oh, C. S., et al. 2011. A Finite Element Ductile Failure Simulation Metrhod Using
Stress-modified Fracture Model. Engineering Fracture Mechanics. 2011, Vol. 78, pp.
124-137.
Rice, J. R. e Tracey, D. M. 1969. On the ductile enlargement of voids in triaxial stress
fields. J. Mech. Phys. Solids. 1969, Vol. 17, pp. 201-217.
Rocha-Rangel, E. 2011. Fracture Toughness Determinations by Means of Indentation
Fracture. 2011.
44
45
7 APNDICES
A. ALGORITMO DO PROGRAMA
46
import random
import numpy as np
from deap import base, creator, tools, algorithms
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
import odbAccess
executeOnCaeStartup()
session.journalOptions.setValues(replayGeometry=INDEX, recoverGeometry=INDEX)
#: Tensile Test
data = np.genfromtxt('C:\\temp\\GTN-PADRAO.txt')
NumPT = len(data)
NECK = 4.1/2
R0 = 6.09/2
L0 = 23.6/2
#Function Parameters Definition
nglobal_max = 3
nbits = []
min_ = []
max_ = []
oper0 = [0]*NumPT
oper1 = oper2 = 0
#Parameter 1: q1
nbits.append(3)
min_.append(1.4)
max_.append(1.6)
#Parameter 2: q2
nbits.append(3)
min_.append(1)
max_.append(1.1)
#Parameter 3: f0
nbits.append(10)
min_.append(0.998977)
max_.append(1.000000)
#Parameter 4: ff
nbits.append(6)
min_.append(0.01)
max_.append(0.64)
#Parameter 5: fc
nbits.append(8)
min_.append(0.001)
max_.append(0.256)
#Parameter 6: fn
nbits.append(7)
min_.append(0.000)
max_.append(0.127)
#Parameter 7: En
nbits.append(5)
min_.append(0.07)
max_.append(0.38)
#Parameter 8: Sn
nbits.append(7)
min_.append(0.005)
max_.append(0.132)
#Genetic Algorithm Parameters Definition
47
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
Pop_Size = 50
#Population Size
print "Population = "+str(Pop_Size)
NGen = 100
#Generation Number
print "Generation = "+str(NGen)
CXPB = 0.8
#Crossover Probability
MutPB = 0.2
#Mutation Probability of each individual
IndPB = 0.05
#Probability of each gene to mutate
Tournament = 2
#Individuals to crossover
#: ABAQUS
#: Creating Model
mdb.Model(name='GTN_CP', modelType=STANDARD_EXPLICIT)
#: Part
s = mdb.models['GTN_CP'].ConstrainedSketch(name='__profile__', sheetSize=200.0
)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.sketchOptions.setValues(viewStyle=AXISYM)
s.setPrimaryObject(option=STANDALONE)
s.ConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))
s.FixedConstraint(entity=g[2])
s.rectangle(point1=(0.0, 0.0), point2=(R0, L0))
s.CoincidentConstraint(entity1=v[0], entity2=g[2], addUndoState=False)
p = mdb.models['GTN_CP'].Part(name='CP', dimensionality=AXISYMMETRIC, type=DEF
ORMABLE_BODY)
p = mdb.models['GTN_CP'].parts['CP']
p.BaseShell(sketch=s)
s.unsetPrimaryObject()
p = mdb.models['GTN_CP'].parts['CP']
del mdb.models['GTN_CP'].sketches['__profile__']
#: Creating Model END
#: Creating Material
mdb.models['GTN_CP'].Material(name='STEEL')
mdb.models['GTN_CP'].materials['STEEL'].Density(table=((7.85e-09, ), ))
mdb.models['GTN_CP'].materials['STEEL'].Elastic(table=((219690.0, 0.3), ))
mdb.models['GTN_CP'].materials['STEEL'].Plastic(table=((507.334397,
0.0), (549.5097044, 0.000498704), (589.8508529, 0.001315076), (614.2308965
,
98.
0.002204102), (633.6845798, 0.003115551), (649.7991599, 0.0040422), (
99.
663.1692375, 0.004981341), (674.8624385, 0.005928115), (689.430522,
100.
0.006861803), (727.0541669, 0.011690545), (761.2557359, 0.016534864
), (
101.
790.326444, 0.021402538), (814.9560912, 0.026290427), (835.9965864,
102.
), (
103.
,
104.
), (
105.
,
106.
), (
107.
108.
, (
109.
,
110.
), (
111.
,
48
112.
), (
113.
114.
), (
115.
116.
), (
117.
118.
0.894530719), (1215.002538, 0.994469468), (1227.304932, 1.094413469
)))
119.
#: Section Create
120.
mdb.models['GTN_CP'].HomogeneousSolidSection(name='SectionCP', material='STEEL', thickness=None)
121.
#: Set ALL
122.
p = mdb.models['GTN_CP'].parts['CP']
123.
f = p.faces
124.
faces = f.getSequenceFromMask(mask=('[#1 ]', ), )
125.
region = p.Set(faces=faces, name='ALL')
126.
#: Section Assign
127.
p = mdb.models['GTN_CP'].parts['CP']
128.
p.SectionAssignment(region=region, sectionName='SectionCP', offset=0.0,
129.
offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM
_SECTION)
130.
#: Creating Material END
131.
132.
#: Creating Assembly
133.
a = mdb.models['GTN_CP'].rootAssembly
134.
a.DatumCsysByThreePoints(coordSysType=CYLINDRICAL, origin=(0.0, 0.0, 0.
0),
135.
point1=(1.0, 0.0, 0.0), point2=(0.0, 0.0, -1.0))
136.
p = mdb.models['GTN_CP'].parts['CP']
137.
a.Instance(name='CP-1', part=p, dependent=OFF)
138.
#: Creating Assembly END
139.
140.
#: Step-1
141.
mdb.models['GTN_CP'].ExplicitDynamicsStep(name='Step1', previous='Initial',
142.
timePeriod=1.0, massScaling=((SEMI_AUTOMATIC, MODEL, AT_BEGINNING,
143.
0.0, 1.8e-05, BELOW_MIN, 1, 0, 0.0, 0.0, 0, None), ))
144.
145.
mdb.models['GTN_CP'].fieldOutputRequests['F-Output1'].setValues(variables=(
146.
'S', ), numIntervals=1)
147.
148.
a = mdb.models['GTN_CP'].rootAssembly
149.
e1 = a.instances['CP-1'].edges
150.
edges1 = e1[2:3]
151.
a.Set(edges=edges1, name='TOP')
152.
regionDef=mdb.models['GTN_CP'].rootAssembly.sets['TOP']
153.
mdb.models['GTN_CP'].historyOutputRequests['H-Output1'].setValues(variables=(
154.
'RF2', ), numIntervals=100, region=regionDef, sectionPoints=DEFAULT
,
155.
rebar=EXCLUDE)
156.
157.
a = mdb.models['GTN_CP'].rootAssembly
158.
v1 = a.instances['CP-1'].vertices
159.
verts1 = v1[2:3]
160.
a.Set(vertices=verts1, name='No-U')
161.
regionDef=mdb.models['GTN_CP'].rootAssembly.sets['No-U']
49
162.
mdb.models['GTN_CP'].HistoryOutputRequest(name='H-Output-2',
163.
createStepName='Step-1', variables=('U2', ), numIntervals=100,
164.
region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE)
165.
166.
#: Creating Boundary Condition
167.
#: BC-NECK
168.
a = mdb.models['GTN_CP'].rootAssembly
169.
e1 = a.instances['CP-1'].edges
170.
edges1 = e1[0:1]
171.
region = a.Set(edges=edges1, name='NECK')
172.
mdb.models['GTN_CP'].DisplacementBC(name='BCNECK', createStepName='Initial',
173.
region=region, u1=UNSET, u2=SET, ur3=UNSET, amplitude=UNSET,
174.
distributionType=UNIFORM, fieldName='', localCsys=None)
175.
#: BC-AXIS
176.
a = mdb.models['GTN_CP'].rootAssembly
177.
e1 = a.instances['CP-1'].edges
178.
edges1 = e1[3:4]
179.
region = a.Set(edges=edges1, name='AXIS')
180.
mdb.models['GTN_CP'].DisplacementBC(name='BCAXIS', createStepName='Initial',
181.
region=region, u1=SET, u2=UNSET, ur3=UNSET, amplitude=UNSET,
182.
distributionType=UNIFORM, fieldName='', localCsys=None)
183.
184.
#: Axial Load
185.
#: Amplitude
186.
mdb.models['GTN_CP'].TabularAmplitude(name='AmpTOPSIDE', timeSpan=STEP,
187.
smooth=SOLVER_DEFAULT, data=((0.0, 0.0), (0.1, 3.0), (1.0, 3.0)))
188.
#: Velocity
189.
a = mdb.models['GTN_CP'].rootAssembly
190.
region = a.sets['TOP']
191.
mdb.models['GTN_CP'].VelocityBC(name='BC-VEL', createStepName='Step1',
192.
region=region, v1=UNSET, v2=1.0, vr3=UNSET, amplitude='AmpTOPSIDE',
193.
localCsys=None, distributionType=UNIFORM, fieldName='')
194.
#: Creating Boundary Condition END
195.
196.
#: Creating Mesh
197.
elemType1 = mesh.ElemType(elemCode=CAX4R, elemLibrary=EXPLICIT,
198.
secondOrderAccuracy=ON, hourglassControl=DEFAULT,
199.
distortionControl=DEFAULT)
200.
elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=EXPLICIT)
201.
a = mdb.models['GTN_CP'].rootAssembly
202.
f1 = a.instances['CP-1'].faces
203.
faces1 = f1.getSequenceFromMask(mask=('[#1 ]', ), )
204.
pickedRegions =(faces1, )
205.
a.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2
))
206.
#: Partition Face
207.
a = mdb.models['GTN_CP'].rootAssembly
208.
f1 = a.instances['CP-1'].faces
209.
t = a.MakeSketchTransform(sketchPlane=f1[0], sketchPlaneSide=SIDE1, ori
gin=(0.0, 0.0, 0.0))
210.
s1 = mdb.models['GTN_CP'].ConstrainedSketch(name='__profile__', sheetSi
ze=41.23, gridSpacing=1.03, transform=t)
211.
g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints
212.
s1.setPrimaryObject(option=SUPERIMPOSE)
213.
a = mdb.models['GTN_CP'].rootAssembly
214.
a.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES)
215.
#: Partition Lines
216.
s1.Line(point1=(0.0, 0.3), point2=(3.045, 0.3))
217.
s1.HorizontalConstraint(entity=g[7], addUndoState=False)
218.
s1.PerpendicularConstraint(entity1=g[5], entity2=g[7], addUndoState=Fal
se)
50
219.
220.
221.
222.
223.
se)
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
a = mdb.models['GTN_CP'].rootAssembly
f1 = a.instances['CP-1'].faces
pickedFaces = f1.getSequenceFromMask(mask=('[#1 ]', ), )
a.PartitionFaceBySketch(faces=pickedFaces, sketch=s1)
s1.unsetPrimaryObject()
del mdb.models['GTN_CP'].sketches['__profile__']
#: Mesh Generate
a = mdb.models['GTN_CP'].rootAssembly
e1 = a.instances['CP-1'].edges
pickedEdges = e1.getSequenceFromMask(mask=('[#f5 ]', ), )
a.seedEdgeBySize(edges=pickedEdges, size=0.1, deviationFactor=0.1,
constraint=FINER)
a = mdb.models['GTN_CP'].rootAssembly
e1 = a.instances['CP-1'].edges
pickedEndEdges = e1.getSequenceFromMask(mask=('[#a ]', ), )
a.seedEdgeByBias(biasMethod=DOUBLE, endEdges=pickedEndEdges,
minSize=0.5, maxSize=1.5, constraint=FINER)
a = mdb.models['GTN_CP'].rootAssembly
e1 = a.instances['CP-1'].edges
pickedEdges = e1.getSequenceFromMask(mask=('[#300 ]', ), )
a.seedEdgeBySize(edges=pickedEdges, size=0.25, deviationFactor=0.1,
constraint=FINER)
a = mdb.models['GTN_CP'].rootAssembly
partInstances =(a.instances['CP-1'], )
a.generateMesh(regions=partInstances)
#: Creating Mesh END
a = mdb.models['GTN_CP'].rootAssembly
n1 = a.instances['CP-1'].nodes
nodes1 = n1[148:149]
a.Set(nodes=nodes1, name='No-Neck')
regionDef=mdb.models['GTN_CP'].rootAssembly.sets['No-Neck']
mdb.models['GTN_CP'].HistoryOutputRequest(name='H-Output-3',
createStepName='Step-1', variables=('COOR1', ), numIntervals=1,
region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE)
#: Job
mdb.Job(name='GTN_CP', model='GTN_CP', description='', type=ANALYSIS,
264.
atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90,
265.
memoryUnits=PERCENTAGE, explicitPrecision=DOUBLE_PLUS_PACK,
266.
nodalOutputPrecision=FULL, echoPrint=OFF, modelPrint=OFF, contactPr
int=OFF,
267.
historyPrint=OFF, userSubroutine='', scratch='',
268.
parallelizationMethodExplicit=DOMAIN, numDomains=2,
269.
activateLoadBalancing=False, multiprocessingMode=DEFAULT, numCpus=2
)
270.
271.
272.
#: GENETIC ALGORITHM
273.
#: Class Creation
274.
creator.create("FitnessMin", base.Fitness, weights=(-1.0, -1.0))
275.
creator.create("Individual", list, fitness=creator.FitnessMin)
276.
#: Toolbox Registration - Population
51
277.
Ind_Size = 0
278.
for i in range(len(nbits)):
279.
Ind_Size = Ind_Size+nbits[i]
280.
print Ind_Size
281.
toolbox = base.Toolbox()
282.
toolbox.register("attr_bool", random.randint, 0, 1)
283.
toolbox.register("individual", tools.initRepeat, creator.Individual, to
olbox.attr_bool, Ind_Size)
284.
toolbox.register("population", tools.initRepeat, list, toolbox.individu
al)
285.
286.
#: Binary convertor
287.
def bin2float(min_, max_, nbits):
288.
def wrap(function):
289.
def wrapped_function(individual, *args, **kargs):
290.
decoded = [0] * len(nbits)
291.
for i in range(len(nbits)):
292.
gene = int("".join(map(str, individual[i*nbits[i]:i*nbi
ts[i]+nbits[i]])), 2)
293.
div = 2**nbits[i] - 1
294.
temp = float(gene)/float(div)
295.
decoded[i] = min_[i] + (temp * (max_[i] - min_[i]))
296.
return function(decoded, *args, **kargs)
297.
return wrapped_function
298.
return wrap
299.
#: Function Bin to Dec Convertor
300.
def parconvert(x):
301.
return [x[i] for i in range(len(nbits))]
302.
303.
304.
#: Evaluation
305.
306.
TEMP_IND = TEMP_oper1 = TEMP_oper2 = []
307.
308.
def evaluateInd(individual):
309.
310.
global TEMP_IND
311.
global TEMP_oper1
312.
global TEMP_oper2
313.
VERDADE = False
314.
315.
316.
cont=0
317.
while True:
318.
try:
319.
cont+=1
320.
print "Tentativa"+str(cont)
321.
#
if cont>10:
322.
#
mdb.jobs['GTN_CP'].waitForCompletion()
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
continue
for i in range(len(TEMP_IND)):
if individual == TEMP_IND[i]:
TEMP_i = i
VERDADE = True
if VERDADE == True:
print 'Repetido'
oper1 = TEMP_oper1[TEMP_i]
oper2 = TEMP_oper2[TEMP_i]
else:
#: Calculo New Fitness
#Parameters
52
339.
Parameter=(bin2float(min_, max_, nbits)(parconvert)(ind
ividual))
340.
print "Parmetro:"
341.
print Parameter
342.
343.
q1 = 1.5
344.
q2 = 1
345.
F0 = Parameter[0]
346.
Ff = Parameter[1]
347.
Fc = Parameter[2]
348.
Fn = Parameter[3]
349.
En = Parameter[4]
350.
Sn = Parameter[5]
351.
352.
if Fc>Ff:
353.
print 'Invalid Parameter Fc ='+str(Fc)+'''''
354.
'''
355.
elif Fn>Fc:
356.
print 'Invalid Parameters Fn ='+str(Fn)+'''''
357.
'''
358.
elif Sn>En/2.337:
359.
print 'Invalid Parameters Sn ='+str(Sn)+'''''
360.
'''
361.
else:
362.
363.
mdb.models['GTN_CP'].materials['STEEL'].PorousMetal
Plasticity(relativeDensity = F0, table=((q1, q2, q1**2), ))
364.
mdb.models['GTN_CP'].materials['STEEL'].porousMetal
Plasticity.PorousFailureCriteria(fraction = Ff, criticalFraction = Fc)
365.
mdb.models['GTN_CP'].materials['STEEL'].porousMetal
Plasticity.VoidNucleation(table=((En, Sn, Fn), ))
366.
367.
#: Running Analysis
368.
mdb.jobs['GTN_CP'].submit(consistencyChecking=OFF)
369.
370.
371.
372.
373.
374.
375.
376.
377.
1', odb=odb,
378.
3 in NSET TOP', steps=(
379.
380.
2', odb=odb,
381.
4 in NSET TOP', steps=(
382.
383.
3', odb=odb,
384.
49 in NSET TOP', steps=(
385.
386.
4', odb=odb,
387.
50 in NSET TOP', steps=(
388.
389.
5', odb=odb,
mdb.jobs['GTN_CP'].waitForCompletion()
#: Running Analysis END
#: Output Database
o3 = session.openOdb(name='C:/Temp/GTN_CP.odb')
#: RF Data
odb = session.odbs['C:/Temp/GTN_CP.odb']
xy0 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
'Step-1', ), )
xy1 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
'Step-1', ), )
xy2 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
'Step-1', ), )
xy3 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
'Step-1', ), )
xy4 = session.XYDataFromHistory(name='RF-
53
390.
391.
392.
6', odb=odb,
393.
52 in NSET TOP',
394.
395.
7', odb=odb,
396.
53 in NSET TOP',
397.
398.
8', odb=odb,
399.
54 in NSET TOP',
400.
401.
9', odb=odb,
402.
55 in NSET TOP',
403.
404.
10', odb=odb,
405.
56 in NSET TOP',
406.
407.
11', odb=odb,
408.
57 in NSET TOP',
409.
410.
12', odb=odb,
411.
58 in NSET TOP',
412.
413.
13', odb=odb,
414.
59 in NSET TOP',
415.
416.
14', odb=odb,
417.
60 in NSET TOP',
418.
419.
15', odb=odb,
420.
61 in NSET TOP',
421.
422.
16', odb=odb,
423.
62 in NSET TOP',
424.
425.
17', odb=odb,
426.
63 in NSET TOP',
427.
428.
18', odb=odb,
'Step-1', ), )
xy5 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy6 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy7 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy8 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy9 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy10 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy11 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy12 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy13 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy14 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy15 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy16 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy17 = session.XYDataFromHistory(name='RF-
54
429.
430.
431.
19', odb=odb,
432.
65 in NSET TOP',
433.
434.
20', odb=odb,
435.
66 in NSET TOP',
436.
437.
21', odb=odb,
438.
67 in NSET TOP',
439.
440.
22', odb=odb,
441.
68 in NSET TOP',
442.
443.
23', odb=odb,
444.
69 in NSET TOP',
445.
446.
24', odb=odb,
447.
70 in NSET TOP',
448.
449.
25', odb=odb,
450.
71 in NSET TOP',
451.
452.
26', odb=odb,
453.
72 in NSET TOP',
454.
455.
27', odb=odb,
456.
73 in NSET TOP',
457.
458.
28', odb=odb,
459.
74 in NSET TOP',
460.
461.
29', odb=odb,
462.
75 in NSET TOP',
463.
464.
30', odb=odb,
465.
76 in NSET TOP',
466.
467.
31', odb=odb,
'Step-1', ), )
xy18 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy19 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy20 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy21 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy22 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy23 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy24 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy25 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy26 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy27 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy28 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy29 = session.XYDataFromHistory(name='RFoutputVariableName='Reaction force: RF2 at Node
steps=(
'Step-1', ), )
xy30 = session.XYDataFromHistory(name='RF-
55
468.
469.
470.
'Step-1', ), )
xy31 = sum((xy0, xy1, xy2, xy3, xy4, xy5, xy6, xy7,
xy8, xy9, xy10, xy11, xy12,
471.
xy13, xy14, xy15, xy16, xy17, xy18, xy19, xy20,
xy21, xy22, xy23, xy24,
472.
xy25, xy26, xy27, xy28, xy29, xy30, ), )
473.
474.
#: U Data
475.
xy32 = session.XYDataFromHistory(name='U', odb=odb,
476.
outputVariableName='Spatial displacement: U2 at
Node 3 in NSET NO-U',
477.
steps=('Step-1', ), )
478.
479.
#: UxRF Data
480.
xy33 = combine(xy32, xy31)
481.
482.
tmpName = xy31.name
483.
session.xyDataObjects.changeKey(tmpName, 'RF')
484.
tmpName = xy33.name
485.
session.xyDataObjects.changeKey(tmpName, 'UxRFGTN_CP')
486.
487.
#: NECK
488.
odb = session.odbs['C:/Temp/GTN_CP.odb']
489.
session.XYDataFromHistory(name='NECK', odb=odb,
490.
outputVariableName='Coordinates: COOR1 at Node
149 in NSET NO-NECK',
491.
steps=('Step-1', ), )
492.
493.
#: Saving Data
494.
x0 = session.xyDataObjects['UxRF-GTN_CP']
495.
session.writeXYReport(fileName='GTNRF.txt', appendMode=OFF, xyData=(x0, ))
496.
x1 = session.xyDataObjects['NECK']
497.
session.writeXYReport(fileName='GTNNECK.txt', appendMode=OFF, xyData=(x1, ))
498.
499.
#: Deleting All Data
500.
for i in range(31):
501.
del session.xyDataObjects['RF-'+str(i+1)]
502.
503.
del session.xyDataObjects['RF']
504.
del session.xyDataObjects['U']
505.
del session.xyDataObjects['NECK']
506.
del session.xyDataObjects['UxRF-GTN_CP']
507.
508.
session.odbs['C:/Temp/GTN_CP.odb'].close()
509.
#: ODB END
510.
511.
#: Avaliating Results
512.
if Fc>Ff:
513.
oper1 = oper2 = 1
514.
elif Fn>Fc:
515.
oper1 = oper2 = 1
516.
elif Sn>En/2.337:
517.
oper1 = oper2 = 1
518.
else:
519.
oper0 = [0]*NumPT
520.
oper1 = oper2 = 0
521.
data0,data1 = np.genfromtxt('C:\\temp\\GTNRF.txt', skip_header=2, unpack=True)
522.
for i in range(len(data1)):
523.
if data1[i] < 0:
56
524.
data1[i:] = 0
525.
for i in range(len(data1)):
526.
if data[i] == 0:
527.
oper0[i] = 0
528.
else:
529.
oper0[i] = ((data1[i]data[i])/data[i])**2.
530.
oper1 = (sum(oper0)/len(data1))**0.5
531.
532.
NECK0,NECK1 = np.genfromtxt('C:\\temp\\GTNNECK.txt', skip_header=2, unpack=True)
533.
oper2 = ((NECK-NECK1[1])**2)**0.5/NECK
534.
#: Calculo New Fitness Final
535.
536.
#: New TEMP
537.
TAMANHO = len(TEMP_IND)+1
538.
TEMP_IND2 = [0] * TAMANHO
539.
TEMP_oper1_2 = [0] * TAMANHO
540.
TEMP_oper2_2 = [0] * TAMANHO
541.
542.
for j in range(len(TEMP_IND)):
543.
TEMP_IND2[j] = TEMP_IND[j]
544.
TEMP_oper1_2[j] = TEMP_oper1[j]
545.
TEMP_oper2_2[j] = TEMP_oper2[j]
546.
547.
TEMP_IND2[len(TEMP_IND2)-1] = individual
548.
TEMP_oper1_2[len(TEMP_oper1_2)-1] = oper1
549.
TEMP_oper2_2[len(TEMP_oper2_2)-1] = oper2
550.
551.
TEMP_IND = TEMP_IND2
552.
TEMP_oper1 = TEMP_oper1_2
553.
TEMP_oper2 = TEMP_oper2_2
554.
#: New TEMP Final
555.
except:
556.
continue
557.
break
558.
559.
print "Fitness1 = "+str(oper1)+" Fitness2 = "+str(oper2)+'''''
560.
'''
561.
return oper1, oper2
562.
563.
564.
#: Toolbox Registration - Operetor Set
565.
toolbox.register("mate", tools.cxTwoPoint)
566.
toolbox.register("mutate", tools.mutFlipBit, indpb=IndPB)
567.
toolbox.register("select", tools.selTournament, tournsize=Tournament)
568.
toolbox.register("evaluate", evaluateInd)
569.
570.
#: Algorithm
571.
def main():
572.
pop = toolbox.population(Pop_Size)
573.
hof = tools.HallOfFame(nglobal_max)
574.
stats = tools.Statistics(lambda ind: ind.fitness.values)
575.
stats.register("avg", np.mean, axis=0)
576.
stats.register("min", np.min, axis=0)
577.
stats.register("max", np.max, axis=0)
578.
pop, logbook = algorithms.eaSimple(pop, toolbox, CXPB, MutPB, NGen,
stats=stats, halloffame=hof, verbose=True)
579.
return pop, logbook, hof
580.
if __name__ == "__main__":
581.
pop, log, hof = main()
582.
print(" ")
583.
result=[0]*nglobal_max
584.
for glob in range(nglobal_max):
585.
HallFame = bin2float(min_, max_, nbits)(parconvert)(hof[glob])
57
586.
587.
hofFit = hof[glob].fitness
print"Global minimum "+str(1+glob)+" is: %s \nwith fitness: %s"
% (HallFame, hofFit,)
588.
result[glob]=((HallFame))
589.
np.savetxt('C:\\temp\\GTNGA_Result.txt', result, fmt='%f', delimiter=',')
590.
print("END")
58