시뮬레이션을 실행하는 동안 대부분의 사람들은 “내 시뮬레이션이 왜 이렇게 느리게 실행됩니까? 그 이유는 무엇입니까?”라고 묻습니다.

시뮬레이션 런타임에 영향을 미치는 중요한 요소는 시간 단계 크기입니다. 시간 단계 크기가 작으면, 시뮬레이션이 완료 조건에 도달하기 전에 더 많은 계산을 수행해야하므로 런타임이 늘어납니다. 시간 단계의 크기는 종종 명시적 안정성 한계 중 하나에 의해 제어되므로 설정을 변경하지 않고, 늘리는 유일한 방법은 암시적 솔버가 동일하지 않기 때문에 명시적 솔버에서 암시적 솔버로 전환하는 것입니다.

명시적 솔버로서의 시간 단계 제한, 웹 사이트에서 명시적 및 암시적 솔버에 대한 자세한 설명을 읽을 수 있습니다.

솔버 메시지 이해

암시적 솔버를 사용하여 시뮬레이션 런타임을 줄일 수 있는지 확인하는 첫 번째 단계는 솔버 진단 출력을 읽고 이해하는 것입니다. 이는 Solver Messages 파일인 hd3msg. *에 기록되며 Simulation Manager 창 하단에 나타납니다. 처음 몇 개의 열을 살펴 보겠습니다.

솔버 메시지 파일

Solver messages file
표 1. 예제 솔버 메시지 파일의 처음 8 개 열.

표 1에는 왼쪽에서 오른쪽으로 다음이 있습니다.

  • Progress, sim_time: 시뮬레이션의 현재 시간.
  • Progress, cycle: 시뮬레이션 시작 이후주기 수 (즉, 시간 단계 수)입니다.
  • Time Step, delt: 이 열은 현재 시간 단계 크기를 나타냅니다.
  • Time Step, dt_stbl: 이것은 현재 솔루션을 제한하는 명시적 솔버의 안정성 한계입니다. 시간 단계 크기 delt는 항상 이 값보다 작아야합니다.
  • Time Step, code: 어떤 명시적 솔버 안정성 한계가 시간 단계 크기를 제어하는지 나타내는 2 자리 코드입니다.
  • Pressure, iter: 해당 시간 단계에 대해 암시적 압력 솔버에서 수행한 반복 횟수입니다. 압력 솔버는 거의 항상 암시적 솔버입니다.
  • Pressure, res/epsi: 반복 종료시 암시적 압력 솔버에 대한 수렴 기준 (ε)에 대한 잔차의 비율입니다. 이 값은 항상 1보다 작아야합니다.
  • Heat Transfer, iter: 해당 시간 단계에 대해 암시적 열 전달 솔버에서 수행한 반복 횟수입니다.
  • Heat Transfer, res/epsi: 반복이 끝날 때 암시적 열 전달 솔버에 대한 수렴 기준 (ε)에 대한 잔여 비율입니다. 이 값은 항상 1보다 작아야합니다.

표 1에 설명 된 진단 출력을 표 2에 설명된 2 자리 진단 코드와 연관 시키면 x 방향 (코드 = cx)의 유체 이류(advection)와 관련된 안정성 한계가 시간 단계의 크기를 제한하고 있음을 나타냅니다.

<참고> 이송 [advection, 移送] 해양과학용어사전 기체나 액체가 그에 작용되는 외부로부터의 힘 또는 압력차에 의해 이동하는 현상. (수질오염 등 오염물질 이동과 관련해서는) 물 등 유체(流體) 속에 포함된 오염물질(汚染物質)이 중력(重力)이나 바람 등의 작용(作用)으로 생기는 유체(流體)의 흐름과 함께 이동하는 현상을 말하기도 함.

암시적 열 전달 솔버의 진단은 마지막 두 열 (Heat Transfer, iter 및 Heat Transfer, res / epsi)에서 알 수 있듯이 표 1에도 표시됩니다. 암시적 솔버가 추가되면 반복 횟수와 수렴 기준 (ε)에 대한 잔차 비율을 나타내는 두 개의 유사한 열이 나타납니다. 이 값은 항상 1보다 작아야하며 솔버가 성공적으로 수렴되었음을 나타냅니다. 그렇지 않은 경우 해당 값 옆에 별표 (*)가 표시됩니다.

안정성 코드 표

Stability code table
표 2. 사용 가능한 모든 2 글자 안정성 코드 및 의미.

암시적 방법을 사용하는 경우

때로는 단순히 암시적 솔버로 전환해도 시뮬레이션 런타임이 향상되지 않습니다. 이는 일반적으로 다른 명시적 솔버가 시간 단계 크기가 의미있는 방식으로 증가하지 못하도록 방지할 때 발생합니다. 간단한 지침은 암시적 솔버에 필요한 추가 노력을 보상하고 시뮬레이션 런타임을 줄이기 위해 시간 단계 크기를 5 배 이상 늘려야한다는 것입니다. Solver Summary 파일 인 hd3out. *의 짧은 표시 데이터는 시간 단계 크기의 잠재적 증가를 평가하는 데 사용할 수 있는 몇 가지 정보를 제공합니다. Solver Summary는 Diagnostics 메뉴에서 액세스 할 수 있으며 “Stability limits”를 검색하면 관련 안정성 한계가있는 표를 찾을 수 있습니다.
솔버 요약 안정성 한계 표.

Solver summary stability limits table.
표 3. 솔버 요약 안정성 한계 표. 표면 장력은 시간 단계 값이 가장 작기 때문에 솔루션을 제한합니다.

예제 출력 (표 3)에 제시된 최소 안정성 한계는 표면 장력 솔버와 관련된 것입니다. 암시적 표면 장력 솔버로 변경하면이 안정성 제한이 제거되고 이제 y 방향의 유체 이류에 의해 제한되는 새로운 시간 단계 크기로 이어집니다. 새로운 시간 단계 크기는 이전 시간 단계 크기보다 5 배 이상 큽니다. 이는 암시적 표면 장력 모델을 사용할 때 시뮬레이션이 더 빠르게 실행될 수 있음을 나타냅니다.

그러나 시간 단계 크기에 비례하는 암시적 솔버를 사용하여 솔루션을 찾는 데 필요한 노력과 같이 런타임에 영향을 미치는 다른 요인이 있기 때문에 런타임 감소가 보장되지 않습니다. 따라서 다른 암시적 솔버를 활성화하기 전에 현재 활성화 된 모든 암시적 솔버가 상대적으로 적은 반복으로 수렴되도록 하는 것도 좋은 방법입니다.

마지막으로 시간 단계 크기가 증가함에 따라 솔루션의 정확도가 감소한다는 점에 유의하는 것이 중요합니다.
솔루션 방법을 변경하는 방법

시뮬레이션이 중지되면 그림 1과 같이 Model Setup / Numerics 탭으로 이동하고 원하는 암시적 솔버의 라디오 버튼을 클릭하여 암시적 솔버를 활성화 할 수 있습니다. 이것은 시뮬레이션이 실행될 때 적용됩니다.

명시적 및 암시적 옵션

Explicit and implicit options
그림 1. 숫자 탭의 명시 적 / 암시 적 옵션.

시뮬레이션 관리자 탭의 런타임 옵션 대화 상자를 사용하여 시뮬레이션이 실행되는 동안 암시적 솔버를 활성화 할 수도 있습니다. Runtime Options를 클릭하고 Explicit / implicit solvers 탭으로 이동하여 원하는 implicit solver의 라디오 버튼을 클릭 한 다음 Send To Solver를 클릭하십시오. 솔버가 업데이트 되었음을 ​​알리는 대화 상자가 나타납니다.

런타임 옵션 대화 상자

Runtime options dialog

그림 2. 런타임 옵션 대화 상자의 명시 적 / 암시 적 옵션.

결론

시뮬레이션 실행 시간은 완료 조건을 충족하기 위해 수행해야하는 계산 횟수에 따라 결정됩니다. 그러나 계산 수는 시간 단계 크기 및 암시적 솔버에 필요한 계산 노력의 함수이며 후자는 시간 단계 크기의 비선형 함수이기도합니다. 이것은 복잡한 상호 작용이지만, 진단 파일 hd3msg. * 및 hd3out. *에서 솔버가 보고한 정보를 사용하여 런타임을 줄이는 방식으로 숫자 옵션을 신중하게 조정할 수 있습니다.