¿Qué preacondicionadores (y solucionadores) en PETSc para sistemas simétricos indefinidos debo usar?


12

Mi sistema es un problema de FE simétrico con multiplicadores lagrange (por ejemplo, flujo incompresible de Stokes):

(ABTBC)

donde es el caso típico (incluso me he asegurado de que las ecuaciones estén numeradas para que los multiplicadores de Lagrange aparezcan en último lugar). El sistema es bastante grande (+ 100k líneas).C=0

Después de leer la respuesta a esta pregunta , me dio la impresión de que existen preacondicionadores adecuados que pueden usarse para problemas mixtos de FE.

Usando PETSc, he logrado resolver el sistema con MINRES ( -ksp_type minres -pc_type none -mat_type sbaij), aunque la precisión no es excelente (causando varias iteraciones de Newton para un problema lineal). Ninguna otra combinación de preacondicionador y ksp-solucionador parece funcionar.

¿Existe alguna combinación de banderas para PETSc que resuelva este sistema más rápido que con solo MINRES?


1
¡Bienvenido a SciComp SE! Su pregunta está bien planteada en términos de claridad y generalidad. Solo una oración es algo poco clara o incompleta: ¿qué quieres decir con los cálculos inexactos?
Ene

1
¡Olvidé terminar la oración! Espero que esté claro ahora.
Mikael Öhman

Respuestas:


13

Advertencia

La resolución de problemas de silla de montar implica muchas más opciones que problemas definidos, y hay muchas más cosas que pueden salir mal. Utilice monitores para todos los niveles para depurar la convergencia, para asegurarse de que los espacios nulos se manejan correctamente cuando los operadores auxiliares son singulares (generalmente solo un espacio nulo constante), y para garantizar que los preacondicionadores sean estables. Estas técnicas se discuten en esta pregunta .

Resolviendo problemas de silla de montar

Puede comenzar con la sección sobre resolución de matrices de bloques en el Manual del usuario . Para problemas similares a los de Stokes, puede construir un preacondicionador de complemento Schur usando PCFIELDSPLIT .

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point

Esto se puede combinar con un preacondicionador de conmutador de mínimos cuadrados para el complemento Schur ( -fieldsplit_1_pc_type lsc). Es común -fieldsplit_1_ksp_type preonlyy permite que la iteración externa haga la mayor parte del trabajo. Las variantes de bloques triangulares son muy populares cuando se usa de esta manera, por ejemplo, -pc_fieldsplit_schur_fact_type upper.

Puede encontrar más detalles sobre la composición del solucionador utilizando las opciones de opciones en nuestro documento (preimpresión) , que también analiza la conmutación de múltiples cuadrículas con la descomposición de bloques (colocando la división de campos dentro de múltiples cuadrículas).

Para muchos problemas, querrá personalizar la descomposición de campo y los preacondicionadores complementarios de Schur, muchos de los cuales involucran operadores auxiliares. Por ejemplo, el método de "convección-difusión de presión" (PCD) de Elman et al requiere la discretización de un operador auxiliar en el espacio de presión. Consulte los ejemplos de PCSHELL y la sección del manual del usuario para este propósito.


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.