Simulation de corde évolutive à précision arbitraire


12

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.


vsdt

@dmckee, oui, je vous en prie! En réponse à votre deuxième commentaire, l'idéal serait que la force se propage efficacement à l'infini dans n'importe quel pas de temps.
imallett

Eh bien, la vitesse du son est probablement assez élevée ... mais si vos pas de temps sont inférieurs à 10 ms, cette longueur de propagation n'est encore que de quelques mètres.
dmckee --- chaton ex-modérateur

Je suis curieux de savoir si les suggestions que vous avez reçues ici ont été utiles. Je suppose que le manque d'acceptation signifie soit que vous continuez de faire le suivi, soit qu'aucune des réponses n'est exactement ce que vous espériez, mais vous ont-elles montré la voie à suivre?
dmckee --- chaton ex-modérateur

Ils ont été utiles, mais beaucoup de choses sont arrivées simultanément. J'ai clarifié mes intentions sur certaines réponses, et quand j'aurai un répit, je pourrai les suivre. Merci,
imallett

Réponses:


4

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é?


Même en utilisant le pas de temps implicite (ce qui aide), l'étirement se produit. En fait, je ne souhaite m'étirer que dans la mesure où j'essaie de m'en débarrasser. Les maths dans le papier sont au dessus de ma tête, mais j'étudie le code fortran. Pas encore utilisé de contraintes angulaires.
imallett

@IanMallett: Ok, alors les contraintes sont la voie à suivre, c'est-à-dire qu'il n'y a pas du tout d'étirement avec des contraintes.
Pedro

5

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 ROPEproblè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.


2
HMM est une méthode de réduction de modèle basée sur la projection, essentiellement. J'hésite à recommander de telles méthodes à moins qu'une application ne les exige spécifiquement; il faut être prêt à sacrifier la précision pour la vitesse. La détermination des «bons» choix des opérateurs de compression et de reconstruction (en utilisant la nomenclature de HMM) reste non triviale pour certaines applications (la combustion en est un exemple).
Geoff Oxberry

@GeoffOxberry D'accord, j'ai ajouté un avertissement. Un problème classique est de savoir comment les vibrations mécaniques d'une horloge provoquent une dérive. Un exemple de problème qui, à mon avis, serait approprié est la modélisation du fluage / glissement d'une corde autour d'un cabestan accéléré par les modes de vibration du côté chargé. Tout n'est pas une combustion. ;-)
Jed Brown

La limite zéro-stretch est fondamentalement la seule chose que j'essaie vraiment pour le moment. Des oscillations à petite échelle seraient bien, mais un tissu inélastique trop lisse est préférable pour le moment. J'ai essayé le temps implicite (via la formulation d'OpenCloth), et malheureusement, le problème persiste. Pouvez-vous élaborer / donner des liens sur la façon d'exécuter votre dernier paragraphe? Merci,
imallett

2

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.


2

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.


1
Le ROPEproblè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.
Jed Brown
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.