경고
새들 포인트 문제를 해결하려면 명확한 문제보다 더 많은 선택이 필요하며 잘못 될 수있는 더 많은 것들이 있습니다. 모든 레벨에 대해 모니터를 사용하여 수렴을 디버그하고 보조 연산자가 단수 일 때 (일반적으로 일정한 널 공간) 널 공간이 올바르게 처리되는지 확인하고 전제 조건이 안정적인지 확인하십시오. 이 기술들은 이 질문 에서 논의됩니다 .
새들 포인트 문제 해결
사용자 매뉴얼 에서 블록 행렬 해결에 대한 섹션으로 시작할 수 있습니다 . 스톡스와 유사한 문제점의 경우 PCFIELDSPLIT를 사용하여 Schur 보완 사전 조건 자를 빌드 할 수 있습니다 .
-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point
이것은 Schur 보완 ( )에 대한 최소 제곱 정류 전제 조건 과 결합 될 수 있습니다 -fieldsplit_1_pc_type lsc
. -fieldsplit_1_ksp_type preonly
외부 반복이 대부분의 작업을 수행하도록하는 것이 일반적 입니다. 이러한 방식으로 사용될 때 블록-삼각 변이체가 인기가있다 (예를 들어,) -pc_fieldsplit_schur_fact_type upper
.
우리 논문 (preprint) 의 옵션 옵션을 사용하여 솔버 구성에 대한 자세한 내용을 볼 수 있습니다.이 옵션 은 블록 분해 (멀티 그리드 안에 fieldplit 입력)와 멀티 그리드 통근에 대해서도 설명합니다.
많은 문제의 경우, 필드 분해 및 Schur 보완 사전 조건을 사용자 정의해야하며, 대부분 사전 연산자는 보조 연산자를 포함합니다. 예를 들어, Elman 등의 "압력 대류-확산"(PCD) 방법은 압력 공간에서 보조 연산자의 이산화를 필요로한다. 이 목적을 위해 PCSHELL의 예 와 사용 설명서 섹션을 참조하십시오 .