콘텐츠로 이동

8.2.1 timeStepping

8.2.1.1 timeStepSize

timeStepSize는 물리적인 시간 단계의 크기를 의미합니다. 정상 유동 상태에서는 가상의 시간 단계(Pseudo Time)을 사용하기 때문에 물리적인 시간 단계(Physical Time Step Size)는 사용되지 않고, Flow360 JSON 파일에는 \infty가 입력되어야 합니다.

따라서 사용자가 timeStepSize를 사용하게 되는 경우는 비정상 유동 해석을 수행하는 경우입니다. 본 문서에서는 timeStepSize를 결정하는 두 가지 방법을 소개합니다.

[Note]

Flow360 JSON 파일에 회전 속도가 0이 아닌 값이 설정되었고, timeStepSize=\infty로 설정될 경우에는 자동으로 MRF(Multiple Reference Frame) 혹은 SRF(Single Reference Frame)가 활성화됩니다. 만약 사용되는 격자가 단일 영역만 있다면 SRF가 활성화되고, 2개 이상의 영역이 있을 경우에는 MRF가 활성화됩니다.

8.2.1.1.1 Vortex Shedding Frequency

Vortex Shedding이 발생하는 주기를 이용하여 timeStepSize를 결정할 수 있습니다. Vortex Shedding이 발생하는 주파수는 다음 식과 같이 추정할 수 있습니다:

f = \frac{St \cdot U_\infty}{D }

여기서 U_{\infty}는 자유흐름 속도, L은 특징 길이(예: 평균 항공력 중심선), 그리고 St는 Strouhal 수입니다.

만약, 사용자가 Vortex Shedding 발생하는 주기를 100으로 나눈 크기를 물리적인 시간 단계 크기로 설정할 경우 아래와 같은 식이 사용됩니다.

$ \Delta t = \frac{1}{100} \cdot \frac{1}{f} $

위의 물리적 시간 단계 크기를 Flow360에 사용되는 무차원으로 변환하고자 한다면 아래의 식이 사용되어야 합니다. 아래의 timeStepSize의 값이 Flow360의 timeStepping 영역의 timeStepSize에 입력되어야 합니다.

$ \text{timeStepSize} = \Delta t \cdot \frac{C_\infty}{L_\text{gridUnit}} $

8.2.1.1.2 Angle of Rotation pre Step

회전체 해석을 위해 Sliding Mesh 기법이 사용될 경우에는 회전체의 회전 속도를 이용하여 timeStepSize를 계산할 수 있습니다. 아래의 시나리오 테이블은 각 해석 경우에 따라 권장하는 각도/timeStepSize 입니다.

시나리오

Scenario Angle per timeStepSize
Blade Element Theory 기법 6도
Sliding Mesh Interface의 로터, 단계 I : 1st - Order solver 6도
Sliding Mesh Interface의 로터, 단계 II : 2nd - Order solver 6도
Sliding Mesh Interface의 로터, 단계 III : 데이터 수집 3도
강한 블레이드-와류 상호작용 (호버링/하강) 1-2도
고해상도 애니메이션 생성 0.5-1도

timeStepSize는 다음과 같이 계산될 수 있습니다. 여기서 \theta는 각도(도)입니다. 여기서의 \omega_{\text{radians}}는 무차원 회전 속도를 의미합니다.

$ \text{timeStepSize} = \theta \cdot \frac{\pi}{180} \cdot \frac{1}{\text{omegaRadians}} $

8.2.1.2 maxPseudoSteps

정상 유동 해석에서 maxPseudoSteps는 일반적으로 5천에서 1만 사이를 사용할 것을 권장합니다. 비선형 잔차 또는 힘과 모멘트가 하나의 값으로 수렴되지 않고 진동하는 경우에는 수렴이 될 때까지 이어서 계산을 수행할 수 있습니다.

반면, 비정상 유동 해석에서, maxPseudoSteps는 CFL의 rampSteps보다 약간 크게 설정하여 합니다. 아래 예시와 같이, rampSteps = 10이면 maxPseudoSteps는 12 정도로 약간 크게 설정합니다. rampSteps = 33이면 maxPseudoSteps는 35로 설정합니다.

에제 : timeStepping (1st-order unsteady cases)

"maxPseudoSteps" : 12,
"CFL" : {
    "initial" : 1,
    "final" : 1000,
    "rampSteps" : 10
}
예제 : timeStepping (2nd-order unsteady cases)
"maxPseudoSteps" : 35,
"CFL" : {
    "initial" : 1,
    "final" : 1e+7,
    "rampSteps" : 33
}

8.2.1.3 CFL

CFL 수(Courant-Friedrichs-Lewy number)는 각 계산 단계에서 사용되는 Pseudo Step Size를 결정하는데 사용됩니다. Flow360에서는 JSON 파일의 CFL 영역 설정을 달리하여 계산 단계에 따른 CFL 값을 결정하는 두 가지 다른 접근 방식을 사용할 수 있습니다..

  • ramp: 사용자가 직접 정의하는 방법. 계산 단계에 따른 CFL값이 사용자 정의 값에 의해 ramping됩니다.
  • adaptive: 선형 잔차값을 기반으로 자동으로 CFL 값이 변합니다.

8.2.1.3.1 ramp

CFL ramping은 초기(initial), 최종(final), 및 rampSteps 값 등의 설정이 사용자에 의해 정의됩니다. 아래 표는 정상(steady) 및 비정상(unsteady) 유동 해석 경우에 대한 설정 권장 값들을 보여줍니다.

Example Type initial final rampSteps
Simple wing or fuselage, mostly attached linear flow Steady 5 200 100
Full aircraft with nonlinear flow, some separation, simple actuator/BET disks Steady 1 100~150 1K~2K
Full aircraft near onset of stall, large-scale separation, challenging actuator/BET disks Steady 0.1~1 10~50 3K~5K
Forked/child case Steady parent final CFL parent final CFL 1
Rotor in sliding interface, 1st-order solver Unsteady 1 1000 ~10
Rotor in sliding interface, 2nd-order solver Unsteady 1 1e+5~1e+7 30~50
  1. 정상 유동 해석의 경우, initial CFL < 1, final CFL < 100, rampSteps > 3000으로 설정하는 것은 수치적으로 매우 불안정하여 Diverged가 될 수 있는 경우에 사용하는 것을 권장합니다.

  2. 비정상 유동 해석의 경우, 각 Physical Step에서 비선형 잔차의 Order가 2~3정도가 되도록 해석을 설정하는 것을 권장합니다. 따라서 높은 final CFL과 rampSteps 값을 사용하는 것을 권장합니다.

  3. 2nd Order Solver를 사용하는 비정상 유동의 경우에는, final CFL < 1e+5, rampSteps > 50 범위의 값은 수치해석이 까다로운 경우에 사용되는 것을 권장합니다. 일반적으로 Physical Step 내에서의 rampSteps와 maxPseudoSteps를 줄이면 전체 계산 비용과 해석 시간이 감소합니다.

8.2.1.3.2 adaptive

이 접근 방식은 선형 잔차값을 기준으로 CFL 숫자를 적응적(Adaptive)으로 조정합니다. adaptive 방식은 CFL ramp 방식과 비교했을 때 여러 가지 장점을 제공합니다:

  1. 해석에 따라 달리해야하는 CFL 설정에 대한 사전 지식 없어도 사용이 가능합니다.

  2. 선형 잔차값을 기준으로 자동으로 CFL 값이 조정되기 때문에 ramp 방식보다 수렴 속도가 빨라집니다.

adaptive 방식을 사용할 때 몇 가지 측면에 주의해야 합니다.

  1. adaptive 방식은 다양한 경우에 대해 해석 속도와 해석 결과에 대한 견고성 사이의 밸런스를 맞추는 방식입니다. 즉, adaptive 방식이 항상 ramp 방식보다 빠른 수렴으로 이어지지 않습니다. 만약 최적화된 ramp 설정이 존재한다면 adaptive 방식이 ramp 방식보다 더 느린 해석 수렴성을 보일수도 있습니다.

  2. ramp 방식을 사용하여 해석 결과가 발산하는 경우(선형 잔차가 낮은 경우, 0.1 미만)에는 adaptive 방식으로 전환하여 해석을 수행하여도 해석 결과의 발산 문제를 해결하지 못 할 수 있습니다.

8.2.1.3.2.1 maxRelativeChange (기본값 : 1.0)

maxRelativeChange 매개변수는 각 Pseudo Step에서 CFL 숫자의 최대 상대 변화를 제어합니다. 이 매개변수를 증가시키면 CFL이 더 빠르게 변화하며 수렴 속도를 증가시킵니다. 하지만 해석의 경우가 복잡한 경우에는 해석 결과과 발산할 가능성이 있습니다.

maxRelativeChange 매개변수가 수렴에 미치는 영향을 보기 위해 CFL 변화 및 잔차 변화를 보여주고 있는 Fig. 8.2.1 ~ Fig. 8.2.4 그림을 가져왔습니다.

maxRelativeChange 값은 초기 실행 단계에서 적응적 CFL 알고리즘에 선형 잔차에 대한 임계값에 영향을 미치지 않으면서 수렴 속도에 영향을 줍니다. 수렴이 느린 경우 ramp 방식의 CFL 설정을 변경하는 대신 maxRelativeChange 값을 증가시킬수도 있습니다.


Fig. 8.2.1 Navier-Stokes CFL number during the simulation for a range of maxRelativeChange values.


CFL_SA_MaxRelativeChange.png

Fig. 8.2.2 Spalart-Allmaras CFL number during the simulation for a range of maxRelativeChange values.

Cont_Linear_MaxRelativeChange.png

Fig. 8.2.3 Continuity linear residual convergence during the simulation for a range of maxRelativeChange values.

Cont_Nonlinear_MaxRelativeChange.png

Fig. 8.2.4 Continuity non-linear residual convergence during the simulation for a range of maxRelativeChange values.

8.2.1.3.2.2 convergenceLimitingFactor (기본값 : 0.25)

convergenceLimitingFactor는 CFL 값의 변화를 얼마나 보수적 혹은 공격적으로 변화시킬지 제어하는 매개변수입니다. convergenceLimitingFactor 값이 작을수록 더 보수적인 CFL 값으로 이어지며, convergenceLimitingFactor 값이 클수록 더 공격적인 CFL 값으로 이어집니다.

convergenceLimitingFactor의 값이 크면 비선형 잔차의 더 빠른 수렴을 이끌어내지만, 해석 중의 선형 잔차값의 제한치가 완회되어 높은 선형 잔차값이 나와도 해석이 진행되는 것을 허용합니다. 또한 이로한 특성에 의해 선형 잔차값을 기준으로 CFL 값을 조정하는 adaptive 방식에도 영향을 미치게 됩니다.

해석 결과가 발산하는 경우, 발산 위치의 격자 품질을 확인한 후 convergenceLimitingFactor 값을 줄이는 것을 권장합니다.

CFL_NS_ConvFactor.png

Fig. 8.2.5 Navier-Stokes CFL number during the simulation for a range of convergenceLimitingFactor values.

CFL_SA_ConvFactor.png

Fig. 8.2.6 Spalart-Allmaras CFL number during the simulation for a range of convergenceLimitingFactor values.

Cont_Linear_ConvFactor.png

Fig. 8.2.7 Continuity linear residual convergence during the simulation for a range of convergenceLimitingFactor values.

Cont_Nonlinear_ConvFactor.png

Fig. 8.2.8 Continuity non-linear residual convergence during the simulation for a range of convergenceLimitingFactor values.

8.2.1.3.2.3 min

min 매개변수는 해석 중 해결된 방정식의 CFL 숫자의 최솟값에 영향을 줍니다.

8.2.1.3.2.4 max

max 매개변수는 해석 중 해결된 방정식의 CFL 숫자의 최댓값에 영향을 줍니다. 이 매개변수를 수정해야 하는 한 예시는 Spalart-Allmaras 솔버가 비물리적인 난류 점성을 가지고 발산하는 경우입니다.

Spalart-Allmaras는 1 Equation 모델이기 때문에 5 Eqautions를 푸는 Navier-Stokes 솔버에 비해 선형 잔차는 보통 훨씬 낮을 것입니다. 따라서 CFL은 훨씬 더 높은 값이 사용되게 됩니다.

따라서, max 값을 줄이게 되면 해석 중에 사용되는 최대 허용 CFL을 줄이는 것을 의미합니다.

8.2.1.3.3 ramp와 adaptive 비교

ONERA 정상 유동 해석 예제를 사용하여 두 CFL 접근 방식을 비교하였습니다. Pesudo Step에 따른 CFL, 비선형 및 선형 잔차(연속성) 그래프를 Fig. 8.2.9부터 Fig. 8.2.12에 나타내었습니다.

CFL_NS_RampvsAdapt.png

Fig. 8.2.9 Comparison of the Navier-Stokes CFL number during the simulation for adaptive and ramped CFL.

CFL_SA_RampvsAdapt.png

Fig. 8.2.10 Comparison of the Spalart-Allmaras CFL number during the simulation for adaptive and ramped CFL.

Cont_Linear_RampvsAdapt.png

Fig. 8.2.11 Comparison of the continuity linear residual convergence during the simulation for adaptive and ramped CFL.

Cont_Nonlinear_RampvsAdapt.png

Fig. 8.2.12 Comparison of the continuity nonlinear residual convergence during the simulation for adaptive and ramped CFL.