Ambiente Matlab - Elementos Finitos para Eletromagnetismo PDF

You might also like

Download as pdf
Download as pdf
You are on page 1of 106
Universidade Estadual de Campinas Faculdade de Engenharia Elétrica e Computacio CAME Departamento de Microondas e Otica UN at LIOTECA CENTRA. spc Ao CIR CULANT? Tese de Mestrado Ambiente MATLAB — Elementos Finitos para Eletromagnetismo Eng. Mario Aparecido Corréa Orientador: Prof. Dr, Hugo Enrique Hernandez Figueroa Comissao Examinadora: Hugo Enrique Hernandez Figueroa - DMO/FEEC/UNICAMP-Presidente Maria Aparecida G. Martinez - Universidade Presbiteriana Mackenzie Philippe R. B. Devioo - FEC/UNICAMP Rui Fragassi Souza - DMO/FEEC/UNICAMP e090: BIBLIOTECA DA AREA DE ENGENHARIA - BAE - UNICAMP FICHA CATALOGRAFICA ELABORADA PELA C817a Corréa, Mario Aparecido Ambiente MATLAB — elementos finitos para eletromagnetismo / Mario Aparecido Corréa. ~ Campinas, SP: [s.n.J, 2001 Orientador: Hugo Enrique Hernndez Figueroa Dissertagdo (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Blétrica e Computagao. 1, MATLAB (Programa de computador). 2. Método dos elementos finitos. 3. Eletromagnetismo. 4. Métodos de simulagdo. I, Hernandez Figueroa, Hugo Enrique. I. Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computagao. III. Titulo. Sumario Apresenta-se um ambiente de simulag&o computacional, desenvolvido sobre a plataforma MATLAB, para diversos problemas e efeitos eletromagnéticos. Pela sua versatilidade e abrangéncia 0 Método dos Elementos Finitos foi adotado na resolugdo das equacdes correspondentes, derivadas das Equagdes de Maxwell. Aspectos computacionais e varios exemplos de aplicagao so discutidos em detalhe. A técnica de simulagio pelo Método de Elementos Finitos vem sendo largamente utilizada em diversos ramos da engenharia e, em especial, como auxiliar no modelamento de dispositivos baseados em ondas eletromagnéticas. Por outro lado, com uma difusio no meio cientifico ¢ industrial jé bastante ampla, o MATLAB tem se mostrado como uma poderosa ferramenta para o desenvolvimento, testes e implementago dos mais variados algoritmos de computagdo numérica, Aliar o ambiente do MATLAB as técnicas de programagao para 0 Método de Elementos Finitos torna-se uma tarefa quase que natural se, levarmos em considerago © aspecto matricial do método ¢, as funcionalidades de manipulagdo matricial do ambiente. Isto motivou a concepgao da foolbox meftool, apresentada neste trabalho em detalhe, a qual tem por filosofia ser um Ambiente MATLAB - Elementos Finitos para Eletromagnetismo, Abstract A computational simulation environment is presented, which was developed over the MATLAB platform, for a variety of electromagnetic problems and effects. Due to its versatility and wide scope, the Finite Element Method was adopted for the solution of the corresponding equations, which are derived from the Maxwell's Equations. Computational aspects and several illustrative examples are discussed in detail, ‘The simulation technique for the Finite Element Method has been broadly used in several branches of engineering and, especially, as an effective aid in the modeling of wave electromagnetic devices. On the other hand, with a very wide diffusion in the scientific and industrial market, MATLAB has shown itself as a powerful tool for the development, test and implementation of a large variety of routines for numerical computation, ‘The merge between MATLAB and the Finite Element programming techniques becomes an almost natural task, if we take into account the characteristics of the method and the MATLAB’ functionality to manipulate arrays, in an efficient and effective manner. This motivated the conception of the toolbox presented here, called meffool, which has for philosophy to be a MATLAB - Element Environment for Electromagnetics. Agradecimentos Agradego ao Professor Doutor Hugo Enrique Hemindez Figueroa pela dedicagio, orientagao e estimulo para o desenvolvimento deste trabalho. Agradego minha esposa Rosana que muito me apoiou, estimulou ¢ contribuiu para que eu concluisse esta importante etapa. Dedico este trabalho a ela ¢ minha filha Amanda. Por fim, agradego a todos que de um jeito ou de outro me apoiaram, iii Contetido 1 Introdugao 2 O MATLAB 2.1 Introdugioao MATLAB... 2... 2.0 2.2 A Area de Trabalho do MATLAB. ....... eee eet 2.2.1 Varidveisno MATLAB .......... aaa 2.2.2 A Limhe de Comandos .......... aes eee 2.2.3 FormatagioNumérica ...............0.4 93: -Oe Apquives Mais cence ce nearer ete rae 2.3.1 Arquivos M de Comandos 0.0... cece eee eee 2.3.2 Arquivos Mde Fungio ... 2.2... pause 24 Interfaces Gréficas ... 24.1 Os Objetos no MATLAB . i 2.5 Organizagéo das Fungées do MATLAB .. . 25.1 As toolbores 6.6... eee eee 2.5.2. Regras Gerais para Uso de Fungdes e Comandos 2.6 Integracéo com Outras Linguagens ........... 261 Método rm ou! . . 26.2 Método do mex-files e Compilador C/C++. 2.0... 000% 2.7 Consideragées Finais 2.2... eee ee oars 3. A meftool Bl Introdugio Ameftool..... 2.2.0... - 2 ee ee 9.9/4 A Betrabarea dalmattooksicsecte cere jeetta tae eeaeaeuaeatagetcacs 3.21 As Funes paraID 6.2.2.0... 20.0 3.2.2. Beam Propagation Method (BPM)........... 323 AsFuncbes para2D 0.2.2.0... 02 ee 3.2.4 Visualizagio Gréfica na meftool 3.3. Interfaces Graficas com o Usudrio ( GUI) 3.4 Consideragdes Finais 4 Exemplos 4.1 Introdugéo aos Exemplos............ 4.2 Linha de Transmissio com Perdas- 1D... ... 43 Problema de Espalhamento-1D. 0.00.00. 0 eee cece ee eee 4.4 Beam Propagation Method-1D............-5...000-0-008 45 Equagio de Poisson- 2D... 0... eee eee eee SPE ie Rese eM NRE MEemteta eESTT RET T ATA TREATS PERA ESET 4.5.2 Duas Linhas Condutoras 20.00.00... es 4.5.8 Barras Condutoras 02. 4.5.4 Distribuiggo de Potencial. 0.0.0.6. eee eet 4.6 Consideragdes Finais 6... ee eee 5 Conclusio A. Método de Elementos Finitos A.l Apresentacéio e Formulagdes 0.20.0... A.L.1 Introdugéo ao MEF... 2.2.0... AQ] Peremlegao Decree eee eee AL3 FormulagioQD ........... Spain aaa BRSSERRBR CREB 23 23 24 62 1 Lista de Figuras 32 Ooganizagio 2D .....-.-.-2-.-0--5 4-1 Tela para selegdo de exemplos . 2.2... eee eee eee oo 42 Linha de Transmissio com Perdas. 6.2... 0.5.00. e ee eee ee 43 Perda de poténcia x distancia... 0.2.0.0... 4-4 Interface gréfica para o problema de espalhamento. . . . 4.5 Curva de coeficiente de reflexdo (C.R.) x Angulo de incidéncia : 46 Interface gréfica paraoBPM 2.2.22... cee ee eee 4-7 Incidencia do feixe acima do Angulo critico - Pseudo Cores... 48 Incidéncia do feixe acima do Angulo exitico - Gréfico 3D 49 Incidéncia do feixe abaixo do angulo critica - Pseudo Cores . . 410 Incidéncia do feixe abaixo do Angulo critico - Gréfico 3D. . 4-11 Caracteristicas de um guia em *S” 412 Propagagéo em 2200mm.......... 4.13 Propagagéo em 1000 mm... . . fee eee eee ee 414 Plano Metilico 6... .2.0.-2. 005. a eeaenr 4-15 Interface Gréfica - Plano Metélico... 2.0.2.2... 02 ee 416 Discretizagio Baixa =17n6s 2.2.0.2... seca 4-17 Discretizagio Média = 8906s 66.6... 2 eee 4-18 Discretizagéo Alta = 780.n68..........0-0-020005 4.19 Saidas da simulagio para o Plano Condutor .. 22.0.0... SsSSRRessnerrssssees 8 4-20 Interface Gréfica - Cargas no Eepago 2... eee ee 62 421 Discretizagio Média - 669nés. .. 2... Seer eae G3 4.22 Discretizacéo Alta-1008.. 02... 0. cee eee eee ee 63 4-23 Reresentagio 3D da distribuigéio do Campo. .....-.... peed 4-24 Reresentag&o em Pseudo Cores + Curvas de Nivel da distribuigéo do Campo. 64 4-25 Reresentag&o em, Curvas de Nivel + Indicagéo do Gradiente, da distribuigaio ido Compotsici irae steneer fe 65 4-26 Reresentagéio em Pseudo Cores da distribuigio do Campo. 65 4:27 Interface Grafica - Barras Condutoras... 2.2... ee 67 4-28 Discretizagio Média - 483 nés 2.2... eee eee eer 4.29 Discretizacéo Alta-Q78n6s oe eee eee 68 4-30 Reresentagio 3D da distribuigo do Campo... 0.2.2... ee eee 68 4.31 Reresentagio em Pseudo Cores + Curvas de Nivel da distribuiggo do Campo. 69 432 Reresentagao em, Curvas de Nivel + Indicacdo do Gradiente, da distribuigéio Bo Campot ce eee 6 4.33 Reresentagio em Pseudo Cores da distribuigéo do Campo... 2.2... 70 4.34 Interface gréfica para um caso simétrico. . . . . eesereeeteeeqeo eee 2 4-35 Interface grafica para um caso Assimétrico 2 eee ee 2 4-36 Saida gréfica para o caso simétrico 2. eee ee 3 4-87 Snida gréfica para. um caso assimétrico. 6... eee ee 7 A-1 Fungies de Interpolagéo para problemas 1D linear. 2... ......... 82 A-2 Subdiviséo de um dominio em quatro elementos triangulares (negrito) com seis nés (normal) 87 Capitulo 1 Introdugao ‘Um dos pontos fundamentais na formagao de um profissional na érea de ciéncias exatas ¢ em especial na engenharia, 6 sem diivida a experimentacéo. Atualmente existe um justificado interesse por parte da indistria em dispor, sempre que possivel, das mais recentes técnicas de simulagio computacional, gerando assim um {férti] mercado para profissionais mais capacitados em realizé-las. E neste contexto que apresentamos este trabalho, cujo principal interesse 6 o de expor 0 ‘Método de Blementos Finitos como uma das mais utilizadas técnicas computacionais para mulagéo na atualidade, aliada a uma ferramenta extremamente versétil para o desen- volvimento ¢ testes de aplicativos e, para o aprendizado de técnicas numéricas. Estamos nos referindo ao jé muito difundido MATLAB. Por néio ser 0 escopo deste, nao vamos nos deter no formalismo matematico do método pois, existem intimeros trabalhos muito bem redigidos para esta finalidade. Vamos sim, focarmos nossa atencio em uma toolbor chamada meftool, desenvolvida pare se tornar um ambiente de experimentagio e desenvolvimento e cujas funcionalidades estéo projetadas para facilitar ao méximo o entendimento do método ¢ do MATLAB. A meftool tem ainda por caracteristica ser modular ¢ portével de acordo com as necessidades, podendo ser aplicada tanto em situagies de baixa, média ou alta complexidade. Bm paralelo a esse aspecto técnico, existe o aspecto didatico, onde sabemos que, discorrer sobre assuntos abstratos como o Eletromagnetismo sem langar méo de artificios 5 Kidicos € uma tarefa ardua para os mestres e para os alunos. Porém, a meftool pode dar a esses, uma ferramenta nao pedagigia, porém que facilite o aprendizado e estimule a experimentagio baseados na simulagao. Para atingirmos estes objetivos, este trabalho foi dividido em quatro grandes blocos a saber: 1. O MATLAB; 2. Ameftool; 3. Alguns Exemplos; 4. O Método de Elementos Finitos. Todo © contetide tedrico dos exemplos deste trabalho é voltado para o estudo de Eletromagnetismo. Para finalizar, cabe mencionar que o MATLAB é uma poderosa ferramenta para t6- nicas computacionas, liberando o interessado da drdua tarefa de codificar extensos pro- gramas em linguagens como FORTRAN ou C++, permitindo que o mesmo realize testes preliminares de algoritimos mais refinados. No entanto a prépria MathWorks desacon- selha 0 uso do MATLAB em seu estado puro pois, quando hé necessidade de um grande mimero de manipulagdes de dados ¢ sendo o MATLAB um ambiente interpretado, 0 custo computacional torna-se extremamente alto ¢ os tempos dispendidos para uma siru- ulagdo podem tornar-se impraticéveis. Como solugio para esta questéo, o ambiente de desenvolvimento do MATLAB permite a utilizagéo de arquivos previamente compilados, conbecidos como mex-files, ou que se exporte os eédigos fontes das aplicagées para serem compilados em outras linguagens, onde a mais comumente utilizada para este fim éa C/C++, Capitulo 2 O MATLAB 2.1 Introdugao ao MATLAB O MATLAB ¢ um software interativo cujo elemento de dados bésico 6 uma matriz que no requer dimensionamento, o que permite solucionar muitos problemas computacionais, principalmente os que envolvem formulagées matriciais ou vetoriais, como no caso de elementos finitos. FE importante mencionar o fato de que o MATLAB nao é uma linguagem de progra- magio no contexto convencional sendo, no entanto, possivel utilizé-lo como linguagem interpretada. Escrever fungdes computacionais 6 um dos grandes atrativos do MATLAB especialmente por ser relativamente simples, no requer prévio conhecimento de sistemas operacionais, compiladores e demais componentes de uma linguagem tradicional. Porém é bom que se tenha em mente que, o aspecto interativo e interpretado do MATLAB pode re- duzir a velocidade de desenvolvimento, mas nfo necessariamente aumenta a performance computacional. Por outro lado, o poder dos eédigos escritos para MATLAB reside no tamanho e na simplicidade. Por exemplo, uma pagina de oddigo para MATLAB equivale a varias péginas de cédigo em uma linguagem como FORTRAN. Isto é possivel devido ao fato de que para os célculos numéricos, o MATLAB utiliza uma extensa colegio de sub-rotinas altamente especislizadas ¢ otimizadas, tais como LINPACK e EISPAC, além de rotinas especfficas para visuelizagdes gréficas 2D ¢ 3D ¢ capacidade de se produzir animagées. Por firn, com o MATLAB 6 possivel criar interfaces gréficas com o usurio (GUI). Para tanto, o mesmo possui um conjunto bésico de funcionalidades para a cringio de objetos. 2.2 A Area de Trabalho do MATLAB Conceitualmente a érea de trabalho do MATLAB 6 uma pilha de meméria com camadas definidas para varidveis, comandos digitados, constantes e demais dados langados na linha de comandos. Para se obter os nomes das varidveis que esto na érea de trabalho, utiliza-se o comando who. Para se obter informagées mais detalhadas das varidveis, utiliza-se 0 comando whos. Com este comando, cada varivel é listada com sua dimenséo, o mimero de bytes usados e seu tipo. O comando whos 6 especialmente itil quando as varidveis sio vetores ou matrizes. Por exemplo: » who Your variables are: varidveli varidvel2 vetor x » vhos Name Size Bytes Class variavel1 2x4 64 double array variével2 ixi 8 double array vetor 2x4 64 double array x txt 8 double array Outra fungo importante na érea de trabalho € o clear, que tem por objetivo limpar as varidveis da drea de trabalho. » clear all % apaga todas as variaveis » clear varidvel_1 % apaga somente varidvel_t 8 » clear varidvel_1;variével_2 % apaga lista de varidveis. ‘Alem dessas fungdes, o item Show Workspace do menu File cria uma jancla chamada de Workspace Browser, que contém as mesmas informagéea fornecidas pelo comando whos, porém esta interface permite que se apague ou se atribua novos valores a varidveis selecionadas, semelhante a uma planilha no Microsof Excel, sendo especialmente titil para se editar os elementos de uma matriz. 2.2.1 Varidveis no MATLAB ‘Assim como em qualquer outra linguagem de programacio, o MATLAB tem regras a respeito dos nomes de varidveis, como por exemplo: néo € permitido utilizar-se de duas ou mais palavras separadas por espago para a composigio do nome. Mais especificamente, as regras para nomes de variéveis sio: © As varidveis séo "case sensitive ” (sensiveis a maitisculas e a mintisculas); ‘ As varidveis podem conter até 31 caracteres, sendo que tudo 0 que exceder 0 31? caractere serd ignorado; ‘© Nao se deve comegar um nome de varidvel com mimeros e ou caracteres especiais. ‘Além destas regras, o MATLAB possui diversas variveis especiais tais como: © ans = Varidvel padréo para resultados; © pi > O mimero 7; ioujsi=jav-l; © narguin = Numero de argumentos de entrads em uma fungo; © nargout => Niimero de argumentos de saida em uma funco. 2.2.2. A Linha de Comandos Apesar de se poder visualizar em uma janela tudo 0 que foi sendo langado durante uma seco, somente a tiltima linha do video 6 que contém o "prompt ” para entrada de dados por digitagio. Esta linhe é também chamada de linha de comando. Atribuir valores a uma. varidvel na linha de comando, é simplesmente digitar a variével seguida do sinal de atribuigéo ( = ) ¢, do valor que se deseja atribuir, como por exemplo x = 3, Para se obter o valor atribuido, basta, na linha de comandos, digitar a varidvel que o MATLAB se encarrega de apresenté-lo como ilustrado abaixo. » 3-3 Jf Atribui-se o valor a variavel x= 3 % Resposta do MATLAB » x % Questionando o valor da varidvel ne 3% Resposta do MATLAB 2.2.3 Formatagio Numérica Quando o MATLAB apresenta mimeros, segue diversas regras. Por definigéo, se o resul- tado for um miimero inteiro, o MATLAB o apresentaré como inteiro. Da mesma forma, quando o resultado for um mimero real, o MATLAB iré apresenté-lo com, aproximada- mente, quatro digitos de precisfio. Se os digitos so significativos no resultado ¢ estiverem fora deste limite, o MATLAB ir apresenté-lo com notagéo cientifica. Existem duas maneiras de se alterar estes padres: 1. No menu File pelo item Preferences, ou; 2. Utilizando-se 0 comando format. Por exemplo, se pegarmos a fragao 4% obtemos: © Default = 115.6667; 10 format short => 115.6667; format long = 115666666667; format short e = 1.1567e+002; format long e => 1.156666666666667e+002; © format hex = 405ceaaaaaaaaaab; format bank = 115.67; © format rat = 37/3. E importante observar que o MATLAB nao altera a representacao interna do mimero quando optamos por diferentes formatos de apresentagéo. 2.3 Os Arquivos M O equivalente ao cédigo fonte de uma linguagem tradicional, para o MATLAB, é conhecido como arquivo M, onde M é a extensio de um arquivo de texto simples do tipo arq.m. ‘Na verdade, um arquivo M pode ser encarado como um script que seré interpretado pelo kernel do MATLAB. Existem dois tipos de arquivos M : ‘¢ Arquivos M de comandos e, # Arquivos M de fungéo. Dentro do corpo do arquivo, quanto utilizamos no comego da linha o caracter %, temas uma linha de comentério. Se quisermes utilizar as primeiras linhas de um arquivo como ‘um pequeno “help ”, as mesmas deverdo ser iniciadas com % ¢ dessa forma sero exibidas na janela do ambiente quando, na linha de comandos, digitarmos: help arg, onde arq é © nome do arquivo M. i 2.3.1 Arquivos M de Comandos © termo "de comandos ” sugere a idéia de que o MATLAB simplesmente executa os ‘comandos contidos no arquivo. Ei é exatamente o que ocorre. Se por exemplo criarmos um arquivo exemplot.m contendo as seguintes linhas: 4% Exemplo de Arquivo de Comando constante1=60; constante2=90; variacao=0.01; res=1og2(constantel /constante2) /log2(1+variacao) ; Quando o MATLAB interpreta o comando exemplot .m, ele da prioridade acs nomes de varidveis definidas recentemente e das fungles internas do programa em relago aos nomes de arquivos M. Sendo assim, se exemplo1 no for o nome de uma variével em uso ou de um comando interno, o MATLAB abriré o arquivo exemplot.m e executaré os comandos 1d contidos, como se tivessem sido inseridos diretamente no prompt de comandos. Como principal caracteristica deste tipo de arquivo M, temos que todas as varidveis, do arquivo M tornam-se parte da drea de trabalho, ou seja, todo e qualquer valor obtido ¢ ou manipulado por um arquivo M de comandos permanecem na pilha de meméria até que sejam intencionalmente eliminados ou enquanto o MATLAB estiver ativo. Outro detalhe importante € que, nestes arquivos também 6 possivel o uso de controle de fiuxo, do tipo IF-ELSE-END, WHILE, SWITCH-CASE ou outra estrutura de programacéo. 2.3.2. Arquivos M de Funcao Um arquivo M de fungao é semelhante a um arquivo M de comandos, tendo em vista que € um arquivo de texto com extensao .m. A principal diferenca entre ambos é que os arquivos M de fungo se comunicam com o MATLAB apenas por meio de pardmetros de entrada e, por meio de variveis de safda. 12 ‘Todas as varidveis definidas internamente pelas fungSes nfo aparecem e nem interagem com a drea de trabalho do MATLAB, ‘Todos os comandos do MATLAB sio arquivos M de fungées, compilados no formato mex-filles, que apresentaremos mais adiante na Segéo 2.6 Se por exemplo, criarmos um arquivo exemplo2.m contendo as seguintes linhas: function x-exemplo2(y) % Exemplo de Arquivo M de Fungo arsin(y); bey + 1.056; x= sqrt(a) - b°2; Esta. funcdo recebe a varidvel y como parametro ¢ devolve a varidvel de safde x, e, as varidveis a e b nio sio transferidas para a érea de trabalho. Os arquivos M de fungées devem seguir regras espectficas. Além disso, eles possuern varias propriedades importantes como deserito a seguir: ‘* O nome da funcSo tem de ser idéntico ao nome do arquivo. Por exemplo, a fungio exemplo2 é armazenada no arquivo exemplo2.m; Na primeira vez que o MATLAB executar uma fungio, ele abre o arquivo M cor res} mte € compila os comandos, guardando-os na meméria de forma a acelerar sua execugéo; © As linhas de comentério (iniciadas com %) que antecedem a primeira linha de co- mando, constituem 0 texto que ¢ apresentado quando help none for digitado; © Cada fungéo possui sua prépria érea de trabalho, sendo que a tinica ligagio entre os arquivos M de funcao séo as variveis de entrada e de saida; # Os arquivos M de fungo podem conter mais de uma fungio. No exemplo2 usamos as fungdes sin e sqrt; 13 © Todo arquivo M de fungio deve comecar com 0 comando function. 2.4 Interfaces Grdficas Quando tivermos em mente a criagio de uma aplicagdo de uso mais regular, ou seja, uma aplicagio que exija uma interatividade, podemos langar mio do uso de interfaces gréficas, ‘Tais interfaces sio baseadas em programagéo orientada por objeto, e por sua vez, torna a objetividade da ago bem mais evidente, Por definigéo, uma interface gréfica com o usuério é um ponto de contato ou wm método de interagéo entre uma pessoa (ou usudrio ) ¢ o computador, ou mais especificamente, 0 programa de computador. O objetivo das interfaces gréficas ¢ tornar uso dos aplicativos o mais amigivel possivel por intermédio da intuigo, ou seja, de forma que o usuério tenha em mente apenas o problema a ser resolvido e néo quais as funcionalidades e ou comandos do aplicativo. Para este fim, uma GUI ( graphical user interface ) & constituida de objetos tais como feones, menus, botdes de comando, dreas de texto entre outros. Geralmente as agdes sio tomadas por um evento do mouse ( como um clique por exemplo ). ‘Toda interface gréfica no MATLAB ¢ construida como um arquivo M de fungio es- peeifico, onde se devem declarar os objetos que a compéem ( botdes, caixas de texto, etc.), suas propriedades ( cor de texto, largura, conteido, ete.) © que ages tomar apés um evento de mouse. Para facilitar um pouco 0 processo de criagéo de uma interface gréfica, o MATLAB possui uma funcionalidade no menu File chamada GUI Layout Tool. Neste ponto, cabe mencionar que o MATLAB no é uma linguagem de programacéo © tam pouco uma linguagem orientada a objetos ou OOL. No entanto com artificios herdados da linguagem C++ 0 MATLAB simala um ambiente OOL, porém com powcos ¢ limitadas recursos € objetos. 4 2.4.1 Os Objetos no MATLAB Os objetos, ou controles, no MATLAB sfo identificados por um mimero inteiro chamado Handel Graphies ( HG ). Cada janela aberta no MATLAB recebe um HG pei que por sua vez 6 associado A um HG filho designado 4 cada objeto aberto na janela. Com isto, 6 possivel se abrir um méimero qualquer de janelas, e mesmo assim saber qual objeto em qual janela foi acionado. ‘Todos os objetos so investidos de propriedades que podem ser manipuladas tanto em tempo de desenvolvimento quanto em tempo de execugio. Estas propriedades definem, por exemplo, tamanho, cor de texto, cor de fundo, formato de dados entre outros. ‘A mais importente propriedade de um objeto de ago é a CallBack. Esta tem por objetivo passar pardmetros a serem executados a uma fungio chamade eval. Se por exemplo quiséssemes acionar o mouse sobre um botido Sair, sua. propriedade CallBack seria: »CallBack [end] Os objetos disponiveis na versio 5.3 do MATLAB sao: © Menu; © Popup Menus; * Push Buttons; © Radio Buttons; © Check Boxes; # Static Text Boxes; «Editable Text Boxes; # Sliders; ° Frames. Com este conjunto de objetos é possivel interfaciar todas as fung 6es do MATLAB. No entanto existem caracteristicas que poderiam ser classificadas de desvantagens técnicas, tais como: ‘* Nao hé possibilidade de se fazer um re-escalonamento ou re-posicionamento dos objetos quando se faz; uma ampliagio da janela em que os mesmos estéo designados; * Nao hd possibilidade de se fazer um tratamento de erros, sendo que freq{lentemente © algoritimo sob controle da GUI ¢ interrompido ¢ os status de varidveis se perdem; © Por ser a GUI uma janela gréfica originalmente destinada como drea de tragados de dados, a mesma pode acabar recebendo em sua érea de objetos, também chamada de axes, 0 resultado de uma safda de célculo, se a mesma estiver em primeiro plano, © que geralmente acontece. 2.5 Organizagao das Fungdes do MATLAB O MATLAB em sua verséo bésica apresenta vinte categorias principais de fungées. Algu- mas das fungGes do MATLAB so incorporadas ao préprio interpretador, enquanto outras encontram-se sob a forma de arquivos M. As fungdes em arquivos M, assim como os ar- quivos M contendo texto de ajuda para fungdes incorporadas, esto orgunizadas em vinte diretérios contidos sob a drvore tootbor /MATLAB, cada um deles contendo os arquivos associados a uma dada categoria. O comando help do MATLAB apresenta uma tabela on-line dessas categorias principais, como mostrado a seguir. 16 Categorias Descrigio color FungGes de controle de cor e modelamento de iluminagao datafun _ |] FungGes de andllise de dados e transformata de Fourier demos Demonstragdes ¢ exemplos elfun Fungoes de matemética elementar | elmat Matrizes elementares ¢ manipulagéo de matrizes funfun FungGes de fungdo - métodos numéricos néo lineares general |] Comandos de aplicagao geral graphics _ |] Fungées gréficas de aplicagdes gerais iofun Fungées de baixo nivel de entrada e saida de arquivos lang Estruturas e depuragio de linguagem matfun Fungées matriciais - digebra linear numérica ops Operadores ¢ caracteres especiais greph2d__ |} Graficos bidimensionais graph3d__ || Graficos tridimensionais polyfun _ |] Fungdes polinomiais ¢ de interpolagéio sparfun _ |] Fungées de matrizes esparsas specfun _ |] Fungdes matematicas especiais specmat |] Matrizes especiais sounds Fungées de processamento de sons strfan Fungées de cadeias de caracteres 2.5.1 As toolboxes Quando criamos um conjunto de arquivos M com uma finalidade bem especifica, com caracteristicas préprias e que interagem entre sf, estamos criando uma toolbor. Na 7 versio completa do MATLAB 5.3, existem distribuldas algumas toolbozes, onde as mais conhecidas sio a simulink e pdetool. A primeira foi especialmente desenvolvida para trabalhos em automagio e controle ¢ a segunda para a solugéo de problemas de valor de contorne. Em nosso caso, elaboramos uma tooltor batizada de meftool na qual entraremos em detalhes mais adiante. Uma toolboz, em geral, faz uso de caracteristicas no disponiveis no modo interativo, como por exemplo 0 uso de objetos para a criagéo de interfaces com o usuétio. De um modo geral, as toolvoaes sio desenvolvidas por terceiros ¢ sio distribufdas, em geral, com licengas comerciais de uso. 2.5.2 Regras Gerais para Uso de Fungées e Comandos Quando estamos no modo interativo, ou quando recorremos a0 uso de arquivos M, temos que levar em considerago uma sintaxe apropriada para a entrada de comandos ou para a entrada de dados. Descreveremos a seguir algumas regras bésicas, especialmente para uso de fungées de manipulacio de matrizes. * O MATLAB faz. distinc&o entre caracteres maitisculos e mintisculos. Logo a varidvel A€ diferente da varidvel © Um ponto e virgula (;) no final de um comando, *desliga ” a exibigdo de resultados; © Todas as regras matemiticas, incluindo hierarquias, deve ser respeitadas; © Quando néo for especificada uma varidvel de saida, o MATLAB automaticamente especifica a varidvel ans como por exemplo: >> 2+ 2% Especificando a varidvel ¢ p>ea4 >> 2+ 2% Sem especificar variaveis >> ans = 4 1B © O comando whos mostra todas as varidveis declaradas e em uso. Se apés a digitaciio anterior, executdssemos whos, obterfamos: >> ¢ ans © O comando dir mostra todo 0 contetido do diretério corrente. E posstvel 0 uso de comandos do OS, tal como cd, md entre outros; *¢ Com o uso dos comandos Load e save, é possivel ler e armazenar arquivos de dados. ‘A principal caracterfstica destes comandos que o nome do arquivo tem que ser 0 mesmo da variével que vai receber os dados; © A entrada de dados em uma matriz pode ser feita de duas maneiras: — Todos os elementos separados por virgula (,) ¢ as linhas em sequéncias sepa- radas por ponto e virgula (;) tudo entre colchetes {]. >> A= [1,2,3;4,5,637,8,9] nalts: >> A= 456 789 — Lina a linha com os elementos separados por espacos tudo entre colchetes {] >>pastl23 >> 456 >> 789) 123 >>A= 456 789 As operagdes com matrizes seguem as regras da algebra linear; ‘* O comando size traz a dimensio da matriz: >> size(A) 19 >> ans = 33 * 0 uso de dois pontos ), pode especificar uma linha ou uma coluna dentro de uma matriz: >> aC, 3) 3 >> ans = 6 9 >> ACi: ) >> ans =123 ¢ Em uma expressio do tipo Az = b devemos utilizar 0 comando \ >>x=A\D © Uma chamada & uma fungdo do tipo : (k1,bt] = mefdch1tid(K,b,p,nn,p2), obtemos como saida os valores Ki e bi através dos pardmetros K, b, p, mn e p2. Listamos aqui algumas caracteristicas em conjunto com alguns comandos com o obje- tivo de apresentar a filosofia de trabalho do MATLAB. Sugerimos para se obter maiores detalhes o uso dos comandos help (para verso texto) ou helpdesk (para versio HTML), em conjunto com as Referéncias [3] e [4]. 2.6 Integragéo com Outras Linguagens ‘Uma importante caracteristica do MATLAB é a capacidade de integragio com outras linguagens de programacéo, tais como C/C++ ou FORTRAN. Esta integracéo se dé de duas formas distintas: 1. Indiretamente + Através do comando run ou 1; 2, Diretamente = Através de um compilador C/C++ (mec ), que basicamente con- verte arquivos M de comando, ou fungio, em fontes C/C++ ou importendo-se os fontes escritos nesta linguagem para um arquivo M binério ( extensao mex ) 2.6.1 Método run ou ! Na verdade nfo é precisamente correto chamar estes comandos de método, pois, os mes- mos tem por objetivo permitir exeengo de fungées do sistema operacional no qual 0 MATLAB esté instalado. Porém, podemos utilizé-los como artificio para a execugao de outros aplicativos jé compilados. A integragdo neste caso pode se dar por meio de arquivos texto gerados pelo MATLAB que sirvam de "input ” para o aplicativo, on arquivos texto gerados como saida dos mesmos. 2.6.2 Método do mex-files e Compilador C/C++ O compilador integrado do MATLAB ( mec ) pode traduzir arquivos Mem fontes C/C++. 0s fontes C resultantes podem ser utilizados para gerar executaveis, bibliotecas ou mex-files que sio arquivos compilados para uso no MATLAB. Existem trés razées bésicas para se utilizar este método: 1. Um grande incremento na velocidade de processamento; 2, Esconder algoritimos proprietarios, pois no caso do mex-files, o arquivo é binério; 3. Criar aplicativos "standalone * ou ainda biblictecas compartilhadas em C ( DLLs por exemplo) ou bibliotecas estaticas para C++. Segundo a documentagio que acompanha o produto, o incremento na velocidade de processamento se dé especialmente em algoritimos envolvendo muitas iteragées. Porém as rotinas gréficas no sofrem nenhum tipo de melhoria. Néo utilizamos este método, prineipalmente porque estamos avaliando o MATLAB como ambiente ¢, teriamos nossos eédigos convertidos em bindrio dificultando sua utiliza- cao em situagdes que nao estejam contempladas neste trabalho. 21 No entanto uma vantagem ¢ muito clara: Com este método, pode-se aproveitar as fungdes mateméticas do MATLAB e criar aplicativos ” standalone” ( aplicativos em modo exeoutdvel que niio dependa do seu ambiente de desenvolvimento), que possam ser dis- tribuidos ou integrados a outros aplicatives comerciais ou no. Outro ponto muito forte € que, com este método, podemos facilmente converter oédi- 05 jé testados ¢ estabilizados escritos em outras linguagens, especialmente FORTRAN © C/C++, em mex-files. Podemos, desta forma, aproveitarmos todos os esforgos em- pregados na criagéo de algoritimos especificos. Estas funcionelidades fazem do MATLAB uma poderosa ferramenta de desenvolvimento, pois integra suas fung Ges com as geradas pelo usuério, empacotando tudo depois em bibliotecas especializadas, utilizaveis em outras aplicagées. 2.7 Consideragées Finais Como vimos até o momento, o MATLAB € uma poderosa ferramenta no que diz respeito ‘a manipulacio de dados e no tocante a execugio de céleulos numéricos. Quanto a progra- magio, o mesmo possui alguns recursos que podemos combinar, ¢ com isto criarmos uma vaste gama de ferramentas para as mais diversas aplicagées. No entanto, como pudemos observar, pelas caracteristicas de ambiente interpretado do MATLAB, o mesmo torna-se especialmente lento quando tentamos manipular sistemas matriciais muito volumosos ou quando hé um grande mimero de iteragSes. Como solugéo, a MathWorks aconselha a utilizagéio do compilador mec, que elimina a dependéncia com o ambiente interpretado, gerando através de uma conversio dos arquivos M, em mex-files bindrios que podem ser utilizados diretamente para o desenvolvimento de outros aplicativos ou como bilbiotecas compartilhadas. Os mex-files podem também ser gerados a partir de oddigos escritos para FORTRAN ou C/C++ para serem executados no ambiente MATLAB. 22 Capitulo 3 A meftool 3.1 Introdugao 4 meftool Como haviamos citado anteriormente, criar eddigos para o MATLAB 6 uma das mais marcantes caracteristicas deste ambiente e, dada sua grande facilidade de manipulagdo matricial e comandos para dlgebra linear, desenvolver um conjunto de fungSes especificas para elementos finitos é quase que uma evolugio natural. Existem diversas publicagSes voltadas para esta finalidade, tais como as Referéncias [13] e [14]. Porém estes trabalhos, em sua grande maioria, so voltados para a érea de mecdnica e, os oédigos neles apresentados so parametrizados e caracterizados também para este fim. Logo, a criacéo de uma foolbor voltada para o estudo de eletromagnetismo vem preencher uma importante lacuna no uso deste ambiente. E com esta inteng&o que apresentamos a meftool (método de elementos finitos - toolbox) desenvolvida de modo a se integrar 4s potencialidades do MATLAB, ao estudo de eletromagnetismo, baseado na andlise por elementos finitos. Embora todo o raciocinio empregado na construgio desta toolbox estar voltado para o eletromagnetisino, a mesme tem por filosofia a multidisciplinariedade. Ou seja, todas as fungées podem ser utilizadas para simulagées em mecinica, termodinamica ‘ou em aplicagdes que exijam solugées aproximadas para problemas de valores de contorno. Esta caracteristica ficaré mais evidente a medida em que apresentarmos sua estrutura. 23 3.2 A Estrutura da meftool Por convengao, aplicativos desenvolvidos para o MATLAB recebem a designaco de tool- box, ¢ estas se encontram em uma drvore de diretérios sob o diretério onde o ambiente foi instalado, também com o nome de ioolbor. ‘Todos os azquivos que atualmente compéem a meftool esto dispostos nesta estrutura, acondicionados em um diretério com 0 nome de meftool, como ilustrado abaixo. ¢:\matlabr11\toolbox\meftool Os arquivos nesta estrutura. tem as seguinte caracteristicas: '* Todos os nomes de arquivos comegam com o prefixo mef; Estio clasificados de acordo com o dominio do problema; © 0 arquivo mefsolve.m 6 comum a ambos os modes (1D e 2D); # Oarquivomeftop.mé um arquivo M de comandos, que tem por objetivo desmembrar um arquivo texto contendo a topologia de uma malha arbitréria bi-dimensional. Para gerar esta malha, utilizamos um aplicativo chamado GenMesh de uso ptiblico, disponibilizado pela Universidade Federal da Coreia; # Os arquivos iniciados com bmp séo os componentes do Beam Propagation Method; ‘* Os arquivos que contém o sufixe "gui ” so as interfaces gréficas com os usudrios; * O sub-diretério malhas abrige. os arquivos com es topologias das malhas utilizadas nos exemplos do Capitulo 4. ‘Todos os arquivos M de fungdo que compéem a meftool podem ser evocados: © a partir da linha de comandos; © a partir de um arquivo M de comandos; 4 partir de uma interface grafica. Pois, como vimos anteriormente, todo arquivo M de fungéo passa a ser integrado ac conjunto de fangées ” standard ” do MATLAB. Apresentaremos em seguida um resumo das funges criadas para a meftool. Meftool - Fungdes 1D 3.2.1 As Fumgdes para 1D Desenvolvidas para a solugiio de problemas do tipo: el OO ane Z(o2) +0 = zc € (0,2) Para tanto, a primeira fungdo a ser considerada a mefmeshiD.m que {oi desenvolvida a partir do programa MESH. for do Prof. Dr. Hugo H. B. Figueroa. Esta fangio tem como objetivo gerar a malha 1D, utiliza-se como parimetros de entrada irés arranjos contendo respectivamente: 2 Coordenadas das sierfaces em xb; 25 Meftool - Funcées 2D Big. 3-2: Ooganizagiio 2D ® Caracteristicas fisicas do problema ( parametros a, 9, f ) em bx; 2 Densidade da Malhe por zegilio em xd. A chamada para esta fun tem a seguinte sintaxe: pha, beta,f,coord,nel] Gera a malha; © bpmelemat = Monta as matrizes elementares; © bpmmat = Monta a matriz Global; © bpupro = Cilleulo da propagagéo. © bpmgauss = Sinal de entrada "gaussiano © bpmquadrada =} Sinal de entrada quadrético. Poderemos ver mais detalhes de seu funcionamento no Exemplo 4.4 do Capitulo 4. 3.2.3 As Fungées para 2D Desenvolvidas para a solugio de problemas do tipo: 28 As fungées para 2D séo por natureza mais complexas, porém procurou-se manter filosofia bésica de desenvolvimento adotade para as fungdes 1D. A inica fungéo ainda nio desenvolvida, especialmente devido a sua complexidade ade um "malhador ”. No entanto, podemos recorrer # um malhador externo, como por exemplo o jé citado GenMesh ou entéo, nos casos mais simples, podemos entrar com a malha de forma manual. A estrutura bésica para a entrada de dados esté dividida em trés matrizes definidas como: @ elen(N,4) sendo que Nemimero de elenentos e deve ser preenchida da seguinte forma (elemento n61 né2 né3) # nodes (M,3) onde M=minero de nés ¢ serd preenchida como (né x y) © bound(n,£) onde n 6 0 né na fronteira ou regio # . A dimensfio de bound é dada pela maior coluna, e se (2, £) = 0, simplesmente indica que nesta. fronteira ou regio, © niimero de nés é menor do que em outras colunas, como no exemplo abaixo: i " 10 oo mo — Fronteira 1 = (1 2) e (2 3) — Fronteira 2 = (3 4), (45) e (5 6) — Fronteira 3= (6 7) e (7 8) — Frontera 4= (8 9), (9 10) e (10 1) ‘Na verdade, a matriz bound pode ser utilizada para armazenar, simultaneamente, os nés que estiio em uma ou mais fronteiras e os nés que esto em uma ou mais regides dis- 290 tintas, como serd visto no Capitulo 4, onde na Seco 4.5.4 esta matriz, foi utilizada desta forma, e nos demais Exemplos servia apenas para armazenar os nés de fronteiras. Cabe ‘aqui mencionar que o conceito de regido determina, por exemplo, quais as caracteristicas fisicas do meio desta regido ou, onde aplicar uma fonte de excitacdo. De posse das entradas especificadas acima, podemos fazer chamada & funcéo mefas- ble2d.m com a seguinte sintaxe: {K,b] |=mefasble2d(elem,nodes,alphax,alphay,beta,f). Esta fungdo gera & matriz global [\] ¢ o vetor global {b} para o sistema: (K] {6} = {0} G4) Onde az, ay, € f so os parémetros fisicos do problema. Esta fungdo tem encadeada uma chamade & fungio mefelen2d.me mefk2d.m onde nefelen2d.m monta a matriz clementar ¢ o vetor elementar para o elemento da vez no célculo, enquanto mefk2d.m efetua a adigéo da matriz clementar & matriz global [K] e 0 vetor elementar ao vetor global {b}. ‘As chamadas: © [K,b]=mefdch1t2d(K,b, bound,nodes, essencial,p) © [k,b)=mefnatural2d(K,b,bound,nodes natural, gamma,q) Aplicam as condigées de contorno nas fronteiras especificadas por bound. Finalmente fazemos a chamada sol=metsolve(K,b); que nos devolve 0 vetor solugio {sol} que pode ser visualizado através de mefgrid2d.m em conjunto com o arquivo M de comandos mefview2d.m onde nefgrid2d.m tem por objetivo mapear e interpolar o vetor {sol}, em funcéo de uma malha com densidade ajustével. Veremos maiores detalhes na Segéo seguinte. 3.2.4 Visualizagio Grafica na meftool MATLAB tem um conjunto de fungées gréficas de alta qualidade, proporcionando ao usuério uma grande variago de aplicabilidade tais como tratamento de imagens, car- tografia, animagées, entre outras. Na grande maioria dos casos de resultados de simulagées unidimensionais, a fungio plot acaba sendo suficiente. No entanto, muitas vezes se faz nevessério a combinagio de um grupo de fungSes para se obter resultados mais especificos. No BPM por exemplo, temos como resultado da simulagéo um feixe propagado sob a forma de um vetor. Nas fungGes gréficas do MATLAB nfo hé como se visualizar este vetor adequadamente. Af entra a combinagéo citada para se tragar a cada passo um vetor com 0 campo caleulado, combinando-os depois em um gréfico de superficie. 1 exatamente isto que o seguinte trecho de programa do botio ‘Surf View ° da interface gréfica do BPM faz: Callback’ ,[... >figure(2),?... *campo0=zeros (size(campon));,?. ’[1,nJ=size(campon) ;,? ) for a= 1:1,?... > campo0(a, :)=campom(a, surf (xLine,propaga,campo0),’... *shading interp, »view(-9,60),”... vaxis([xal xb1 ya yb za 2b])3,7..- vaxis off,’... *erawnow,’... 'M(a)=getfrane;, rend,?... 31 tend’), ... Neste caso, campo € um vetor e campoO é ume matriz em cujas colunas esté o campo caleulado apés cada passo. ‘Uma outra caracteristica do BPM € que, como se trada de uma simulago de propa- gagéo de um feixe de ondas planas, utilizou-se um recurso do MATLAB destinado a animacio gréfica. Este recurso € evocado da seguinte forma: for a= i:steps (2i,x1,y1]=mefgrid2d (nodes ,z(a) ,dxy) nefview2d(xt,y1,Zi,5,?*BPM - Animag&o’’) axis off drawnow M(a)=getframe end. movie(M) ; Onde a dupla de comandos getframe ¢ movie foram desenvolvidas especificamente para a animagio dentro do MATLAB. Para os demais propésitos da meftool, foram criadas as seguintes rotinas gréficas, todas baseadas nas fungées basicas do MATLAB: mefvmesh2d + Permite visualizar a malha gerada no GenMesh © mefvres2d = Traca o resultado, tendo a malha como parametro. © mefview2d = Permite visualizar os resultados de cinco formas diferentes. mefgrid2d = Produz uma grade retangular para os grdficos de superficie utilizados na mefview2d A fungio mefvmesh2d recebe como parametros as matrizes elem e nodes. Nela cada elemento é mapeado e tracado através da fungio bésica do MATLAB chamada patch, cuja sintaxe é: patch (xx,yy,’w’), onde 2x € yy so as coordenadas dos vértices de cada 32 elemento ( nd ) e w corresponde & cor de preenchimento do elemento e, neste caso é branco ( white ). A forma de se evocar a mefvmesh2d é mefvmesh2d (elem, nodes). Jé 0 fungio met vres2d foi desenvolvida com o objetivo de apresentar o resultado da simulagdo, levando-se em consideragéo a aparéncia da malha. O tinico inconveniente é que, quando se tem uma malha muito densa, o resultado visual tende a ficar muito escuro. A chamada A esta fungao é feita na forma mefvres2d(elem,nodes,sol) onde a prin- cipal diferenga com relagéo a mefmesh2d é o pardmetro sol, que é o vetor contendo a solugéo. Esta. também faz uso da fungio bisica patch, porém desta vez com uma se- gunda opgéo de sintaxe para visualizagéo em 3D: patch (xx,yy,2z,abs(zz)) onde xr, uy sio como anteriormente, zz 6 um vetor contendo os resultados ¢, abs(22) serviré de parametro para a coloragio do elemento, dado aos resultados obtidos em correspondéncia aos seus vértices (nés). A fungio mefview2d ¢ na verdade um grupamento de fungées de visualizagéo integra dos, que podem ser selecionados de acordo com as nevessidades do usuério, bastando para isso informar, via pardmetro, qual o tipo de grafico se deseja visualizar e, qual a densidade da grade de visualizacio desejada. A chamada a esta fungio se da da seguinte forma: metview2d (x1 ,y,Zi,tipo,titulo), onde o parfmetro tipo indica ao visualizador qual grafico apresentar, de acordo com: Opgao Tipo de Gréfico Malha 3D Pseudo cores com curvas de nivel Curvas de nfvel e diagrama de vetores ( indicam a diregdo do gradiente ) Gréfico de superficie aa fee fede Gréfico de psendo cores O parimetro titulo é uma string que seré apresentada na janela de visualizagéo do gréfioo. Jé os parametros 21, yl e zi sio provenientes da fungdo mefgrid2d que tem, como objetivo, gerar uma malha retangular de densidade ajustavel para a utilizagio nos gréficos A netgrid2d é necesséria porque, no MATLAB, para se produzir gréficos 3D ou de contorno baseados em um vetor, se faz necessério o uso de uma grade regular e retangular. ‘As coordenadas desta grade no plano x,y devem estar contidas no dominio do problema a ser analisado, e, o vetor solugéo seré utilizado para interpolagéo de uma matriz quadrada a ser tragada, com base nas coordenadas da malha original. A chamada a mefgrid2d é na forma [Zi,x1,y1]=mef grid2d(nodes, sol ,dxy), onde © vetor [Zi,21,yl] € 0 resultado obtido com a fungio mefgrid2d, sendo Zi uma matriz com os dados interpolados em relagdio a grade ¢, 1 ¢ yl as cordenadas da grade. Os parametros nodes, sol e dy so respectivamente © vetor contendo as coordenadas dos nés, 0 vetor resultado e um vetor contendo a densidade da grade, do tipo (dx, dy}. O processo de geragéo da grade & o seguinte: 1. Encontrar os extremos no eixo x => minX=min(x);maxX—=max(x); 2. Encontrar os extremos no eixo y => minY=min(y);maxY¥=max(y); 3. Montar 0 vetor coordenada x, com densidade dx = x1=linspace(minX,maxX,dxy(1)); 4. Montar o vetor coordenada y, com densidade dy = y1=linspace(minY,max¥ dxy(2)); 5. Gerar as coordenadas da grade regular com base na malha original=> [Xi, Yi]=mesherid(sc1,y1) 6. Interpolar o vetor resultado com base na grade gerada + Zi=griddata(sx,y,sol,Xi, Yi); De posse do vetor [Zi,21,y1] podemos entéo chamar a mefview2d. Por exemplo, se ‘optarmos pelo tipo de gréfico mimero 4, a seguinte sequéncia de comandos seria acionada: 1. surf (x1,y1,Zi); = Cria o gréfico de superficie 2. shading interp; = Gera o padrio de Pseudo cores 3. colormap(hsv); => Seleciona um mapa de cores para o shading interp 4, title(titulo); => Imprime o titulo 34 3.3 Interfaces Grdficas com o Usuario ( GUI ) Para completar o conjunto de fungées desenvolvidas para a mef tool, temos as interfaces gréficas com o ususrio. Na verdade, estas interfaces foram elaboradas com a finalidade de apresentar as téc- nicas de programagio orientada a objeto dentro dos recursos disponiveis no MATLAB, bem como proporcionar aos exemplos uma maior interoperabilidade. Cada uma das interfaces foram montadas com o auxilio da ferramenta Gui Layout. Procuramos utilizar todos os objetos & disposicéo, a saber: ‘© Combo List; Text Box; Check Box; Option Botton; * Painel; © Frame. Os arquivos M de funcéo destinados as intefaces gréficas tem uma pequena diferenca em sua estrutura, se comparados aos demais tipos de arquivos M. Esta diferenca se dé porque nestes arquivos no hé uma sequéncia de comandos, mas sim a definigio dos objetos ¢ suas propriedades. As ages séo todas passadas a linha de comando, como pardmetros, por intermédio do tinico evento manipuldvel chamado Callback. Unico manipulével porque, diferentemente das demais linguagens de progra- magéo orientada a objetos, no MATLAB nao se tem controle sobre eventos tais como clique de mouse on posicionamento de cursor. Um exemplo de como é feita a definigéo de um objeto é ilustrado abaixo: nome_légico_do_objeto = wicontrol(’Parent’,h0, ... Units’, ’points’, ... "BackgroundColor’,[i 11], ... *FontWeight’,’bold’, ... *HorizontalAlignment’, left’, ... *ListboxTop’,0, ... *Position’ (3.75 129 37.5 12.78], ... *Callback ’,[ "Lista de comandos *], ... *String’ ,’Texto exibido no objeto’, ... *Style’,’botton’, . Tag? , Mowe _légico_do_Objeto ’, ... *TooltipString’,’Texto exibido quando cursor esta sobre o objeto’); Este é 0 cédigo para a criagéo de um botdo, cuja agio apés o evento de clique do mouse é a “lista de comandos ” apontados em Callback. 3.4 Consideragées Finais Consideramos a meftool como a mais relevante contribuigéo deste trabalho. Com ela € tanto possivel aprender os conceitos basicos do método de elementos finitos, quanto realizar complexas andlises ¢ simulacSes. Dentro da meftool, o ponto mais importante © visualizador grifico contido nas fungdes mef grid2d e mefview2d pois com elas podemos visualizar nao 36 as saidas da mef tool como qualquer outro resultado obtido com qualquer coutra fungio ou aplicativo. Estando a meftoo} inserida no ambiente do MATLAB, 6 perfeitamente possivel intera- git com outras funcionalidades do mesmo, tornando-a bastante poderosa e abrangente. No entanto, sendo totalmente dependente do ambiente interpretado do MATLAB, a meftool sofre por consequéncia uma redugo em sua performance sendo que uma evolucéo natural seré a compilagéo em mex-files ou transformé-le em uma biblioteca para C/C++ ou FORTRAN extrapolando em muito suas atuais limitagées. Outras caracteristicas impor- tantes sfio a modularidade ¢ a portabilidade, pois € muito simples agregar novas fungSes 36 ¢, sendo interpretada dentro do ambiente MATLAB, a mesma é independent do sistema operacional podendo ser executada sem nenhuma alterago em todas as plataformas que tenham o MATLAB instalado. Como pontes fortes da meftool, podemos citar: ie 2 Extrema facilidade no manuseio; Disponibilidade como biblioteca para outras aplicagdes em elementos finitos; |. Possibilidade de interagio via linha de comando ou interfaces gréficas; . Grande poder de manipulagio dos resultados ( anélise gréfica ¢ numérica ); Interacdo com outras funcionalidades do ambiente MATLAB; Modularidade; Portabilidade. 37 Capitulo 4 Exemplos 4.1 Introdugao aos Exemplos O objetivo deste capitulo ¢ apresentarmos a meftool de forma prética e, desta forma, podermos avaliar seu funcionamento, potencial caracteristicas. Na montagem dos exemplos, considerou-se tanto a possibilidade do uso da linha de co- mando, quanto 0 uso de interfaces graficas. Isto nos permitiré demonstrar a versatilidade tanto do ambiente MATLAB quanto da meftool. Exemplol 4.2 nao possue interface gréfica. Ele serve para ilustrar o uso de arquivos M de comando. Todos os demais estiio disponiveis em interfaces gréficas padronizadas, podendo também ser inicializados a partir da linha de comandos. Uma excegio fica para o BPM - Exemplo 4.4, devido ao fato deste se utilizar de animagéo. Para acessar os exemplos via interface grafica, basta digitar na linha de comandos exemplos, que surgir a barra de botdes flutuante ilustrada abaixo: 4.2 Linha de Transmissao com Perdas - 1D Este exemplo foi tirado da Referéncia [2]. Trata-se de uma linha de transmissio de fios paralclos ¢ com perdas, como ilustrado na figura 4-2: problema pode ser analisado por parametros distribuidos, da seguinte forma: 38 Fig. 41: Tela para selecio de exemplos it) ipeecbet) > 1 > Rae }-{ ide Coe voerdx.t) Fig. 4-2: Linha de Transmisso com Perdas do(z) (R+ jul) i(2) (41) (G+ juC) o(2) ( = ar Multiplicando-se 2, considerando-se Rt jaLleg = G+ jo (ou seja, valores complexes) como impedincia caracterfstica, obtemos: #u(2) dat ~rgu(2) (43) Sendo que AR, L,G, C so respectivamente a resisténcia, indutancia, condutfincia capacitancia da linha por unidade de comprimento e dr é 0 elemento diferencial do com- primento do fio. Para este tipo de linha de transmissio podemos partir da seguinte relagéo para a definiggo dos parametros: R_¢ Bee ( LG (a4) a) Constante de propagagéo: RC \ otia= yes ion (BC+ uc (43) y! wel) (+4 } (4.5) Co , a=RVF (46) (4.7) b) Velocidade de fase: (48) ¥ DIE 4 a c) Impediincia caracteristica: _ [Priel _ fe %q = Ro + jXo= mee VE (4.9) m= Ve (4.10) Xo (41) Por fim temos que a uma dada istancia x, o percentual de atemuagio pode ser expresso por: (e-#) % As condiges de contorno para esse exemplo sfio dadas por: 41 Ura = Vo (4.12) dv Foy 77-0 =O (4.13) Partindo-se da equagéo (4.3 ) podemos encontrar o funcional que descreve esta situ- aco, de acordo com a equagio (4.17 ) (£0,u) + ; (v, £u) (4% (Cue) (4d) ‘onde = vu (4.15) fv = f=0 é £= Fa-19 (uu) = fw ae ii (202)? hp Vaz) f? (dv(a) du\ -(évu) = +] a p? fda (uo) = -f (2) v(@)dr= fej OR* | = -v/(D)u(D) + ()u(0) = 0 mesma condigdo anterior = u'{Djv(D) — w(0}u(0) = 0 tomames w/ (0) Logo, pot 2 i (2) ratte ae (417) Apés a execugio do arquivo M de comandos linka.m ( somente digitando-se Linba na linha de comandos), cbtivemos o soguinte resultado ilustrado abaixo, considerando- se R = 50(9),C = O.1(nF),a = 0.01(4B/m) e Vy = 10(v), comprimento da linha D = 1000m 2 3000 elementos cbtemos: 0.01(¢B/m) = (p/m) = 1.15 x 10-*(Np/m) 43 R= aRy = (1.15 x 10°) x 50 = 0.057(2/ Big. £3: Perda de poténcia x distancia Contetido do arquivo M de comando linha.m h % xb (vetor que contém as coordenadas das interfaces ~ [%0.%1,..-»%al) % xd (vetor que contém as divistes entre as interfaces) % bx (arranjo que contém as caracteristicas dos materiais - [xo,%a,T,gl) clear all R=50; G= 22.85-6 ; D=1000; vo=10; xb=[0 D1; bx=[0 D RG 0]; xd=30005 % Inicio da meftool [alpha, beta, £,coord,nel]=mefmeshid(xb, bx,xd,0); Ik, b] -mefasble14(coord alpha, beta,f ,nel); [k,b]-mefdch1t1d(K,b,VO,nel,0,0); zz=nefsolve(K,b); ‘Fim da meftool % Para 0 Célculo da Solug&o Analitica alpha=-1.15E-3; for i=1:length(coord)-1 % Montagem do Eixo x x(4)=coord (4) ; % Célculo da Solugéo Analitica VOxexp(alpha*x(i)) ; exact (i) end plot (x,2z, x20? ,x,exact) axis([0 10 -2 10]); xlabel (Distancia em metros’) ylabel(*Potencial (v)’) title(’Curva de Potencial de uma Linha de Transmissdo”) legend(*Elementos Finitos’, *Analitico’) grid on; box off 4.3 Problema de Espalhamento - 1D Este problema, obtido da Referéncia [1], considera uma onda plana incidindo em uma superficie com um Angulo 6 pré-determinado. Acespessura do dielétrico 6 L, a permissividade relativa é ¢, ¢ a permeabilidade relativa Eby Para a polarizacéo E, a onda incidente pode ser expressa por; EP, y) = Eyed¥0*1m00)- foo xn) (4.18) Onde Bo é a grandeza que denota a magnitude do campo incidente e, 0 6 0 &mgulo de incidéncia, Para satisfazer a condigéo de continuidade do campo na interface perpendic- ular ao eixo x, o campo total deve ter um fator comum dado por e~##v8™®. Dada esta cobservagio, a equagio escalar de Helmholtz que governa 0 campo elétrico E,, pode ser reduzida, para. o modo TM a: 2 (2) +k («- dante) B,=0 (419) ‘A condigéo de contorno a ser aplicada para H, 6 a condigio de contorno de Dirichlet: (4.20) Similarmente, para a polarizagio H, a onda incidente pede ser expressa por H™(a, y) = Hoe on@)-stavsiai®) A equagio escalar de Helmholtz. que governa campo magnético H., pode ser redurida, para o modo TH a: aii; Z (¢ nm) +8 (4 Lanta) He (4.22) A condigéo de contorno a ser aplicada para H, é a condigio de contorno de Neumann: gH, Hs |gagr 0 (423) Queremos entio obter o coeficiente de reflexiio desta superficie, Para a solugdo deste problema, desenvolvemos a interface grdfica Hlustrade na figura 4- 4, onde os parametros fisicos so manipulados livremente, podendo dessa forma o usuario simular uma grande variedade de situagies. Pode o usuério optar pela polarizagio ( H, ou H, ), escolher o niimero de elementos ( nimero de divisées do dominio ), 0 valor de By ou de Hy ( Campo incidente ), variar © Angulo de incidéncia @ © ainda manipular 4, ou 2, podendo-se escolher entre valores constantes ou varidveis, de forma gaussiana ou senoidal, Utilizando-se como parametros L = 1, Nuimero de Elementos = 50, 9 1 para o modo B,, a magnitude do campo incidente ( neste caso Hy aT Dulane cpa alae ring cn Fig. 4.4: Interface gréfica para o problema de espalhamento igual A 1, obtivemos como resultado C.R. = 0.769359 que é o coeficiente de reflexéo para este 0: Se na linha de comando fizermos a chamada: +, ou Ho.N? Blem,1 para E, ou 0 para Hz, Amazimo.indice); indice = 0 > u,,¢, = Constante; © indice = 1 = u,,¢, Variam de forma senoidal; Variam de forma gaussiana, poderemos montar uma curva do coeficiente de reflexiio em fungio do angulo de in- tervalo & [0,mdzimo| Podemos ver na figura 45 a curva obtide para a = 1, Nttmero de Blementos = 50, By = 1,1 para Ey ¢ Omasims = 45°, ou >oreflexao( 1,1,1,1,50,1,45,0) 4,4 Beam Propagation Method - 1D A. pesquisa em circuitos de Stica integrada e dispositives Spticos planares ficaram mais aativas nos iiltimos anos. Nesta érea, um importante problema teérico é caleular como uma onda de inz é propagada em um circuito dptico que tenha indice de refragio arbitrério, Miuitos métodos tem sido propostos com esta finalidade por diversos pesquisadores. Um destes métodos é o "Beam Propagation Method ( BPM ) ”, propesto pela primeira vex em 1978 por J. A. Fleck Jr. e por Feit. M. D. [26] Existem um grande niimero de versdes do BPM que empregam diferentes tipos de aproximagées aumérieas. Aqui, apresentames a aproximaséo para BPM por elementos finitos ( FE-BPM ) Para elucidar a versatilidede da meftool, estaremos apresentando uma interface gré- fica (figura 46), para anélise da propagagio de um feixe de iz a0 longo do eixo 2. 49 Indiea Conctante 8 Angulo em Graus Q a7 38 a5 33 ce Coeficiente de Rellexsa Fig. 45: Curva de coeficiente de reflexdo (C.R.) x Angulo de incidéncia Bleoent pe (near a] | & Sep Proite Index ‘Signal treet [Geussion 3 nee on Cott matte TB TTT wan TT are | ne Hof Stops [TOO Start Salesterions | Animation Types: as ive] see nea 7 a Fig. 4@: Interface gréfica para o BPM 30 Como pode-se observar, é uma interface simples que permite a simulagio da propa- gagdo de um feixe em um guia de ondas, sendo que o perfil do mesmo é determinado pelos padrées de indice degrau, onde, se for selecionado "Step Profile Index ” teremos um perfil com trés regides ¢, se a selegio for ” Multi Step Profile Index ” teremos cinco regides. Com esta interface, € possivel o uso de elementos lineares ou quadréticos e, gerarmos um pulso gaussiano ou degrau como entrada. A opgio TBC (transparent boundary conditions) 6 uma condig&io de contorno adequada e mito utilizada para o BPM, sendo recentemente substituida pela PML ( Perfectly Matched Layer Boundary Conditions ), apresentada em [15] . Uma boa referéncia para o BMP com TBC é dada em [12] e [16]. Nesta interface 6 considerado um guia de onda planar, onde y e z representam a diregio transversal e de propagagio respectivamente e, nio ocorre variagio na diregéo 2, ou seja: £ (4.24) O feixe y pode ser descrito como: wly.2z) = oly, zene (4.25) Com o uso da aproximagio de Fresnel, ¢(y, z) pode ser descrita pela seguinte equacio: ~ the + $8 15 [Py,2) nf] 6=0 (426) Nesta equagio, ko € 0 mimero de onda no vécno, n(y,z) é a distribuigao do indice de refragio e, ng € uma constante cujo valor est perto de n(y,z). Nos extremos da janela de computational, podemos assumir a seguinte equagio: 51 & +06) aint (4.27) aqui a(z) é um pardmetro que é renovado pelo célenlo sncessivo de propagacéo de feixe, A equagio (4.27) representa a condigéo de contorno transparente ( TBC ) nos limites virtuais, Apés aplicarmos 0 método variacional apresentedo no Apéndice e, aplicando-se 0 algoritimo de Crank-Nicholson para e propagagio na diregio z, chegamos a seguinte equacao: [Aloe = Blo}: (4.28) No MATLAB, podemes resolver este sistema, fazendo-se: b= ([Bi{oh: (4.29) [Al{d}ins = 8 (4.30) Um ponto importante a ser citado € que pode-se acompanhar a evolugéo dos eélculos através de uma animacio. Como resultado de uma simulagéo para © perfil de indice degrau com nm lle nz = ng = 1.0, € com um angulo de incidéncia de 75°, que € maior que o angulo erftico, podendo ser obtido da seguinte forma: 52 nela de interface com 0 usudrio, o angulo A é Uma observagdo importante é que na j 9 complemento do angulo de incidéncia, que ¢ medido a partir da normal a interface. Nesta situacdo hi reflexio quase total do feixe, como pode-se observar nas figuras 7 248 idéncia do feixe acima do angulo erftico - Pseudo Cores Fig. 48: Incidéncia do feixe acima do Angulo eritico - Gréfico 3D Na préxima simulacdo, fizemos com que o angulo de incidéncia fosse 20? que é menor do que o angulo critico, obtendo-se as figuras 4.9 2 4-10. Fig. 49: Incidéncia do feixe abaixo do angulo critico - Pseudo Cores Fig. 4-10: Incidéncia do feixe abaixo do angulo eritico - Grafico 3D Apresentamos a seguir uma simulagio utilizando-se para a TBC a PML e, um guia 5 em "5 com as caracteristicas apresentadas na figura 4-11. Fig. 411: Caracteristicas de um guia em ”S” A evolugdo computacional do campo foi obtida com base na referéncia [17], onde o indice de refragio nl=1.45 e a diferenga entre os indices de sefragio dada por (mi-m A= = 2.5% 4.32) Cae (aaa) com raio de curvatura de 267,9 mm ¢ distancia de propagngéo de 2200 mm (figura 4-12) e 1000 mm ( figure 413) respectivamente. 4.5 Equacao de Poisson - 2D ‘Um problema cléssico, em eletrostatica, ¢ 0 da distribuigéo de potencial. Este estudo ap- resenta vitios substdios importantes para a comproensio de fendmenos eletromagnéticos. Se partirmes da férma diferencial da lei de Gauss: . -opagacio em 2200 mm Fig, 413: Propagagdo em 1000 mm (4.33) (4.34) onde p & a densidade volumétrica de cargas. E, considerando-se que em um campo puramente eletrostdtico, E pode ser expresso como 0 negativo do gradiente do poténcial 9, ou seja: B=-v6 (4.35) Se combinarmos as equagées (4.33), (4.34), (4.35), obtemos (4.36) ou, (437) Conhecica como equagéo de Poisson, onde ¢ 6 0 potencial no dominio, (Ese, Zim) P= resentam a constante dielétrica do material na diregao x e y, respectivamente, Se p = 0, a equagio de (438) 4.5.1 Plano Condutor ‘Vamos considerar uma regio retangular condutora, como ilustrado na figura 4-14. Se considerarmes uma tensio em cada lateral do retangulo, teremos um problema onde p = 0, ¢ portanto, regido pela equagéo de Laplace 4.38. Fig. 414: Plano Metdlico A interface grifica para este problema especifico 6 apresentada na figura 415, vee ao Densidade da Matha [Baza”"F] Prarie Tipe de Gees [Setneoemaees Fig. 4-15: Interface Grafica - Plano Metalico ‘Observamos que é posstvel ap usuério alterar livremente os valores das tensées a serem 58 aplicadas em cada lado da regio, podendo dessa forma obter uma grande variedade de simulagées. Para esta interface esto definidas trés densidades de malha representadas nas figuras 4-17, 4-16 e 4-18. Baixa 17 nés 89 nds 789 nés > ‘Média | => Alta | => TAR SJ BOSAL) VAN 7 REESE RE RRAIO Fig. 417: Discretizago Média = 89 nés Uma outra opgio para o usudrio é a escolha do tipo de grafico. 59 Fig. 418: Discretizagéo Alta = 789 nés Tipo de Gréfico Grid Line Densidade 10 Grid Line Densidade 50 Gridline Densidade 100 Linhas de Campo Densidade 10 Linhas de Campo Densidade 50 Linhas de Campo Densidade 100 ‘Vetores Densidade 10 Vetores Densidade 50 Vetores Densidade 100 Mesh Densidade 10 Mesh Densidade 50 Mesh Densidade 100 Pseudo Cores Shading Interp Se considerarmos que Vo = 1V,Vi = Vz = Vs = 0, e com a malha de densidade média, obtemos os resultados apresentados na figura 4-19, ape. Pn Sg : Saidas da simulagéo para o Plano Condutor 4.3.2 Duas Linhas Condutoras Usando o equacio de Laplace, podemos também resolver o problema da distribuigio do potencial entre duas linhas condutores. Com o auxilio da interface mosirada na figura, 4.20, podemos variar as tensdes das cargas bem como seus sinais. Podemos também attibuir um potencial as fronteiras, de modo @ aumentar e complexidade do problema. Os mesmos recursos utilizados no exemplo anterior, estéo disponiveis neste. interface. Disponibilizemos para este exemplo, duas densidades de malha representadas nas figuras AM 422. Média | = | 669 nés Alta | = | 1008 nés vos [OE ia z va= ae rr. va- [UST Densidade da Maina [jada 3}. ‘Pra’ Tipo de Geetico [Unhas de Campo Deneidade 30 ae Fig. 4-20: Interface Grafica - Cargas no Espago Para ilustrar, considerando-se os valores ilustrados na interface (Bigura 4-20) , obtive- mos os resultades representades nas figuras 423, 424, 4.95 ¢ 4.26, ‘A seguir apresentamos © trecho do programa que executa os céloulos. Pademes sub 62 Fig. 421: Diseretizagdo Média - 669 ads eS BOC Fig. 4.22: Discretizagdo Alta - 1008 63 Fig. 4.23: Reresentacio 3D da distribuigéio do Campo. BG ES Fig. 4-25: Reresentagdo em, Curvas de Nivel + Indicago do Gradiente, da distribuigéo do Campo. Lain: en Sp Fig. 4-26: Reresentagio em Pseudo Cores da distribuigdo do Campo. stituir a seqtléncia CalBack por digitagio na linha de comandos, *Callback’ [. *f=zeros (length (slez) 103.7... oft=[1 2345 6];, °... % Escolha das Fromteiras ’(K,b] =mefasble2d(elem,nodes,1,1,0,2)3,°-. ‘pi=scr2double(gat(¥0,’?String’?));,’ ... »pa=str2double(get(Vi,'*String’’));,’ ... »paestr2Qdouble (get (V2, **String’’)) 5,7 'pdestr2doubla(get (V3, ’?Sering’?)) 5,” 'pBastr2double(get (LO, ?string’’));,? ... »pS=str2double(get(Li,’*String’’));,° *pp= (pi,p2.p3.p4,p5,p6];,’... % Atribuindo-se potencial as fronteiras *[K, bl=mefdch1t2d(K,b, bound nodes, £2,pp);,’-.. *sol=mefsolve(K,b)5,7], ..- 4.5.3 Barras Condutoras Similarmente ao problema das cargas 20 espago, temos o problema de duas barras condu- toras, submetidas a uma tensiio. Desejamos saber qual a distribuigdo do potencial entre ambas. Mais uma vez temos uma interface gréfica para tal problema ( figura 427), ¢ pelas mesmas raves apresentadas anteriormente, disponibilizamos duas malhas cepresentadas nas figuras 4.28 e 4-29. 1 Média | => | 483 nés [Atte [= => | 978 nés ‘Como se pode observar, com 0 auxilio da interface 6 possivel alterar a tensio sobre cada barra, Para este exemplo utilizamos +1v 2 By = =v, obtendo os resultados apresentados nas figuras 430, 431, 432 e 433 66 ES [a ea Oensidade da Mama (fioda CSCS Tipo de Graco [Sidra Baratade v0 a | | | Fig. 4.27: Interface Grifica - Barras Condutoras on AE Rere Dil eeoe Fig. 4-28: Discretizagdo Média - 483 nés eT eee RRO es Zonta Reek ies ee Fig. £30: Reresentagio 3D da distribuigdo do Campo. A seguir apresentamos 0 trocho do programa que exeenta os calculos. Podemos sub- stituir a seqiléncia CalBack por digitagao na linha, de comandes. Callback’, [. rff=[1 2 315, 7... *f=zeros(length(elem),1);,’... > [k,b] -mefasble2d(elem,nodes,1,1,0,2)5,?. 68 Fig. 431: Reresentagio em Pseudo Cores + Curvas de Nivel da distribuicéo do Campo. Fig. 432: Reresentagéo em, Curves de Nivel + Indicagio do Gradiente, da distribuigio do Campo. 69 Pn pF oe Sn Fig. 433: Reresentagio em Pseudo Cores da distribuigio do Campo. rpta05,? ‘p2estr2double(get(Q0,’’String’’));,’ »pB=str2double(get (G1, ’*String’’));,° ... *pp= [pt,p2.p8];,’-- > [Kb] =smefdch1t2d(K,b, bound nodes,f,pp);,’.-- *sol=mefsolve(K,b)5,°], --- 4.5.4 Distribuig&e de Potencial Nos exemplos anteriores, haviamos trabalhado exclnsivamente com a equagéo de Laplace. Esta se aplica em problemas eletrostaticos nos quais toda a carga reside sobre a superficie des condutores. Ou seja: p = 0 para todo o dominio. Agora, consideremos um problema eletrosttico no qual parte da carga ser4 dada por p(z,y) # 9, como uma funcdo conhecida, e o resto das cargas reside na superficie dos condutores. Este probleme requer a, solugéo da equagao de Poisson, 8 Be \ Para ilustrarmos de forma mais abrangente a solugio de problemas deste tipo, desen- volvemics uma fungie chamada poiscom.m que associa todas as fungdes da meftool pera 2D, de forma que dado um domfnio arbitr4rio com n regides com caracteristicas difer- entes ( ¢9,¢y por regio), pode-se aplicar uma fonte de excitacdo em qualquer uma destas regides ( p #0) obtendo-se assim uma grante quantidade de combinagées, engicbando um vasto conjunto de situngSes. ‘A chamada a esta fumgio é feita da seguinte forma: R3, cy R3,p,arquivo,potencial aa fronseira) poisconp(<_ RL, ¢y Rl se R2,c, R2 2p onde: @ 2 Rl ey Rice R2 distintas; R2,c_ R3,cy R3 = Constantes dielétricas em trés regiées 2 p > Densidade volumétrica, de carga; @ Arquivo = Arquivo com a malha, gerado pelo GemMes * potencial na fronteira = Potencial na fronteira mais externa do dominio. Para fins de demonstragiio, desenvolvemos duas interfaces gréficas, ilustradas nas fig- uras 434 ¢ 4-35, que levem em consideragéo trés regides distintas. Na primeira temos uma situagio com simetria bem definida e, na segunda, temos a uma situagio com quebra de simetria, Utilizando-se a constate dielétrica do vidro ( 25,6 faces, obtivemos: 4) na regio 2 de ambas inter- 4.6 Consideragées Finais Buscamos neste Capitulo agrupar uma variada selegdo de exemplos visando, principal- mente, ilustrar o funcionamento ¢ as caractertsticas da mef tool. importante salientar que todas as fungdes da meftool foram utilizadas, e que as interfaces grfficas, com excegio do BPM, sio dedicadas apenas ao problema propesto 7 Fig. 4-34: Interface grifica, para um caso simétrico Fig. 4-35: Interface gréfica para um caso Assimétrico 2 Diveratizago do dominio - Matha 2D Gréico de Pssude Cores 100 20 8 & 100 “50 7) Visuslizagéo 3D - Distribuigo de Potencial Vieualizagio com indicagéo do Gradiente 300 a i f= 260 : 200 200 2004 | bhiso 160 | 100 50 4-36: Saida gréfica para o caso simétrico eines doin aba 20 ‘psa desta sata aha 2 ‘aanaapa cnn - or : ; Roo in ja > Fig. 37: Saida gréfica para um caso assimétrico. 74 no exemplo. No entanto a meftool vai muito além do escopo dos exemplos pois, como j4 mencionado, estamos apresentando um conjunto de fangSes que pode interagir dire- tamente com o ambiente MATLAB ou, de uma forma mais clara, uma vez instalada a meftool passa a fazer parte do ambiente Sendo assim, pode-se utilizar a meftool de forma isolada, em conjunto com outras fungdes ou como componente de outros aplicativos. Capitulo 5 Conclusao Nos foi possfvel observar durante © desenvolvimento deste trabalho, que o MATLAB é fortemente recomendavel para se implementar algoritimos de simulagio pelo método de elementos finitos, devido especialmente a sua grande capacidade de dlgebra matricial e visualizagio gréfica, Um outro ponto extremamente relevante é que, o custo de desenvolvimento é muito baixo, uma vez que sendo o MATLAB um ambiente com muitas funcionalidades, permite a0 usuério se concentrar principalmente no problema que deseja analisar ao invés de desenvolver todas as rotinas pertinentes. A versio do MATLAB utilizada neste trabalho foi a 5.3, que inclui mais de 500 fungées matemiticas, de engenharia ¢ de anélise de dados. Estas funcionalidades aliades @ uma poderosa linguagem como ferramenta de desenvolvimento de aplicagées, permitiram-nos criar um ambiente para simulagdes pelo Método de Elementos Finitos, bastante versétil ¢ funcional. Sabemos que algumas lacunas ficaram por ser preenchidas, como por exemplo o de- senvolvimento de um "CAD malhador *, ou a montagem de fungées para anélise 3D, elementos de aresta ou ainda problemas de auto-valor. No entanto consideramos agora 0 caminko aberto para que mais pessoas possam colaborar, principalmente se levarmos em conta o grau de modularidade da meftool. Afora 0 supra citado, entendemos ainda como seqiiéncia deste trabalho a geragéo de 76 bibliotecas para C/C++ ou FORTRAN. Consideramos a meftool como a mais relevante contribuigéo deste trabalho. Com ela é tanto possivel aprender os conceitos bésicos do método de elementos finitos, quanto realizar complexas anélises e simulagées. Dentro da meftool, o ponto mais importante 60 visualizador gréfico contido nas fungées mefgrid2d e mefview2d pois, com elas, podemos visualizar néo $6 as saidas da meftool, mas qualquer outro resultado obtido com qualquer outra fungio ou aplicativo. Bstando a meftool inserida no ambiente do MATLAB, é perfeitamente possivel inter- agir com outras funcionalidades do mesmo, tornando-a bastante poderose abrangente. Outras caracteristicas importantes da meftool sio a modularidade ¢ a portabilidade, pois é muito simples agregar novas fungées ¢, sendo interpretada dentro do ambiente MATLAB, a mesma ¢ independente do sistema operacional, podendo ser executada sem nenhuma alteragdo em todas as plataformas que tenham o MATLAB instalado. Do ponto de vista da andlise do MATLAB como ambiente de desenvolvimento, ficam as seguintes observagées: * O MATLAB 6 extremamente versstil no que diz respeito a desenvolver e testar algoritimos especificos, mas € desaconselhével como tinica ferramenta para desen- volvimento de interfaces com usuétios; * 0 conjunto de fungées para geragéo de mex-files é de vital importancia quando co objetivo é ganho de performance, pois ou as fungdes ficam compiladas ¢ dispontveis para uso no proprio ambiente do MATLAB on, convertemos tudo para fontes C/C++ ou FORTRAN para uso em aplicagdes "standalone ” extrepolando em muito suas atuais limitacdes; « A integragio entre diferentes rotinas para visualizagéo de resultados constituem um atrativo & parte, pois permite ao usuério criar um conjunto muito eficiente de pés processamento. Por fim, recentemente chegou-nos ao conhecimento, o langamento da versio 6.2 do MATLAB. De antemio soubemos que é possivel compilar fontes C/C++ dentro do proprio 7 ambiente do MATLAB. Esta versio conta ainda com aprimoramento das rotinas gréficas ¢ otimizagio de célculos matriciais. 1 certo que estaremos adaptando a meftool a estas, melhorias em momento oportuno. 8 Apéndice A Método de Elementos Finitos A.1 Apresentagao e Formulagdes A.1.1 Introdugéo ao MEF © Método de Elementos Finitos ( MEF ) 6 uma técnica numérica para a obtengdo de solugdes aproximadas para problemas de valores de contorno em fisica ¢ matemética e, consequentemente, em engenharia. método consiste basicamente em sub-dividir o dominio do problema em um méimero finito de sub-dominios conhecidos como elementos, nos quais atua uma funcéo simples. Em geral, tais fungdes so lineares ¢ as ine6gnitas do problema original, sio os seus cocficientes. Desta forma, obteremos um sistema de equagées que pode ser expresso ¢ resolvido na forma matricial. Uma caracteristica muito importante do processo de subdivisio do dominio, também conhecido como malhagem é que, dependendo da forma da malha, a solugo pode convergir com velocidade variada. De forma resumida, podemos definir os seguintes passos bésicos para a solugéo de um problema com o uso de elementos finitos 1. Discretizar (sub-dividir) 0 dominio 79 2. Selecionar as fungdes de Interpolagio 3. Formular o sistema de equagdes 4, Solucionar o sistema de equagies ‘Veremos neste capitulo o modelamento do método para solucio de problemas 1D e 2D. A.1.2 Formulac&éo 1D Definigao do problema Consideraremos inicialmente o problema de valor de contorno que é definido pela seguinte equagio diferencial -& (oZ) +00 =F (aa) z € (0,2) Onde ¢ 6 uma fungéo desconhecida, a ¢ 3 séo parametros conhecidos, associados as propriedades fisicas e f 6 uma fonte ou excitagio. As condigées de contorno para ¢ séo dadas por Glan =P (A2) [os +r) os (a8) Onde p,7¢ q so pardmetros conhecidos. 80 ‘A equacio (A.2) 6 conhecida como condig&o de Dirichilet ou essencial ¢ a equacio (A.3) é conhecida como condigao mista. Nesta equagio, quando 7 = 0, temos a condigio conhecida por condigéo de Neumann. Andlise por elementos finitos O primeiro passo, & a dicretizagao do dominio, que para esta andlise seré feita da seguinte forma: © Subdividiremos 0 dominio em M segmentos de comprimento ! chamados elementos © Os pontos extremos de cada elemento seré chamado de né, onde para o elemento em sf, teremos uma numeragio local 21 © ¢ Cada elemento seré batizado de e. De acordo com a formulagéo abordada por Jianming Jin [1] temos que, para as fungSes de base, podemos usar : N(x) = 3 ie Me) = 54 (Ad) 2 (2) = ONG) (As) Onde e representa o elemento, | representa o comprimento do elemento, dado por It = 2 — xf, sendo que 2f e 2$ representam os pontos extremos do segmento (elemento). Se observarmos a figura A-1 podemos concluir que Nj(zf) = 6 onde 6,; = 1 para jeds=Oparai¢j. 81 NS e DN Zh 1 et 2 Fig. A-l: FungGes de Interpolacéo para problemas ID linear. Jé para a derivagdo das equagées elementares, podemos utilizar o funcional para a cequagio (A1) escrito na seguinte forma: u F@)= OF) (A6) = Onde re-5[ : [ (4) +007] a £ fax (An) Substituindo a equagéo (A.5) na equagio (A.7) e derivando-se F* com respeito a of obtemos: or x an * (ott ane dN; “ + BNENG ") ae [" Nefas (A8) Que pode ser escrito na forma matricial como: 82 [K*] {6°} ~ 0°} (A8) Sendo assim {¢°} = [¢§. 45]" e 48( ANEGNS | ney i= [ (« SE + NEN (A.10) we [nites (A) Pode-se notar que [K] 6 simétrica e se a € ff forem constantes, podemos escrever @ matriz clementar na forma analitica como sendo: Kin = Kp (A.12) (A.13) (A114) 'A partir de entéo, podemos monter o sistema de equacdes, tendo em mente que 0 mesmo ser obtido somando-se todos os elementos expostos na equacaio (A.9) ¢ impondo- se a condigéo de estacionaridade, teremos: (8)-£65)-Lemer-en- = De onde finalmente obtemos: Kyw = Kg? = ca + poo a1) yh) a geal Ka = Ki 4+KQ= +6 stmt s i= 23,...N-1 (A.18) (A.16) (Az) (A.18) (A.19) (A.20) (A21) a ALP a re i = 2,3,4,. + FO (A.22) Dadas estas equagées, falta-nos apenas incorporar as condigSes de contorno. Iniciaremos aplicando a condigéo explicitada na equagio (A.3) modificando as equagdes (A.17) e (A.21) somando-se ‘7 e g respectivamente, obtendo-se: ato 10) WN = My Kw = Foay + OO +7 (4.28) an by = fe toe +4 (A.24) E, para aplicarmos a condigéo explicitada na equagao (A.2) temos o seguinte proced- imento: = b+ Kup (A.25) préximo passo agora, seré o de resolver o sistema de equagées. ‘Um outro detalhe muito importante, € 0 fato de que a antlise descrita acima, 6 referente a elementos lineares apenas, pois para elementos de ordem superior, devemos ajustar as equagées. 85 A.1.3 Formulagio 2D Definiggio do Problema Analogamente a andlise 1D, iniciaremos a formulacao para 2D, & partir do problema de valor de contorno, definido pela seguinte equacdo diferencial: ER)-B OR) am Onde @ € uma fungo desconhecida, as, a, séo parametros associados 8s pro- priedades fisicas do dominio podendo ser complexos e, f é uma fonte ou fungio de ex- citagio. As equagées de Laplace, Poison ¢ Helmholtz: so casos especiais da equagéo (A.26) Como condigies de contorno para este problema temos # condigio essencial ou de Dirichlet dada por: eng (azn emt, Ea condigio mista 6 dada por: 4 a oF (afte 0,2 7 (as em Ty Onde 1; ¢ T so as fronteiras a serem analisadas, p,q e 77 so constantes fisicas definidas pelas caracteristicas do problema. Quando 7 = 0 dizemos que a equagéo (A.28) 6 a condicéo homogénes de Neumann. Anélise por Elomentos Finitos Da mesma forma como procedemos ne anélise 1D, nosso primeiro passo seré o de dis- cretizar 0 dominio, que, como se trata de um dominio bi-dimensional, deveremos utilizar elementos bi-dimensionais. Este processo chama-se malhagem, e o elemento mais comum. 60 triangular. Fig. A-2: Subdivisio de um dominio em quatro elementos triangulares (negrito) com seis nés (normal) Baseando-se na figura A-2 podemos construir um arranjo de 3x M denominado n(i,¢), onde i = 1,2,3e¢ =1,2,3,...,M com M denotando o niimero total de elementos (neste caso M = 4), com n(i,e) sendo o mimero total de nés, i a numeragio local dos nés € € 0 mimero do elemento. Por convengao, enumeramos 0s nés locais de um elemento no sentido anti-horério. e| ne) | n@e) | nB,e) 1 2 4 1 2 5 4 2 (Tabela Al) 3 3 5 2 4 5 6 4 87 Analogamente formulagéo uni-dimensional, podemos aproximar a fungéo incdgnita @ para cada elemento, que neste caso serio utilizados elementos triangulares. Podemos entio representar ¢ como sendo: Fey) =a 40 e4cy (A.29) Onde a*, b° ¢ c* séo os coeficientes a serem determinados, ¢ 6 0 mimero do elemento € (2,y) representam as coordenadas do n6. Podemos especificar para cada né local do elemento (1,2,3) da seguinte forma: OB = a +h aft ey (A.30) OH = otha teu af + bas + yg Resolvendo-se para os coeficientes a, # © c* em termos de ¢§ e substituindo na equacéo (A.28) obtemos: 3 Vase, ves (Asi) ja Hey) Onde N5(z,y) representa a fungéo de interpolacio, ¢ é dado por: ey i a o ie Ni@W) = oR (a§ + bxs + cys) (A.32) j = 12,3 aj_aiy§— vers =U) = ER as_miyi—yieis = BM =a ae (4.33) agains —yings =v i =~ aT e jt ta], 5]1 af wp |= 5 id Be) (A.34) 13 => Area do eésimo elemento No exposto acima, gf e yf com (j=1,2,3) denotam as coordenadas do j-ésimo né do eésimo elemento. Uma observacéo importante é que a funcéo de interpolacéo tem a seguinte propriedade: NS (25,45) leinj (A.35) {233} : ‘Temos agora os componentes necessérios para a composigéio das matrizes elementares, ¢ para isso podemos recorrer mais uma vez ao método abordado para 1D, tendo como ponto de partida 0 funcional: F@) =F) (A386) Sendo que desta vez F* seré dado por: 89 ee-3f ff [o(9¢)' +0, (36)'« +00] -[ [0 (asm Aqui, 9° representa o dominio do ¢-ésimo elemento. Tntroduzindo-se 2 equagdo (A.31) diferenciando-se F* com respeito a $f obtemos: a eth. [Re ae aa +0, REE ovens] a ao Ea J if SNZdQ (A.38) 1,2,3 Que pode ser escrita na forma matricial como segue {ie} <1) (a39) Onde (A.40) {9°} = [65.05,457" (A4)) Sendo assim, a matriz elementar [K$,] seré dada por: NE ONS 4 ANEANS | ovens - ff [RES +o ae Bonen day 1,2,3 0 vetor {bf} seré dado por: wy = f [sntasdy i = 1,2,3 Que na forma analitica poderdo serem representadas por: Ky= ie (agbfs + afetcs) aoe (1465) (A.42) (A.43) (Aad) (A45) Podemos agora montar o sistema de equagées, ¢ para isso basta proceder da seguinte forma: ‘* Baseando-se na matriz conectividade apresentada na tabela (Tabela A1) onde n(i,e) representa umn n6 global, com i representando um n6 local do elemento € montaremos a matriz global [K] como segue: Kotsernie) = Knisernged + Big o1 (A486) ‘+ E para o vetor global {5} procedemos também como segue: Basie) = Ontgey + OF (A47) Podemos finalmente inoorporar as condigées de contorno exigidas pelo problema, ‘Comecaremos pela condigéo natural apresentada pela equacéo (A.28). Para tanto, vamos considerar os lados dos elem \tos que compéem a fronteira a ser analisada. Cada um destes M, segmentos, conteré dois nés locais, ¢ cada um destes nés terd sua denominagéo global definida como ns(i, 8). Seguindo-se o exemplo apresentado na figura (A-2), podemos construir a seguinte matriz de conectividade: = ns(1,s) ns(2,8) 1 6 4 2 4 1 (A48) Soa 2 ance 3 Para cada segmento, montaremos uma matriz clementar [K*] ¢ um vetor elementar {b*} definidos por: y= 7 E464) (A.49) i weet (A.50) Onde ‘y* € q* sio constantes para cada segmento e sio definidos pelas caracteristicas 92 fisicas do problema, I 6 0 comprimento de cada segmento dado por : Ba V(ei- a+ u-y)? (A51) Esta formulagio é detathadamente demonstrada por Jianming Jin{1]. Para incorporar K%, ¢ bf & matriz global, devemos simplesmente executar a seguinte rotina: Knai2)nsti.a) = Knati.nets) + Kis (A.52) Onati,a) = Onsi,e) + OF (A.53) Finalmente para incorporarmos a condigéo essencial ou Dirichlet definida pela equago (A.27), aplicamos o seguinte algoritmo: Pn = PAE) Keoateynatay = Katy = 0 para j # nai) by — by ~ Kynaco PC) Kypay) = 0 para j # nd(é) Desta forma, apresentamos um resumo das formulagées para elementos finitos 1D 2D apresentadas em detalhes por Jianming Jin [1]. B importante frisar que existe ainda a possibilidade do uso de elementos de ordem 93 superior, e no caso de problemas 2D, podemos fazer uso de elementos quadriléteros e que, © sucesso nos resultados depende em muito do aspecto da malha aplicada. Referéncias [1] Jimiang Jin - The Finite Elements Method in Electromagnetics - Wiley-Iterscience Publication, 1993 {2] Peter P. Silvester and Ronald L. Ferrari - Finite Elements for electrical engineers 3° edition - Cambridge Press, 1996 [3] Duane Hanselman and Bruce Lttlefield - Mastering MATLAB - Prentice-Hall, 1995 [4] Duane Hanselman and Bruce Lttlefield - MATLAB 5 Guia do Usuario - MAKRON: Books, 1999 {5] George R. Buchanan - Finite Element Analysis 2° edition - McGraw-Hill, 1995 [6] P. Silvester - Campos Eletromagnético Modernos - Editora Poligono, 1988 [7] David K. Cheng - Field end Wave Electromagnetics - Addison-Wesley Publishing Company, 1989 [8] Robert E, Collin - Engenharia de Microondas - Guanabara Dois, 1979 [9] Aloisio Ernesto Assan - Método dos Elementos Finitos Primeiros Passos, Editora da Unicamp, 1999 {10} Eikichi Yamashita - Analysis Methods for Electromagnetic Wave Problems - Artech House, 1993 [11] Kaijiro HyodoTese de Mestrado - Estudo do Método de Elementos Finitos Aplicado a Problemas de Eletromagnetismno - TM-02/98 UFPA/CT/CMEE 95. [12] Yasuyuki Arai, Akihiro Maruta e Masanori Matsuhara~Transparent Boundary for the Finite Element Beam Propagation Method , Optics Letters May 15, 1993/Vol.18,N? 10 [13] Calfem: A finite clement toolbox to MATLAB - Version 3.2 - Division of Structural ‘Mechanics LTH, Lund University & Division of Solid Mechanics LTH, Lund Univer- sity, 1996 [14] Young W. Kwoun and Hyochoong Bang - The Finite Element Method using MAT- LAB, CRC Press - Naval Postgraduete School & Korea Aerospace Resarch Institute, 1996 [15] Masanore. Kosshiba - Finite Element Beam Propagation Method With Perfectly Matched Layer Boundary Conditions - IEEE Tans. Magnet, Vol 35, Mar. 1999 [16] H. B. Hernéndes Figueroa and C. E. Rubio Mercedes - "Transparent Boundary for the Finite Element Simulation of Temporal Soliton Propagation ”. IEEE Transactions on Magnetics, Vol. $4, N°S, pp. 3228-3331, September 1998 (17] H. E. Hernéndez Figueroa e J. Patrocinio - Relatério Interno de Estudos Especiais - DMO/FEE/Unicamp - Dez/2000 UNICAME 4tBLIOTECA CENTRA- SBCA CIRCULANT

You might also like