7600017 - Introdução à Física Computacional
2º semestre de 2024

Prof.: José Abel Hoyos Neto
Sala 29, Bloco F1 2º andar
Contato: hoyos@ifsc.usp.br

Turma 2024202 - Teórica
Local: Física - Lab. de computadores Salas 205 & 206 (LEF), Campus 1
Horário: 4ª's: 09h-12h

Horário de atendimento: Livre

Monitoria: Claudio Alves Pessoa Junior (pessoa.claudio@ifsc.usp.br)

Objetivo: Apresentar aos estudantes os métodos básicos para a resolução computacional de problemas científicos.

Descrição: O curso será feito no sistema operacional Linux e a linguagem de programação científica é exclusivamente o FORTRAN-77. As aulas terão caráter essencialmente prático, com os alunos executando tarefas relacionadas ao tema da aula (projetos).

Justificativa: Já está bem estabelecido que o conhecimento de programação numérica é ferramenta fundamental para qualquer pessoa que queira produzir ciência e tecnologia.
Ao final deste curso espera-se que o(a) aluno(a) esteja capacitado(a) a resolver problemas da Física elaborando um programa numérico (código fonte) em linguagen FORTRAN (FORmula TRANslator).
A razão para uso de tal linguagem é porque ela foi idealizada para o uso científico, e possui a mais extensa biblioteca de códigos numéricos para aplicação em ciência. Existem atualmente várias formulações do FORTRAN com facilidades e versatilidades crescentes (FORTRAN-90, FORTRAN-95, etc.). Por ser uma linguagem, o FORTRAN tem uma estrutura gramatical com sintaxe própria. Estas versões mais modernas do FORTRAN têm em sua base o FORTRAN-77.
A experiência de diversos docentes ministrando este curso desde sua criação em 2003 recomenda que primeiro seja aprendido o FORTRAN-77 com todas as suas regras de sintaxe. Uma vez aprendida esta linguagem, pode-se fazer com segurança qualquer programação, notadamente as de cunho científico, mas também outras mais gerais. Mais ainda, uma vez dominado o FORTRAN-77 tem-se condições de aprender mais facilmente outras linguagens de programação.
Por fim, enfatizamos que este é um curso de algorítimo científico. O objetivo principal é aprender a usar as ferramentas básicas de programação como laços ("do" e "do while) e condicionais ("if" e "else if") para produzir algorítimos e códigos eficientes. Por isso, não será permitida a utilização de comandos facilitadores nativos das versões mais recentes do FORTRAN como, por exemplo, comandos de multiplicação de vetores e matrizes (matmul) e alocação dinâmica de memória. Apenas comandos nativos do FORTRAN-77 serão permitidos.

Recursos computacionais:
Neste curso, é dever do(a) aluno(a) familiarizar-se com o sistema operacional Linux e com a linguagem de programação FORTRAN.
Guia rápido sobre Linux: clique aqui.
Guia rápido sobre FORTRAN: clique aqui.
Manuais mais completos podem ser encontrados na internet. Por exemplo, vide https://gcc.gnu.org/fortran/.

Livro texto: Computational Physics, 2ª ed., N. J. Giordano e H. Nakanishi.
Projetos disponibilizados durante o curso.

Ementa e outros detalhes, vide sistema Júpiter

Honestidade acadêmica:
É esperado de todos que se comportem como acadêmicos responsáveis. Desonestidade acadêmica como plagiarismo, sabotagem e cola (entre outros) é uma conduta inaceitável e será tratada com o devido rigor (vide o código de ética da USP em www.prg.usp.br/wp-content/uploads/CodigoEtica.pdf).

Necessidades especiais:
As instalações de IFSC são adaptadas para aqueles com necessidades especiais de locomoção. Em todo caso e se assim julgar necessário, você é encorajado a me procurar no começo do semestre para discutirmos quaisquer outras necessidades que possa ter referente à locomoção.

Saídas de emergência:
É seu dever se familiarizar com as saídas de emergência da sala de aula e do prédio em que se encontra.

Reclamações: Procure o serviço de graduação.

O cronograma não é definitivo e pode sofrer alterações. Recarregue esta página para ter a versão mais atual.

AULA DIA ASSUNTO
01 07/08 Projeto 1; tutorial, gráficos com grace
02 14/08 Projeto 1
03 21/08 Projeto 2
04 28/08 Projeto 2
  04/09 Não haverá aula (semana da pátria)
05 11/09 EXAME 1
06 18/09 Projeto 3
07 25/09 Projeto 3
08 02/10 EXAME 2
09 09/10 Projeto 4
10 16/10 Projeto 4
11 23/10 Projeto 4
12 30/10 EXAME 3
  06/11 Não haverá aula
13 13/11 Projeto 5
  20/11 Não haverá aula (consciência negra)
14 27/11 Projeto 5
15 04/12 EXAME 4
Avaliações:
05 projetos a serem desenvolvidos ao longo do curso.
Eles devem ser elaborados individualmente em forma de relatório científico (vide detalhes abaixo) e entregues até as datas especificadas.
04 exames individuais de 3 horas cada. Os exames são baseados nos projetos.
 
Projetos:
O curso é baseado em projetos. Em classe, iremos considerar um certo tipo de problema e discutiremos como resolvê-lo usando métodos computacionais. Os projetos do curso serão baseado nessas discussões. Você terá que (i) analisar o problema, (ii) desenvolver um algorítmo, (iii) escrever seu próprio código/programa, (iv) compilar e rodar o seu programa, (v) visualizar os dados numéricos gerados, (vi) interpretar e extrair respostas desses dados e (vii) concluir sua análise.
 
Relatórios:
Para cada projeto você deverá escrever e entregar um pequeno relatório (em formato .pdf) contendo (i) uma descrição sucinta do problema e/ou do fenômeno físico envolvido, (ii) a sua estratégia de solução, e (iii) os resultados obtidos.

Discussões entre colegas são fortemente encorajadas. Entretanto, o relatório a ser entregue deve ser baseado unicamente nos seus esforços (ou seja, nos seus códigos, nos dados de suas próprias simulações compiladas pelo seu código, na sua própria interpretação dos dados, etc.), e não nos esforços de um grupo. Você ainda tem que referenciar qualquer outro documento diretamente usado.
 
Instruções:
Para cada projeto, crie um diretório em sua área (na basalto.ifsc.usp.br) de nome projeto-<nr. do projeto> (por exemplo, usando o comando mkdir <nome do diretório>).
Para cada tarefa do projeto, crie um subdiretório de nome tarefa-1, tarefa-2a, tarefa-2b, etc.
Os arquivos fontes e executáveis associados a cada tarefa devem estar dentro dos respectivos subdiretórios (mesmo que sejam repetidos) e denominados de tarefa-<nr. da tarefa>.f (não use outras extensões como .f90) e tarefa-<nr. da tarefa>.exe, respectivamente.
Os arquivos de entrada (se houver), de saída, e gráficos elaborados (se houver) também devem estar nos subdiretórios associados.
Arquivos de entrada devem ser nomeados como tarefa-<nr. da tarefa>-entrada-<nr. da entrada>.in.
Arquivos de saída devem ser nomeados como tarefa-<nr. da tarefa>-saida-<nr. da saida>.dat.

O relatório (de nome relatorio-<nr. do relatório>-<seu nr. USP>.pdf) deve conter cada tarefa com os códigos fonte, resultados e gráficos pertinentes. Tudo com a devida discussão e justificativa.
 
Entrega dos projetos:
Uma vez concluído o relatório, copie tudo para o diretório /public/fiscomp2024-2-hoyos/proj<nr. do projeto>/proj<nr. do projeto>_<seu nr. USP>.
Por exemplo, use o comando cp -r tarefa-* /public/fiscomp2024-2-hoyos/proj4/proj4_5555555. Apenas você tem acesso a este diretório até a data de entrega do relatório. Caso precise reenviar algum arquivo, faça como explicado acima.
Note que você não poderá enviar nenhum arquivo após às 23h59m59s da data de entrega. Consequentemente, relatórios atrasados não serão aceitos.
Caso haja queda de energia ou de servidor por menos de 12 horas antes da data de entrega e você não consiga transferir os arquivos, o relatório será considerado não entregue. Portanto, programe sua transferência de arquivos antecipadamente mesmo que ainda incompletos. Verifique se sua transferência foi exitosa utilizando o comando ls no diretório correspondente.
 
Projetos:

Projeto 1 (prazo de entrega: 25/08): Introdução à programação (tarefa-3-entrada-1.in)
Projeto 2 (prazo de entrega: 17/09): Sistemas aleatórios
Projeto 3 (prazo de entrega: 08/10): Cálculo numérico
Projeto 4 (prazo de entrega: 12/11): Movimento oscilatório
Projeto 5 (prazo de entrega: 04/12): O problema de Kleper

última atualização: 09/12

Nr. USP Faltas E1 E2 E3 E4 P1 P2 P3 P4 P5 NF
13863967 3 8,4 6,4 9,0 0,0 9,0 8,0 9,0 10,0   9,0
11244052   9,9 8,5 9,7 8,7 10,0 10,0 10,0 10,0 10,0 10,9
10784290 5 2,1 2,4 4,0 1,7   9,0 8,0 1,0   1,7
13685920 3 9,8 9,7 9,7 0,0   9,0 10,0 7,0 2,0 10,5
13874441 2 7,3 3,7 6,3 2,0 6,0 7,0 9,0 9,0 6,0 6,9
11238037 3 8,5 4,9 2,3 0,0 8,0 6,0 9,0   1,0 6,0
11219303 15                   0,0
11820937 12                   0,0
11811760 3 5,8 7,1 3,7 4,7 9,0 8,0 5,0 8,0   6,8
11319573 10         6,0 6,0       0,0
12689297 15                   0,0
13749757   4,2 3,0 3,7 2,3 8,0 8,0 9,0 8,0   3,6
14683930 2 8,8 5,9 9,0 0,0 9,0 8,0 9,0 7,0   8,9
14585486 3 10,0 8,5 10,0 0,0 10,0 10,0 10,0 10,0   10,7
14655491 1 8,7 2,1 8,7 4,3   8,0 8,0 5,0 3,0 8,0
11815973 4 5,9 3,8 0,0 0,0 8,0 8,0 9,0     3,2
12558190 2 10,0 8,0 6,0 7,0 10,0 8,0 10,0 8,0   9,4
14590631 1 10,0 7,5 9,3 0,0 9,0 8,0 10,0 10,0   10,0
13864012 4 2,1 2,4 2,0 0,0 7,0 8,0 9,0     0,0
13671042 4   1,4 9,3 0,0           0,0
14783730 15                   0,0
14801420 8                   0,0
14603307 3 8,9 4,2 8,0 0,0   6,0 6,0 8,0 2,0 7,7
13751295 3 8,0 4,5 6,3 8,0   8,0 5,0 4,0 7,0 8,2
14605081 3 10,0 9,7 8,0 0,0 9,0 10,0 10,0 8,0   10,3
12558655 3 8,0 4,1 6,7 0,0 9,0 9,0 10,0 9,0 7,0 7,6
10850453 12 6,5 4,2 4,3 0,0 9,0 10,0 10,0 7,0   6,1
12696479 4 3,0 1,8 0,0 0,7   6,0 5,0 2,0   0,0
12702899 4 10,0 6,8 9,0 4,7   7,0 8,0 3,0 3,0 9,2
14758908   7,7 9,0 5,3 7,0   7,0 9,0 7,0 5,0 8,7
12731015 3 7,2 3,9 0,0 2,0 8,0 7,0 9,0   5,0 4,4
13696220 3 10,0 7,2 9,0 8,7 8,0 5,0 9,0 7,0 3,0 10,2
14610427 4 10,0 6,9 8,3 9,0 2,0   6,0 4,0 6,0 9,7
14758954 2 8,0 4,0 6,3 6,0 9,0 8,0 9,0   8,0 7,8
11811801 4 3,3 1,4 0,0 0,7 6,0 9,0   2,0 5,0 0,0
11810561 4 10,0 2,8 4,3 4,7 8,0 6,0   3,0 1,0 6,9

Definições:
Os projetos e exames são avaliados por notas entre 0,0 e 10,0, e com apenas 1 casa decimal de precisão.
MP = (P1 + ... + P5)/5 = média aritmética dos projetos
Min = min{E1,...,E4} = menor nota dos exames
ME = (E1 + ... + E4 - Min)/3 = média aritmética dos exames descontando a menor nota
NF = Nota final
Critério de aprovação por nota
Critério 1: As notas de pelo menos 02 exames devem ser ≥ 3,0
Se esse critério não for atendido, então reprovado(a) com NF = Min
Critério 2: Pelo menos 04 projetos devem ser entregues (no prazo)
Se esse critério não for atendido, então reprovado(a) com NF = min{MP;4,9}
Critério 3:
Se ME ≥ 5,0 
aprovado(a) com NF = ME + 0,15*MP
Caso contrário
reprovado(a) com NF = ME.

Critério de aprovação por frequência
Mínimo de 70% de presença (máximo de 4 faltas).
OBS.:
  1. Atrasos e abstenções antes da aula terminar não são tolerados.
  2. Se o professor julgar que o(a) aluno(a) não está participando da aula, mesmo que de corpo presente, ele poderá anular a presença dele(a).
  3. Caso alguma aula não seja ministrada por motivos de força maior, uma aula de reposição será marcada pelo professor.
  4. Para abono de faltas e/ou em caso de perda de alguma avaliação, procure o serviço de graduação imediatamente (vide https://www2.ifsc.usp.br/graduacao/).
  5. Após a divulgação das notas (neste sítio eletrônico), o(a) aluno(a) tem até 15 dias para requerer correção.
Para esclarecimento de detalhes e/ou dúvidas adicionais, vide as informações acadêmicas. Persistindo a dúvida, procure o serviço de graduação.