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).
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.
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
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
MatNullSpace
objeto. 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).
fuente
MatSetNullSpace()