Sobre o Gmsh - ICMC - Universidade de São Paulo

Download Report

Transcript Sobre o Gmsh - ICMC - Universidade de São Paulo

Introdução ao
Felipe Montefuscolo
Universidade de São Paulo
Maio, 2014
Métodos numéricos para geração de malhas SME0250
Prof. Afonso Paiva Neto
Sobre o Gmsh
●
●
●
●
Gmsh é um gerador de malhas com um sistema CAD
embutido, desenvolvido em torno de quatro módulos:
geometria, malha, resolutor e pós-processador.
Possui versões para Windows, Linux e Mac.
É de código aberto e distribuído com licença GNU GPL
v.2.
Manual do Gmsh em
http://geuz.org/gmsh/doc/texinfo/gmsh.html.
Modelagem geométrica
●
Gmsh usa a BRep (boundary representation) para
representar a geometria.
●
Conceito da Brep:
➔
Geometria: superfície, curvas e pontos
➔
Topologia: faces, arestas e vértices
Modelagem geométrica
Uma forma é
definida pela
suas faces
Uma face é
definida pela
suas arestas
Uma aresta é
definida pelos
seus vértices
Interface gráfica do Gmsh
(Versão 2.8.4, Fevereiro, 7, 2014)
Criar novo
arquivo
Interface gráfica do Gmsh
(Versão 2.8.4, Fevereiro, 7, 2014)
Criar novo
arquivo
Interface gráfica do Gmsh
(Versão 2.8.4, Fevereiro, 7, 2014)
Nome do arquivo.
Extensão do
Gmsh: .geo
Observações
●
Infelizmente não existe 'Undo' no Gmsh.
●
O erro pode ser corrigido erro diretamente no arquivo .geo.
●
Para abrir o arquivo .geo pelo Gmsh, clique em Modules > Geometry > Edit File
Exemplo
Vamos construir a seguinte geometria no Gmsh
Para isso, faça na ordem:
1) Construa os pontos
2) Construa as curvas
3) Construa as superfícies
Criando os pontos
Clique em
Modules > Geometry > Elementary Entities > Add > Point
●
●
Posicione o cursor onde você quer adicionar o ponto ou coloque a
coordenada (X,Y,Z) do ponto na caixa de diálogo;
Pressione 'e' para adicionar o ponto ou 'q' para cancelar
Sempre leia estas
instruções!
●
●
Adicione os quatro pontos do retângulo;
Adicione os dois pontos extremos na coordenada X do hexágono.
Os outros pontos são a rotação destes pontos em torno do centroide da figura.
●
Clique me Modules > Geometry > Elementary Entities > Rotate > Duplicate point
●
●
Clique me Modules > Geometry > Elementary Entities > Rotate > Duplicate point
Selecione os dois extremos do Hexágono; eles ficarão vermelhos. Coloque
o centro de rotação, o eixo de rotação e o ângulo na caixa de diálogo. Tecle
'e'.
●
Com isso, dois pontos diagonais do Hexágono serão criados.
●
●
Com isso, dois pontos diagonais do Hexágono serão criados.
Repita o procedimento para os dois pontos criados, criando os pontos
restantes do hexágono.
●
●
Agora temos todos os pontos do hexágono.
Vamos definir agora os pontos da circunferência. A circunferência no Gmsh
deve ser dividida em arcos menores 180º. A circunferência é definida por
dois pontos e seu centro.
●
●
Adicione o centro da circunferência e seus dois pontos: o primeiro a 0° e o
outro a 90° do centro.
Pronto. Até agora definimos todos os pontos. Vamos definir as curvas ...
Criando as curvas
●
●
No Gmsh é possível criar segmentos de retas, splines, B-splines, arcos de
circunferência e arcos de elipse.
Cada curva é definida por dois ou mais pontos.
Exemplos:
Segmento de reta
Spline
Arco de
circunferência
●
Vamos começar pelas arestas, pois são mais fáceis. Clique em
Modules > Geometry > Elementary Entities > Add > Straight Line
●
Vamos começar pelas arestas, pois são mais fáceis. Clique em
Modules > Geometry > Elementary Entities > Add > Straight Line
●
Selecione o ponto de partida da aresta, e, em seguida, o ponto de chegada,
no sentido indicado na figura.
1
2
●
Repita o procedimento para todas as arestas, contornando o retângulo e o
hexágono no sentido anti-horário. Motivo: a orientação da superfície depende
da orientação das arestas.
●
Vamos agora fazer a circunferência.
●
Vamos agora fazer a circunferência.
●
Clique em Modules > Geometry > Elementary Entities > Add > Circle arc.
●
Vamos agora fazer a circunferência.
●
Clique em Modules > Geometry > Elementary Entities > Add > Circle arc.
●
Selecione os três pontos na ordem indicada. Isso criará uma parte da
circunferência.
3
2 1
●
Vamos agora fazer a circunferência.
●
Clique em Modules > Geometry > Elementary Entities > Add > Circle arc.
●
Selecione os três pontos na ordem indicada. Isso criará uma parte da
circunferência.
●
●
Assim como criamos os pontos do hexágono por rotação, completaremos a
parte superior da circunferência rotacionando a parte já criada em 90° no
sentido anti-horário.
Clique em Modules > Geometry > Elementary Entities > Rotate > Duplicate line.
●
Selecione o arco de circunferência a ser copiado e digite os valores
adequados da rotação na caixa de diálogo. Em seguida, pressione 'e'.
●
Poderíamos repetir este processo (copiar/rotacionar) até fechar a
circunferência. Mas para exercitar outras funcionalidades do Gmsh, vamos
criar a parte de baixo usando simetria.
●
●
Poderíamos repetir este processo (copiar/rotacionar) até fechar a
circunferência. Mas para exercitar outras funcionalidades do Gmsh, vamos
criar a parte de baixo usando simetria.
Clique em
Modules > Geometry > Elementary Entities > Symmetry > Duplicate line.
●
●
Selecione as duas partes já criadas da circunferência
Digite o plano de simetria na caixa de diálogo. O plano de simetria é definido
pelos valores de A, B, C e D, tal que
Ax + By + Cz + D = 0.
●
Exercício: encontre A, B, C e D para este caso.
●
Pronto! Agora vamos criar as superfícies
Criando as superfícies
●
As superfícies no Gmsh são definidas pela curva de seu contorno e pelas
curvas de seus buracos. Superfícies de materiais diferentes devem ser
construídas separadamente.
●
Primeiro, construiremos a superfície do retângulo com um buraco hexagonal.
Clique em Modules > Geometry > Elementary Entities > Add > Plane surface
●
Selecione o contorno do retângulo;
●
Selecione o contorno do retângulo;
●
Selecione o contorno do hexágono (que é o buraco do retângulo);
●
Selecione o contorno do retângulo;
●
Selecione o contorno do hexágono (que é o buraco do retângulo);
●
Pressione 'e' para finalizar a primeira superfície.
●
Crie agora a superfície entre o contorno do hexágono e a
circunferência com o mesmo procedimento.
Voilà, temos a geometria completamente especificada.
Geração de malhas 2D
●
Para criar a malha, clique em
Modules > Mesh > 2D
●
Pronto. Mas essa malha parece um pouco grossa.
●
Pronto. Mas essa malha parece um pouco grossa.
●
Para controlar a densidade da malha, clique em
Tools > Options > Mesh > General
●
Altere o tamanho característico global dos elementos em Element size factor
de 1.00 para 0.1.
●
●
Altere o tamanho característico global dos elementos em Element size factor
de 1.00 para 0.1.
Gere a malha novamente (Gere 1D e em seguida 2D).
Refinando a malha em regiões específicas
●
Recarregue a geometria (Modules > Geometry > Reload) e volte o valor de
Element size factor para o valor original (=1.0)
●
Abra o arquivo .geo (você pode clicar em Modules > Geometry > Edit file. Se
não abrir, abra manualmente fora do programa).
●
Na primeira parte do arquivo, você terá algo assim:
// Gmsh project
Point(1) = {0, 0, 0, 1.0};
Point(2) = {1.5, 0, 0, 1.0};
Point(3) = {1.5, 1, 0, 1.0};
Point(4) = {0, 1, 0, 1.0};
Point(5) = {0.5, 0.5, 0, 1.0};
Point(6) = {1, 0.5, 0, 1.0};
Rotate {{0,
Duplicata
}
Rotate {{0,
Duplicata
}
Point(11) =
Point(12) =
Point(13) =
0, 1}, {0.75, 0.5, 0}, Pi/3} {
{ Point{5, 6}; }
0, 1}, {0.75, 0.5, 0}, Pi/3} {
{ Point{8, 7}; }
{0.75, 0.5, 0, 1.0};
{0.85, 0.5, 0, 1.0};
{0.75, 0.6, 0, 1.0};
●
Sobre a sintaxe do Gmsh:
Point(1) = {0, 0, 0, 1.0};
Número
do ponto
●
Coordenadas
(x,y,z) do ponto
Tamanho
característico
Tamanho característico: quanto menor, menor será o tamanho dos
elementos próximos ao ponto a às arestas que contêm o ponto.
●
Nos scripts do Gmsh, podemos definir variáveis. Com isso, vamos definir
um tamanho para os pontos do hexágono: 5,6,7,8,9,10. Os pontos 7-10
foram clonados, e por isso herdarão o tamanho dos pontos originais 5 e 6.
// Gmsh project created on Fri May 23 14:55:34 2014
lh = 0.01;
lr = 0.1;
Point(1) = {0, 0, 0, lr};
Point(2) = {1.5, 0, 0, lr};
Point(3) = {1.5, 1, 0, lr};
Point(4) = {0, 1, 0, lr};
Point(5) = {0.5, 0.5, 0, lh};
Point(6) = {1, 0.5, 0, lh};
Rotate {{0,
Duplicata
}
Rotate {{0,
Duplicata
}
Point(11) =
Point(12) =
Point(13) =
0, 1}, {0.75, 0.5, 0}, Pi/3} {
{ Point{5, 6}; }
0, 1}, {0.75, 0.5, 0}, Pi/3} {
{ Point{8, 7}; }
{0.75, 0.5, 0, 1.0};
{0.85, 0.5, 0, lr};
{0.75, 0.6, 0, lr};
●
O resultado é uma malha refinada em torno do contorno do hexágono.
Geração de malhas 3D
●
Vamos construir uma malha 3d aproveitando a geometria do exemplo anterior e
usando o operador de
Extrusão
Vetor de
translação
Objeto original
Objeto extrudado
●
●
Vamos construir uma malha 3d aproveitando a geometria do exemplo anterior e
usando o operador de extrusão.
extrusão
Clique em Modules > Geometry > Elementary Entities > Translate > Extrude Surface
●
●
Selecione as duas superfícies criadas.
Coloque o vetor deslocamento da extrusão (coloque [0,0,0.2]) e confirme
pressionando 'e'.
●
●
●
Selecione as duas superfícies criadas.
Coloque o vetor deslocamento da extrusão (coloque [0,0,0.2]) e confirme
pressionando 'e'.
Repita a operação na superfície de cima do hexágono (com desl. de [0,0,0.1]).
●
●
Mude o ângulo de visão pressionando o botão esquerdo do mouse.
Descubra o que fazem os botões
esquerdo da tela.
localizados no canto inferior
●
Gere a malha 3d.
●
Gere a malha 3d.
●
Ative a visualização da malha superficial em
Modules > Geometry > Elementary Entities > Translate > Extrude Surface.
●
Gere a malha 3d.
●
Ative a visualização da malha superficial em
Modules > Geometry > Elementary Entities > Translate > Extrude Surface.
Outros recursos do Gmsh
Malhas estruturadas
●
●
O Gmsh também possui ferramentas para gerar malhas estruturadas (2d e 3d)
em alguns domínios não triviais.
Exemplo: Construa a seguinte geometria: (use splines para fazer o contorno)
●
Clique em Modules > Mesh > Define > Transfinite> Line;
●
●
Clique em Modules > Mesh > Define > Transfinite> Line;
Selecione as duas curvas laterais e coloque o número de pontos que deve ter
em cada curva na caixa de diálogo (coloque 10). Finalize pressionando 'e';
●
●
●
Clique em Modules > Mesh > Define > Transfinite> Line;
Selecione as duas curvas laterais e coloque o número de pontos que deve ter
em cada curva na caixa de diálogo (coloque 10). Finalize pressionando 'e';
Selecione agora as outras duas curvas e coloque 15 pontos.
●
●
Clique em Modules > Mesh > Define > Transfinite> Line;
Selecione as duas curvas laterais e coloque o número de pontos que deve ter
em cada curva na caixa de diálogo (coloque 10). Finalize pressionando 'e';
●
Selecione agora as outras duas curvas e coloque 15 pontos.
●
Clique em Modules > Mesh > Define > Transfinite> surface;
●
●
Clique em Modules > Mesh > Define > Transfinite> Line;
Selecione as duas curvas laterais e coloque o número de pontos que deve ter
em cada curva na caixa de diálogo (coloque 10). Finalize pressionando 'e';
●
Selecione agora as outras duas curvas e coloque 15 pontos.
●
Clique em Modules > Mesh > Define > Transfinite> surface e siga as instruções.
Gere a malha.
O resultado deve ser:
Exercícios
●
Faça uma malha estruturada por partes para cada uma das figuras abaixo:
Teste o
algoritmo
'Frontal'
Gmsh scripting
●
●
O Gmsh tem uma linguagem própria que é simples e intuitiva. Todo
código deve ser escrito no próprio arquivo .geo.
Exemplos:
Looping:
For i In {1:3}
x~{i} = i;
EndFor
Condições:
If (a==1)
B = 2;
EndIf
É o mesmo que
Listas:
Spline(1) = {1:N};
x_1 = 1;
x_2 = 2;
x_3 = 3;
Funções matemáticas:
A = Sqrt(x);
B = Sin(x);
C = Cos(x);
Constante pi:
A = 2*pi;
Exercício
●
Faça um script para desenhar uma geometria parecida com a
estrutura de um DNA
FIM