Estoy usando el paquete de solución no lineal de PETSc SNES para resolver un sistema de ecuaciones no lineales obtenidas al discretizar una ecuación diferencial parcial. ¿Cómo puedo determinar por qué el solucionador no converge y qué puedo hacer para resolver con éxito mis ecuaciones?
petsc
pde
implicit-methods
Jed Brown
fuente
fuente

Respuestas:
El método de Newton puede no converger por muchas razones, estas son algunas de las más comunes.
Estas son algunas de las formas de ayudar a depurar la falta de convergencia de Newton.
-snes_monitor -ksp_monitor_true_residual -snes_converged_reason -ksp_converged_reason. Si la solución lineal no converge, verifique si el jacobiano es correcto, luego vea esta pregunta . Si el residuo preacondicionado converge, pero el residual verdadero no, el preacondicionador puede ser singular. Si la resolución lineal converge bien, pero la búsqueda de línea falla, el jacobiano puede ser incorrecto.-pc_type lu or -pc_type svdpara ver si el problema es un solucionador lineal pobre-mat_viewo-mat_view_drawpara ver si el jacobiano parece razonable-snes_type test -snes_test_displaypara ver si el jacobiano que estás usando está mal. Compare la salida cuando agregue-mat_fd_type dspara ver si el resultado es sensible a la elección del parámetro de diferenciación.-snes_mf_operator -pc_type lupara ver si el jacobiano que estás usando está mal. Si el problema es demasiado grande para una solución directa, intente-snes_mf_operator -pc_type ksp -ksp_ksp_rtol 1e-12. Compare la salida cuando agregue-mat_mffd_type dspara ver si el resultado es sensible a la elección del parámetro de diferenciación.-snes_ls_monitorpara ver si la búsqueda de línea está fallando (esto generalmente es un signo de un mal jacobiano).-infopara obtener información más detallada sobre el proceso de solución.Aquí hay algunas formas de ayudar al proceso de Newton si todo lo anterior se verifica
-snes_grid_sequencees todo lo que necesita si trabaja con aDM) para generar una mejor estimación inicial en su malla más fina./configure --with-precision=__float128 --download-f2cblaslapackcon PETSc 3.2 y posterior, necesita compiladores GNU versión 4.6 o posterior)ifdeclaraciones en la evaluación residual, por ejemplo, cambio de fase o limitadores de TVD). Utilice un solucionador de desigualdad variacional ( SNESVINEWTONRSLS ) si las discontinuidades son de importancia fundamental.-ts_type trpuede que tenga que ajustar los parámetros).fuente