Precisión arbitraria Simulación de cuerda escalable


12

Estoy tratando de simular un objeto de cuerda. La formulación que entiendo es una matriz de partículas, conectadas por resortes. Estos resortes tienen valores k muy grandes, de modo que la línea se deforma, pero se estira muy poco. He concluido que resolver esto en función del tiempo no es posible en forma cerrada porque una cuerda es una generalización de un péndulo (que no es de forma cerrada).

Conformarse con soluciones aproximadas, entonces. Necesito un algoritmo que se adapte bien. Los ejemplos que he visto usan integración euleriana explícita o implícita para mover las partículas. Esto no escala.

Para ver esto, considere una cuerda con n nodos. Aplica una gran fuerza en un extremo. Como la cuerda no debe estirarse demasiado, la aceleración en el otro extremo debe ser inmediata.

Sin embargo, con la integración euleriana, para llevar cualquier fuerza al otro extremo se requieren n pasos. Noto una caída exponencial: si el primer nodo acelera una cierta cantidad, entonces los nodos adyacentes aceleran menos (si aceleran a la misma velocidad, entonces el algoritmo no es estable). En consecuencia, los nodos adyacentes a ese nodo aceleran aún más lentamente.

Entonces, para n nodos de distancia, la aceleración es casi insignificante. Esto lleva a una cuerda que se estira significativamente. Si solo desea duplicar la resolución de la simulación, de repente necesita tomar medidas de tiempo que sean decenas o cientos de veces más pequeñas para obtener un comportamiento similar.

Estoy buscando un método simple que resuelva este problema, es decir, las simulaciones de mayor resolución convergen a la solución con solo un cálculo adicional de tiempo polinómico. Se encuentra disponible una biblioteca completa de técnicas de matriz y álgebra lineal. Mi conocimiento de la mecánica clásica es muy bueno, y conozco algunos análisis numéricos.


vsret

@dmckee, sí, ¡por favor! En respuesta a su segundo comentario, idealmente, la fuerza debería propagarse efectivamente infinitamente lejos en cualquier paso de tiempo.
imallett

Bueno, la velocidad del sonido es probablemente bastante alta ... pero si sus pasos de tiempo son inferiores a 10 ms, la longitud de propagación aún es de unos pocos metros.
dmckee --- ex gatito moderador

Tengo curiosidad por saber si las sugerencias que ha recibido aquí han sido útiles. Supongo que la falta de aceptación significa que todavía estás siguiendo o que ninguna de las respuestas es exactamente lo que esperabas, pero ¿te han mostrado un camino a seguir?
dmckee --- ex-gatito moderador

Han sido útiles, pero muchas cosas surgieron simultáneamente. He aclarado mis intenciones en algunas respuestas, y cuando tenga un respiro podré seguirlas. Gracias,
imallett

Respuestas:


4

En primer lugar, como ha mencionado Jed Brown , debe usar un esquema implícito de tiempo, ya que su problema parece bastante rígido, o al menos un esquema más estable, pero igualmente simple, como la integración de Leapfrog o la integración de Verlet .

En cuanto al problema físico, ¿qué tan interesado estás en el estiramiento? En lugar de conectar las partículas con resortes rígidos, puede usar restricciones holonómicas , por ejemplo, asegúrese de que la distancia entre pares de partículas permanezca constante. Las restricciones deben resolverse en cada paso de tiempo, y existen algoritmos eficientes para exactamente su configuración, es decir, una larga cadena de restricciones vinculadas. Ver, por ejemplo, este artículo .

Solo por curiosidad, ¿también estás utilizando potenciales angulares a lo largo de la cuerda para modelar su flexibilidad?


Incluso usando pasos de tiempo implícitos (lo que ayuda), ocurre el estiramiento. De hecho, estoy interesado en estirar solo en la medida en que estoy tratando de deshacerme de él. Las matemáticas en el periódico están básicamente sobre mi cabeza, pero estoy estudiando el código fortran. Aún no se utilizan restricciones angulares de ningún tipo.
imallett

@IanMallett: Ok, entonces las restricciones son el camino a seguir, es decir, no hay estiramiento en absoluto con restricciones.
Pedro

5

Tiene un sistema rígido con la formulación actual. El estiramiento dinámico y la vibración en la cuerda son (presumiblemente) poco interesantes, pero controlan el paso de tiempo explícito. Esto indica el uso de un método de integración de tiempo implícito. Puede usar la amortiguación para evitar las oscilaciones que tenderán a estropear el control de error adaptativo para el método implícito.

Si las oscilaciones de escala fina son importantes para modelar a pesar de querer pasar por encima de ellas (p. Ej., Para el modelado de fatiga), entonces es posible que desee ver nuevos métodos multiescala como el método heterogéneo multiescala (Engquist, Tsai, etc.) o semi- métodos espectrales en el tiempo. El uso de tales métodos es un tema de nivel de investigación y debe comprender bien su problema y las capacidades del método para decidir si puede ser apropiado. Si desea conservar energía, por ejemplo, que ciertos modos de vibración no deberían disiparse, entonces debería buscar integradores simplécticos como Verlet.

También puede resolver el límite de estiramiento cero si lo desea. Con términos de inercia, el modelo puede reformularse en términos de ángulos, lo que lleva a un sistema ODE no rígido. Como faleichik señaló, este es el ROPEproblema de prueba considerado en el libro de Hairer, Nørsett y Wanner. Si descarta la inercia de la cuerda en sí, pero permite la holgura (cuerda ligera y de bajo estiramiento con carga discreta; no es un modelo común), el problema se convierte en una desigualdad diferencial de variación (DVI) y generalmente no puede ser mejor que la precisión de primer orden en hora.


2
HMM es un método de reducción de modelo basado en proyección, en esencia. Dudo en recomendar tales métodos a menos que una aplicación los exija específicamente; uno tiene que estar dispuesto a sacrificar la precisión por la velocidad. La determinación de opciones "buenas" de los operadores de compresión y reconstrucción (usando la nomenclatura de HMM) sigue siendo no trivial para algunas aplicaciones (la combustión es un ejemplo de ello).
Geoff Oxberry

@ GeoffOxberry De acuerdo, agregué una advertencia. Un problema clásico es cómo las vibraciones mecánicas en un reloj causan deriva. Un problema de ejemplo que creo que sería apropiado es modelar el deslizamiento / deslizamiento de una cuerda alrededor de un cabrestante acelerado por modos vibratorios desde el lado cargado. No todo es combustión. ;-)
Jed Brown

El límite de estiramiento cero es básicamente lo único que realmente estoy tratando en este momento. Las oscilaciones de escala fina estarían bien, pero es preferible una tela inelástica que sea demasiado suave en este momento. He intentado pasar el tiempo implícitamente (a través de la formulación de OpenCloth), y desafortunadamente el problema aún ocurre. ¿Puedes elaborar / dar enlaces sobre cómo ejecutar tu párrafo final? Gracias,
imallett

2

Si está interesado en una solución rápida y aproximada, los métodos utilizados en los efectos digitales, como la geometría diferencial discreta, pueden ser de su interés. Soy consciente de una formulación cuasiestática en Discrete Elastic Rods , un artículo de 2008 del grupo de Grinspun en la Universidad de Columbia, pero probablemente haya literatura más reciente en esta área.


2

El movimiento de la cuerda colgante es un problema de prueba muy querido de Hairer y Wanner que apareció en el segundo volumen (rígido) de "Resolver ecuaciones diferenciales ordinarias" y en la segunda edición del primer volumen (1993). Recomiendo la última opción, página 247. Las ecuaciones son difíciles de derivar y el algoritmo de solución numérica no es muy sencillo. Aunque al final, los pasos de tiempo explícitos convencionales como DOPRI, RK45 u ODEX se aplican y se comportan bastante bien, por lo que el problema no es realmente rígido.


1
El ROPEproblema del libro modela una cuerda que no se estira, con una dinámica dominada por efectos inerciales. La pregunta parece ser acerca de las cuerdas que se estiran.
Jed Brown el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.