Existe-t-il un bon solveur CFD open source de haute qualité et facile à utiliser?


17

Ma thèse porte sur le développement de méthodes numériques pour la réduction des modèles de combustion. J'exécute mes méthodes uniquement sur la partie chimie des simulations de combustion, et j'ai de nombreuses études de cas pour les simulations 0-D (sans débit). Ce que j'aimerais, c'est exécuter des simulations qui contiennent du flux, de préférence des simulations 2D ou 3D.

Ces simulations devraient être parallèles, en raison des exigences de calcul élevées. J'aurais également besoin de quelque chose qui puisse s'interfacer avec des solveurs de chimie comme Chemkin ou Cantera, pour lesquels j'ai le code source. (Chemkin est en Fortran 77, et Cantera est en C ++.)

Dans le cas idéal, je pourrais spécifier un schéma d'écoulement en utilisant les connaissances de base de la mécanique des fluides que j'ai de mon programme d'études supérieures et de certains packages CFD, ajouter la chimie et l'exécuter. Si je le dois, je peux configurer les équations régissant le mouvement des fluides et la chimie pour une étude de cas simple basée sur une configuration expérimentale utilisée par un ancien collaborateur, mais je préférerais de loin ne pas rouler mon propre code CFD à moins qu'il n'y ait un ou des packages qui ont rendu extrêmement facile le faire. Je serais prêt à y passer 2-3 semaines; Je ne sais pas si cette exigence exclut PETSc ou Trilinos. Si je dois y consacrer plus de temps, je préfère le reporter à plus tard, car j'ai un collaborateur qui fournit également un code CFD pour les études de cas.

Quelqu'un a-t-il une expérience de l'utilisation d'un package CFD ou de l'écriture de code CFD, et si oui, pouvez-vous en recommander un? Je sais que j'aimerais utiliser le fractionnement de Strang, mais je ne suis pas un expert en CFD ou PDE; J'étudie la chimie et les méthodes numériques pour la réduction du modèle. Veuillez également indiquer le temps qu'il vous a fallu pour vous familiariser avec le logiciel que vous recommandez.

@FrenchKheldar souligne que je devrais mentionner les caractéristiques des problèmes que j'aimerais résoudre:

  • Gaz idéal (parfait), monophasé
  • Compressible
  • Le flux laminaire est essentiel; un écoulement turbulent est un plus. (Je connais un peu la turbulence des travaux précédents sur les méthodes numériques en CFD, mais je n'ai pas travaillé sur les solveurs CFD; je connais juste un peu la physique.)
  • La formulation du nombre zéro-Mach est correcte (je ne me soucie pas des chocs ou du flux supersonique)
  • Chimie de la combustion, ignorant les flux de Soret et Dufour et traitant la diffusion comme Fickian
  • La géométrie peut être quelque chose de simple

Je peux écrire du code d'interfaçage, mais moins j'en ai à écrire, mieux c'est; @FrenchKheldar souligne également que Cantera a des liaisons Fortran et Python. J'utilise les liaisons Cantera Python en ce moment pour le prototypage rapide, donc je suis à l'aise avec celles-ci également.


Cantera a des wrappers pour python et Fortran, ce qui élargit un peu la recherche.
FrenchKheldar

Vous souhaitez modéliser des écoulements laminaires ou turbulents? Compressible ou incompressible? Du gaz parfait? Monophasé? Plus vous nous fournirez de détails, plus la réponse sera précise.
FrenchKheldar

@FrenchKheldar: Merci de l'avoir signalé. J'ai ajouté quelques détails.
Geoff Oxberry

2
Encore un commentaire: si vous ne vous souciez pas de l'acoustique ou des ondes, ne devriez-vous pas pouvoir utiliser un solveur incompressible? Cela élargira vos possibilités ...
FrenchKheldar

Permettez-moi de reformuler: je me fiche des chocs. Étant donné que la phase est un gaz idéal et que les gaz parfaits changent de densité lorsque la pression change, le débit doit être compressible.
Geoff Oxberry

Réponses:


11

Je suis un grand utilisateur d' OpenFOAM , donc naturellement je le recommanderais. Il a une grande quantité de fonctionnalités, y compris des modèles de combustion (mais pas nécessairement exactement ce dont vous avez besoin) et a été utilisé avec Canterra par d'autres personnes. Si vous avez besoin d'un solveur pour une équation spécifique qui n'a pas encore été implémentée, vous pouvez à peu près littéralement écrire vos équations . Je ne sais pas ce qu'est l'éclatement (je ne travaille pas moi-même sur la combustion), mais d'autres personnes l'ont utilisé dans OpenFOAM .

Il existe un nombre limité de tutoriels. Celles documentées dans le guide de l'utilisateur n'incluent pas la chimie. Il existe des exemples de cas pour les solveurs de réaction que vous pouvez consulter. Votre meilleur pari est de consulter le site Web des cours pour diplômés OS-CFD à Chalmers (le lien est pour 2011, mais il contient un lien vers les pages des années précédentes). Les étudiants là-bas documentent souvent les solveurs sur lesquels ils travaillent, par exemple ici .

À propos de l'effort pour l'apprendre: Si vous obtenez en utilisant l'un des modèles prédéfinis, il est assez simple à utiliser et vous devriez pouvoir obtenir des résultats en quelques semaines. Si vous devez descendre sous le niveau supérieur (par exemple pour ajouter un nouveau solveur ODE), les choses peuvent devenir plus difficiles assez rapidement et vous apprécierez de connaître le C ++.


Merci pour la recommandation! J'ai entendu de bonnes choses à propos d'OpenFOAM, et j'aimerais l'utiliser à l'avenir. D'après votre expérience, a-t-il été facile d'apprendre l'API? Existe-t-il de bons tutoriels ou exemples qui utilisent OpenFOAM, de préférence avec la chimie?
Geoff Oxberry

J'ai mis à jour ma réponse
akid

1
Commencez bientôt à apprendre le C ++. :) Godspeed.
tmaric

2

Vous pouvez utiliser PyClaw , une extension parallèle de Clawpack (note: je suis l'un des principaux développeurs de PyClaw). Il comprend des solveurs 2D et 3D pour les équations d'Eiscis inviscides (écoulement compressible) d'un gaz idéal. Le fractionnement de Strang est également intégré, mais vous devez ajouter vous-même l'évaluation des termes visqueux et de la chimie. L'interface avec Chemkin et Cantera devrait être simple, car PyClaw est écrit en Python et inclut déjà à la fois le code Fortran 77 et le code C.

PyClaw est relativement nouveau (bien que le code Clawpack sous-jacent soit assez ancien) et donc pas aussi établi que quelque chose comme OpenFOAM.


Merci! Je vais devoir vérifier, même si cela peut me prendre un certain temps pour y arriver. Quand j'aurai l'occasion de l'utiliser, je vous ferai savoir comment ça se passe.
Geoff Oxberry

2

Le simulateur de dynamique du feu (FDS) du NIST ressemble à ce que vous voulez. FDS est un solveur de débit à faible nombre de Mach. La densité peut changer, mais les effets acoustiques et les chocs sont négligés.

Le FDS est assez bien documenté, cependant, j'avoue que je n'ai pas regardé dans les routines principales du solveur de flux. Je ne sais pas non plus grand chose sur la façon dont le FDS gère la chimie de la combustion.

Je suggère de télécharger le dernier code à partir du site Google Code de FDS .


0

Il y en a plein là-bas!

OpenFOAM est le meilleur, à mon humble avis, mais d'autres sont à ce lien ,


Veuillez ne pas donner de réponses «lien uniquement», car les liens peuvent se briser.
Jan

Je ne voulais pas présenter toutes les options mentionnées ici comme "les miennes". Techniquement, je pouvais copier et coller tout le contenu, mais je ne suis pas cette personne. Donc, je mets le lien directement pour donner des crédits aux auteurs originaux
T3rmInAt0r

1
Bien. Mais, vous pourriez, par exemple, dire que la chaire de dynamique des fluides computationnelle et de mécanique des turbulences de l'université de Manchester a compilé une liste de logiciels open source pour les ingénieurs. Si vous le faites, les autres visiteurs peuvent toujours rechercher sur Internet dans le cas où le lien est rompu.
Jan

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.