J'essaie de simuler un objet corde. La formulation que je comprends est un ensemble de particules, reliées par des ressorts. Ces ressorts ont de très grandes valeurs k, de sorte que la ligne se déforme, mais s'étire très peu. J'ai conclu que résoudre cela en fonction du temps n'est pas possible sous forme fermée car une corde est une généralisation d'un pendule (qui n'est pas sous forme fermée).
Se contenter de solutions approximatives, alors. J'ai besoin d'un algorithme qui évolue bien. Des exemples que j'ai vus utilisent l'intégration eulérienne explicite ou implicite pour déplacer les particules. Cela ne change pas d'échelle.
Pour voir cela, considérons une corde à n nœuds. Appliquez une force importante à une extrémité. Parce que la corde ne doit pas s'étirer beaucoup, l'accélération à l'autre extrémité doit être immédiate.
Cependant, avec l'intégration eulérienne, pour obtenir une force à l'autre extrémité, il faut n étapes. Je remarque une décroissance exponentielle: si le premier nœud accélère une certaine quantité, alors les nœuds adjacents accélèrent moins (s'ils accélèrent au même rythme, alors l'algorithme n'est pas stable). Par conséquent, les nœuds adjacents à ce nœud accélèrent encore plus lentement!
Ainsi, à n nœuds de distance, l'accélération est presque négligeable. Cela conduit à une corde qui s'étire considérablement. Si vous voulez seulement doubler la résolution de la simulation, vous devez soudainement prendre des pas de temps qui sont des dizaines ou des centaines de fois plus petits pour obtenir un comportement similaire.
Je recherche une méthode simple qui résout ce problème - c'est-à-dire que des simulations de résolution plus élevée convergent vers la solution avec seulement un calcul supplémentaire de temps polynomial. Une bibliothèque complète de techniques de matrice et d'algèbre linéaire est disponible. Ma connaissance de la mécanique classique est très bonne et je connais quelques analyses numériques.
la source
Réponses:
Tout d'abord, comme Jed Brown l' a mentionné, vous devez utiliser un schéma de temps implicite car votre problème semble assez rigide, ou au moins un schéma plus stable, mais tout aussi simple, comme l' intégration Leapfrog ou l' intégration Verlet .
Quant au problème physique, comment vous intéressez-vous à l'étirement? Au lieu de relier les particules à des ressorts rigides, vous pouvez utiliser des contraintes holonomiques , par exemple vous assurer que la distance entre les paires de particules reste constante. Les contraintes doivent être résolues à chaque pas de temps, et il existe des algorithmes efficaces pour exactement votre configuration, c'est-à-dire une longue chaîne de contraintes liées. Voir, par exemple, cet article .
Par simple curiosité, utilisez-vous également des potentiels angulaires le long de la corde pour modéliser sa flexibilité?
la source
Vous avez un système rigide avec la formulation actuelle. L'étirement dynamique et la vibration dans la corde sont (sans doute) sans intérêt, mais ils contrôlent le pas de temps explicite. Cela indique l'utilisation d'une méthode d'intégration temporelle implicite. Vous pouvez utiliser l'amortissement pour éviter les oscillations qui auront tendance à perturber le contrôle d'erreur adaptatif pour la méthode implicite.
Si les oscillations à petite échelle sont importantes à modéliser malgré le fait de vouloir les dépasser (par exemple, pour la modélisation de la fatigue), alors vous voudrez peut-être découvrir de nouvelles méthodes à plusieurs échelles telles que la méthode à plusieurs échelles hétérogènes (Engquist, Tsai, etc.) ou semi- spectrale dans les méthodes temporelles. L'utilisation de telles méthodes est un sujet de recherche et vous devez bien comprendre votre problème et les capacités de la méthode pour décider s'il peut être approprié. Si vous voulez économiser de l'énergie, par exemple que certains modes de vibration ne devraient pas se dissiper, alors vous devriez regarder des intégrateurs symplectiques tels que Verlet.
Vous pouvez également résoudre la limite d'étirement zéro si vous le souhaitez. Avec des termes inertiels, le modèle peut être reformulé en termes d'angles, conduisant à un système ODE non rigide. Comme l'a souligné Faleichik, c'est le
ROPE
problème de test considéré dans le livre de Hairer, Nørsett et Wanner. Si vous jetez l'inertie de la corde elle-même, mais que vous laissez du mou (corde légère à faible étirement avec un chargement discret; pas un modèle commun), le problème devient une inégalité variationnelle différentielle (DVI) et vous ne pouvez généralement pas obtenir une précision supérieure au premier ordre dans temps.la source
Si vous êtes intéressé par une solution rapide et approximative, les méthodes utilisées dans les effets numériques tels que la géométrie différentielle discrète peuvent vous intéresser. Je connais une formulation quasi statique dans Discrete Elastic Rods , un article de 2008 du groupe de Grinspun à Columbia University, mais il existe probablement une littérature plus récente dans ce domaine.
la source
Le mouvement de la corde suspendue est un problème de test bien-aimé de Hairer et Wanner qui est apparu dans le deuxième volume (rigide) de "Solving Ordinary Differential Equations" et dans la deuxième édition du premier volume (1993). Je recommande la dernière option, page 247. Les équations sont difficiles à dériver et l'algorithme de solution numérique n'est pas très simple. Bien qu'à la fin des pas de temps explicites conventionnels comme DOPRI, RK45 ou ODEX soient appliqués et se comportent plutôt bien, le problème n'est donc pas vraiment rigide.
la source
ROPE
problème du livre modélise une corde qui ne s'étire pas, avec une dynamique dominée par des effets inertiels. La question semble se poser sur les cordes qui s'étirent.