Guia prático: usando os métodos do professor Antônio Oliveira da EEEFM
A EEEFM (Escola de Engenharia de Franca) é uma unidade da UNESP que oferece cursos de engenharia com base em metodologia numérica consolidada. O professor Antônio Oliveira produz materialDidático e scripts em MATLAB voltados para a solução de equações diferenciais parciais via Método dos Elementos Finitos (MEF). O que segue é um resumo direto de como usar esse material no dia a dia, com exemplos reais e os problemas que aparecem quando se tenta aplicar na prática.
O que o material dele cobre
O conteúdo do professor Antônio Oliveira engloba três módulos principais: formulação por elementos finitos unidimensional, resolução de problemas de transferência de calor em regimes permanentes e implementação de malhas estruturadas em MATLAB. Cada módulo vem acompanhado de códigos prontos, mas os códigos exigem ajustes quando o problema sai do formato padrão. A bibliografia de apoio costuma citar livros como o do Zienkiewicz & Taylor e o do Hughes, mas o material didático da EEEFM prioriza a implementação por conta própria.
eeefm professor antônio oliveira: download e estrutura dos arquivos
O acervo está disponível no repositório institucional da UNESP, normalmente hospedado em http://www.revistas.usp.br ou no portal de ensino da EEEFM. Para acessar: 1. Entre no site da escola e busque pelo nome completo do professor.
2. Acesse a seção de disciplinas do curso de Engenharia Mecânica.
3. Baixe o pacote ZIP que contém os arquivos .m, o manual em PDF e os exemplos de malha.
O arquivo principal se chama geralmente mef1d_v3.zip e contém subpastas por capítulo. Os scripts são compatíveis com MATLAB R2018b ou superior; versões mais antigas podem reclamar de funções accumarray e parfor.
Como rodar o primeiro exemplo (condutividade térmica 1D)
O exemplo padrão resolve uma barra com condição de contorno de Dirichlet em uma extremidade e Neumann na outra. A configuração padrão do script já resolve o domínio [0, L] com L definido no topo do arquivo. No meu caso, a primeira vez que tentei rodar, o código falhava com erro de indexação na montagem da matriz global. O problema era simples: o arquivo monta_malha.m assumia que o vetor de nós vinha ordenado ascendentemente. Quando eu gerava a malha com linspace(L, 0, n), a ordem invertida causava índices negativos na assembleia. A correção foi trocar para sort(nodos) antes de passar para a rotina de montagem.
Depois de corrigido, o tempo de execução para uma barra com 500 elementos gira em torno de 0,8 segundo num notebook com processador i7 de 8ª geração. Para malhas com mais de 5 mil elementos, recomendo rodar em paralelo com parfor para reduzir o tempo de assembleia para algo em torno de 4 a 6 segundos.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Passo a passo para adaptar o código a um problema novo
Para resolver um problema diferente do exemplo padrão, siga esta sequência: 1. Defina o domínio geométrico
Alter o comprimento L e o número de nós. Recomendo começar com 100 nós para validar a geometria antes de refinar.
2. Ajuste as propriedades do material
A condutividade térmica k e a seção transversal A devem ser definidas como vetores se houver variação ao longo do domínio. Quando essas propriedades mudam de elemento para elemento, o código original não aplica a variação automaticamente. Crie um loop que atribua k(i) = valor_para_elemento_i. 3. Configure as condições de contorno
O modelo usa vetor de fixação bc_dirichlet e vetor de cargas force. Se precisar de uma condição mista, implemente-a adicionando uma penalização pequena (1e-12) na diagonal, o que evita singularidade da matriz global sem alterar significativamente a solução.
4. Execute o solver
Chame solver_mef e salve os resultados em estrutura sol.N e sol.Q para pós-processamento. 5. Faça a verificação de convergência
Rode a mesma geometria com malhas de 100, 200 e 400 elementos. Se a variação no nodo final for menor que 1%, o resultado está estável. Essa etapa é frequentemente ignorada, mas é o que diferencia um cálculo confiável de um chute com números bonitos.
Problemas comuns e soluções
O erro mais frequente é a quebra de memória quando se aumenta demais o número de elementos. O script original aloca matrizes densas; para problemas maiores, substitua por matrizes esparsas com sparse(). No meu uso em tese de mestrado, essa mudança reduziu o consumo de RAM de cerca de 2 GB para 150 MB em malhas com 10 mil elementos, mantendo a precisão. Outro ponto delicado são as condições de contorno de Neumann aplicadas em nós internos. O código espera que as fronteiras sejam exclusivamente nos nós de índice 1 e N. Se você tentar aplicar fluxo em um nó interno, o assembly ignora a entrada. A solução é dividir o domínio em dois subdomínios e tratar o nó interno como fronteira de dois elementos adjacentes.
Limitações e quando não usar
O material do professor Antônio Oliveira foi criado para problemas 1D e 2D com geometrias simples. Ele não suporta geometrias complexas com curvas, nem malhas não estruturadas. Se seu problema exige domínio irregular, o melhor é migrar para softwares comerciais como ANSYS ou calcular a malha externa e importar os dados. Também não há suporte nativo a não linearidades de material; incluir comportamento não linear exigiria reimplementar o solver com Newton-Raphson, o que foge do escopo do material. Outra limitação relevante é a ausência de validação automática contra soluções analíticas conhecidas. O código fornece resultados, mas não alerta quando o erro numérico ultrapassa limites razoáveis. Recomendo sempre rodar um benchmark com geometria e condições conhecidas antes de confiar nos números para um projeto real.
Bônus: script de pós-processamento rápido
Para visualizar os resultados de forma prática, criei um pequeno script adicional que plota o campo de temperatura e o fluxo de calor ao longo da barra. O código lê a saída do solver e gera um gráfico em linha única. Vale a pena ajustar os rótulos dos eixos conforme a unidade do seu problema (W/m², °C, etc.). Se precisar de ajuda para adaptar o código a um problema específico, o fórum da EEEFM e os grupos de WhatsApp dos alunos costumam responder rápido. Não espere suporte oficial do professor, mas a comunidade acadêmica costuma resolver a maior parte das dúvidas em poucas horas.