Simulação de corda escalável de precisão arbitrária


12

Estou tentando simular um objeto de corda. A formulação que eu entendo é uma matriz de partículas conectadas por molas. Essas molas têm valores k muito grandes, de modo que a linha se deforma, mas se estende muito pouco. Concluí que resolver isso em função do tempo não é possível em forma fechada porque uma corda é uma generalização de um pêndulo (que não é de forma fechada).

Resolvendo soluções aproximadas, então. Eu preciso de um algoritmo que dimensione bem. Exemplos que eu vi usar integração euleriana explícita ou implícita para mover as partículas. Isso não escala.

Para ver isso, considere uma corda com nós. Aplique uma grande força em uma extremidade. Como a corda não deve esticar muito, a aceleração na outra extremidade deve ser imediata.

No entanto, com a integração euleriana, obter qualquer força para o outro lado requer n etapas. Percebo uma queda exponencial: se o primeiro nó acelera uma certa quantidade, os nós adjacentes aceleram menos (se eles aceleram na mesma taxa, o algoritmo não é estável). Conseqüentemente, os nós adjacentes a esse nó aceleram ainda mais devagar!

Portanto, para nós ausentes, a aceleração é quase insignificante. Isso leva a uma corda que se estende significativamente. Se você deseja apenas duplicar a resolução da simulação, de repente precisa executar etapas de tempo dezenas ou centenas de vezes menores para obter um comportamento semelhante.

Estou procurando um método simples que resolva esse problema - ou seja, simulações de alta resolução convergem para a solução com apenas computação extra de tempo polinomial. Está disponível uma biblioteca completa de técnicas de matriz e álgebra linear. Meu conhecimento da mecânica clássica é muito bom e conheço algumas análises numéricas.


vsdt

@dmckee, sim, por favor! Em resposta ao seu segundo comentário, idealmente, a força deve se propagar efetivamente infinitamente longe em qualquer passo do tempo.
imallett

Bem, a velocidade do som é provavelmente muito alta ... mas se o tempo aumentar menos de 10 ms, esse comprimento de propagação ainda será de apenas alguns metros.
dmckee --- ex-moderador gatinho

Estou curioso para saber se as sugestões que você recebeu aqui foram úteis. Estou assumindo que a falta de aceitação significa que você ainda está acompanhando ou que nenhuma das respostas é exatamente o que você esperava, mas elas lhe mostraram um caminho a seguir?
dmckee --- gatinho ex-moderador

Eles foram úteis, mas muitas coisas surgiram simultaneamente. Esclarei minhas intenções em algumas respostas e, quando eu respirar, poderei acompanhá-las. Obrigado,
imallett 28/10/12

Respostas:


4

Antes de tudo, como Jed Brown mencionou, você deve usar um esquema implícito de escalonamento de tempo, pois seu problema parece bastante rígido, ou pelo menos um esquema mais estável, mas igualmente simples, como a integração Leapfrog ou a integração Verlet .

Quanto ao problema físico, qual o seu interesse no alongamento? Em vez de conectar as partículas com molas rígidas, você pode usar restrições holonômicas , por exemplo, garantir que a distância entre pares de partículas permaneça constante. As restrições precisam ser resolvidas a cada etapa do tempo, e existem algoritmos eficientes para exatamente a sua configuração, ou seja, uma longa cadeia de restrições vinculada. Veja, por exemplo, este artigo .

Por curiosidade, você também está usando potenciais angulares ao longo do comprimento da corda para modelar sua flexibilidade?


Mesmo usando passos implícitos no tempo (o que ajuda), o alongamento ocorre. Na verdade, estou interessado em esticar apenas na medida em que estou tentando me livrar disso. A matemática no jornal está basicamente acima da minha cabeça, mas estou estudando o código fortran. Ainda não usando restrições angulares de qualquer tipo.
imallett

@IanMallett: Ok, então as restrições são o caminho a seguir, ou seja, não há nenhum alongamento com as restrições.
Pedro

5

Você tem um sistema rígido com a formulação atual. O alongamento dinâmico e a vibração na corda são (presumivelmente) desinteressantes, mas eles controlam o passo explícito do tempo. Isso indica o uso de um método de integração de tempo implícito. Você pode usar o amortecimento para evitar oscilações que tendem a atrapalhar o controle de erros adaptativo para o método implícito.

Se as oscilações de escala fina são importantes para modelar, apesar de querer ultrapassá-las (por exemplo, para modelagem de fadiga), convém verificar novos métodos de múltiplas escalas, como o Método Heterogêneo de Múltiplas Escalas (Engquist, Tsai, etc.) ou semi- métodos espectrais no tempo. O uso de tais métodos é um tópico no nível da pesquisa e você precisa entender bem o seu problema e os recursos do método para decidir se pode ser apropriado. Se você deseja economizar energia, por exemplo, que certos modos vibracionais não devem se dissipar, observe integradores simpléticos como o Verlet.

Você também pode resolver o limite de estiramento zero, se quiser. Com termos inerciais, o modelo pode ser reformulado em termos de ângulos, levando a um sistema ODE não rígido. Como faleichik apontou, esse é o ROPEproblema de teste considerado em Hairer, Nørsett e no livro de Wanner. Se você descartar a inércia do próprio cabo, mas permitir folga (cabo leve e de baixa elasticidade com carga discreta; não é um modelo comum), o problema se tornará uma desigualdade variacional diferencial (DVI) e geralmente não é possível obter melhor do que a precisão de primeira ordem em Tempo.


2
O HMM é um método de redução de modelo baseado em projeção, em essência. Hesito em recomendar esses métodos, a menos que um aplicativo os exija especificamente; é preciso estar disposto a sacrificar a precisão pela velocidade. Determinar "boas" escolhas dos operadores de compressão e reconstrução (usando a nomenclatura do HMM) permanece não trivial para algumas aplicações (a combustão é um exemplo).
precisa

@GeoffOxberry Concordo, adicionei um aviso. Um problema clássico é como as vibrações mecânicas em um relógio causam deriva. Um exemplo de problema que eu acho que seria apropriado é modelar a fluência / deslizamento de uma corda em torno de um cabrestante acelerado pelos modos vibracionais do lado carregado. Nem tudo é combustão. ;-)
Jed Brown

O limite de alongamento zero é basicamente a única coisa que realmente estou tentando neste momento. As oscilações em escala fina seriam boas, mas um pano inelástico que é muito liso é preferível agora. Eu tentei pisar no tempo implícito (através da formulação do OpenCloth) e, infelizmente, o problema ainda ocorre. Você pode elaborar / fornecer links sobre como executar seu parágrafo final? Obrigado,
imallett 28/10/12

2

Se você estiver interessado em uma solução rápida e aproximada, os métodos usados ​​em efeitos digitais, como geometria diferencial discreta, podem ser do seu interesse. Estou ciente de uma formulação quase-estática em Discrete Elastic Rods , um artigo de 2008 do grupo de Grinspun na Universidade de Columbia, mas provavelmente há literatura mais recente nessa área.


2

O movimento da corda pendurada é um problema de teste amado de Hairer e Wanner, que apareceu no segundo volume (rígido) de "Resolvendo equações diferenciais ordinárias" e na segunda edição do primeiro volume (1993). Eu recomendo a última opção, página 247. As equações são difíceis de derivar e o algoritmo de solução numérica não é muito direto. Embora no final, steppers de tempo explícito convencionais como DOPRI, RK45 ou ODEX sejam aplicados e se comportem muito bem, então o problema não é realmente rígido.


1
O ROPEproblema do livro modela uma corda que não estica, com dinâmica dominada por efeitos inerciais. Parece que a pergunta é sobre cordas que se esticam.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.