-. 예전부터 사용하던 Frontal Solver,
-. ANSYS54부터 도입된 Sparse Solver,
-. 마지막으로 PCG Solver 가 있습니다.
여기서는 frontal solver, sparse solver, pcg의 간략한 이론적 배경
및 특징을 알아보고 마지막으로 어떤문제어 어떤 solver 가 적당한지에 대해
논의 해보도록 하죠.
2. Background of ansys solver
위의 3개 중에서 Frontal Solver 및 Sparse Solver는
Direct Solver 이며, PCS Solver는 iterative Solver 입니다.
기본적으로 선형해석은 [K]{x}={F}를 푸는 것인데...
-. Frontal solver : [K]matrix를 가우스 소거법으로 푸는 것인데
이때 jobname.tri 가 생기며 결과적으로 큰 용량의 Hard Disk를 필요로 합니다.
-. Sparse solver : [K]matrix를 푸는데 있어서 [K]matrix의 요소중 zero가 아닌 것만
저장하는 sparse matrix storage scheme을 사용하며 이때 jobname.LN09 가 생긴다.
물론 jobname.LN09의 크기는 jobname.tri보다 작다.
-. PCG solver : [K]matrix를 설정해준 tolerance level을 만족할때까지 반복법으로
풀며, 많은 양의 RAM을 요구하는 solver 입니다.
3. solver selection
속도와 HDD 사용량 면에서 solver를 간단하게 비교해 보면 아래와 같습니다.
-. Speed
<1000 DOF : gaussian 소거법과 반복법은 거의 비슷
~ 10,000 DOF : 반복법이 3배 정도 빠름
~100,000 DOF : 반복법이 10배 정도 빠름
~200,000 DOF : 반복법이 50배 정도 빠름
개인적인 경험으로 보면 Solid element를 사용하는 선형해석에서 Frontal 보다는 Sparse
solver가 그리고 Sparce 보다는 PCG solver를 사용하는 것이 속도면에서나
HDD 사용량면에서나 가장 좋은 것 같습니다.
그리고 PCG solver를 사용함에 있어서 몇가지 알아두면 유용한 option이 있는데
바로 tolerance 설정과 MSAVE라는 명령어의 추가적인 사용법입니다.
PCG solver는 default로 tolerance가 1e-8 인데, 구조해석에서 1e-6 정도로 설정해도
해석결과의 정확성에는 전혀 지장이 없습니다. 그리고 이렇게 함으로서 해석속도가
빨라지겠죠. 명령어는 "eqslv,pcg,1e-6" 입니다.
그리고 또 한가지 MSAVE라는 명령어는 free mesh에 의해 solid 92 가 생성되었고
해석이 선형해석일 경우 "MSAVE,1" 이라는 명령어로 PCG Solver의 Memory 사용량을
경감시킬 수 있습니다.
4. benchmark
아래에는 solver의 속도를 test 할 수 있는 간단한 예제인데
element 8000개일때 frontal solver, sparse solver, 그리고 pcg solver의 속도를
비교했습니다. 제 경우(펜티엄500 2 CPU, 1GB Ram)에는 각각, 420초, 107초 30초 라는
결과를 얻었습니다. 또한 tolerance를 1e-6으로 설정하면 20%정도 속도가 더 빨라집니다.