Eu gostaria de entender mais detalhes sobre a implementação de Algebraic Multigrid Methods (AMG). Eu tenho lido "Um tutorial multigrid", que é muito bom e explica todos os detalhes da interpolação, operador de grade grossa e seleção de grade grossa para AMG. No entanto, acho que não há nada como brincar e ler um código.
Então, eu gostaria de perguntar se alguém conhece algum "código de exemplo" clássico da AMG, como o código FORTRAN geométrico multigrid disponível no final de "Métodos Multigrid" (SIAM) de SF McCormick. É muito difícil obter um código de alta qualidade e produção como o BoomerAMG para aprender mais sobre o método.
Respostas:
O BoomerAMG faz parte do pacote Hypre , que é simples de adquirir. Um código muito menos complexo se você começar a analisar esses métodos pode ser o PyAMG .
fonte
Eu recomendo a introdução de Alfio Borizi ao método multigrid algébrico. Há um exemplo de código fortran 77 no apêndice A.
fonte
Há também o pacote ML que faz parte do Trilinos. Sua reputação é igualmente boa como a do BoomerAMG / hypre.
Um pacote Trilinos mais recente para AMG é chamado MueLu, acredito, e também deve estar disponível nas versões mais recentes.
Todos estes são de código aberto.
fonte
Estou trabalhando nessa implementação há um tempo. É Python / Numpy / Scipy. Não é multigrid algébrico - você precisa fornecer seu próprio operador de restrição. Mas se é uma implementação educacional em que você está interessado, gostaria de receber algumas solicitações pull para adicionar essa capacidade.
fonte