UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO” FACULDADE DE ENGENHARIA CAMPUS DE ILHA SOLTEIRA LEANDRO DE SOUZA SCHIARA DESENVOLVIMENTO DE UM PROGRAMA COMPUTACIONAL PARA ANÁLISE DE TRINCAS VIA MÉTODO DOS ELEMENTOS DE CONTORNO: Modelagem de Sólidos e Geração de Malha Ilha Solteira 2023 Campus de Ilha Solteira PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA MECÂNICA LEANDRO DE SOUZA SCHIARA DESENVOLVIMENTO DE UM PROGRAMA COMPUTACIONAL PARA ANÁLISE DE TRINCAS VIA MÉTODO DOS ELEMENTOS DE CONTORNO: Modelagem de Sólidos e Geração de Malha Dissertação apresentada à Faculdade de Engenharia de Ilha Solteira – Unesp, como parte dos requisitos para obtenção do título de Mestre em Engenharia Mecânica. Nome do Orientador Amarildo Tabone Paschoalini Ilha Solteira 2023 DEDICATÓRIA Aos meus pais: Odete de Souza, Alfredo Eustáquio Schiara AGRADECIMENTOS Em primeiro lugar agradeço aos meus pais Alfredo Eustáquio Schiara e Odete de Souza que, por seu amor, esforço e dedicação, são a solução fundamental de toda a cadeia de eventos que levaram à criação desse trabalho. A importância de vocês em minha vida é singular. Que nossos nomes fiquem registrados aqui até o dia em que a entropia da informação, inevitavelmente, dê um fim a esse texto. Logo na primeira disciplina que cursei na UNESP tive o privilégio de conhecer o prof. Dr. Amarildo Tabone, hoje meu orientador. Obrigado por acolher, incentivar e direcionar esse trabalho, além da troca de experiências e sugestões. Um forte abraço aos ex-colegas de trabalho do setor de inspeção de equipamentos da Refinaria Gabriel Passos (REGAP) pelos anos de saudável convivência, período no qual se encontra as origens desse trabalho. Sobretudo Paulo Pio, Rafael Reis e Ricardo Schayer sempre tinham alguma ideia interessante que levava à reflexão e à construção de um conhecimento mais coeso e profundo. Giuseppe Cristóvam (in memoriam) ajudava nas minhas inspeções quando eu não podia ficar depois do horário por causa da faculdade. Meus sinceros agradecimentos à toda equipe de manutenção da Usina Termelétrica de Três Lagoas pelos anos de convivência e aprendizado mútuo. Destaco o gerente Flávio Altino, sempre muito lhano no trato, que entendeu e incentivou esse trabalho. Também lembro de Renato Barella que sempre dizia “Você tem que fazer um mestrado!”. Bárbara Ferro, de rápida passagem por lá, foi quem “desbravou” o programa de pós-graduação (PPGEM) da UNESP. Sabendo o que fazer, saí da inércia, e logo em seguida, comecei a cursar o mestrado. RESUMO A integridade das estruturas pode ser seriamente afetada pela presença de trincas, portanto, são necessários meios de se detectar, dimensionar e avaliar a severidade desses defeitos. Para essa avaliação, a mecânica da fratura tem se mostrado uma disciplina de crescente importância no projeto e na manutenção de estruturas e equipamentos em várias indústrias, especialmente nas de aviação e de óleo e gás. O uso dessa disciplina, no entanto, normalmente exige o emprego de métodos numéricos. O método dos elementos de contorno é uma técnica bastante adequada para a modelagem de defeitos planares em face se sua propriedade de redução de dimensionalidade. Dessa forma, a etapa de pré-processamento é bastante simplificada se comparada à técnica de elementos finitos, por exemplo. Não há muitas ferramentas de fácil utilização e que abranjam todas as etapas de uma simulação numérica via elementos de contorno, especialmente quando se trata de trincas, por terem topologia normalmente não aceita pelos programas usuais de modelagem de sólidos. Por causa disso, esse trabalho dedicou-se ao desenvolvimento de um software capaz de efetuar o modelamento dos sólidos adaptado à mecânica da fratura, bem como gerar a malha na superfície para análise via método dos elementos de contorno. O programa em desenvolvimento tem e terá mínima dependência de softwares externos. A união da modelagem computacional de sólidos, da mecânica da fratura e do método dos elementos de contorno permitirá o desenvolvimento de uma ferramenta computacional simples denominada CABEMT, mas de considerável flexibilidade e, portanto, capaz de ser utilizada na prática de engenharia. Palavras-chave: modelagem computacional de sólidos; geração de malha; método dos elementos de contorno; mecânica da fratura. ABSTRACT Structural integrity can be seriously compromised by the presence of crack-like flaws, therefore, there should be ways to detect, measure and assess the severity of such damages. The latter is frequently addressed by fracture mechanics for whose importance has been growing in the design and maintenance of structures and equipment in many industries, especially in the aviation and oil & gas. However, to employ this technique, it’s frequently necessary to use numerical methods The Boundary Element Method is a desirable choice to planar defect modeling due to its reduced dimensionality characteristics. In this way, the pre-processing phase is very simplified if compared to the finite element method, for example. There are not many easy handling tools that encompasses all steps to a numerical simulation by BEM, especially for cracks which topology is generally not accepted by conventional solid modelers. Because of that, this work developed a software capable of modeling cracked solid bodies and to perform mesh generation on its surfaces in order to analyze it by the BEM in a future expansion. The computer program under development has and will have minimum external dependency. The combination of solid modeling techniques, fracture mechanics and boundary element method allowed the development of a simple computational tool, but that poses considerably flexibility, therefore able to be utilized in the engineering practice. Keywords: computational solid modeling; mesh generation; boundary element method; fracture mechanics. LISTA DE FIGURAS Figura 1.1 – Exemplos de falhas devido à propagação de trincas ....................................... 26 Figura 2.1 – Representação ambígua de um sólido por wireframe ...................................... 29 Figura 2.2 – Um modelo sólido de um objeto. ...................................................................... 30 Figura 2.3 – O círculo e a elipse: duas primitivas de modelagem geométrica. ..................... 32 Figura 2.4 – Funções de base de segundo grau de uma B-spline........................................ 34 Figura 2.5 – Representação de uma B-spline e seu polígono de controle ............................ 34 Figura 2.6 – Regularidade na representação de sólidos. ..................................................... 36 Figura 2.7 – Esquema de uma árvore para um quadtree ..................................................... 38 Figura 2.8 – Decomposições geradas pelo CABEMT ......................................................... 38 Figura 2.9 – Criação de objetos pela técnica da construção. ............................................... 39 Figura 2.10 – Um sólido representado por CGS e a sua árvore geradora ............................ 40 Figura 2.11 – Esquema lógico da representação de um objeto por fronteira (B-REP) ......... 41 Figura 2.12 – Exemplos de faces ......................................................................................... 43 Figura 2.13 – Um cubo e suas entidades topológicas associadas ....................................... 44 Figura 2.14 – Dois sólidos homeomorfos com genus igual a 2 ............................................ 45 Figura 2.15 – Alguns operadores de Euler comuns ............................................................. 46 Figura 2.16 – Um cubo representado graficamente pela estrutura de quad-edge ................ 50 Figura 2.17 – Exemplos de sólidos formados por extrusão .................................................. 52 Figura 2.18 – Extrusão de uma face e orientação dos elementos criados. ........................... 53 Figura 2.19 – Geração de sólido por varredura rotacional ................................................... 54 Figura 2.20 – Sólidos criados por varredura ordenada......................................................... 55 Figura 2.21 – Estrutura topológica de uma varredura ordenada com transição de forma ..... 56 Figura 2.22 – Interpolação de duas curvas NURBS resultando em uma superfície NURBS 57 Figura 2.23 – Exemplos de sólidos gerados pela varredura por caminho (sweep) ............... 57 Figura 2.24 – Exemplo de caminhos para varredura e os eixos de coordenadas locais ....... 58 Figura 2.25 – Casos que requerem tratamento especial durante operações booleanas ...... 61 Figura 2.26 – Operações booleanas entre dois sólidos ........................................................ 62 Figura 2.27 – Segmentação de uma reta de intersecção entre duas faces .......................... 63 Figura 2.28 – Retas de intersecção e vértices entre as faces de dos sólidos. ...................... 65 Figura 2.29 – Etapas da adição de dois sólidos ................................................................... 68 Figura 3.1 – Tipos de malha ................................................................................................ 70 Figura 3.2 – Parâmetros para cálculo de distorção .............................................................. 71 Figura 3.3 – Posicionamento de nós através de uma grade regular no interior de um domínio com e sem furo .................................................................................................................... 73 Figura 3.4 – Colocação de pontos por expansão de fronteira .............................................. 73 Figura 3.5 – Malhas geradas por posicionamento de nós por grade regular e avanço de fronteira nas bordas dos furos. ............................................................................................ 74 Figura 3.6 – Malhas geradas por quadtree .......................................................................... 74 Figura 3.7 – Duas triangulações possíveis para um conjunto de cinco pontos ..................... 76 Figura 3.8 – Instrução 3.1 aplicada diretamente em um domínio com furo .......................... 78 Figura 3.9 – Primeiros passos na triangulação de Delaunay por divisão e conquista........... 79 Figura 3.10 – Designação de aresta base no algoritmo de divisão e conquista ................... 80 Figura 3.11 – Seleção de candidatos para triangulação ....................................................... 81 Figura 3.12 – Triangulação por inserção de pontos ............................................................. 83 Figura 3.13 – Suavização Laplaciana .................................................................................. 85 Figura 3.14 – Algumas transformações para otimização de malhas tetraédricas ................. 87 Figura 3.15 – Otimização de posicionamento de um nó interno em malha tetraédrica ......... 88 Figura 4.1 – Grafos comparativos de velocidade e consumo de memória para algumas linguagens de programação................................................................................................. 94 Figura 4.2 – Macrofluxograma do CABEMT ....................................................................... 101 Figura 4.3 – Diagrama do processamento de entradas e saídas do CABEMT ................... 103 Figura 4.4 – Tela principal do CABEMT ............................................................................. 105 Figura 4.5 – Menus abertos por meio de clique com o botão direito na área de trabalho do CABEMT ............................................................................................................................ 106 Figura 4.6 – Volume ortográfico de visão do OpenGL ........................................................ 107 Figura 4.7 – Diagrama básico de funcionamento do CABEMT .......................................... 110 Figura 4.8 – Tipos de magnetos/atratores do CABEMT ..................................................... 110 Figura 4.9 – Ajuste do número de subdivisões de um círculo. ........................................... 113 Figura 4.10 – Comando offset aplicado a algumas primitivas de modelagem .................... 117 Figura 4.11 – Exemplos de concordâncias efetuadas pela classe modifier ........................ 118 Figura 4.12 – Um ponto de intersecção determinado por linhas de construção ................. 119 Figura 4.13 – Transformação de esboços constituídos por primitivas de modelagem em faces pelo comando makeFace ................................................................................................... 120 Figura 4.14 – Diferentes operações de varredura sobre uma mesma face ........................ 120 Figura 4.15 – Diagrama simplificado da estrutura de dados de um objeto da classe solid . 121 Figura 4.16 – Furos e aberturas em sólidos ....................................................................... 124 Figura 4.17 – Exemplos de como posicionar dois sólidos para adição ou intersecção ....... 129 Figura 4.18 – Exemplos de intersecções determinadas pelo CABEMT .............................. 130 Figura 4.19 – Exemplos de subtração de sólidos no CABEMT .......................................... 130 Figura 4.20 – Exemplos de segmentação da superfície de um sólido a partir de uma superfície livre .................................................................................................................................... 131 Figura 4.21 – Geração de vértices durante a intersecção entre duas superfícies .............. 132 Figura 4.22 – Segmentações de arestas e faces ............................................................... 132 Figura 4.23 – Situações típicas de aplicação do comando fillet no CABEMT ..................... 134 Figura 4.24 – Concordância entre duas superfícies ........................................................... 134 Figura 4.25 – Detalhamento da geração da superfície de corte a partir dos pontos de concordância ..................................................................................................................... 136 Figura 4.26 – Operações intermediárias da função fillet .................................................... 136 Figura 4.27 – Alguns exemplos de concordância efetuados pelo CABEMT ....................... 137 Figura 4.28 – Exemplos de geração de chanfros entre duas superfícies no CABEMT ....... 137 Figura 4.29 – Exemplos de intersecção entre sólidos e superfícies ................................... 138 Figura 4.30 – Exemplos de trincas internas criadas no CABEMT ...................................... 139 Figura 4.31 – Etapas de criação de trincas pelo método de subtração .............................. 140 Figura 4.32 – Geração de uma trinca a partir de uma superfície curva .............................. 141 Figura 4.33 – Trincas inseridas no modelo sólido do CABEMT. ......................................... 143 Figura 4.34 – Afloramento de uma trinca coincidindo com as arestas dos elementos ........ 143 Figura 4.35 – Geração de uma trinca a partir de uma superfície curva .............................. 144 Figura 4.36 – Posicionamento de nós para geração de malha em uma trinca semielíptica a partir da seleção de arestas na superfície .......................................................................... 145 Figura 4.37 – Importação de um sólido por meio da discretização de sua superfície ......... 146 Figura 4.38 – Construção das listas relacionais de elementos e nós no CABEMT ............. 151 Figura 4.39 – Diagrama básico do fluxo de informações para geração de malha .............. 154 Figura 4.40 – Comparativo entre densidades nodais para diferentes tipos de elementos .. 157 Figura 4.41 – Uso do comando moveElementVert (mev) para “ajustar” a posição de alguns vértices. ............................................................................................................................. 159 Figura 4.42 – Determinação do ponto de uma aresta mais próximo da linha imaginária .... 160 Figura 4.43 – Deslocamentos de nós em arestas realizado no CABEMT .......................... 161 Figura 4.44 – Fusão de elementos ..................................................................................... 161 Figura 4.45 – Geração de malha tridimensional por expansão de elementos .................... 162 Figura 4.46 – 1º Exemplo de geração de malha local tridimensional por expansão ........... 162 Figura 4.47 – 2º Exemplo de geração de malha local tridimensional por expansão ........... 163 Figura 4.48 – Uma malha tridimensional tetraédrica para teste do método de otimização da posição interna dos nós ..................................................................................................... 164 Figura 4.49 – Otimização de posicionamento de um nó interno em malha tetraédrica ....... 164 Figura 4.50 – Criação de elementos por extrusão avante ao contorno de trinca ................ 165 Figura 4.51 – Exemplo de malha volumétrica gerada ao redor de uma trinca interna ........ 165 Figura 4.52 – Exemplo da tela de saída do comando checkMesh do CABEMT ................. 167 Figura 4.53 – Aplicação do comando de suavização laplaciana em uma malha ................ 167 Figura 4.54 – Emprego da função addElementVert ........................................................... 168 Figura 4.55 – Etapas para inserção de vértice ................................................................... 168 Figura 4.56 – Rotação de objetos para visualização .......................................................... 169 Figura 4.57 – Diagrama de funcionamento para salvar e carregar arquivos no CABEMT .. 171 Figura 4.58 – Estados de um modelo no CABEMT ............................................................ 172 Figura 4.59 – Alguns elementos de tubulação gerados no CABEMT ................................. 175 Figura 4.60 – Modelo de uma pá de compressor axial e sua malha ................................... 175 Figura 4.61 – Duas vistas de um modelo sólido de bocal numa calota hemisférica ........... 176 Figura 4.62 – Tampo + casco toriesférico e, à direita, tampo + casco semi-elíptico modelados no CABEMT ....................................................................................................................... 177 Figura 4.63 – Modelo sólido de um bocal com colarinho de reforço ................................... 177 Figura 4.64 – Um eixo criado e a malha de elementos de contorno correspondente ......... 178 Figura 4.65 – Exemplos de malhas de elementos de contorno geradas no CABEMT ........ 178 Figura 4.66 – Modelos sólidos e malhas geradas pelo CABEMT ....................................... 178 Figura 4.67 – Caixas de diálogo para seleção de tamanho de malha no CABEMT ............ 179 Figura 4.68 – Criação de uma trinca em entroncamento oblíquo entre dois cilindros ......... 180 Figura 4.69 – Tela do CABEMT: criação de trincas ........................................................... 180 Figura C.1 – Raios para determinar se um ponto está no interior de um polígono ............. 198 LISTA DE TABELAS Tabela 2.1 – Conectividade topológica dos elementos de um cubo ..................................... 44 Tabela 2.2 – Estrutura do cubo da figura 2.13 baseada em vértices .................................... 47 Tabela 2.3 – Estrutura do cubo baseada em arestas ........................................................... 48 Tabela 2.4 – Estrutura topológica tipo alada (winged-edge) - parte I ................................... 49 Tabela 2.5 – Estrutura topológica tipo alada (winged-edge) - parte II .................................. 49 LISTA DE ABREVIATURAS E SIGLAS BEM Boundary Element Method BES Boundary Element System B-REP Boundary Representation CABEMT Crack Analysis and Boundary Element Tool CAD Computer Aided Design CAE Computer Aided Engineering CAM Computer Aided Manufacturing CGS Construção Geométrica de Sólidos CNC Comando Numérico Computadorizado CPU Unidade Central de Processamento EF Elementos Finitos FIT Fator de Intensidade de Tensões IDE Interface de Desenvolvimento IGU Interface Gráfica do Usuário MCS Modelagem Computacional de Sólidos MDF Método das Diferenças Finitas MEC Método dos Elementos de Contorno MEF Método dos Elementos Finitos MF Mecânica da Fratura NAN Not A Number NURBS Non-Uniform Rational B-Splines OB Operação Booleana OSM Object Solid Modeler POO Programação Orientada a Objetos RGB Red Green Blue (especificação de cor) SSD Solid State Drive LISTA DE SÍMBOLOS LETRAS LATINAS 𝐴 Área de secção [𝑨] Matriz de coeficientes 𝑎 Número de arestas de um objeto 𝑎𝑒 Dimensão do maior semieixo de uma elipse ou identificação de uma aresta (𝑎, 𝑏, 𝑐) Vetor diretor de uma reta 𝑎𝑖𝑘 Semiaresta que vai de 𝑖 a 𝑘 𝒃 Vetor binormal 𝑏𝑒 Dimensão do menor semieixo de uma elipse 𝐵𝑖,𝑛 Função de base de uma curva de Bézier 𝐷 Distância entre os pontos iniciais de duas linhas �̅� Variável de parametrização centrípeta de uma spline ou distância entre duas retas 𝑑 Parâmetro da equação do plano 𝑑′ Distância entre um ponto e uma reta 𝐹 Número de faces de um objeto 𝐹𝑘 k-ésima face 𝐹𝑗 𝑖 Face 𝑗 de um sólido 𝑖 𝑓; 𝑓′ Uma face qualquer 𝐺 Número de genus de um sólido ℎ𝑚 Maior distância entre os vértices de um elemento 𝐼𝑘 Iterador 𝐿 Dimensão de um objeto 𝑙 Média dos comprimentos das arestas de um elemento [𝑴] Matriz de transformação de coordenadas 𝑚 Número total de knots 𝑁𝑖,𝑝 Função de base de uma B-spline 𝑁𝐸 Número de elementos que compartilham um determinado nó 𝑁𝑒 Número de elementos da malha 𝑁𝑁 Número de nós de um elemento 𝑁𝑠 Número de segmentos do sólido após a varredura rotacional 𝑛 Número de nós 𝒏; �⃗� Vetor normal a uma superfície ou elemento de contorno �⃗� 𝐹 Vetor normal de uma face �⃗� 𝑒 Vetor normal de extrusão �⃗� 𝑟 Vetor/eixo de revolução da varredura rotacional 𝑷 Vetor cujas coordenadas representam um ponto no espaço 𝑷′ 𝑷 representado em coordenadas locais 𝑷𝒊 Ponto de controle de uma spline (vetor) 𝑝 Pressão ou grau de interpolação de uma B-spline 𝑝𝑡 Semi-perímetro de um triângulo 𝑸𝒌 Ponto a ser interpolado em uma spline 𝑟 Raio de um círculo ou arco 𝑟𝑎 Razão de aspecto 𝑆̅ Área da face de um tetraedro 𝑺𝒌 Sólido 𝑺𝒖; 𝑺𝒖𝒌 Superfície 𝑡 Parâmetro 𝑡̅ Parâmetro 𝑉 Número de vértices �̅� Volume de uma célula 𝑉𝑘; 𝑉𝑘′ Vértices de número 𝑘 𝑥 Coordenada cartesiana (𝑥0, 𝑦0 , 𝑧0) Ponto inicial de uma reta (𝑥𝑐 , 𝑦𝑐 , 𝑧𝑐) Centro de um círculo (𝑥𝑟 , 𝑦𝑟 , 𝑧𝑟) Ponto pertencente a uma reta LETRAS GREGAS 𝜃 Parâmetro angular 𝜃0 Rotação da elipse considerando o eixo X como base 𝜌𝑚 Raio do círculo inscrito em um elemento triangular 𝜎𝑚 Parâmetro de qualidade de um elemento SUMÁRIO 1 INTRODUÇÃO ........................................................................................... 22 2 MODELAGEM COMPUTACIONAL DE SÓLIDOS .................................... 28 2.1 INTRODUÇÃO ........................................................................................... 28 2.1.1 Primitivas básicas de modelagem .......................................................... 30 2.2 PRINCIPAIS TÉCNICAS DE MODELAGEM DE SÓLIDOS ....................... 36 2.2.1 Técnicas de decomposição ..................................................................... 36 2.2.2 Técnica da construção geométrica de sólidos (CGS) ........................... 39 2.2.3 Técnica da representação por fronteiras (B-rep) ................................... 41 2.2.3.1 B-REP – Técnica, Geometria e Topologia .............................................. 41 2.2.3.2 A fórmula de Euler-Poincaré ................................................................... 44 2.2.3.3 Operadores de Euler ................................................................................ 45 2.2.3.4 Estrutura de Dados na B-rep ................................................................... 46 2.3 OPERAÇÕES BÁSICAS PARA GERAÇÃO DE SÓLIDOS ........................ 50 2.3.1 Geração direta .......................................................................................... 51 2.3.2 Varredura translacional (extrusão) ......................................................... 52 2.3.3 Varredura rotacional................................................................................. 53 2.3.4 Varredura ordenada (loft) ......................................................................... 54 2.3.5 Varredura por caminho ............................................................................ 57 2.4 OPERAÇÕES BOOLEANAS ...................................................................... 59 2.4.1 Introdução ................................................................................................. 59 2.4.2 Intersecção de dois sólidos (AND) ......................................................... 62 2.4.3 Subtração de dois sólidos ....................................................................... 66 2.4.4 Adição de dois sólidos ............................................................................. 67 3 GERAÇÃO DE MALHAS ........................................................................... 69 3.1 INTRODUÇÃO ........................................................................................... 69 3.2 QUALIDADE DA MALHA ............................................................................ 70 3.3 CONSTRUÇÃO DA MALHA ....................................................................... 71 3.3.1 Posicionamento dos nós ......................................................................... 72 3.3.2 Triangulação de delaunay 2D .................................................................. 75 3.3.3 Triangulação de delaunay 3D .................................................................. 84 3.3.4 Otimização de malhas .............................................................................. 84 4 O PROGRAMA DESENVOLVIDO: CABEMT ............................................ 89 4.1 INTRODUÇÃO ........................................................................................... 89 4.2 AS LINGUAGENS DE PROGRAMAÇÃO E O INTERFACEAMENTO GRÁFICO .................................................................................................................. 91 4.3 HISTÓRICO, PRINCÍPIOS E PREMISSAS DO PROJETO ........................ 95 4.4 DIAGRAMA DE FUNCIONAMENTO DO CABEMT .................................... 98 4.5 INTERFACES E PROCESSAMENTO DE ENTRADA E SAÍDA ............... 103 4.5.1 Diagrama ................................................................................................. 103 4.5.2 Descrição ................................................................................................ 103 4.5.3 Entradas .................................................................................................. 103 4.5.4 Saídas ...................................................................................................... 108 4.6 REPRESENTAÇÃO DE PRIMITIVAS NO CABEMT ................................ 108 4.6.1 Diagrama de funcionamento ................................................................. 109 4.6.2 Ponto ou vértice ..................................................................................... 110 4.6.2.1 Atributos de Vertex: não objetos .......................................................... 110 4.6.2.2 Atributos de Vertex: objetos .................................................................. 111 4.6.2.3 Métodos principais de Vertex ................................................................ 111 4.6.3 Linha ........................................................................................................ 112 4.6.3.1 Atributos de line: não objetos ............................................................... 112 4.6.3.2 Atributos de line: objetos ...................................................................... 112 4.6.3.3 Métodos principais de line ..................................................................... 112 4.6.4 Círculo ..................................................................................................... 112 4.6.4.1 Atributos de circle: não objetos ............................................................ 112 4.6.4.2 Atributos de circle: objetos ................................................................... 112 4.6.4.3 Métodos principais de circle ................................................................. 113 4.6.5 Arco ......................................................................................................... 113 4.6.5.1 Atributos de arc: não objetos ................................................................ 113 4.6.5.2 Atributos de arc: objetos ....................................................................... 114 4.6.5.3 Métodos principais de arc ..................................................................... 114 4.6.6 Elipse ....................................................................................................... 114 4.6.6.1 Atributos de ellipse: não objetos .......................................................... 114 4.6.6.2 Atributos de ellipse: objetos ................................................................. 115 4.6.6.3 Métodos principais de ellipse ................................................................ 115 4.6.7 Spline ....................................................................................................... 115 4.6.7.1 Atributos de spline: não objetos ........................................................... 116 4.6.7.2 Atributos de spline: objetos .................................................................. 116 4.6.8 Modificadores de primitivas .................................................................. 117 4.6.8.1 Offset (cópia paralela) ............................................................................ 117 4.6.8.2 Fillet (concordância)............................................................................... 117 4.6.8.3 Trim (aparar) ........................................................................................... 118 4.6.8.4 Copy (copiar) .......................................................................................... 118 4.6.8.5 Move (mover) .......................................................................................... 118 4.6.8.6 Rotate (rotacionar) ................................................................................. 118 4.6.9 Auxiliares de traçagem .......................................................................... 118 4.7 MODELAGEM DE SÓLIDOS NO CABEMT ............................................. 119 4.7.1 Estrutura de dados ................................................................................. 120 4.7.1.1 Edge (aresta) ........................................................................................... 121 4.7.1.2 Face ......................................................................................................... 123 4.7.1.3 Surface .................................................................................................... 125 4.7.1.4 Solid ......................................................................................................... 126 4.7.2 Operações para geração de sólidos ..................................................... 128 4.7.2.1 Extrusão .................................................................................................. 128 4.7.2.2 Revolução ............................................................................................... 128 4.7.2.3 Extrusão em caminho (sweep) .............................................................. 128 4.7.2.4 Loft ou varredura ordenada ................................................................... 129 4.7.3 Operações booleanas ............................................................................ 129 4.7.3.1 Intersecção de sólidos ........................................................................... 130 4.7.3.2 Subtração de sólidos ............................................................................. 130 4.7.3.3 Adição ou união de sólidos ................................................................... 130 4.7.4 Modificadores de geometria sólida ....................................................... 131 4.7.4.1 Divisão/segmentação de uma superfície utilizando outra .................. 131 4.7.4.2 Concordância (fillet) entre superfícies ................................................. 133 4.7.4.3 Aplicação de chanfro entre superfícies ................................................ 137 4.7.4.4 Intersecção entre sólido e superfície ................................................... 138 4.7.5 Inclusão de trincas no sólido ................................................................ 138 4.7.6 Importação de modelos sólidos ............................................................ 145 4.8 GERAÇÃO DE MALHA NO CABEMT ...................................................... 146 4.8.1 Introdução ............................................................................................... 146 4.8.2 Estrutura de dados ................................................................................. 146 4.8.2.1 Node......................................................................................................... 147 4.8.2.2 Element .................................................................................................... 148 4.8.2.3 Mesh ........................................................................................................ 150 4.8.3 Diagrama e funcionamento .................................................................... 154 4.8.4 Discretização do domínio ...................................................................... 155 4.8.5 Triangulação de delaunay ...................................................................... 156 4.8.6 Conversão para malha de elementos quadrangulares ........................ 157 4.8.7 Deslocamento de nó conforme especificado ....................................... 158 4.8.8 Fusão de elementos ............................................................................... 161 4.8.9 Malha volumétrica .................................................................................. 161 4.8.9.1 Geração de malha por meio da expansão de elementos .................... 162 4.8.10 Verificação de malha .............................................................................. 166 4.8.11 Outras funções de MODMESH .............................................................. 167 4.9 FUNÇÕES E MÓDULOS AUXILIARES .................................................... 168 4.9.1 Usando o mouse para visualizar ........................................................... 169 4.9.2 Salvar e carregar um arquivo ................................................................ 170 4.9.3 Desfazer e refazer ................................................................................... 171 4.10 LIMITAÇÕES ............................................................................................ 173 4.11 OUTROS TESTES DO MODELADOR DE SÓLIDOS .............................. 174 4.11.1 Modelagem de tubulação ....................................................................... 174 4.11.2 Modelagem de uma pá de compressor ................................................. 175 4.11.3 Modelagem de bocais ............................................................................ 176 4.11.4 Modelagem de um eixo .......................................................................... 177 4.11.5 Alguns exemplos de malhas geradas no CABEMT ............................. 178 4.11.5.1 Malhas em superfícies ........................................................................... 178 4.11.5.2 Malhas em trincas .................................................................................. 179 5 DISCUSSÃO E COMENTÁRIOS ............................................................. 181 6 MELHORIAS FUTURAS DO CABEMT – MODELAGEM DE SÓLIDOS . 183 7 CONCLUSÃO .......................................................................................... 184 REFERÊNCIAS BIBLIOGRÁFICAS ........................................................ 187 APÊNDICE A – LISTA E DESCRIÇÃO DE CLASSES DO CABEMT ..... 193 APÊNDICE B – LISTA DE COMANDOS DO CABEMT ........................... 196 APÊNDICE C – CONDIÇÕES PARA UM PONTO ESTAR NO INTERIOR DE UM DOMÍNIO ..................................................................................... 198 APÊNDICE D – RETA DE INTERSECÇÃO ENTRE DOIS PLANOS ....... 199 APÊNDICE E – PONTO DE INTERSECÇÃO ENTRE DUAS RETAS NO ESPAÇO .................................................................................................. 200 APÊNDICE F – PONTOS DE INTERSECÇÃO ENTRE ENTIDADES UNIDIMENSIONAIS COPLANARES ....................................................... 201 22 1 INTRODUÇÃO Desde os primórdios da civilização as estruturas tem desempenhado um papel crucial no seu desenvolvimento. Primeiramente para proteção e abrigo, e posteriormente englobando as máquinas e equipamentos indispensáveis ao modo de vida moderno. Por se fazer tão presente em nosso dia-a-dia, a integridade dessas estruturas quase sempre guarda estreita relação com a nossa própria integridade física e com a segurança jurídica das empresas. O projeto das estruturas antigas era provavelmente obtido por testes de tentativa e erro (ANDERSON, 2005). De fato, as técnicas de construção antigas chegaram a um nível de complexidade elevado muito antes das teorias subjacentes (BENVENUTO, 1991). Estas vieram evoluindo aos poucos e, aliada às melhores técnicas, proporcionaram o projeto de estruturas otimizadas, muito embora sempre estejam expostas a mecanismos de dano que podem levar à sua degradação e colapso. A fratura é um dos mais comuns e importantes danos aos quais as estruturas estão sujeitas, visto ser muito difícil tanto produzir elementos sem defeitos quanto monitorá-los ao longo da vida útil dos equipamentos e estruturas. Vários acidentes ao longo da história podem ser associados à presença de defeitos nos materiais e/ou projeto inadequado, ver por exemplo Anderson (2005), Broek (1984) e Jones (2001). Destacam-se as falhas de fadiga, que nada mais são que a propagação de trincas nas estruturas devido aos esforços cíclicos. Em 1978, estimou-se que os custos decorrentes de danos por fratura correspondiam a cerca de 4% do PIB dos EUA (ANDERSON, 2005). Além da perda financeira, há o risco de fatalidades, lesão pessoal e contaminação do meio ambiente (VENART, 2004). Danos por fratura tem um longo histórico associado aos setores de aviação, refino, petroquímica, geração elétrica e de construção civil (ANDERSON, 2005). Pelas razões apresentadas, as trincas vêm sendo estudadas pelo menos desde a década de 20, dando origem à disciplina da Mecânica da Fratura (MF) que aproveitou bastante da análise matemática proveniente da teoria da elasticidade. Hoje existem normas para avaliação de estruturas, tais como o API-579 (ASME & API, 2016) e a BS 7910 (BRITISH STANDARDS, 2013) nas quais os parâmetros da mecânica da fratura são cruciais para avaliar uma ampla gama de mecanismos de danos, com destaque para a fadiga, fratura frágil, fluência e corrosão sob tensão. Há 23 ainda nessas normas, tabelas com soluções analíticas ou empíricas para avaliação de MF, além de existirem outras fontes para obtenção desses parâmetros, tais como em Laham et al. (1998). Ainda assim, as soluções analíticas, por serem de difícil dedução, em geral limitam-se a problemas muito simples geometricamente, ao passo que nosso cotidiano é rodeado por formas geométricas e condições de contorno um tanto quanto complexas. As soluções com parâmetros tabelados costumam ser trabalhosas de se usar1, exigindo muitas operações de consulta e cálculos intermediários; favorecendo, portanto, a ocorrência de equívocos. Não obstante, a essas normas tipicamente associaram-se softwares específicos para facilitar os cálculos. Pela BS-7910 tem-se o Crackwise (TWI GLOBAL, 2002) e pelo API-579 o IntegriWise, Becht FFS, entre outros (BECHT ENGINEERING, 2020) – cujo custo pode ser elevado2 para o usuário, especialmente se levarmos em conta que as análises de vida remanescente em estruturas decerto não são atividades rotineiras em todas as empresas ou setores de manutenção/inspeção das empresas, portanto elevando o custo por análise. Muitos desses cálculos podem ser feitos diretamente pelo uso de algum método numérico apropriado e foi somente com o advento desses, aliado à computação eletrônica, que a análise detalhada de estruturas foi possível. Dentre os métodos conhecidos, destacam-se o Método das Diferenças Finitas (MDF), o Método dos Elementos Finitos (MEF) e o Método dos Elementos de Contorno (MEC). O MDF teve origem por volta dos anos 1930, evoluindo sob a colaboração de muitos pesquisadores. No decorrer dessa evolução, surgiu o MEF, por volta dos anos 1940 e 1950. Muitas ideias e técnicas são comuns a ambos os métodos, no entanto, devido a sua maior flexibilidade geométrica e à possibilidade de aplicá-lo a diferentes campos da engenharia de uma maneira sistemática, o MEF tornou-se dominante na indústria. Em paralelo ao desenvolvimento do MDF e do MEF, trabalhava-se com as 1 O API-579 especialmente possui uma miríade de tabelas e fórmulas, tornando difícil aplicá-lo diretamente aos problemas da indústria, em situações nas quais muitas vezes é necessária rapidez na avaliação da integridade da estrutura. Por causa disso, existem softwares com essas fórmulas embutidas. 2 Os fabricantes desses softwares não costumam divulgar os seus preços, mas na internet foram encontrados valores de $ 8.500,00/ano para assinatura do Becht FFS (BECHT ENGINEERING, 2020) e de £4.995,00 para a licença do Crackwise, porém relativo ao ano de 2002. 24 equações integrais de contorno, baseando-se nos trabalhos de George Green, Erik Fredholm, Muskhelishvili e Kupradze – culminando-se no desenvolvimento do MEC nos anos 1970 (BREBBIA, 2017). Este método permite a redução da dimensionalidade do modelo, isto é, fazendo com que problemas tridimensionais possam ser resolvidos com uma discretização bidimensional. Por causa disso, o MEC é uma escolha natural ao se modelar trincas, dado que sua geometria é essencialmente planar, além de permitir um refinamento local da malha mais eficiente. Outras vantagens são a satisfação de condições de contorno no infinito, a melhor integração com sistemas CAD (Computer Aided Design) e soluções mais precisas, mesmo com uma malha mais grosseira que o MEF (ALIABADI, 2002). Para aproveitar plenamente o potencial desses métodos numéricos é preciso uma etapa fundamental – denominada pré-processamento – na qual o modelo conceitual (geometria, topologia e dimensões) é transformado e representado em linguagem de máquina3. A Modelagem Computacional de Sólidos (MCS) nos dá a capacidade de descrever, modificar, manipular, armazenar e exibir entidades geométricas no computador para que então possam ser discretizadas por meio da geração de malha e finalmente encaminhada para algum método numérico para análise (CAE – Computer Aided Engineering) ou para a fabricação (CAM – Computer Aided Manufacturing). Apesar de sua importância, a quantidade de literatura técnica em MCS é consideravelmente menor que dos métodos numéricos, especialmente no Brasil. Essas tecnologias de MCS e dos métodos numéricos foram transformadas em exitosos softwares comerciais. Destacam-se os softwares de elementos finitos: ABACUS®, ANSYS®, NASTRAM® para citar alguns. O MEF ainda conta com alternativas de software livre como o CODE_ASTER (AUBRY, 2013), desenvolvido pela empresa francesa EDF. Para o MEC há o software comercial BEASY® e um software gratuito (porém de código fechado) BES, desenvolvido pela Universidade de Cornell. Os programas de elementos finitos normalmente são acompanhados de ferramentas para modelagem de trincas em duas dimensões. Para três dimensões, as ferramentas inerentes a esses programas tendem a ser mais limitadas. O ANSYS®, 3 No caso a função do programa de modelagem é exatamente essa. O programador, entretanto, raramente utilizará a linguagem de máquina diretamente. Ele trabalhará com uma linguagem de alto nível que traduzirá para a linguagem de máquina. 25 por exemplo, começou a possuir ferramentas mais robustas para modelagem 3D de trincas somente na sua versão 14.54, lançada em 2012. Essas limitações foram exploradas por softwares de apoio, tais como o Zencrack® (CHANDWANI; TIMBRELL; WIEHAHN, 2008), FEACrack e Trinca 3D (SCHIARA e RIBEIRO, 2016). Tipicamente, esses programas geram uma malha separadamente5, em bloco, para inserção no modelo de elementos finitos. Técnicas similares permitem a integração entre o MEC e o MEF (CITARELLA et al., 2014). O Franc3D6 (CORNELL FRACTURE GROUP, 2003), que de certa forma inspirou o desenvolvimento desse trabalho, originou-se a partir do grupo de mecânica da fratura da Universidade de Cornell. Ele precisa de dois outros programas: o OSM (Object Solid Modeler) e o BES (Boundary Element System) que fazem a MCS e a solução das equações de contorno respectivamente. O Franc3D é responsável pelo pré e pós-processamento. Apesar de ser um bom software, a versão gratuita do Franc3D depende muito do OSM que por sua vez é bastante limitado, de tal forma que é difícil fazer modelos mais complexos. Ademais, o BES7 é um solucionador lento, já que aparentemente não usa paralelismo no processamento. A despeito da evolução dos modelos computacionais, falhas associadas à presença e propagação de trincas nas estruturas e equipamentos continuam acontecendo – vide figura 1.1. Compilações interessantes desse tipo de falha podem ser vistas em Pellicione et al. (2012) e Jones (2001), para citar alguns. Para combater a contínua ameaça de falhas catastróficas ocasionadas por trincas e, ao mesmo tempo reduzir as perdas financeiras associadas, faz-se necessário o permanente emprego das melhores técnicas de projeto, fabricação, inspeção e monitoramento. Mas para isso, softwares de custo acessível, amigáveis ao usuário e que não dependam de outros programas de elevado custo (ou de elevada complexidade) para funcionar, são de crucial importância. Para se maximizar a difusão do uso da MF na engenharia, são necessárias 4 Anteriormente a isso, ele possuía o comando CTMOPT para geração de um bloco de trinca elíptica, de manipulação não muito amigável ao usuário. 5 Não se trata de submodelamento. O bloco com a trinca é inserido na malha completa da estrutura, ver (SCHIARA e RIBEIRO, 2016). 6 Refere-se aqui ao Franc3D clássico, cuja última atualização ocorreu em 2007. A partir daí, foram lançadas versões comerciais. Esse programa, juntamente com o OSM e o BES ainda pode ser baixado no site do grupo de fratura da Universidade de Cornell por meio do endereço http://cfg.cornell.edu/software/ 7 Esse programa foi testado pelo autor. 26 ferramentas computacionais de baixo custo ou de código aberto e de simples manuseio. Essas duas características são especialmente importantes na engenharia de manutenção, uma vez que é pouco provável que ocorra necessidade frequente do uso de modelos computacionais para análise de tensões ou de MF no dia-a-dia. Então por um lado, a aquisição de softwares dispendiosos implicará automaticamente em um custo muito alto por análise realizada. Por outro lado, o uso de softwares livres ou gratuitos (quando adequados) costuma ser mais complexo8 e exige um longo tempo para elaboração das análises porque o engenheiro não está habituado ao uso do programa por se tratar de uma utilização eventual. Por conta disso, tem sido desenvolvido pelo autor deste trabalho desde 2017 o CABEMT (Crack Analysis and Boundary Element Method Tool) – um programa computacional de modelagem de sólidos e simulação pelo MEC escrito em Java® e OpenGL. Tem por objetivo ser um software leve, independente, de fácil uso e robusto, que permitirá a análise de tensões em problemas elásticos e termoelásticos transientes, assim como a introdução de trincas de formato arbitrário no modelo. O CABEMT não dependerá de outros softwares de engenharia para funcionar, se mostrando assim como uma ferramenta independente de análise. Figura 1.1 – Exemplos de falhas devido à propagação de trincas. À esquerda: falha de um dreno de bomba de hidrocarbonetos em alta temperatura. À direita, falha por fadiga de uma pá de compressor de turbina a gás de usina termoelétrica. Fonte: Pellicione et al (2012) Fonte: Dados do próprio autor Por serem temas de longa extensão, essa dissertação abordará a implementação da modelagem computacional de sólidos e a geração de malha, ao passo que o MEC será escopo de trabalhos vindouros. É importante ressaltar que 8 Não é incomum que tais programas dependam de outros (de pré e pós-processamento) e de todo um interfaceamento entre eles para fazer uma análise e podem ter suporte técnico limitado. 27 apesar de existirem programas tipo CAD e geradores de malha de código aberto ou pelo menos gratuitos, estes não se encontram aptos a lidar diretamente com a geometria das trincas. Tais elementos possuem uma topologia normalmente não aceita pelos programas de modelagem. Ademais, a ideia central desse projeto é oferecer uma solução totalmente integrada, de tal forma que o usuário não precise ficar migrando para vários programas de forma a efetuar uma simulação. Dessa forma, a elaboração de um modelador de sólidos especificamente para o CABEMT se mostra necessária. Busca-se também contribuir, ainda que de maneira limitada, a enriquecer a bibliografia brasileira sobre modelagem computacional de sólidos. 28 2 MODELAGEM COMPUTACIONAL DE SÓLIDOS 2.1 INTRODUÇÃO A representação de objetos ou formas geométricas por computador é de profundo interesse prático para muitos campos do conhecimento: engenharia, arquitetura, medicina (LEORDEAN; VILAU; DUDESCU, 2021), artes em geral, geologia (KAVOURAS; SMART, 1989), arqueologia (BRUTTO; MELI, 2012) e outros. Na engenharia, por exemplo, é difícil imaginar um projeto que não esteja representado digitalmente de alguma forma e mais recentemente, em três dimensões. A introdução do CAD no projeto eleva a produtividade, facilita as revisões de documentos, a detecção de falhas de projeto e de interferências, permite a integração com máquinas CNC (Comando Numérico Computadorizado) para fabricação e auxilia no resgate de informações para apoio à manutenção. A modelagem computacional de sólidos ainda desempenha um papel importante na robótica, reconhecimento de padrões e visão de máquina (MORASSO, 1986), uma vez que nesses sistemas em geral é preciso virtualizar objetos do mundo real, porém não necessariamente da mesma forma que em sistemas CAD. Há distintas formas de idealização das estruturas e seus componentes em modelos digitais: • Modelos geométricos: são a representação em desenho de algum objeto ao invés do objeto em si (MÄNTYLÄ, 1988). Um exemplo de modelo gráfico são os desenhos em três vistas de alguma peça ou ainda sua representação em perspectiva. As primeiras tentativas de representação de sólidos computacionalmente foram por meio de modelos gráficos correspondentes às arestas do sólido – modelos wireframe. Entre muitos inconvenientes, a representação do sólido é por vezes ambígua (HOFFMANN, 1992), conforme nota- se na figura 2.1. Nesta ilustração, não se pode determinar se a peça tem realmente um furo e se tiver, em qual direção ele atravessa o objeto; • Modelos de superfície: contêm informações detalhadas de superfícies, mas nem sempre possuem informações suficientes para se determinar todas as propriedades geométricas do objeto formado pela união das superfícies representadas (MÄNTYLÄ, 1988), isto é, há carência de informações acerca de 29 como as superfícies estão conectadas (topologia). No entanto, não seria possível fazer a distinção visual com clareza superior de tal forma que ocorreria ambiguidade na interpretação da figura 2.1. De fato, a representação visual seria equivalente à figura 2.2; • Modelos sólidos: consiste na representação computacional inequívoca de um objeto físico (REQUICHA; ROSSIGNAC, 1992) de tal forma que possam ser respondidas questões arbitrárias sobre sua geometria de maneira automática, isto é, por algoritmos (MÄNTYLÄ, 1988). Figura 2.1 – Representação ambígua de um sólido por wireframe Fonte: Hoffman (1992) Os modelos sólidos são os mais completos, já que contêm as informações geométricas (vértices, linhas, curvas e superfícies) e as topológicas (a maneira pela qual as entidades geométricas se conectam) do sólido. Na figura 2.2 é possível observar que o sólido mostrado anteriormente agora possui uma representação inequívoca. Isso não se dá somente pela coloração e sombreamento adequados das superfícies9 – características adequadas à interpretação humana – mas também pela conexão das arestas que formam esse objeto. Há dois conjuntos de quatro arestas que formam as extremidades do furo. Esse tipo de informação não existe nos modelos gráficos. De maneira geral, quando o interesse é somente de visualização dos objetos, o modelo sólido é dispensável, podendo ser substituído por outros mais simples, que não possuem a informação topológica dos seus elementos. Contudo, na geração de malha para os métodos numéricos a topologia é fundamental, uma vez as informações 9 Essa coloração também só é possível pela representação adequada do sólido e as normais da superfície. O algoritmo de traçagem usa as normais para adequar o sombreamento da superfície, tornando a visualização mais realista. Uma técnica comum é o sombreamento de Gouraud (GOURAUD, 1971). É o sombreamento que dá ideia de profundidade na representação gráfica. 30 de conexão entre os vários elementos discretos da malha são necessárias para a montagem das matrizes do sistema de equações desses métodos. Figura 2.2 – Um modelo sólido de um objeto. Fonte: Elaboração do próprio autor 2.1.1 Primitivas básicas de modelagem As primitivas básicas de modelagem são as entidades fundamentais que constituirão os modelos sólidos e correspondem aos pontos, linhas e curvas. Os pontos são a base das outras entidades, embora sozinhos não sejam de grande utilidade. As linhas são um dos elementos fundamentais de construção das faces dos sólidos. Com frequência são representadas pelos pontos correspondentes às suas extremidades que podem estar conectadas geométrica e topologicamente a outras linhas e curvas para formar uma face ou elemento. As linhas/retas são fundamentais nos algoritmos de intersecção, conforme será demonstrado mais adiante. Na representação das entidades geométricas, pode-se utilizar mais de uma forma para descrever a primitiva. A representação paramétrica (SANTOS, 2007) da reta mostra- se bastante conveniente: { 𝑥𝑟 = 𝑥0 + 𝑡̅𝑎 𝑦𝑟 = 𝑦0 + 𝑡̅𝑏 𝑧𝑟 = 𝑧0 + 𝑡̅𝑐 (2.1) Nesse caso, é desejável tomar o ponto (𝑥0, 𝑦0, 𝑧0) como o início da linha e o parâmetro 𝑡̅ variando de 0 (início) a 1 (final). As curvas mais comuns na modelagem de sólidos são as cônicas – correspondentes ao círculo/arco e a elipse. A representação paramétrica do círculo ou do arco é: 31 { 𝑥𝑐 = 𝑥0 + 𝑟 cos 𝜃 𝑦𝑐 = 𝑦0 + 𝑟 sen 𝜃 𝑧𝑐 = 𝑧0 (2.2) Nesse caso, o ponto (𝑥0, 𝑦0, 𝑧0) corresponde ao centro do círculo/arco e o parâmetro 𝜃 varia de 0 a 2𝜋; ou menos, no caso do arco. Notar que essa equação representa o círculo no plano 𝑥, 𝑦 apenas, entretanto, utilizando-se um eixo de coordenadas local, é possível representar o círculo em qualquer posição e ainda fazer com que a origem do eixo local sempre coincida com o centro do círculo, de forma que 𝑥0, 𝑦0 e 𝑧0 se anulam. Nessa condição, a equação implícita do círculo é: 𝑥𝑐 2 + 𝑦𝑐 2 − 𝑟2 = 0 (2.3) Trata-se de outra forma de representar matematicamente o círculo. A elipse é uma forma importante na engenharia, especialmente na mecânica da fratura, tendo em vista que as trincas normalmente são modeladas em formato elíptico – sua equação na forma implícita é (HOFFMANN, 1992): 𝑥2 𝑎𝑒2 + 𝑦2 𝑏𝑒2 − 1 = 0 (2.4) Ao passo que na forma paramétrica é (HOFFMANN, 1992): 𝑥(𝑡) = 𝑎𝑒 1 − 𝑡̅2 1 + 𝑡̅2 ; 𝑦(𝑡) = 𝑏𝑒 2𝑡̅ 1 + 𝑡̅2 (2.5) Há ainda a possibilidade de parametrizar pelo ângulo: 𝑥(𝜃) = 𝑥𝑒 + 𝑟 cos(𝜃 + 𝜃0) ; 𝑦(𝜃) = 𝑦𝑒 + 𝑟 sen(𝜃 + 𝜃0) ; 𝑟 = √ 𝑎𝑒2𝑏𝑒2 cos2 𝜃 𝑏𝑒2 + 𝑠𝑒𝑛2𝜃 𝑎𝑒2 (2.6) A figura 2.3 ilustra essas primitivas e a notação de seus parâmetros. As formas paramétricas são adequadas para a segmentação de curvas, por sua vez úteis nos algoritmos de exibição e intersecção. A exibição de curvas é normalmente aproximada por segmentos de reta, tal como sugerido no manual do OpenGL (JACKIE; DAVIS; DIXON, 1997) – um conhecido software de computação gráfica. A segmentação pode ser feita por meio de incrementos no parâmetro, porém isso seria muito difícil na representação implícita. Contudo, verificar se um ponto coincide com uma curva ou uma superfície é mais fácil na representação implícita. Há 32 métodos para converter de uma forma de representação para outra. A princípio, todas as curvas e superfícies paramétricas racionais podem ser convertidas para a forma implícita, mas o contrário não é necessariamente verdadeiro (HOFFMANN, 1992). Figura 2.3 – O círculo e a elipse: duas primitivas de modelagem geométrica. Fonte: Elaboração do próprio autor Quando se torna necessário representar curvas de formatos arbitrários, é usual recorrer às curvas de Bézier e às splines. Elas são definidas pela seguinte expressão (PIEGL e TILLER, 1997): 𝑪(𝑡̅) =∑𝐵𝑖,𝑛(𝑡̅)𝑷𝑖 𝑛 𝑖=0 0 ≤ 𝑡̅ ≤ 1 (2.7) 𝐵𝑖,𝑛(𝑡)̅ = 𝑛! 𝑖! (𝑛 − 𝑖)! 𝑡̅𝑖(1 − 𝑡̅)𝑛−𝑖 (2.8) na qual 𝑪(𝑡)̅ e 𝑷𝑖 são os vetores de posição dos pontos da curva e dos pontos de controle, respectivamente. 𝐵𝑖,𝑛 são os polinômios de Bernstein e 𝑛 o número de pontos de controle. Embora as curvas de Bézier ofereçam uma maneira intuitiva de manipulação, sofrem de alguns problemas (PIEG; TILLER, 1997): • Curvas de elevado grau são requeridas para satisfazer um número alto de restrições, como na interpolação de pontos, por exemplo. Isso as tornam instáveis numericamente; • Um elevado grau é requerido para ajustar as curvas a um conjunto de pontos – regressão; • Embora as curvas de Bézier possam ser ajustadas pelos seus pontos de 33 controle, seu ajuste não é suficientemente local10. A solução é usar curvas que sejam polinomiais ou racionais por trechos, como se ela fosse uma emenda de várias outras. Dessa forma, é possível ajustar muitos pontos com uma curva de grau baixo, que geralmente tem comportamento melhor para a modelagem e desenho. Um exemplo desse tipo de curva são as B-splines, definidas por (PIEGL e TILLER, 1997): 𝑪(𝑡)̅ = ∑𝑁𝑖,𝑝(𝑡̅)𝑷𝑖 𝑛 𝑖=0 ; α ≤ 𝑡 ≤ β (2.9) onde 𝑁𝑖,𝑝 são as funções de base de grau 𝑝 da B-spline que podem ser calculadas pela fórmula recursiva de Boor, Cox e Mansfield (PIEG; TILLER, 1997): 𝑁𝑖,0(𝑡)̅ = { 1, 𝑠𝑒 𝑡𝑖 ≤ 𝑡̅ < 𝑡𝑖+1 0, 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 ; 𝛼 ≤ 𝑡 ≤ 𝛽 𝑁𝑖,𝑝(𝑡) = 𝑡̅ − 𝑡𝑖 𝑡𝑖+𝑝 − 𝑡𝑖 𝑁𝑖,𝑝−1(𝑡) + 𝑡𝑖+𝑝+1 − 𝑡̅ 𝑡𝑖+𝑝+1 − 𝑡𝑖+1 𝑁𝑖+1,𝑝−1(𝑡) (2.10) na qual 𝑡 é o parâmetro da curva, 𝑝 o seu grau, 𝑚 = 𝑛 + 𝑝 + 1 e as variáveis discretas 𝑡𝑘 formam o vetor não-decrescente de knots 𝑇 = {𝑡0, … , 𝑡𝑚}, tipicamente utilizado na forma (PIEGL e TILLER, 1997): 𝑇 = {𝛼,… , 𝛼⏟ 𝑝+1 , 𝑡𝑝+1, … , 𝑡𝑚−𝑝−1, 𝛽, … , 𝛽⏟ 𝑝+1 } Esse vetor limita a atuação das funções de base, gerando a propriedade desejável de controle (ou suporte) local, como se pode observar na figura 2.4. A propriedade de suporte local garante que 𝑁𝑖,𝑝(𝑡̅) = 0 se 𝑡 estiver fora do intervalo [𝑡𝑖, 𝑡𝑖+𝑝+1) (PIEGL; TILLER, 1997). De fato, observa-se na figura 2.4 que as funções de base respeitam essa propriedade. Os valores numéricos do eixo das abcissas marcam os knots, nesse caso 𝑇 = {0,0,0,1,2,3,4,4,5,5,5}. Reparar que a multiplicidade de knots no início e no fim do vetor garante que a B-spline obrigatoriamente passará pelo ponto de controle inicial e final, conforme a figura 2.5: 10 Isso quer dizer que ao se deslocar um ponto de controle da curva, grande parte dela é modificada, ao invés de somente uma região próxima ao ponto manipulado. 34 Figura 2.4 – Funções de base de segundo grau de uma B-spline. Fonte: Adaptado de Piegl e Tiller (1997) Figura 2.5 – Representação de uma B-spline e seu polígono de controle. Reparar que a curva coincide com os pontos inicial e final devido à multiplicidade do knots. Fonte: Piegl e Tiller (1997) Se os pontos de controle (𝑷𝒊) forem conhecidos, determinar os pontos da B-spline (𝑪(𝑡)̅) é relativamente simples: • Define-se um vetor de knots (𝑇) de tamanho 𝑚 + 1 com 𝑝 + 1 multiplicidade nas extremidades. Esse vetor varia de 0 a 1 e pode ser uniformemente espaçado nesse intervalo ou não; • Para um determinado parâmetro 𝑡̅, encontra-se a i-ésima posição em 𝑇 que respeite 𝑡𝑖 ≤ 𝑡̅ < 𝑡𝑖+1; • Calcula-se as funções de base não nulas por meio da equação (2.10); • Por meio da equação (2.9) determina-se o ponto na curva correspondente ao parâmetro 𝑡̅. Em muitos casos o usuário deseja traçar uma curva por meio da entrada de pontos de interpolação (𝑸𝑘) ao invés de pontos de controle (𝑷𝒊). Conforme a equação (2.9) tem-se: 35 𝑸𝑘 = 𝑪(𝑡�̅�) =∑𝑁𝑖,𝑝(𝑡�̅�)𝑷𝑖 𝑛 𝑖=0 (2.11) Primeiramente é preciso criar uma parametrização para a curva. Há três métodos comuns para se fazer isso: igual espaçamento, comprimento da corda e o centrípeto. O método centrípeto é mais adequado que os demais quando os pontos resultam em curvas com trechos de pequeno raio (PIEG; TILLER, 1997): �̅� = ∑√|𝑸𝑘 − 𝑸𝑘−1| 𝑛 𝑘=1 𝑡0̅ = 0 𝑡�̅� = 1 𝑡�̅� = 𝑡�̅�−1 + √|𝑸𝑘 − 𝑸𝑘−1| �̅� 𝑘 = 1,… , 𝑛 − 1 (2.12) Em relação aos knots, pode-se utilizar a técnica da média (PIEG; TILLER, 1997): 𝑡0 = ⋯ = 𝑡𝑝 = 0 𝑡𝑚−𝑝 = ⋯ = 𝑡𝑚 = 1 𝑡𝑗+𝑝 = 1 𝑝 ∑ 𝑡�̅� 𝑗+𝑝−1 𝑖=𝑗 𝑗 = 1,… , 𝑛 − 𝑝 (2.13) Reescrevendo a equação (2.11) como: 𝑸 = ℕ𝑷 (2.14) na qual ℕ é uma matriz formada pelas funções de base, os pontos de controle podem ser encontrados pela resolução do sistema linear (2.14). Uma extensão das B-splines são as NURBS (Non-Uniform Rational B-Splines) que possuem forma muito parecida com a equação (2.11), porém com um fator que pode ser diferente de 1 no denominador. As NURBS estão presentes na maioria dos softwares de computação gráfica de hoje e o livro de Piegl e Tiller (1997) trata com detalhes esses elementos. Como as NURBS são uma generalização das B-Splines, as funções de NURBS da biblioteca GLU do OpenGL (SHREINER et al., 2013) podem ser utilizadas para exibi-las. Convém lembrar que as curvas podem ser aproximadas por segmentos de reta e assim representadas, às custas de mais memória. 36 2.2 PRINCIPAIS TÉCNICAS DE MODELAGEM DE SÓLIDOS Para fins de implementação computacional, um sólido é uma região delimitada e fechada de um subconjunto de 𝐸3 (espaço euclidiano tridimensional) e que além disso apresenta essas propriedades: • Rigidez: invariante às transformações rotacionais e translacionais (MÄNTYLÄ, 1988); • Regularidade, isto é, suas entidades não podem ter partes isoladas, tal como ilustra a figura 2.6 a) e b) para subconjuntos de 𝐸2; • Finitude: os elementos que perfazem o sólido não devem possuir singularidades. Na prática, é conveniente admitir que as superfícies sejam algébricas ou pelo menos analíticas (MÄNTYLÄ, 1988); • Superfícies sem auto-intersecção: as arestas de uma superfície não devem se intersectar, a não ser em suas extremidades. Figura 2.6 – Regularidade na representação de sólidos: a) subconjunto regular b) subconjunto não- regular c) superfícies com arestas auto-intersectantes d) superfície adequada. Fonte: Elaboração do próprio autor Os sólidos precisam ser representados de uma maneira conveniente que permita a obtenção de suas propriedades geométricas (volume, centro de massa, normais da superfície, etc.), a sua combinação com outros sólidos (intersecção, subtração, adição) e, para o caso dos métodos numéricos, a geração de malha de tal forma que os elementos em faces adjacentes se conectem. Jansen (1987), Mäntylä (1988) e Hoffman (1992) descrevem três tipos principais de representação: por decomposição, por construção e por representação de superfícies (B-REP). 2.2.1 Técnicas de decomposição Define-se um envelope como uma caixa que engloba totalmente o objeto (superfície ou sólido). As coordenadas de qualquer um de seus vértices podem ser 37 {𝑋𝑒+, 𝑋𝑒−, 𝑌𝑒+, 𝑌𝑒−, 𝑍𝑒−, 𝑍𝑒+} e as coordenadas extremas do objeto são {𝑋𝑚í𝑛, 𝑋𝑚á𝑥, 𝑌𝑚í𝑛, 𝑌𝑚á𝑥, 𝑍𝑚í𝑛, 𝑍𝑚á𝑥}. Então {𝑋𝑒− < 𝑋𝑚í𝑛}, {𝑋𝑒+ > 𝑋𝑚á𝑥} e assim por diante. Em suma, nenhum vértice do objeto deve ficar fora do envelope. As estruturas de decomposição são geradas por meio da divisão sucessiva e hierárquica de células11, de tal sorte que a célula pai de hierarquia superior é o próprio envelope do objeto. Uma das maneiras de se gerar as árvores é mostrada na instrução 2.1: Instrução 2.1 - Geração de quadtree ou octree a) Se a célula atual for passível de divisão conforme algum critério, divida-a em quatro (ou oito para 3D) outras células – denominadas células filhas; b) Para cada uma das filhas, realizar nova divisão se ela se intersectar com uma aresta ou face do objeto ou ainda se o seu tamanho atual é maior que um limite especificado; c) Armazenar o endereço de cada célula e demais informações que possam ser úteis, tal como o endereço das células vizinhas. Voltar em a). Quando a decomposição ocorre em um espaço bidimensional, diz-se que a estrutura resultante é um quadtree, enquanto no espaço tridimensional essa estrutura recebe o nome de octree. De fato, o constructo lógico dessas entidades assemelha- se a uma árvore, como pode ser observado na figura 2.7. Denomina-se folha, uma célula do nível hierárquico mais baixo que possua interesse (contém alguma intersecção, um nó, elemento, etc.) na árvore. As células órfãs são aquelas do nível hierárquico mais baixo e que não possuem interesse. O endereço de cada célula na árvore pode ser indicado por um vetor. Por exemplo, a célula marcada com uma seta na figura 2.7 tem o endereço {2,1,3}12. A figura 2.8 mostra dois exemplos de decomposição. O quadtree é gerado por um algoritmo de divisão baseado na intersecção com os contornos da superfície. Esse tipo de quadtree é apropriado para a representação da superfície, e também geração de malha como mostrado por Bern e Plasmann (2000). O octree mostrado na figura é 11 No contexto desse trabalho essas células podem ser quadrados, retângulos, cubos e paralelepípedos. O uso da palavra célula no livro de Mäntylä é um pouco diferente. 12 Não é necessário marcar o endereço do nível 0 por razões óbvias. Aqui foram usados números inteiros para o endereço. Na programação, pode-se utilizar um tipo de variável que use menos memória, tal como o char ou byte. 38 para uso do MEC com multipolos rápidos e a divisão dos cubos se dá pelo número máximo aceitável de elementos (não mostrados aqui) no interior de cada célula, ao invés das intersecções com a superfície do objeto. Dessa maneira, podem existir regiões da superfície sem células. Figura 2.7 – Esquema de uma árvore para um quadtree Fonte: Elaboração do próprio autor Figura 2.8 – Decomposições geradas pelo CABEMT: à esquerda – de uma superfície, correspondendo a um quadtree (células internas ao círculo foram omitidas); à direita – de um sólido, correspondendo a um octree Fonte: Elaboração do próprio autor Percebe-se que a criação de sólidos ou superfícies diretamente é uma tarefa muito difícil. Na realidade, os modelos de decomposição não são utilizados na construção direta e sim, para auxiliar ou acelerar outras operações, tais como a geração de malha, algoritmos de inflação (MÄNTYLÄ, 1988), algoritmos de classificação de pontos13 e operações booleanas14. Mäntylä (1988) cita que o software 13 Por exemplo, determinar se um ponto está dentro ou fora de um sólido. 14 Por exemplo: adição, subtração e intersecção entre sólidos. 39 MCS TIPS usa um octree regular tridimensional para acelerar vários algoritmos do programa. 2.2.2 Técnica da construção geométrica de sólidos (CGS) Essa técnica busca representar os sólidos por meio da combinação booleana de outros sólidos elementares, tais como: caixa retangular, cilindro, cone, esfera, toro e cunha (STROUD; NAGY, 2011). Figura 2.9 – Criação de objetos pela técnica da construção. Fonte: Stroud e Nagy (STROUD e NAGY, 2011) A figura 2.9 mostra a combinação de sólidos para formação de um olhal, à esquerda – técnica da CGS. À direita percebe-se a formação de um retângulo pela combinação dos semi-espaços: {(𝑥 ≥ −1) ∧ (𝑥 ≤ 1) ∧ (𝑦 ≥ −1) ∧ (𝑦 ≤ 1)} – modelo de semi-espaços. Este último usa uma descrição lógico-matemática dos objetos e são menos intuitivos que a construção por blocos elementares, mas por sua vez, tais blocos podem ser interpretados como modelos de semi-espaços que se interceptam sem deixar regiões abertas. Dessa forma, a representação por sub-espaços é de certa forma o fundamento da CGS. A CGS pode ser descrita por uma árvore, cujas folhas correspondem às entidades elementares, ao passo que os nós intermediários correspondem às operações booleanas entre dois sólidos elementares (duas folhas) ou entre o sólido que está sendo construído e outro elementar ou ainda a uma operação de rotação ou translação. Um exemplo de árvore de CGS pode ser visto na figura a seguir: 40 Figura 2.10 – Um sólido representado por CGS e a sua árvore geradora Fonte: Stroud e Nagy (STROUD; NAGY, 2011) O problema de como descrever um objeto por meio da junção de sólidos mais simples por ser resolvido pelas árvores, contudo, ainda resta uma questão: como a imagem desses sólidos poderá ser formada? Para exibir o sólido, a representação deve ser convertida em um tipo de representação volumétrica (como no item 2.2.1) ou por fronteiras (item 2.2.3). Contudo essas conversões podem ser lentas (JANSEN, 1987). A CGS pode representar e guardar todas as informações construtivas do objeto, facilitando a implementação da função desfazer, crucial no modelamento sólido. Além disso, as fronteiras de cada elemento da CGS possuem uma função matemática conhecida. Apesar dessas vantagens, a representação por CGS possui algumas desvantagens importantes: • Normalmente a árvore que representa um determinado objeto não é unívoca, impedindo a comparação entre dois objetos somente através de suas árvores associadas (STROUD; NAGY, 2011); • Nem sempre é conveniente realizar uma modificação do sólido por meio de operações booleanas15 (STROUD; NAGY, 2011). Detalhes como esse fazem da modelagem construtiva bastante morosa se comparada as técnicas de 15 Por exemplo: as operações locais de chanfro e arredondamento são mais fáceis de se utilizar na representação por fronteira. De fato, um usuário de um sistema baseado em CGS não gostaria de precisar criar o “negativo” do chanfro para depois subtraí-lo do modelo principal. Ele poderia fazer isso com apenas alguns comandos no caso da representação por fronteira. 41 modificação local da geometria permitida pela modelagem de fronteira; • Operações de extrusão são feitas de forma muito indireta na CGS (STROUD; NAGY, 2011) e esse tipo de operação, aliada à de varredura, é amplamente empregada na maneira moderna de criar sólidos, uma vez que são bastante intuitivas. Devido a essas características, a CGS, que já foi amplamente empregada em softwares comerciais (MÄNTYLÄ, 1988), hoje perdeu espaço para a representação por fronteiras, em virtude dessa ser mais completa e permitir a criação do modelo de maneira mais rápida, em geral. Contudo a CGS tem despertado interesse no campo de reconstrução de modelos a partir de nuvens de pontos ou malhas de superfície. Du, Liu e Dong (2018), por exemplo, elaboraram um algoritmo de engenharia reversa para transformar uma malha grosseira em uma representação completa em CGS. 2.2.3 Técnica da representação por fronteiras (B-rep) 2.2.3.1 B-REP – Técnica, Geometria e Topologia Essa forma de representação (Boundary Representation – B-rep) tem sido largamente utilizada nos softwares de modelagem atualmente (STROUD; NAGY, 2011) e também foi escolhida para representar os sólidos no CABEMT. A figura a seguir apresenta um esquema lógico de uma B-REP: Figura 2.11 – Esquema lógico da representação de um objeto por fronteira (B-REP) Fonte: Adaptado de Stroud e Nagy (2011) O esquema separa as entidades topológicas das geométricas, mas isso não é estritamente necessário na implementação computacional. Para ilustrar isso, pode-se imaginar duas classes: vértice e ponto. O vértice pode ter como variável uma entidade 42 da classe ponto, além das informações de conectividade (topologia). Tudo isso ficaria armazenado em uma mesma estrutura de dados ou objeto. A seguir serão apresentadas sucintamente algumas características dos elementos apontados na figura 2.11: • Ponto: é um conjunto de coordenadas que representam uma posição. Deve ter pelo menos um número identificador para facilitar sua manipulação e localização na estrutura de dados; • Curva: pode ser uma linha, um conjunto de linhas descrevendo uma curva ou uma equação da curva. Nesse último caso, pelo menos a equação paramétrica e os valores inicial e final do parâmetro da curva são necessários; • Superfície: esse elemento pode conter a equação que o descreve e/ou conjunto de faces que o constitui. É comum na B-rep o requisito de que as superfícies devam ser variedades16 orientáveis. Uma variedade bidimensional tem a propriedade que todos os seus pontos apresentem uma vizinhança que seja homeomorfa ao plano, ou seja, podemos deformar a superfície localmente para que a região se torne um plano, sem que isso leve a um “rasgamento” ou separação de pontos na superfície. A variedade será orientável se é possível distinguir dois lados diferentes da superfície (HOFFMANN, 1992). No CABEMT, uma superfície é definida como um conjunto de faces. As informações geométricas e topológicas ficam armazenadas nas faces, ao passo que a superfície é apenas objeto um agregador; • Vértices: são os elementos fundamentais de conexão. No sólido, podem se conectar a um número arbitrário de arestas. Em uma face, conectam-se obrigatoriamente a apenas duas arestas (quatro semi-arestas) para variedades em ℝ2. Vértices podem estar associados a pontos por referência ou ponteiros; • Aresta: conectam-se obrigatoriamente a dois vértices; • Semi-aresta: pares de semi-arestas estão sempre associados a uma aresta e em sentidos opostos conforme figura 2.13. Cada semi-aresta pertence a apenas uma face que por sua vez é constituída por um conjunto de semi-arestas denominado laço, orientado de modo que ao percorrer as arestas orientadas, a face fica sempre 16 Do inglês manifolds 43 à esquerda delas; • Cascas são regiões completamente fechadas internas a um sólido; • Face: contém pelo menos um número identificador e as referências às semi- arestas (ou arestas + sentido) que a compõe. Faces também podem conter informações geométricas, tais como sua normal, área, centroide, nós e elementos associados, etc. As faces convenientes para a B-rep podem ter muitas curvas no seu contorno, desde que formem um objeto conexo. As faces são como “continentes” que podem ter “lagos”, mas não “ilhas” (MÄNTYLÄ, 1988). Na figura 2.12 o caso (a) representa uma superfície formada por um conjunto de faces, perceber como o vértice central pode se conectar a um número arbitrário de arestas. No caso (b) tem-se uma face e furo delimitados por curvas. As semi- arestas do furo possuem a mesma orientação que as semi-arestas da face. A figura em (c) deve ser separada em duas faces. O caso (d) pode ser aceito como uma representação válida (não é o caso do CABEMT) – reparar que essa face, e outras obtidas após a sua extrusão, não constituem em uma variedade em ℝ2, assim como no caso (e). Neste último, é melhor dividir a face em duas, ao passo que (d) poderia ser tratado como um caso especial. Figura 2.12 – Exemplos de faces Fonte: Adaptado de Mäntylä (1988) A programação orientada a objeto (POO) se mostra bastante adequada à B- rep devido à interdependência e organização hierárquica das entidades topológicas e geométricas, cada qual podendo ser considerada como um objeto (ponto, aresta, curva, etc.). Há muitas formas de se estruturar a B-rep, sendo o esquema da figura 2.11 um exemplo possível. O uso de ponteiros ou referências permite uma busca eficiente pelas conexões topológicas e o seu armazenamento não consome muita memória, tal característica será melhor discutida no capítulo 4. 44 A figura 2.13 mostra um cubo e as entidades que o constituem: vértices (𝑉𝑖), arestas (𝑎𝑖), semi-arestas (𝑎𝑖𝑗) e faces (𝐹𝑖). Figura 2.13 – Um cubo e suas entidades topológicas associadas Fonte: Elaboração do próprio autor Tabela 2.1 – Conectividade topológica dos elementos de um cubo. Alguns itens foram omitidos (-) Vért. Aresta Semi-aresta Aresta Semi-Aresta Face 𝑉1 - - - 𝑉2 𝑎1(𝑉1 ↔ 𝑉2) 𝑎12(𝑉1 → 𝑉2) 𝑎21(𝑉2 → 𝑉1) 𝑎7(𝑉6 ↔ 𝑉3) 𝑎25(𝑉2 → 𝑉5) 𝑎52(𝑉5 → 𝑉2) 𝐹1(𝑎12 → 𝑎23 → 𝑎34 → 𝑎41) 𝑉3 𝑎2(𝑉2 ↔ 𝑉3) 𝑎23(𝑉2 → 𝑉3) 𝑎32(𝑉3 → 𝑉2) 𝑎8(𝑉6 ↔ 𝑉7) 𝑎56(𝑉5 → 𝑉6) 𝑎65(𝑉6 → 𝑉5) 𝐹2(𝑎32 → 𝑎25 → 𝑎56 → 𝑎63) 𝑉4 𝑎3(𝑉3 ↔ 𝑉4) 𝑎34(𝑉3 → 𝑉4) 𝑎43(𝑉4 → 𝑉3) 𝑎9(𝑉7 ↔ 𝑉4) . . 𝑉5 𝑎4(𝑉2 ↔ 𝑉5) 𝑎41(𝑉4 → 𝑉1) 𝑎14(𝑉1 → 𝑉4) 𝑎10(𝑉1 ↔ 𝑉9) . . 𝑉6 𝑎5(𝑉5 ↔ 𝑉6) . 𝑎11(𝑉7 ↔ 𝑉8) . . 𝑉7 𝑎6(𝑉1 ↔ 𝑉2) . 𝑎12(𝑉8 ↔ 𝑉5) 𝑉8 . Fonte: Elaboração do próprio autor 2.2.3.2 A fórmula de Euler-Poincaré A validade da representação simbólica da topologia de um sólido está sujeita a alguns erros, principalmente devido a: • Entrada de parâmetros incorretos pelo usuário associada à ausência de verificador de consistência; • Erros em operações de ponto flutuante podem fazer com que a classificação de um vértice, por exemplo, seja incorreta e afete em cadeia as entidades topológicas associadas. Por exemplo: um vértice pode ter sido classificado como pertencente a uma aresta quando na realidade não é; a a a a a a a a a a a a 2 3 4 5 1 2 45 • Erro lógico oculto em algum algoritmo do programa, especialmente naqueles de operações booleanas devido a sua complexidade. Então é importante haver uma maneira de verificar a validade da representação topológica. Se considerarmos um sólido simples, isto é, cujas faces sejam contornadas por um único laço e que tal sólido não possua vazios ou furos, então a seguinte fórmula de Euler-Poincaré é válida (HOFFMANN, 1992): 𝑉 − 𝑎 + 𝐹 − 2 = 0 (2.15) na qual 𝑉 é o número de vértices, 𝑎 o número de arestas e 𝐹 o número de faces. Se o sólido possui furos passantes, então é homeomorfo a uma esfera com uma alça. O número dessas alças é denominado genus da superfície (𝐺). Assim, a equação de Euler-Poincaré fica (HOFFMANN, 1992): V − 𝑎 + F − 2(1 − 𝐺) = 0 (2.16) A figura a seguir mostra dois sólidos com genus = 2. Figura 2.14 – Dois sólidos homeomorfos com genus igual a 2 Fonte: Hoffmann (1992) 2.2.3.3 Operadores de Euler Os operadores de Euler podem ser imaginados como uma forma de criar e modificar a topologia de variedades de maneira robusta e consistente. Eles podem criar superfícies fechadas e modificá-las por meio da adição e exclusão de faces, arestas e vértices. Os operadores de Euler são usados como se fossem uma camada de abstração intermediária em alguns sistemas (HOFFMANN, 1992). Mäntylä (1988) utiliza os operadores como base para seu programa MCS GWB (geometric workbench). Esses operadores normalmente possuem comandos e entidades. Os comandos podem ser: fazer (make), eliminar (kill), dividir (split), unir 46 (join). E as entidades: vértice (vertex), aresta (edge), face (face), sólido (solid), buraco (hole) e anel (ring). Se a letra 𝐶 representar um comando e 𝐸 uma entidade topológica, então os operadores de Euler podem ser tipicamente representados por 𝐶𝐸𝐶𝐸, 𝐶𝐸𝐸, 𝐶𝐸𝐸𝐸, 𝐶𝐸𝐶𝐸𝐸, etc. Por exemplo: MEV significa fazer uma aresta e vértice (make edge vertex). A figura 2.15 exemplifica alguns desses comandos: Figura 2.15 – Alguns operadores de Euler comuns Operador de Euler Ilustração MEV Make Edge Vertex Cria um vértice a partir de outro e uma aresta que liga os dois MVFS Make Vertex Face Solid Cria um vértice, uma face vazia e um sólido que contém essa face MEF Make Edge Face Cria uma aresta e uma nova face KEML Kill Edge Make Loop Elimina uma aresta e faz um laço Fonte: Adaptado de Mäntylä (1988) 2.2.3.4 Estrutura de Dados na B-rep Há muitas formas de se armazenar a topologia de um sólido na memória do computador. Algumas maneiras podem ser mais compactas e favorecem o armazenamento, porém requerendo mais processamento durante a modelagem. Outras formas mais ricas em detalhes e até com alguma redundância de informações podem ocupar mais espaço na memória, porém facilitam as inúmeras operações computacionais ao longo da modelagem, possibilitando acesso mais rápido ou direto 47 às entidades topológicas. Contudo, não há empecilho em usar uma representação17 mais compacta para armazenamento do arquivo e no momento de carregá-lo no programa, construir a representação que melhor se adapte à modelagem e processamento. Isso ocorre porque a informação elementar de construção do sólido é a mesma, a maneira de acessar essa informação é que pode mudar conforme ela esteja explícita ou implícita na representação. 2.2.3.4.1. B-rep com estrutura baseada em vértices Este é o modelo mais simples de representação e aplicável a modelos poliédricos, ou seja, nos quais todas as faces são planares. Consiste em uma lista principal de vértices e suas coordenadas, além de uma lista de faces contendo a sequência de vértices que a perfazem, na orientação correta. Esta última é uma lista de ponteiros ou referências aos elementos da lista de vértices. Para efeito de demonstração, consideremos a representação das faces 𝐹1 e 𝐹2 do cubo ilustrado na figura 2.13 conforme a tabela a seguir: Tabela 2.2 – Estrutura do cubo da figura 2.13 baseada em vértices Vértice Coordenadas Face Vértices 𝑉1 𝑥1 𝑦1 𝑧1 𝐹1 𝑉1 𝑉2 𝑉3 𝑉4 𝑉2 𝑥2 𝑦2 𝑧2 𝐹2 𝑉3 𝑉2 𝑉5 𝑉6 𝑉3 𝑥3 𝑦3 𝑧3 𝐹3 𝑉4 𝑉3 𝑉6 𝑉7 𝑉4 𝑥4 𝑦4 𝑧4 𝐹4 𝑉2 𝑉1 𝑉8 𝑉5 𝑉5 𝑥5 𝑦5 𝑧5 𝐹5 𝑉6 𝑉5 𝑉8 𝑉7 𝑉6 𝑥6 𝑦6 𝑧6 𝐹6 𝑉1 𝑉4 𝑉7 𝑉8 𝑉7 𝑥7 𝑦7 𝑧7 𝑉8 𝑥8 𝑦8 𝑧8 Fonte: Adaptado de Mäntylä (1988) Essa forma estrutural, embora bastante compacta, certamente vai exigir mais processamento em tempo de execução, especialmente nas operações booleanas. Nesse caso, com frequência é necessário determinar intersecções com arestas que não estão representadas explicitamente na estrutura. Assim como as faces vizinhas às arestas, vértices sucessores e predecessores, etc. 2.2.3.4.2. B-rep com estrutura baseada em arestas Nesse caso, as arestas são explicitamente armazenadas na estrutura, reduzindo o tempo de processamento na manipulação do sólido. Além de facilitar o acesso às informações topológicas, quando superfícies curvas estão presentes no 17 O termo representação aqui se refere ao modo como os elementos são estruturados e armazenados na memória e não ao tipo de representação do sólido (B-rep, CGS, decomposição). 48 modelo, é útil incluir vértices explicitamente18 nos dados de fronteira dessas curvas, quando gerados por intersecções diversas (MÄNTYLÄ, 1988). Nessa circunstância, é frequente a necessidade de computar intersecções dessas curvas com outras superfícies, ao se efetuar operações booleanas. A tabela abaixo exemplifica a representação baseada em arestas para o cubo da figura 2.13: Tabela 2.3 – Estrutura do cubo baseada em arestas Aresta Vértices Vértice Coordenadas Face Arestas 𝑎1 𝑉1 𝑉2 𝑉1 𝑥1 𝑦1 𝑧1 𝐹1 𝑎1 𝑎2 𝑎3 𝑎4 𝑎2 𝑉2 𝑉3 𝑉2 𝑥2 𝑦2 𝑧2 𝐹2 𝑎2 𝑎5 𝑎6 𝑎7 𝑎3 𝑉3 𝑉4 𝑉3 𝑥3 𝑦3 𝑧3 𝐹3 𝑎3 𝑎7 𝑎8 𝑎9 𝑎4 𝑉4 𝑉1 𝑉4 𝑥4 𝑦4 𝑧4 𝐹4 𝑎1 𝑎10 𝑎12 𝑎5 𝑎5 𝑉2 𝑉5 𝑉5 𝑥5 𝑦5 𝑧5 𝐹5 𝑎6 𝑎12 𝑎11 𝑎8 𝑎6 𝑉5 𝑉6 𝑉6 𝑥6 𝑦6 𝑧6 𝐹6 𝑎4 𝑎10 𝑎11 𝑎9 𝑎7 𝑉6 𝑉3 𝑉7 𝑥7 𝑦7 𝑧7 𝑎8 𝑉6 𝑉7 𝑉8 𝑥8 𝑦8 𝑧8 𝑎9 𝑉7 𝑉4 𝑎10 𝑉1 𝑉8 𝑎11 𝑉8 𝑉7 𝑎12 𝑉5 𝑉8 Fonte: Adaptado de Mäntylä (1988) Todas as arestas são ordenadas no sentido anti-horário ou conforme a regra da mão direita aplicada às normais das faces. Cada aresta tem somente duas faces vizinhas, de modo que em uma face a aresta é percorrida num sentido e na outra, no sentido inverso. 2.2.3.4.3. B-rep com estrutura alada (winged-edge) Essa representação foi introduzida por Baumgart (1974) e além de manter os elementos das estruturas mostradas anteriormente, associa sucessores e predecessores das arestas. Considerando uma aresta 𝑎𝑖(𝑉𝑛 → 𝑉𝑚), a variável 𝑛𝑐𝑤 (next clockwise) indica a próxima aresta na face onde 𝑎𝑖 tem orientação positiva, ou seja, a sequência de vértices 𝑉𝑛 → 𝑉𝑚 coincide com a ordenação de vértices na face. Por outro lado, a variável 𝑛𝑐𝑐𝑤 (next counterclockwise) indica a próxima aresta da face onde 𝑎𝑖 é percorrida no sentido negativo, ou seja, a face que contém uma sequência de vértices igual a 𝑉𝑚 → 𝑉𝑛. A tabela a seguir ilustra essa estrutura para o cubo da figura 2.13, 18 Não se trata obrigatoriamente de representar uma curva por vários segmentos de reta ou sequência de vértices. A representação pode ser utilizada somente para determinar de maneira rápida uma primeira aproximação do ponto de intersecção entre uma aresta e uma superfície. O restante da curva é determinado por algoritmos de traçagem, tal como em Hoffmann (1992). 49 porém desconsiderar a orientação mostrada na ilustração, neste caso, todas as faces estão orientadas no sentido horário quando vistas de fora do cubo: Tabela 2.4 – Estrutura topológica tipo alada (winged-edge) - parte I Aresta Vinicio Vfim ncw nccw 𝑎1 𝑉1 𝑉2 𝑎5 𝑎4 𝑎2 𝑉2 𝑉3 𝑎7 𝑎1 𝑎3 𝑉3 𝑉4 𝑎9 𝑎2 𝑎4 𝑉4 𝑉1 𝑎10 𝑎3 𝑎5 𝑉2 𝑉5 𝑎12 𝑎2 𝑎6 𝑉5 𝑉6 𝑎8 𝑎5 𝑎7 𝑉6 𝑉3 𝑎3 𝑎6 𝑎8 𝑉6 𝑉7 𝑎11 𝑎7 𝑎9 𝑉7 𝑉4 𝑎4 𝑎8 𝑎10 𝑉1 𝑉8 𝑎11 𝑎1 𝑎11 𝑉8 𝑉7 𝑎9 𝑎12 𝑎12 𝑉5 𝑉8 𝑎10 𝑎6 Fonte: Adaptado de Mäntylä (1988) Tabela 2.5 – Estrutura topológica tipo alada (winged-edge) - parte II Vértice Coordenadas Face Primeira aresta Sinal 𝑉1 𝑥1 𝑦1 𝑧1 𝐹1 𝑎1 - 𝑉2 𝑥2 𝑦2 𝑧2 𝐹2 𝑎2 + 𝑉3 𝑥3 𝑦3 𝑧3 𝐹3 𝑎3 + 𝑉4 𝑥4 𝑦4 𝑧4 𝐹4 𝑎1 + 𝑉5 𝑥5 𝑦5 𝑧5 𝐹5 𝑎6 + 𝑉6 𝑥6 𝑦6 𝑧6 𝐹6 𝑎4 - 𝑉7 𝑥7 𝑦7 𝑧7 𝑉8 𝑥8 𝑦8 𝑧8 Fonte: Adaptado de Mäntylä (1988) 2.2.3.4.4. B-rep com estrutura quad-edge Essa estrutura foi introduzida por Guibas e Stolfi (1985) com fins à geração de malha e muitos artigos científicos a utilizam. Não há empecilho, porém, à representação de sólidos. Como o próprio nome indica, as arestas são o principal elemento dessa representação. Cada uma guarda referência para outras quatro: antecessora e sucessora na face à esquerda e antecessora e sucessora na face à direita. Além disso, cada quad-edge guarda as referências de seus vértices. O cubo da figura 2.13 ficaria representado como na figura 2.16. Guibas e Stolfi (1985) assinalam que a provável maior vantagem da estrutura quad-edge sobre as demais é que a modificação e construção da topologia pode ser feita com apenas dois operadores básicos. Eles aplicaram essa estrutura e seus operadores para efetuar a triangulação de domínios, algo a ser visto no item 3.3.2. 50 Figura 2.16 – Um cubo representado graficamente pela estrutura de quad-edge Fonte: Elaboração do próprio autor 2.2.3.4.5. Estrutura triangular É uma estrutura dedicada à representação de faces ou elementos triangulares. Cada triângulo armazena os seus três vizinhos e seus três vértices. O espaço necessário para armazenar uma quad-edge ou estrutura triângulo é o mesmo, porém, quando consideradas as redundâncias no agrupamento de vários elementos, a estrutura triangular é mais eficiente em termos de armazenamento e em velocidade de acesso a seus elementos (SHEWCHUK, 1996). 2.3 OPERAÇÕES BÁSICAS PARA GERAÇÃO DE SÓLIDOS A geração dos sólidos é uma etapa que envolve bastante interface humana e por isso é importante que tal processo se dê de maneira natural e amigável ao usuário, dando liberdade criativa e possibilidade de experimentar diferentes abordagens. Os modelos de decomposição certamente não são adequados para o trabalho humano, visto que seria extremamente laborioso informar vértice por vértice do octree de um sólido ou algum conjunto de informações equivalentes. É por isso que as técnicas de decomposição em geral processam um sólido existente, ao invés de criá- lo, a não ser que os dados de construção provenham de técnicas de escaneamento. 51 Na modelagem construtiva as coisas se tornam mais simples. O usuário deve decompor mentalmente o objeto a modelar, baseando-se nos sólidos primitivos disponíveis no software. Em seguida, criam-se os primitivos e aplicam-se operações de rotação e/ou translação para posicioná-los, caso já não tenham sido criados na posição adequada por meio de eixos de coordenadas auxiliares. Na sequência, as operações booleanas são aplicadas conforme necessário. O paradigma da representação por fronteiras é certamente aquele que fornece as ferramentas mais intuitivas e que na maioria dos casos permitirá uma modelagem mais rápida. Devido à importância da B-rep e ao fato de sua implementação no CABEMT, serão discutidas adiante as maneiras mais comuns de se criar modelos sólidos nesse tipo de representação, ainda que algumas dessas técnicas também possam ser utilizadas na CGS (JANSEN, 1987), mas que são certamente mais simples de implementar e mais naturais à B-rep. As instruções mostradas terão como pano de fundo a criação de sólidos poliédricos que é o tipo de objeto gerado pelo CABEMT. O conceito geral dessas instruções será muito similar para modelos mais exatos, cujas superfícies possam ser representadas por quádricos ou NURBS. 2.3.1 Geração direta A geração direta é comum à CGS e à B-REP. Tal como o nome diz, consiste na criação de uma entidade sólida simples (caixa, cilindro, esfera, etc.) por meio de comandos ou pela IGU (interface gráfica do usuário). O exemplo abaixo mostra a criação de um cilindro (Ø 30 x 100, centro em 0,0,0) no AutoCAD®: Command: CYLINDER Specify center point of base or [3P/2P/Ttr/Elliptical]: 0,0 Specify base radius or [Diameter]: 30 Specify height or [2Point/Axis endpoint]: 100 A geração direta de sólidos não precisa se restringir somente às formas básicas. O software Salome (RIBES; BRUNETON; GEAY, 2017), por exemplo, dá opção de criar conexões de tubos diretamente, por meio de uma IGU. Entretanto, o mais comum é que a geração direta seja apenas uma etapa da modelagem –, a ela estarão tipicamente associadas outras operações para criação de um modelo complexo. 52 2.3.2 Varredura translacional (extrusão) É a operação de varredura mais simples e a mais utilizada. Consiste em “arrastar” uma face ao longo de um caminho (normalmente retilíneo), formando assim o sólido. Na figura 2.17 (a) uma face correspondente a um perfil I foi criada e em seguida extrudada. O resultado é exibido em (b). O sólido mostrado em (c) passou por um processo de extrusão em ângulo. Figura 2.17 – Exemplos de sólidos formados por extrusão no sentido indicado pelas setas Fonte: Elaboração do próprio autor O processo de extrusão será detalhado com base na figura 2.18 e na instrução a seguir: Instrução 2.2 - Extrusão de uma face Dados: uma face 𝐹 composta pela sequência de vértices 𝑉1, 𝑉2, 𝑉3, … , 𝑉𝑁 e as semi-arestas associadas 𝑎1→2, 𝑎2→3, … , 𝑎𝑁−1→𝑁, cuja normal é �⃗� 𝐹 e o vetor diretor da extrusão é �⃗� 𝑒. a) Se �⃗� 𝑓 e �⃗� 𝑒 possuírem a mesma orientação, isto é, 𝑛𝑓⃗⃗⃗⃗ . 𝑛𝑒⃗⃗⃗⃗ > 0, então inverter a orientação de 𝐹. Não é absolutamente necessário que �⃗� 𝑓 e �⃗� 𝑒 sejam paralelos, mas não podem ser perpendiculares; b) Para cada vértice 𝑉𝑘 em 𝐹, criar um vértice correspondente 𝑉𝑘′ que formará uma nova face 𝐹′, mas com orientação e normais invertidas em relação à 𝐹; c) As faces laterais então serão criadas pela sequência: 𝑉𝑘 → 𝑉𝑘 ′ → 𝑉𝑘+1 ′ → 𝑉𝑘+1. Se 𝑘 + 1 > 𝑁, adota-se 𝑘 + 1 = 0, fechando o sólido. Essa instrução lida apenas com os aspectos topológicos, a geometria da face 𝑉2 → 𝑉2 ′ → 𝑉3 ′ → 𝑉3 por exemplo, poderia ser representada por NURBS, quádricos ou um conjunto de faces. Se 𝑉4 → 𝑉5 for um arco, por exemplo, a face criada na extrusão poderia ser representada por um cilindro seccionado ou um conjunto de muitas faces 53 adjacentes que se aproxima de um cilindro. Figura 2.18 – Extrusão de uma face e orientação dos elementos criados. Fonte: Elaboração do próprio autor 2.3.3 Varredura rotacional19 Também denominada de “revolução” em alguns softwares, essa operação forma um sólido por meio da rotação das arestas de uma face em torno de um eixo. Essa operação é muito utilizada para modelagem de eixos com muitos detalhes e quaisquer sólidos de revolução. De maneira geral, a rotação de cada aresta resulta numa superfície de revolução, mas na representação de sólidos unicamente por poliedros, essa superfície é um agrupamento de faces planas. As instruções para essa operação são similares à de extrusão, como pode ser visto abaixo e na figura 2.19: Instrução 2.3 - Varredura rotacional de uma face Dados: uma face 𝐹 composta pela sequência de vértices 𝑉1, 𝑉2, 𝑉3, … , 𝑉𝑁 e as semi-arestas associadas 𝑎1→2, 𝑎2→3, … , 𝑎𝑁−1→𝑁, cuja normal é �⃗� 𝐹. O eixo de rotação pode ser representado pelo par de pontos 𝑷𝑟1 e 𝑷𝑟2, cujo vetor diretor é �⃗� 𝑟. Por último, deve ser fornecido também o ângulo da varredura ente 0 e 360º. Para modelos poliédricos ainda é necessário fornecer o número de segmentos 𝑁𝑠. a) Verificar se o eixo de rotação intercepta alguma aresta da face. Se sim, cancelar a operação, senão, prosseguir; b) Se (𝑷𝑟1𝑉1⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗ 𝑥 �⃗� 𝑟). �⃗� 𝐹 < 0, deve-se inverter a orientação de 𝐹 ; 19 Em inglês – revolve. 54 c) Para cada vértice 𝑉𝑘 em 𝐹, criar um vértice correspondente 𝑉𝑘′ na próxima face que formará um laço 𝑙, mas com orientação e normais invertidas em relação à 𝐹. A posição de 𝑉𝑘′ é dada pelo raio em relação ao eixo de revolução e o ângulo 𝜃 (ângulo de varredura); d) As faces laterais então serão criadas pela sequência: 𝑉𝑘 → 𝑉𝑘 ′ → 𝑉𝑘+1 ′ → 𝑉𝑘+1. Se 𝑘 + 1 > 𝑁, adota-se 𝑘 + 1 = 1; e) Repetir os passos b), c) e d) até fazer todos os segmentos. Cada novo laço terá como base o laço anterior. Ao término, se o ângulo de varredura for menor que 360°, cria-se uma face 𝐹′ baseando-se no último laço formado. Se o ângulo for igual a 360°, exclui-se 𝐹 e unem-se os vértices do último conjunto de faces com o primeiro; Figura 2.19 – Geração de sólido por varredura rotacional Fonte: Elaboração do próprio autor Essas instruções não contemplam a varredura rotacional de faces com furos. No caso de modelos não poliédricos, as superfícies do sólido seriam formadas conforme a geometria da aresta geradora. Se uma linha, a superfície será um trecho de casca cônica, cilíndrica ou o segmento de um disco. Se um arco, a superfície será um segmento de um toro. 2.3.4 Varredura ordenada (loft)20 É utilizada para criação de sólidos que apresentem alguma torção (pá de compressor, por exemplo) e/ou transição de forma. Na figura 2.20 em (a) e (b) estão 3 faces21 ordenadas para a varredura que se diferem pela coordenada 𝑧 e por rotações 20 Também conhecida como general duct (JANSEN, 1987). 21 Poderiam ser laços fechados e orientados também. O CABEMT utiliza faces. 55 em torno do eixo 𝑧. Em (c) observa-se o resultado da operação. Em (d) realizou-se um loft entre uma face quadrada e outra circular. Os dois sólidos são poliédricos, gerados pelo CABEMT. Figura 2.20 – Sólidos criados por varredura ordenada Fonte: Elaboração do próprio autor (CABEMT) A varredura ordenada para criação de sólidos poliédricos pode ser