J'essaie d'optimiser un distributeur de débit dans un réservoir de telle sorte que la distribution de la vitesse et de la température à travers n'importe quelle section transversale soit relativement uniforme. Il y a de nombreux paramètres que je peux ajuster à l'uniformité transversale maximale, tels que le nombre de tuyaux d'entrée, leur position, leur orientation et leur direction. Je sais que je peux créer un certain nombre de géométries différentes et les tester individuellement, mais cela prend beaucoup de temps. J'aimerais pouvoir écrire un programme qui peut tester plusieurs cas à la fois (en parallèle), et choisir de manière adaptative un nouvel ensemble de géométries à tester en fonction des résultats précédents. Comment puis-je faire cela au mieux?
la source
Réponses:
Ce que vous voulez faire, c'est optimiser la forme en utilisant des méthodes basées sur un gradient. Cela signifie essentiellement que vous devez calculer le gradient de la fonction objectif par rapport aux paramètres de votre modèle.
Pour un petit nombre de paramètres, vous pouvez utiliser FD, mais pour un grand nombre de paramètres, vous devez examiner les méthodes adjointes. Si vous utilisez un code commercial ou le code de quelqu'un d'autre qui ne peut pas résoudre les équations adjointes, FD est votre seule option.
Consultez les livres de base sur l'optimisation des formes de base.
Edit: Pour les problèmes structurels FE, vous pouvez consulter le livre de Choi et Kim I et II
la source
Si vous paramétrez correctement votre pièce de construction géométrique, il s'agit d'un problème d'optimisation de boîte noire avec des paramètres mixtes discrets et continus.
DAKOTA http://dakota.sandia.gov/ et NOMAD http://www.gerad.ca/NOMAD/Project/Home.html sont deux packages utiles qui vous permettent de choisir automatiquement les meilleures sélections de paramètres. (DAKOTA a un meilleur support d'application, mais NOMAD a probablement les meilleurs optimiseurs.)
Pour faire varier la géométrie, introduisez un paramètre discret ou continu pour chaque contrôle avec lequel vous souhaitez influencer la géométrie et automatisez la construction de la géométrie à partir de la collection de contrôles. Notez que les méthodes sans dérivé sont assez lentes dans les dimensions élevées, donc gardez le nombre de paramètres raisonnablement petit.
Après avoir fini d'explorer l'espace avec l'un des packages ci-dessus, vous pouvez affiner l'analyse en effectuant une optimisation plus précise dans laquelle tous les paramètres discrets et tous les paramètres continus sont fixés pour lesquels vous ne pouvez pas obtenir de dérivé analytique. Mais vous pouvez augmenter le nombre de paramètres de forme continue par rapport auxquels vous pouvez calculer des dérivés analytiques, car un optimiseur basé sur un gradient (tel que IPOPT https://projects.coin-or.org/Ipopt ) peut gérer efficacement des problèmes beaucoup plus importants .
Si vous ne savez pas comment obtenir le dérivé mais que la dépendance est fluide, vous pouvez envisager d'utiliser un programme de différenciation automatique ou de coder votre problème continu dans AMPL, auquel cas l'interface du solveur prendra en charge les dérivés.
Pour les bases de l'optimisation de forme, voir, par exemple, Haftka, RT et Grandhi, RV, optimisation de forme structurelle - Une étude, Méthodes informatiques en mécanique appliquée et en génie 57 (1986), 91-106. (Faites confiance à la description de la modélisation; mais n'utilisez pas les solveurs qu'ils recommandent, car la technologie d'optimisation s'est beaucoup améliorée depuis lors.)
la source
En ce qui concerne le paramétrage de la géométrie est en cause (comme Geoff a souligné une non triviale) - je peux sincèrement recommander Brenda Kulfan - Méthode de représentation de la géométrie paramétrique universelle, J. Aircraft, Vol.45, No.1,2008 .
L'approche décrite est applicable à l'optimisation aérodynamique des avions.
la source
Il y a aussi l'optimisation de l'espace adjoint, qui semble être beaucoup plus rapide que l'optimisation paramétrique standard dans CFD. Récemment, il a eu une grande augmentation de popularité au sein de la communauté CFD en général, et dans OpenFOAM en particulier. Nous organisons actuellement un atelier sur OpenFOAM et nous avons reçu de nombreuses soumissions de résumés concernant cette méthode. Si vous êtes intéressé, vérifiez ceci , pour d'autres informations, google "optimisation de la forme de l'espace adjoint dans CFD".
Information additionnelle:
Si vous pouviez utiliser OpenFOAM, il existe une bibliothèque basée sur Python qui est utilisée pour une telle chose, pour manipuler une grande quantité de cas et changer leurs paramètres appelés PyFoam . Pour une géométrie simple, vous pouvez définir un maillage comme un simple blockMesh et répéter ce que vous voulez. Pour un cas simple, il s'agit d'écrire quelques boucles en Python. Voici à quoi ressemble le script si vous modifiez la vitesse des conditions aux limites "d'entrée". De simples changements de géométrie de maillage constitueraient quelques lignes de code supplémentaires ...
la source
Vous auriez besoin de:
Les fonctionnalités suivantes sont cruciales pour l'outil CFD:
Je peux donc recommander les logiciels suivants:
Bibliothèque de simulation avancée qui offre
Haute performance:
Haute flexibilité et convivialité:
Génération et manipulation de primitives géométriques .
la source