Soluções numéricas da equação de Blasius
|
|
|
- Melissa Canela Aragão
- 7 Há anos
- Visualizações:
Transcrição
1 Soluções numéricas da equação de Blasius Nelson Luís Dias 2 de julho de 2009 Uma camada-limite laminar sobre uma placa plana sem gradiente de pressão longitudinal pode ser resolvida com f f f = 0 (1) sujeita às condições de contorno onde e f (0) = 0, f (0) = 0, f ( ) = 1 (2) f (η) = Ψ(x,y) U δ(x) η = y δ(x) δ(x) = (3) (4) νx U. (5) As condições 2 não configuram um problema de valor inicial clássico, mas sim um problema de valor de contorno. Mesmo assim, vale a pena a seguinte abordagem. A mudança de variáveis u 1 = f, u 2 = f, u 3 = f, (6) produz o seguinte sistema autônomo de equações diferenciais ordinárias: u d 1 u 2, u 2 = u 3, (7) u 3 2 1u 1u 3 Este sistema pode agora ser resolvido com 3 condições iniciais u 1 (0) = 0, u 2 (0) = 0, u 3 (0) = γ (8) 1
2 onde γ é um valor inicial arbitrário para f (0). A solução de 7 pode ser obtida com o seguinte programa em C: blasius.c blasius.c: tentativa de resolver a camada-limite laminar Nelson Luís Dias T00:00: T08:43:57 atualizado para TT770 Teoria de Camadas-Limite #include <assert.h> #include <stdio.h> #include <stdlib.h> rkvetor: uma implementação de um runge-kutta multidimensional Nelson Luís Dias void rkvetor( long m, número de equações diferenciais ordinárias do sistema == tamanho de y double xn, ponto de avaliação double h, passo que vou dar double *yn, valor atual da função void ff(long, double, double *, double *), double *ynew novo valor da função ) { variáveis long i; contador double h2 = h/2.0, h/2 h3 = h/3.0, h/3 h6 = h/6.0 ; h/6 double *k1, *k2, *k3, *k4, *yaux ; auxiliar aloca memória k1 = (double *) calloc(m,sizeof(double)); k2 = (double *) calloc(m,sizeof(double)); k3 = (double *) calloc(m,sizeof(double)); k4 = (double *) calloc(m,sizeof(double)); yaux = (double *) calloc(m,sizeof(double)); primeira chamada de ff ff(m,xn,yn,k1); mais uma linha de comentários yaux[i] = yn[i] + k1[i]*h2 ; segunda chamada de ff ff(m,xn+h2,yaux,k2); yaux[i] = yn[i] + k2[i]*h2 ; 2
3 terceira chamada de ff ff(m,xn+h2,yaux,k3) ; yaux[i] = yn[i] + k3[i]*h ; quarta e última chamda de ff ff(m,xn+h,yaux,k4); finalmente, avalia a função ynew[i] = yn[i] + k1[i]*h6 + k2[i]*h3 + k3[i]*h3 + k4[i]*h6 ; desaloca memória free(k1) ; free(k2) ; free(k3) ; free(k4) ; free(yaux) ; retorna return ; aqui eu declaro o sistema de equações diferenciais na forma de uma function void blasius( long m, o número de equações: deve ser sempre igual a 3! double t, o instante de tempo double *omega, o vetor de velocidades angulares double *domdt as derivadas ) { calcula as derivadas domdt[0] = omega[1] ; domdt[1] = omega[2] ; domdt[2] = -omega[0]*omega[2]/2.0 ; return ; outros parâmetros da simulação #define deltat 0.1 intervalo de tempo da simulação #define tmax 20.0 tempo de simulação pointers to pointers... typedef double *vetor ; aqui começa o programa principal int main(int argc, char* argv[]) { long old, índice do vetor de incógnitas new, idem it, índice do tempo nt = tmax/deltat ; double t ; número de intervalos de tempo de simulação um instante de tempo qualquer 3
4 vetor omega[2] ; o único argumento de blasius é o valor inicial assert (argc == 2) ; double gamma ; sscanf(argv[1],"%lf",&gamma) ; aloca memória para omega ; omega[0] = (double *) calloc(3,sizeof(double)); omega[1] = (double *) calloc(3,sizeof(double)); inicializa omega omega[0][0] = 0.0 ; omega[0][1] = 0.0 ; omega[0][2] = gamma ; imprime um cabeçalho printf("# \n"); printf("# tempo f f\ f\ \ \n"); printf("%15.8lf %12.6le %12.6le %12.6e\n",0.0,omega[0][0],omega[0][1],omega[0][2]); sem mais delongas, faço um loop no tempo old = 0 ; new = 1 ; for ( it = 0 ; it < nt ; it++ ) { t = it*deltat ; rkvetor(3,t,deltat,omega[old],blasius,omega[new]) ; imprime uma linha de simulação printf("%15.8lf %+12.6e %+12.6e %+12.6e\n",t+deltat, omega[new][0],omega[new][1],omega[new][2]); olá troca os índices de old e new old = new ; new =! new ; return(0); último comentário do programa! 4
5 Sucessivas rodadas de blasius.c produzem a seguinte tabela: γ f ( ) Se o processo todo estiver certo, então a última saída deve ter gerado o perfil de velocidade O seguinte script de gnuplot deve plotar o resultado: blasius.plt set terminal postscript eps enhanced "Times-Roman" 18 set xlabel {/Symbol h set ylabel {/Times-Italic u/u_{/symbol \245 set output blasius.eps set grid plot blasius.out using 1:3 notitle with lines lt 1 lw 2!epstopdf blasius.eps f (η) = u U (9) 5
6 O resultado pode ser visto na figura abaixo: u/u η 1 Uma alternativa (Liggett, 1994, p. 196) Sugere a seguinte alternativa para definir condições de contorno em η = 0, e consequentemente produzir um problema de valor inicial desde o início: f = αg, (10) ξ = βη (11) Agora, em ξ = η = 0, a derivada segunda de f (que nós acabamos de determinar por tentativa-eerro acima) é f (0) = γ. A derivada segunda de g em relação a ξ será d 2 g 2 = d = d = 1 d 2 g β 2 = 1 d 2 g β 2 2 = 1 αβ 2 d 2 g 2 = 1 β d = 1 αβ 2 d 2 f 2. (12) 6
7 Então, Agora, imponha γ/(αβ 2 ) = 1, de tal modo que d 2 g(0)/ 2 = 1. d 2 g 2 = 1 d 2 f 0 αβ 2 2 = γ 0 αβ 2. (13) Voltando à equação diferencial original, d( f /α) = d(βη) = 1 d f αβ (14) d 2 g 2 = 1 d 2 f αβ 2 2 (15) d 3 g 3 = 1 d 3 f αβ 3 3 (16) 2 f + f f = 0, 2αβ 3 g + αgαβ 2 g = 0 (17) É conveniente agora fazer α = β, de modo que a equação (17) torna-se 2g + gg = 0. (18) Trata-se evidentemente da mesma equação de Blasius, porém com condições iniciais diferentes. A sua solução levará à obtenção do valor de α: de (14), lim ξ = 1 α 2 lim d f η = 1 α 2. (19) Rodando blasius de novo com f (0) = 1 (na verdade, g (0) = 1!), g ( ) = (veja a última linha da tabela, convenientemente inserida à espera deste momento); α = , e γ = α 3 = = f (0), o que concorda com nosso resultado anterior obtido por tentativa-e-erro. Referências Liggett, J. A. (1994). Fluid Mechanics. McGraw-Hill, New York. 7
Ponteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Listas ligadas/listas encadeadas
1 Listas ligadas/listas encadeadas Leitura recomendada: http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html 2 Processamento elementar de listas Definição mais restritiva (tipo de lista possivelmente
ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza
ESTRUTURAS CONDICIONAIS Introdução à Ciência da ComputaçãoI Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais Estrutura
A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).
Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,
Estruturas de Dados Aula 6: Cadeias de 28/03/2010
Estruturas de Dados Aula 6: Cadeias de Caracteres 28/03/2010 Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Faculdade de Computação
Faculdade de Computação Programação Procedimental 1 o Laboratório de Programação C Prof. Cláudio C. Rodrigues 1. Introdução O objetivo desta aula prática é exercitar o uso de variáveis de vários tipos
Solução Numérica do Problema de Blasius da Camada Limite Laminar
Universidade de Brasília Departamento de Engenharia Mecânica Mecânica dos Fluidos II 0) Prof. Francisco Ricardo da Cunha e Prof. Gustavo Coelho Abade Monitor: Nuno Jorge Sousa Dias Solução Numérica do
O método de Runge-Kutta multidimensional x
61 2.8 O método de Runge-Kutta multidimensional 25 Γ() intgama1.py Γ() Gnuplot 20 15 Γ() 10 5 0 1 2 3 4 5 Figura 2.12: Cálculo de Γ() com o método de Runge-Kutta: saída de intgam1 comparada com a função
Alocação Dinâmica de Memória
Alocação Dinâmica de Memória Luiz Chaimowicz, Raquel O. Prates, Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados II DCC UFMG Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática
O que é um apontador em C (type pointer in C)?
O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora
Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional
Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de
1 Exercícios com ponteiros
Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática
ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza
ESTRUTURAS CONDICIONAIS Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais
Aula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara
Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos
Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes
Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany [email protected] Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta
Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Listas Encadeadas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos não
1) Operadores de auto incremento ++ e auto decremento --
Aula 09 - Operadores de auto incremento e auto decremento, atribuição múltipla, atribuição na declaração, atribuição resumida e algumas regras de boa programação. 1) Operadores de auto incremento ++ e
TAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c
ponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo [email protected] ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
#include <stdio.h> void Swap (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } main () {
422 #include void Swap (int *a,int *b) int temp; temp=*a; *a=*b; *b=temp; main () int num1,num2; printf("\nentre com o primeiro valor: "); scanf ("%d",&num1); printf("\nentre com o segundo valor:
Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva
Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição OPL e IC1 Prof: Anilton Joaquim da Silva [email protected] 1 Estrutura de Repetição Em certas situações é necessária a repetição de
TAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve
Conhecendo a Linguagem de Programação C
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Conhecendo a Linguagem de Programação C DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Como
Tipos Abstratos de Dados
Tipos Abstratos de Dados Prof. Jussara Almeida Derivado das transparências do Algoritmos e Estrutura de Dados Algoritmo: Sequência de ações executáveis para a solução de um determinado tipo de problema
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos
MEC204 Dinâmica de Fluidos Computacional. Prof. Juan Avila
MEC204 Dinâmica de Fluidos Computacional Prof. Juan Avila http://professor.ufabc.edu.br/~juan.avila Bibliografia Versteeg, H.K. and Malalasekera, An Introduction to Computacional Fluid Dynamics: The Finite
Algoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
INTRODUÇÃO À LINGUAGEM C. Prof. Msc. Luis Filipe Alves Pereira 2015
INTRODUÇÃO À LINGUAGEM C Prof. Msc. Luis Filipe Alves Pereira 2015 INTRODUÇÃO À LINGUAGEM C 02/23 INTRODUÇÃO Criada em 1972 na AT&T Bell Labs É uma das linguagens mais populares. Existem poucas arquiteturas
Equações Diferenciais Ordinárias
Equações Diferenciais Ordinárias Profa. Simone Aparecida Miloca UNIOESTE 2017 Sumario EQUAÇÕES DIFERENCIAIS ORDINÁRIAS MÉTODO DE EULER MÉTODOS DE SÉRIES DE TAYLOR MÉTODOS DE RUNGE KUTTA EQUAÇÕES DIFERENCIAIS
Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1
Listas Lineares Elerson R. S. Santos [email protected] Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples
Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos
Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão
Métodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Fundamentos de Programação
TeSP Redes e Sistemas Informáticos Luís Correia Até agora aprendemos que podemos armazenar vários elementos, mas esses elementos têm que ser todos do mesmo tipo Exemplos: int v[20]; float matriz[5][10];
ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza
ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Baseado nos slides de Rosely Sanches e Simone Senger de Souza 2 ESTRUTURAS COMPOSTAS Pode-se organizar os dados dos tipos simples em tipos
Tabela ASCII de caracteres de controle
Caracteres Estruturas de Dados Aula 6: Cadeias de Caracteres 31/03/2010 Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Introdução à Computação 1 de 28 Funções Na Programação, funções são conjuntos
Aula 15: Repetição (Parte 3)
Aula 15: Repetição (Parte 3) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Breve Revisão Comandos de Decisão
Curso de Programação C em Ambientes Linux Aula 05
Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios
Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios Prof. Flávio de Oliveira Silva, M.Sc. 1. Crie uma função chamada somavetor. Esta função deve receber dois vetores
Introdução à Linguagem C
Prof a.dr a.thatyana de Faria Piola Seraphim (ECO) Prof.Dr.Enzo Seraphim (ECO) Universidade Federal de Itajubá [email protected] [email protected] Introdução - História A linguagem de programação
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 02: Alocação Dinâmica de Memória Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
INF 1007 Simulado P2 Nome: Instruções
INF 1007 Simulado P2 Nome: Matrícula: Turma: Instruções 1. Tempo de prova: 1 hora e 30 minutos. 2. Entregue a solução de sua prova em um ÚNICO arquivo texto, com o nome Turma_Matricula_P2.txt (por exemplo
Linguagem e Técnicas de Programação
Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,
Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I
Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento
Introdução ao Scilab 3.0 Parte 3
Introdução ao Scilab 3.0 Parte 3 Paulo S. Motta Pires [email protected] Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte NATAL - RN Paulo Motta (DCA-UFRN)
Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo
Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),
Funções de Entrada e Saída
inicio Escrita no ecrã (Saída de dados) Escrever( introduza o valor do raio ) Raio Leitura do valor do raio S Raio < 0 N O utilizador insere o valor do raio (Entrada de dados do teclado) Escrita no ecrã
Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha
Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha conhecimento avançado de C. Exemplo em C: Faça um programa que
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação
