Quais são as melhores práticas para algoritmos e implementação de simulações multi-físicas?

16

A simulação multi-física envolve o acoplamento de várias "físicas", geralmente com diferentes escalas de espaço e / ou tempo. Além disso, os códigos de física única são frequentemente escritos por equipes diferentes. A técnica de acoplamento mais comumente usada é a divisão do operador de primeira ordem, mas isso tem propriedades precisas de estabilidade e estabilidade. Como determino quais algoritmos serão eficazes para um problema de interesse e como devo estruturar meu software para disponibilizá-los?

Jed Brown
fonte

Respostas:

5

Eu defendo fortemente uma montagem totalmente acoplada, pois isso pode reproduzir facilmente as versões divididas pelo operador. Especificamente, as rotinas que calculam o residual e o jacobiano para diferentes físicas podem ser separadas, mas a estrutura deve ser capaz de combiná-las para formar um resíduo unificado para todo o sistema. É assim que o PETSc funciona.

Em seguida, as soluções de divisão do operador podem ser usadas como pré-condicionador para o sistema totalmente acoplado ou como solucionador por si só, tudo na linha de comando. Além disso, alguns acoplamentos podem ser preservados, enquanto outros podem ser descartados. O PETSc lida com isso através da interface PC FieldSplit. Isso permite a replicação de esquemas híbridos, como ICE semi-implícito para dinâmica de fluidos.

Matt Knepley
fonte
5

Como essa é uma área de pesquisa muito ativa, hesito em tentar responder a isso, mas tenho alguma experiência sobre o que não tentar.

Não :

  • Pegue o código do aplicativo antigo A e o aplicativo B e tente uni-los
  • Use código arcaico (implicando inutilizável em retrospectiva), em vez de criar um novo aplicativo
  • Exigir uma estrutura enorme (> 10 dependências necessárias) para novos usuários começarem a contribuir
  • Suponha que o layout dos dados (malhas, matrizes, vetores, etc.) seja fácil de escrever

Faça :

  • Use práticas de programação padrão e, esperançosamente, bons padrões de design
  • Leia a literatura sobre divisão do operador para entender as limitações de precisão e estabilidade
Sean Farley
fonte