Je voudrais résumer les connaissances nécessaires à la construction d'un code d'analyse numérique des fluides pour les liquides, tout en étudiant également la dynamique numérique des fluides (CFD). Il semble qu'il y ait beaucoup d'erreurs, alors veuillez nous contacter si vous le trouvez.
Cet article traite des simulations numériques monophasées telles que gaz uniquement ou liquide uniquement. Après avoir brièvement expliqué l'équation gouvernante du fluide, il est configuré pour mettre en œuvre l'algorithme de calcul numérique du fluide incompressible nécessaire à la simulation du liquide. Enfin, nous simulerons l'écoulement de la cavité (sensation de rotation du fluide dans la zone / figure ci-dessous). En ce qui concerne le flux de cavité, @ eigs Solution numérique de l'équation incompressible de Navier-Stokes 1: Introduction est facile à comprendre et le graphique est également beau.
chapitre | Titre | Remarques |
---|---|---|
1. | Solution fluide | |
1.1. | Equation de régulation fluide | |
1.2. | Compressible et incompressible | |
2. | Algorithme de calcul de fluide incompressible | |
2.1. | Méthode MAC | Marker And Cell method |
2.2. | Méthode par étapes fractionnaires | Aussi appelée méthode de l'étape partielle |
2.3. | Méthode SIMPLE | Semi-Implicit Method for Pressure-Linked Equation method |
2.4. | Méthode CCUP | CIP-Combined Unified Procedure method |
2.5. | Différence spatiale | Concernant le placement variable |
3. | la mise en oeuvre | Méthode CCUP |
Un fluide se compose de trois équations: une équation continue, une équation Navigator Stokes et une équation d'énergie. Chaque équation est dérivée de la conservation de masse, de la conservation de l'élan et de la conservation de l'énergie. C'est peut-être plus déroutant, mais j'ajouterai également une image de chaque formule.
\frac{\partial \rho}{\partial t} + (\vec{u} \cdot \nabla) \rho = - \rho \nabla \cdot \vec{u} \\
\quad or \\
\frac{\partial \rho}{\partial t} + \nabla \rho \vec{u} = 0
Il peut être dérivé du fait que le changement de masse dans un certain volume de test est égal au débit massique $ \ rho \ vec {u} $ qui entre et sort de la surface divisé par l'aire. Pour expliquer avec un exemple facile à comprendre, la formule ci-dessus montre que le montant de la monnaie dans le portefeuille est égal au montant obtenu en soustrayant le montant d'argent passé par la porte du portefeuille.
\rho \frac{\partial \vec{u}}{\partial t} + \rho (\vec{u} \cdot \nabla)\vec{u} = - \nabla p + \mu \nabla^2 \vec{u} + (\mu + \lambda) \nabla (\nabla \cdot \vec{u}) + \vec{F_B} \\
\quad or \\
\rho \frac{\partial \vec{u}}{\partial t} + \rho (\vec{u} \cdot \nabla)\vec{u} = - \nabla p + \nabla \cdot {\bf T}_{\nu} + \vec{F_B} \\
, where \quad {\bf T}_{\nu} = \lambda (\nabla \cdot \vec{u}) {\bf I} + 2 \mu {\bf D} \quad :Tenseur des contraintes visqueuses\\
{\bf D} = \frac{1}{2} \left\{(\nabla \vec{u}) + (\nabla \vec{u})^T \right\} :Tenseur du taux de déformation\\
\quad \vec{F_B} \quad :Force de volume(Principalement la gravité) \\
\quad \mu :Coefficient visqueux
La quantité de mouvement du fluide est $ gradient de pression: \ nabla p $, $ diffusion due à la viscosité: \ nabla \ cdot {\ bf T} _ {\ nu} $, $ force volumique (gravité etc.): \ vec {F_B} $ Indique que vous serez affecté. Pour donner un exemple d'image, il peut être utile d'imaginer que lorsqu'un garçon frappe une balle, la vitesse de la balle change en raison des effets de la différence de pression, de la viscosité et de la gravité.
\rho \frac{\partial e}{\partial t} + \rho (\vec{u} \cdot \nabla) e = -p \nabla \cdot \vec{u} - \nabla \cdot (\kappa \nabla T) + {\bf T}_{\nu} : {\bf D} + \dot{L} \\
, where \quad \dot{L} :Quantité de chaleur générée par les réactions chimiques, etc.\\
\quad \kappa :Conductivité thermique
cependant,
{\bf T}_{\nu} : {\bf D} = tr({\bf T}_{\nu} \cdot {\bf D})
La quantité de changement de l'énergie interne du fluide est le travail $ \ nabla \ cdot \ vec {u} $ dû à la pression, le bilan énergétique dû à la conduction thermique $ \ nabla \ cdot (\ kappa \ nabla T) $, et l'énergie dissipée due à la viscosité $ {\ bf Cela signifie qu'il est affecté par $ \ dot {L} $ tel que T} _ {\ nu} \ cdot \ nabla \ vec {u} $ et des réactions chimiques. Cette formule vous permet de calculer le changement de température du fluide. En bref, le changement de température du fluide est égal à la quantité de chaleur ajoutée.
La figure ci-dessus peut être résumée comme suit.
L'équation gouvernante du fluide dans un système non conservateur est illustrée ci-dessus, et si le côté droit est défini sur 0, cela signifie l'équation de transfert de densité, de vitesse et d'énergie interne (formule qui signifie le mouvement des substances). Un système non conservateur est une forme dans laquelle des variables existent en dehors de la différenciation, et il n'y a aucune garantie que les résultats du calcul satisfont à la loi de conservation, il est donc nécessaire de confirmer le caractère prudent lors de l'exécution de calculs numériques. Le contraire du système non conservateur est appelé le système conservateur, qui est une expression dans laquelle toutes les variables sont incluses dans le différentiel.
L'équation présentée dans la section 1-1 est l'équation dominante pour les fluides compressibles. Un fluide compressible est un fluide dont la vitesse d'écoulement est d'environ 0,3 fois la vitesse du son (le nombre de Mach est de 0,3), et un fluide dont l'écoulement est plus lent est généralement reconnu comme un fluide incompressible. En bref, si le fluide se déplace trop vite, le fluide lui-même se dilate et se contracte (changements de densité), le rendant compressible, et s'il est lent ou dense, le fluide ne se dilate pas ou ne se contracte pas et est traité comme incompressible. Par conséquent, le liquide est essentiellement traité comme non comprimé.
La formule présentée dans la section 1-1 est transformée en une formule non compressée. Tout ce que nous avons à faire est de traiter la densité comme une constante plutôt qu'une variable pour simplifier la formule. Les équations de Navier Stokes et d'énergie sont simplifiées en utilisant des équations continues. De plus, nous ignorerons ici les effets des réactions chimiques.
Les équations des fluides compressifs et non compressibles peuvent être résumées comme suit.
Équation de base | Compressibilité | 非Compressibilité |
---|---|---|
a.Formule continue | $ \nabla \cdot \vec{u} = 0$ | |
b.Équation de Navier Stokes | $\rho \frac{\partial \vec{u}}{\partial t} + \rho (\vec{u} \cdot \nabla)\vec{u} = - \nabla p + \mu \nabla^2 \vec{u} + (\mu + \lambda) \nabla (\nabla \cdot \vec{u}) + \vec{F_B} $ | $\rho \frac{\partial \vec{u}}{\partial t} + \rho (\vec{u} \cdot \nabla)\vec{u} = - \nabla p + \mu \nabla^2 \vec{u} + \vec{F_B} $ |
c.Équation énergétique |
Puisque nous cherchons à simuler des liquides, ce chapitre décrira comment résoudre les fluides incompressibles. Fondamentalement, nous allons construire une équation discrète en utilisant une équation incompressible. Pour éviter les complications, nous ignorerons ici les équations d'énergie et entendons résoudre "explicitement" avec la méthode explicite et "résoudre implicitement" avec la méthode implicite. En gros, je me réfère à Compressible Fluid Dynamics.
Les algorithmes de calcul typiques sont résumés dans le tableau ci-dessous. La méthode MAC (Maker And Cell), la méthode Fractional Step et la méthode SIMPLE sont les algorithmes de calcul de base pour les fluides incompressibles. Puisqu'il est implémenté dans divers sites et livres, je n'expliquerai que le principe ici. À la fin de ce chapitre, nous mentionnons la méthode CCUP (CIP-Combined Unified Procedure) et l'implémentons dans le chapitre suivant. La méthode CCUP est une méthode de résolution de l'équation des fluides par la méthode CIP utilisée dans les articles précédents.
algorithme | Terme de translocation | Terme de diffusion | Terme de pression |
---|---|---|---|
Système MAC | Méthode explicite | Méthode explicite | Méthode implicite |
Méthode par étapes fractionnaires | Méthode explicite | Méthode implicite | Méthode implicite |
---- | Méthode implicite | Méthode explicite | Méthode implicite |
Système de méthode SIMPLE | Méthode implicite | Méthode implicite | Méthode implicite |
Méthode CCUP | Méthode explicite | Méthode expliciteorMéthode implicite | Méthode implicite |
La méthode MAC (Maker And Cell) est une solution de base dans le calcul des fluides car elle permet de résoudre différents flux de manière stable. La procédure de calcul est la suivante.
L'équation de pression et l'équation de vitesse sont calculées comme suit. Multipliez l'équation de Navier Stokes par $ \ nabla $ pour prendre la divergence et la disperser.
\nabla^2 p^{n+1} = - \nabla \cdot \left\{(\vec{u^n} \cdot \nabla )\vec{u^n} \right\} + \frac{\nabla \cdot \vec{u^n}}{\Delta t} + \nabla \cdot \left\{ \nu \nabla^2 \vec{u^n} + \frac{1}{\rho}\vec{F}_B\right\}
Il peut être obtenu. De plus, si le terme de translocation et le terme de viscosité de l'équation de Navier Stokes sont explicitement séparés dans le temps,
\frac{\vec{u^{n+1}} - \vec{u^n}}{\Delta t} = - (\vec{u} \cdot \nabla)\vec{u^n} - \frac{1}{\rho} \nabla p^n + \nu \nabla^2 \vec{u^n} \\
\nabla \cdot \vec{u^{n+1}} = 0
Il peut être obtenu. En résolvant délibérément $ \ nabla \ cdot \ vec {u ^ n} $ sans le mettre à 0, nous concevons des moyens de supprimer les erreurs lors de la dispersion.
Il existe la méthode SMAC (Simplified MAC), la méthode HSMAC (Highly Simplified MAC), etc. comme algorithme de calcul du système de méthode MAC. Ceux-ci ont été proposés pour résoudre la méthode MAC à grande vitesse.
Dans la méthode MAC, le terme visqueux est résolu par la méthode explicite, et il est grandement affecté par la limitation de largeur de pas de temps (condition CFL). La méthode de l'étape fractionnaire décrite dans cette section est une méthode qui résout le problème des conditions CFL en évaluant implicitement le terme de viscosité. Aussi connue sous le nom de méthode par étapes partielles. En tant que caractéristique, dans la formule liée à la vitesse utilisée dans la méthode MAC, la vitesse et la pression ont été mélangées sur le côté droit, mais dans la méthode Fractional Step, la vitesse et la pression sur le côté droit sont complètement séparées comme suit.
\frac{\bar{u} - \vec{u^n}}{\Delta t} = - (\vec{u} \cdot \nabla)\vec{u^n} + \nu \nabla^2 \vec{u^n} \\
\frac{\vec{u^{n+1}} - \bar{u}}{\Delta t} = - \frac{1}{\rho} \nabla p^{n+1} \\
\nabla \cdot \vec{u^{n+1}} = 0
Comme procédure de calcul
Abréviation de la méthode semi-implicite pour la méthode d'équation liée à la pression, qui est formulée en fonction de la méthode implicite. vouloir en savoir davantage! Bases de l'analyse thermo-fluide 64 Chapitre 6 Méthode d'analyse thermo-fluide: 6.5.4 Méthode SIMPLE explique en détail.
\bar{u} = \vec{u^n} - \Delta t \left\{(\bar{u} \cdot \nabla)\bar{u} + \nabla p - \nu \nabla^2 \bar{u}\right\}
La méthode CCUP est une méthode construite par Yabe et al., Qui ont conçu la méthode CIP, comme lorsque l'équation de Burgers dans article précédent a été résolue par la méthode CIP. , L'équation gouvernante du fluide est calculée séparément pour la phase de translocation et la phase de non-translocation. Shimizu et al. et Himeno et al. Le papier de S est facile à comprendre. Puisque l'ordre de résolution des termes de translocation et de non-translocation diffère d'une personne à l'autre, nous les résoudrons dans l'ordre présenté dans le dernier article ci-dessous. En tant qu'algorithme
Je vais résoudre dans l'ordre. Bref, après le transfert et la diffusion de la substance, je pense que la vitesse de déplacement est extrêmement rapide (la même vitesse que la vitesse du son) et le Tsuji est ajusté.
Avant d'entrer dans l'implémentation, nous pouvons l'implémenter sans connaître la méthode de la différence spatiale, mais je la mentionnerai brièvement. En effet, une vibration de pression appelée instabilité en damier peut se produire en fonction de l'endroit où la variable est placée dans l'espace.
Dans la méthode ci-dessus, la politique de base est d'utiliser la grille échelonnée pour le calcul, mais dans la mise en œuvre de cet article, le calcul numérique est effectué en utilisant la grille régulière (~~ Je ne pouvais pas comprendre la motivation lors de l'utilisation de la grille échelonnée, etc. Alors ~~).
Il est implémenté par la méthode CCUP. Le problème à résoudre est l'écoulement de la cavité, qui donne l'impression de donner une vitesse latérale à la paroi supérieure, provoquant un vent dans le sens des aiguilles d'une montre dans la zone. Le code est publié sur Github. Ignorez l'équation énergétique. Puisque le terme de transfert et le terme de diffusion ont été décrits dans l'article précédent, le nouveau contenu du code est la partie d'équation de pression, mais le calcul du terme de diffusion et La structure est presque la même. Dans le calcul lié à la pression, certains éléments tels que le terme de transfert sont omis. De plus, les conditions aux limites sont assez grossières
Si vous exprimez la vitesse avec une ligne rouge et la pression avec un contour bleu, vous pouvez voir qu'un graphique comme celui-ci est généré.
scipy.sparse.dia_matrix
Nous utilisons scipy.sparse.dia_matrix
pour créer la matrice d'équation simultanée unidimensionnelle $ {\ bf A} $ $ {\ bf A} \ vec {x} = \ vec {b} $. Cette matrice $ {\ bf A} $ est appelée matrice creuse, et comme la plupart des éléments de la matrice sont composés de 0, elle est spécifiée par scipy.sparse.dia_matrix
Méthode de stockage à compression diagonale (DIA). est efficace en termes de mémoire et ainsi de suite. D'autres formats de stockage de matrice clairsemée sont décrits dans [Python] Articles qui permettent le calcul de matrices clairsemées à grande vitesse.
Un exemple est présenté ci-dessous.
#Préparez un ou plusieurs tableaux de même longueur. Notez que vous avez besoin de la même longueur.
data = np.array([np.arange(10), np.arange(20,30)], np.arange(30,40))
#Déterminez le décalage de la matrice diagonale en fonction de l'indice des données. 0:Matrice diagonale,Nombre positif:Face supérieure,Nombre négatif:Inférieur
#Notez que si l'offset est positif, le tableau sera rogné depuis le début et si l'offset est négatif, le tableau sera rogné depuis l'arrière.
offsets = np.array([0, 2, -3])
a_matrix = scipy.sparse.dia_matrix((data, offsets), shape=(len(data[0]), len(data[0]))) #Définissez la forme de la matrice avec la forme.
print(a_matrix)
# <10x10 sparse matrix of type '<class 'numpy.int64'>'
# with 25 stored elements (3 diagonals) in DIAgonal format>
print(a_matrix.todense())
# matrix([[ 0, 0, 22, 0, 0, 0, 0, 0, 0, 0],
# [ 0, 1, 0, 23, 0, 0, 0, 0, 0, 0],
# [ 0, 0, 2, 0, 24, 0, 0, 0, 0, 0],
# [30, 0, 0, 3, 0, 25, 0, 0, 0, 0],
# [ 0, 31, 0, 0, 4, 0, 26, 0, 0, 0],
# [ 0, 0, 32, 0, 0, 5, 0, 27, 0, 0],
# [ 0, 0, 0, 33, 0, 0, 6, 0, 28, 0],
# [ 0, 0, 0, 0, 34, 0, 0, 7, 0, 29],
# [ 0, 0, 0, 0, 0, 35, 0, 0, 8, 0],
# [ 0, 0, 0, 0, 0, 0, 36, 0, 0, 9]])
Ensuite, je voudrais parler de la simulation biphasée gaz-liquide (gaz et liquide).
Recommended Posts