Вы находитесь на странице: 1из 4

CI1164 - Introdução à Computação Científica 20192 https://moodle.c3sl.ufpr.br/mod/assign/view.php...

CI1164 - Introdução à Computação Científica


20192

Objetivo

O objetivo deste trabalho é implementar um programa para calcular a solução


discreta para uma Equação Diferencial Parcial com duas variáveis indepententes
utilizando Diferenças Finitas centrais de primeira ordem e o método de Gauss-
Seidel.

Especificação

O trabalho consiste em calcular a solução discreta, utilizando Diferenças Finitas


Centrais e o Método de Gauss-Seidel, para a seguinte Equação Diferencial Parcial:

onde:

O domínio é definido por:

Nas fronteiras utilize:

A discretização do domínio deve ser feita em uma malha com espaçamento entre
os pontos ( ) calculados a partir do número de pontos em cada

1 of 4 11/09/2019 12:15
CI1164 - Introdução à Computação Científica 20192 https://moodle.c3sl.ufpr.br/mod/assign/view.php...

dimensão ( ) dados como parâmetro do programa.

Escolha uma estrutura de dados eficiente para representar o Sistema Linear


resultante;
Escolha um layout eficiente para as variáveis e termos independentes do seu
sistema;
Use um vetor nulo como estimativa inicial para a solução;

Execução do Programa

O pacote de software a ser construído deve gerar um executável chamado


pdeSolver, que deve ser invocado da seguinte forma:

pdeSolver -nx <Nx> -ny <Ny> -i <maxIter> -o arquivo_saida

Onde:

-nx: parâmetro obrigatório definindo o número de pontos a serem calculados


na dimensão X.
-ny: parâmetro obrigatório definindo o número de pontos a serem calculados
na dimensão Y.
-i maxIter: parâmetro obrigatório definindo o número de iterações a serem
executadas.
-o arquivo_saida: parâmetro no qual arquivo_saida é o caminho completo
para o arquivo que vai conter a solução (valores da função em cada ponto da
grade). Caso este parâmetro não esteja especificado, a saída deve ser stdout
Esta solução deve estar formatada para servir de entrada ao comando
gnuplot, de forma que ele possa automaticamente gerar o gráfico da
função.
Além disso, no início do arquivo, deve constar sob a forma de
comentários do gnuplot:

1. 1. O tempo médio de execução de cada iteração do Método de


Gauss-Seidel
2. O valor do resíduo para cada iteração.

###########
# Tempo Método GS: <média de tempo para o cálculo de uma iteração do método,
em milisegundos>
#
# Norma L2 do Residuo
# i=1: <valor>
# i=2: <valor>
# i=3: <valor>
# ...
###########

Tempo Método GS: deve ser calculado em milisegundos, utilizando-


se a função timestamp() especificada aqui. O tempo é calculado a
partir do início da iteração do método até a obtenção do vetor solução
daquela iteração. O resultado deve ser a média aritmética do tempo de

2 of 4 11/09/2019 12:15
CI1164 - Introdução à Computação Científica 20192 https://moodle.c3sl.ufpr.br/mod/assign/view.php...

todas iterações.

Código Modular

Você deve implementar suas funções em uma biblioteca, deixando o código


modular. Todas funções da biblioteca devem "falhar graciosamente". Em caso de
erro, o retorno das funções deve ser diferente de zero, e uma mensagem de erro
deve ser impressa na saída de erros (stderr).

CUIDADO: Nenhuma função deve imprimir na saída padrão, a não ser


eventualmente a função que imprime a solução.

As funções/código fonte deve ser documentado no formato do Doxygen, de forma


que seja possível gerar documentação em formato HTML. A documentação deve
conter:

Nome e GRR dos autores


A descrição da função e dos seus parâmetros
A descrição das estruturas de dados
Todos os possíveis códigos de erro que a função pode produzir, explicando o
significado de cada um deles
Explicações sobre o algoritmo que por ventura sejam necessárias para a
compreensão do código

Produto a ser Entregue

O trabalho deve ser desenvolvido por um grupo composto por no máximo DOIS
alunos regularmente matriculados na disciplina. O grupo NÃO PODE SER
ALTERADO na próxima parte do trabalho.

Cada grupo deve entregar via MOODLE um pacote de software completo


contendo os fontes em linguagem C. O pacote deve ser arquivado e compactado
com zip em um arquivo chamado login1.zip (se grupo com 1 membro) ou login1-
login2.zip (se grupo com 2 membros), onde login1 e login2 são os logins dos
alunos que compõem o grupo.

O pacote deve ter a seguinte estrutura de diretório e arquivos:

./login1-login2/: diretório principal


./login1-login2/Makefile

Note que a extração dos arquivos de login1-login2.zip deve criar o diretório


login1-login2 contendo todos os arquivo acima. Os arquivos fonte também devem
estar contidos no diretório, ou em algum sub-diretório, desde que o Makefile
funcione.

Makefile
O arquivo Makefile deve possuir as regras necessárias para compilar os módulos
individualmente e gerar o programa executável. As seguintes regras devem existir
OBRIGATORIAMENTE:

3 of 4 11/09/2019 12:15
CI1164 - Introdução à Computação Científica 20192 https://moodle.c3sl.ufpr.br/mod/assign/view.php...

all: compila e produz um executável chamado pdeSolver no diretório


login1-login2/;
clean: remove todos os arquivos temporários e os arquivos gerados pelo
Makefile (*.o, executável, etc.).
doc: gera a documentação Doxygen em formato html

Critérios de Avaliação

Qualidade da documentação
Qualidade da modularização do código
Entrada e saída: funcionamento do programa de acordo com a especificação
no que tange execução, entrada e saída
Funcionamento: corretude das respostas nos testes executados
Eficiência das estruturas de dados utilizadas, desde que devidamente
justificadas

Defesa: A defesa do trabalho será oral, e definirá a nota individual de cada


membro da equipe, de acordo com seu conhecimento a respeito do trabalho.

4 of 4 11/09/2019 12:15

Вам также может понравиться