¿Cómo eliminar los movimientos rígidos del cuerpo en elasticidad lineal?


9

Quiero resolver donde es mi matriz de rigidez. Sin embargo, pueden faltar algunas restricciones y, por lo tanto, es posible que todavía haya algún movimiento rígido del cuerpo en el sistema (debido al valor propio cero). Como estoy usando CG para resolver el sistema lineal, esto no es aceptable ya que a veces CG no converge en problemas semi positivos (pero a veces puedo converger).Ku=bK

En realidad estoy usando un enfoque de desplazamiento penalizado en el sentido de que estoy agregando una penalización de la forma a la energía elástica. Entonces la energía lee donde toma como una entrada proporcional a alguna diagonal de la matriz de rigidez. Pero en realidad esto tiene el efecto de humedecer algún modo de deformación que me gustaría tener alguna vez.α||u||2

W(u):=12uT(K+αI)ubtu
α

Algunos mi pregunta es:

a) ¿podría transformar el sistema original, por lo que tiene que hacerlo libre de singularidad y positivo definido (como la transformación de coordenadas o la transformación de congruencia o lo que sea)? Mi idea es usar esa transformación para seguir usando CG en el problema transformado

b) ¿Hay alguna forma estándar de tratar con esas singularidades?

Muchas gracias !

Saludos cordiales,

Tom

Respuestas:


6

La forma estándar es agregar la restricciónu(x0)=0 para un nodo arbitrariamente elegido . Esto asegura que su cuerpo no pueda traducir o rotar y, por lo tanto, elimina el valor propio cero. El sistema resultante con esta restricción es positivo definitivo incluso sin su término de penalización.x0


1
¡Gracias! Sí, pero soy mi caso, tengo varias subestructuras flotantes y no puedo decir qué nodos (3 nodos colineales en 3D) corregir. Es por eso que me pregunto si no hay una solución de nivel superior ya que en mi caso el espacio nulo es bien conocido.
Tom

Si tiene varias estructuras, entonces necesita arreglar un nodo para cada estructura. No importa cuál, simplemente elija uno por estructura.
Wolfgang Bangerth

3
@WolfgangBangerth Esta es la elasticidad 3D, por lo tanto, necesitaría fijar tres puntos no colineales para controlar el espacio nulo de dimensión 6. Fijar esos tres desplazamientos es una perturbación de rango 9 y no es fácil asegurarse de que la modificación de rango 3 supere El espacio nulo no cambia la solución. Para cualquier elección de puntos y valores para anclar, hay una familia tridimensional de lados derechos en la que su problema anclado da la respuesta correcta para un solo miembro.
Jed Brown

No, no puedes fijar 3 puntos para 9 restricciones porque entonces también arreglarías sus distancias relativas. Si sus condiciones de contorno realmente no proporcionan ninguna otra restricción (por ejemplo, si no son un desplazamiento normal en un círculo), entonces necesita fijar 1 punto + varios ángulos de rotación en otros dos puntos para un total de 6 restricciones.
Wolfgang Bangerth

6

Si conoce el espacio nulo, puede hacer que el lado derecho sea compatible y hacer que el método Krylov evite que el preacondicionador cause contaminación, vea ¿Por qué es malo fijar un punto para eliminar un espacio nulo? para mayor discusión. En PETSc, esto se hace usando el MatNullSpaceobjeto. Tenga en cuenta que puede proporcionar su propia función para proyectar el espacio nulo, lo que sería útil para reducir el costo de proyección cuando tiene muchas estructuras flotantes.

Si no conoce el espacio nulo y no puede evitar un lado derecho incompatible, existen métodos especializados de Krylov como MINRES-QLP que pueden encontrar la solución de norma mínima a pesar de ello. Este enfoque puede ser útil si tiene bisagras y conexiones de un solo punto que solo acoplan algunos modos. Tenga en cuenta que aún debe tener cuidado con el preacondicionador que causa contaminación (p. Ej., Debido a que la factorización LU encuentra cero pivotes, quizás en un nivel grueso de multirredes).


Gracias Jed! Pensé en eliminar por proyección el espacio nulo directamente en mi método iterativo. Pero me preguntaba si no era demasiado costoso (puedo crear un operador que proyecte el espacio nulo ya que es realmente trivial en elasticidad). ¿También creo que el residual debería ser proyectado también?
Tom

2
K=(IN)P1A{b,Kb,K2b,}MatSetNullSpace()
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.