A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9.

Apresentações semelhantes


Apresentação em tema: "Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9."— Transcrição da apresentação:

1 Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9

2 Ludwig Krippahl, 2009 2 Na aula de hoje... Simulação Formação de nanoestruturas Dissolução Solubilidade

3 Ludwig Krippahl, 2009 3 Formação de nanoestruturas Controlled Synthesis of 2-D and 3-D Dendritic Platinum Nanostructures, Yujiang Song et al, JACS 23/12/2003

4 Ludwig Krippahl, 2009 4 Formação de nanoestruturas

5 Ludwig Krippahl, 2009 5 Simular difusão em 2D Movimento aleatório da partícula

6 Ludwig Krippahl, 2009 6 Simular difusão em 2D Superfície maior: cyclic boundary

7 Ludwig Krippahl, 2009 7 Simular difusão em 2D Regras de movimento: partícula está em x, y. escolher aleatoriamente -1, +0, +1 para cada

8 Ludwig Krippahl, 2009 8 Simular difusão em 2D Regras de movimento: partícula está em x, y. escolher aleatoriamente -1, +0, +1 para cada sai por um lado, entra pelo outro: se >tamanho, coordenada = 1 se <1, coordenada = tamanho Atenção round(rand*2) ou floor(rand*3)? O round dá 50% de probabilidade de ser 1...

9 Ludwig Krippahl, 2009 9 Simular difusão em 2D Função movexy function [x,y]=movexy(x,y,tamanho) Recebe coordenadas x, y e tamanho. Devolve coordenadas x, y depois de modificadas. Precisa de saber o tamanho para dar a volta se a coordenada sai da grelha.

10 Ludwig Krippahl, 2009 10 Inicio da trajectória A partícula vai começar no limite da grelha:

11 Ludwig Krippahl, 2009 11 Inicio da trajectória A partícula vai começar no limite da grelha: Escolher x e y ao acaso, entre 1 e tamanho. x e y têm de ser inteiros. Escolher um r ao acaso entre 0 e 1. Conforme o r é <0.25, <0.5, <0.75 ou else x=1, x=tamanho, y=1, y=tamanho

12 Ludwig Krippahl, 2009 12 Inicio da trajectória Conforme o r é <0.25, <0.5, <0.75 ou else x=1, x=tamanho, y=1, y=tamanho 25% probabilidade para cada lado

13 Ludwig Krippahl, 2009 13 Inicio da trajectória Função inicio function [x,y]=inicio(tamanho) Recebe o tamanho da grelha e devolve as coordenadas iniciais da partícula geradas aleatoriamente, na fronteira da grelha.

14 Ludwig Krippahl, 2009 14 Formação de nanoestruturas A estrutura vai-se formando conforme partículas difundem pela membrana e se agregam. Algoritmo: quando o movimento de uma partícula a levaria a uma posição da grelha já ocupada, a partícula fica imobilizada como parte da estrutura

15 Ludwig Krippahl, 2009 15 Implementação Função crescimento function parts=crescimento(tamanho,particulas) Recebe o tamanho da grelha e o número de partículas na nanoestrutura. Devolve uma matriz de 2 colunas com as coordenadas x e y das partículas na estrutura.

16 Ludwig Krippahl, 2009 16 Implementação Exemplo tamanho=20; parts=crescimento(tamanho,40); title([num2str(length(parts))," particulas"]); axis([1,tamanho,1,tamanho],"equal"); plot(parts(:,1),parts(:,2),"or;;");

17 Ludwig Krippahl, 2009 17 Implementação Exemplo

18 Ludwig Krippahl, 2009 18 Implementação Representação da estrutura: Matriz de duas colunas x, y. Problema: Para detectar se uma célula da grelha está ocupada temos que ver todas as partículas já na estrutura. Isto cada vez que se move uma partícula. Pouco eficiente

19 Ludwig Krippahl, 2009 19 Implementação Representação da estrutura: Matriz de duas colunas x, y. Solução: Representar também a grelha com uma matriz de zeros, de tamanho x tamanho, em que colocamos 1 em cada célula ocupada. Para detectar ocupação da célula x, y é só consultar matriz(x,y)

20 Ludwig Krippahl, 2009 20 Implementação Função crescimento Criar grelha e vector partículas Colocar a primeira partícula no centro da grelha Para cada partícula da segunda em diante: Usar inicio para escolher o ponto inicial. Repetir: movexy e verificar se novo x, y está ocupado. Se está, guardar o x, y corrente da partícula e marcar na grelha.

21 Ludwig Krippahl, 2009 21 Formação de nanoestruturas

22 Ludwig Krippahl, 2009 22 Dissolução Simular a dissolução de sólidos (em 2D)

23 Ludwig Krippahl, 2009 23 Dissolução Observar os efeitos do tamanho dos sólidos em: Velocidade a atingir o equilíbrio. Valor no equilíbrio.

24 Ludwig Krippahl, 2009 24 Dissolução Problema (em partes, como sempre): Criar o sólido na matriz Grupo de partículas Mover cada partícula movexy, já está feito Definir regras para a simulação Se está no sólido, tem uma probabilidade de sair para solução e começar a mover-se. Se encontra outra partícula fica retida no sólido.

25 Ludwig Krippahl, 2009 25 Dissolução Implementação parts=preenche(xini,yini,lx,ly) xini e yini: valores para o ponto inicial (x,y) lx,ly: tamanho de cada lado do rectângulo.

26 Ludwig Krippahl, 2009 26 Dissolução octave.exe:2> preenche(2,3,1,2) ans = 2 3 2 4 octave.exe:3> preenche(2,3,3,2) ans = 2 3 2 4 3 3 3 4 4 3 4 4

27 Ludwig Krippahl, 2009 27 Dissolução Simulação graf=dissolve(parts,tamanho,iters, solub) parts: matriz com as coordenadas iniciais das partículas no(s) sólido(s). tamanho: largura da grelha (quadrada) iters: número de iterações a executar solub: probabilidade de uma partícula deixar o sólido

28 Ludwig Krippahl, 2009 28 Dissolução Simulação Marcar todas as partículas como sólido. Marcar as partículas na grelha. Para cada iteração Percorrer todas as partículas Se não está sólida ou se rand<solub, mover e marcar como em solução. Se tenta mover para um sítio ocupado fica onde está e passa a sólido

29 Ludwig Krippahl, 2009 29 Dissolução Simulação Para cada iteração Percorrer todas as partículas Contar o número de partículas no sólido e acrescentar ao vector para o gráfico

30 Ludwig Krippahl, 2009 30 Dissolução

31 Ludwig Krippahl, 2009 31 Sermão Para quem está a ficar para trás Resolvam as primeiras fichas. Leiam a introdução ao Octave e resolvam os exercicíos sobre funções. Leiam o manual!

32 Ludwig Krippahl, 2009 32 Próximas aulas A implementação fica por vossa conta. Importante: perceber bem os algoritmos nas aulas teóricas. Várias funções implementarem serão úteis para o trabalho final

33 Ludwig Krippahl, 2009 33 Trabalho 2 Consultem os trabalhos anteriores: 06/07 – Modelar uma epidemia 07/08 – Identificar os mecanismos de cinética de reacções Ajuste de um modelo a dados experimentais. Este ano menos folha de cálculo, mais Octave.

34 Ludwig Krippahl, 2009 34 Próxima prática Monte Carlo Integrais e àreas. Contar UFCs (revejam a teórica 7) Simulação (desta aula)

35 Ludwig Krippahl, 2009 35 Dúvidas


Carregar ppt "Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9."

Apresentações semelhantes


Anúncios Google