1 / 17

Trabalho Computacional Mecânica de Fluidos Ambiental aula 5

Trabalho Computacional Mecânica de Fluidos Ambiental aula 5. Guillaume Riflet ,. Dúvidas: guillaume.maretec@ist.utl.pt Ext:3430 Página: https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dos-fluidos-ambiental. Sumário aula 1. subrotinas , funções ,

Télécharger la présentation

Trabalho Computacional Mecânica de Fluidos Ambiental aula 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Trabalho Computacional Mecânica de Fluidos Ambiental aula 5 GuillaumeRiflet, Dúvidas: guillaume.maretec@ist.utl.ptExt:3430 • Página: https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dos-fluidos-ambiental

  2. Sumário aula 1 • subrotinas, funções, • argumentos, variáveis, tipos de variáveis, • arrays, • cicloswhile e for, • Alcance (Public, Private) • debug. https://fenix.ist.utl.pt/homepage/ist146730/mecanica-dos-fluidos-ambiental

  3. Exercícios aula 1 • Criem a função de umargumento de tipo double que retorne 3x*x – 2. Criemumasubrotina que teste a função para x=4 e x=25, escrevendo o resultado numa folha de excel. • Concebamumciclofor numa subrotina que escreva numa folha de excel os resultados de 3x*x*x + 4 para todos os x que pertençamaointervalo [-30 , 50] comincrementos 2 em 2. • Casonãotenhamfeito, repitam o exercícioanteriorusandoumarray. • Repitam o exercícioanterior, mas destavez a função é 3x*x*x + 4 se o resultado for positivo e 0 (zero) casocontrário (usemumif). • Gravem a macro dumgráficocom os resultados do exercícioanterior (com x nasabscissas e os valores da funçãonasordenadas). Vejam o código que resultou da gravação da vossa macro.

  4. Sumário aula 2 • condições (if), • Passagem de argumentosporvalor ou porreferência • Interface Excel-VBA, • Tipos • eventos, • userforms, • Gravação de macros, • Algunsobjectosnativos de VBA para excel • Apresentação da equação da difusão.

  5. Exercícios aula 2 • Com umciclofor e comumacondiçãoif, escreva numa coluna de excel os valores da funçãoseguinte, definida no intervalo [-50,50] comincrementos de 5 unidades de intervalo: f(x) = x * Sqr(-x) se x pertence a [-50,-10], f(x) = -10 * Sqr(10) + ( x^2 – 10^2) se x pertence a ]-10,20], f(x) = 300 – Sqr(10^3) - x^3 emcasocontrário. • Concebaumasubrotina que faça o gráficoautomático da função a partir da gravaçãoduma macro. • Tente alterar a subrotina de criação de gráfico de modo a que recebaumargumentocontendo o número de linhas da coluna de excel a usar. • Repita o primeiroexercíciocomumincremento de apenas 2 unidades de intervalo. • Crie umauserformque peçaaoutilizador o intervalo e o incremento da função e que tenhaumbotão que faça o gráficocorrespondente.

  6. Exercícios aula 2 • Escrevaumasubrotina que contenhaumavariávelinteiraainicializada a 22. Tente incrementar a variávela chamandoumasubrotina que use umargumentoByRefe chamando outra subrotina que use umargumentoByVal. Quais dassubrotinas que é incrementa de facto a variávela? (recomendação: use o debugger para ver, passo a passo, a evoluçãodasvariáveis.) • Escrevaumasubrotina que contenhaumarray de reais. Inicialize o arraycomumciclofor comvalores da função f(x) = A * exp(-x) definidos no intervalo [-3, 4] e comumincremento de 0.3. Chameumasubrotina que inverta a ordem dos valores no array. (Deve usarByRef ou ByVal?). Escreva os valores do arraynuma coluna de excel e faça o gráfico da função.. (Recomendação: use o debugger).

  7. Sumário aula 3 • Aula mudada para LTI lemac (~40 min de atraso) • Familiarizaçãocom o ambiente de desenvolvimentoem VBA. • Resolução de exercícios e exemplosem VBA. • Ciclofor • Condiçãoif • Manipulações de arrays • Criação de subrotinas e de funções. • Criaçãodumauserform. • Criaçãoduma macro para fazerumgráfico.

  8. Exercícios aula 3 • Programe a função f que varia no espaço e no tempo: f(x,t) = x^2 * t + Sqr(Abs(x)). • Programeumarray numa subrotina que inicialize a função f(x,t0) onde x pertençaaointervalo [0 1000] comumincrementodx=50 e t0=0.0. • Escreva os resultados para vários instantes de t no interval [0.0 10.0] de f(x,t), um instante porlinha, usandoumciclofor . • Programe o gráficocomvárias séries de resultados de f(x,t), (uma série por instante). • Crie umauserform onde o utilizadorpossainserir os incrementos de espaço e de tempo, (dx e dt) e onde possadefinir o comprimento de a duração do domínio de f.

  9. Sumário aula 4 • Finalização do exercício da aula anterior (userform + gráfico). Ficouporfinalizar(aula 5). • Métodosnuméricosdiferençasfinitas (explícito, implícito, centrado) para 1a e 2a derivada. Ordem do erro.

  10. Conteúdo programado aula 5 • Finalização do exercício da aula anterior (gráfico). • Dedução da equaçãoalgébricapordiferençasfinitas (dt e dx constantes) da equação do calor. Condição de positividade (e estabilidade). • Condições de fronteira de fluxodiffusivonulo. • Condiçãoinicial. • Emissãoinstantânea. • Emissãocontínua.

  11. Conteúdo das aulas seguintes • Programação do trabalhocomputacional para mfa

  12. Alguns excertos úteis de código VBA 0 Manuseamento de strings: Dim texto as string texto = "ba" ‘Escreve na célula « b-a-ba, abcd » Cells(2,2) = "b-a-" & texto & ", abcd" ‘ou ...  Cells(2,2) = "b-a-" + texto + ", abcd"

  13. Alguns excertos úteis de código VBA I Manuseamento de Userforms: • UserForm1.Show (mostra) • UserForm1.Hide (esconde) • UserForm1.TextBox1.Textlength (tamanho da entradaemunidades de caracteres de texto) • UserForm1.TextBox1.Value (valor da entrada)

  14. Alguns excertos úteis de código VBA II Delecção de células, linhas e colunas: • Range ("A1:B3"). ClearContents (apagajanela de células da tabela indo de A1 até B3). • Range("A1:A1").EntireColumn.ClearContents (apagacolunainteiracontendo a célula A1). • Range(Range("A1:A1"), Range("A1:A1").End(xlDown)).ClearContents (apaga o conjunto de célulascontíguasescritasdatabela, a começardacélula A1 parabaixo). • Range(Range("D3:D3"), Range("D3:D3").End(xlDown).End(xlToRight)).ClearContents (apaga o conjunto de célulascontíguasescritasnatabela, a começardacélula D3 até à últimaparabaixo e para a direita).

  15. Alguns excertos úteis de código VBA III Manuseamento de gráficos: ‘Fazumgráfico simples (finalline é a últimalinha da tabela que contem os dados. A2 é a primeiralinha.) Dim finalline as integer ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("Sheet1!A2:N" & finalline) ActiveChart.ChartType = xlLine ActiveChart.PlotBy = xlRows ‘Apagatodos os gráficos Dim chart as ChartObject For EachChart in ActiveSheet.ChartObjects Chart.Delete Next

  16. Alguns excertos úteis de código VBA IV Manuseamento de gráficos: ‘Fazumgráficousando a subrotinamakegraphic do ficheiro GraficoSampleCode.xls disponível na página 'Callmakegraphic(número de linhas, número de colunas, _ ' índice da primeira linha, índice da primeira coluna, _ ' valor maximo da escala nas ordenadas do gráfico) Callmakegraphic(14, 5, 2, 7, 800)

  17. Configurações regionais • Atenção no que toca à linguagem nativa do office. SEN (português) ou SIN (inglês). • Atenção às definições de separadores de casas decimais (3.14 ou 3,14) e de formatos de data (13/05/1980 ou 1980-05-13 ou...).

More Related