무기한 대칭 시스템에 대해 PETSc의 어떤 사전 조건 (및 솔버)을 사용해야합니까?


12

내 시스템은 lagrange multipliers와 같은 대칭 FE 문제입니다 (예 : 비 압축 Stokes 흐름).

(ABTBC)

여기서 이 일반적인 경우입니다 (라그랑 지 승수가 마지막에 나타나도록 방정식의 번호를 매겼습니다). 시스템은 상당히 큽니다 (+ 100k 라인).C=0

이 질문에 대한 답변을 읽은 후 혼합 FE 문제에 사용할 수있는 적절한 사전 조건이 있다는 인상을 받았습니다.

PETSc를 사용 -ksp_type minres -pc_type none -mat_type sbaij하여 정밀도는 크지 않지만 (선형 문제로 여러 뉴턴 반복이 발생하지만) MINRES ( )로 시스템을 해결했습니다 . 전제 조건과 ksp-solver의 다른 조합은 작동하지 않는 것 같습니다.

이 시스템을 MINRES보다 빠르게 해결할 수있는 PETSc 플래그 조합이 있습니까?


1
SciComp SE에 오신 것을 환영합니다! 귀하의 질문은 명확성과 일반성 측면에서 잘 제기됩니다. 단 하나의 문장 만이 다소 불분명하거나 불완전합니다. 부정확 한 계산으로 인해 무슨 뜻입니까?
Jan

1
나는 문장을 끝내는 것을 잊었다! 나는 그것이 분명하기를 바랍니다.
Mikael Öhman

답변:


13

경고

새들 포인트 문제를 해결하려면 명확한 문제보다 더 많은 선택이 필요하며 잘못 될 수있는 더 많은 것들이 있습니다. 모든 레벨에 대해 모니터를 사용하여 수렴을 디버그하고 보조 연산자가 단수 일 때 (일반적으로 일정한 널 공간) 널 공간이 올바르게 처리되는지 확인하고 전제 조건이 안정적인지 확인하십시오. 이 기술들은 이 질문 에서 논의됩니다 .

새들 포인트 문제 해결

사용자 매뉴얼 에서 블록 행렬 해결에 대한 섹션으로 시작할 수 있습니다 . 스톡스와 유사한 문제점의 경우 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의 예 와 사용 설명서 섹션을 참조하십시오 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.