요약
- ANSYS CFX에서 경계조건이나 Time Scale을 처음부터 최종값으로 적용하면 초기 반복에서 발산할 수 있습니다.
- Ramp Function을 사용하면 값을 점진적으로 증가시켜 솔버가 안정적으로 수렴하도록 유도할 수 있습니다.
- 이 글에서는 Steady-State와 Transient 각각에서 Ramp를 적용하는 방법과, 어떤 변수에 Ramp를 걸어야 하는지 실무 기준을 정리합니다.
Ramp Function이 필요한 이유
CFD 해석의 초기 반복(Iteration)은 초기 조건과 실제 해 사이의 차이가 크기 때문에 가장 불안정합니다. 이 상태에서 최종 경계조건(높은 유속, 큰 열유속, 강한 회전 등)을 한꺼번에 적용하면 솔버가 큰 변화량을 처리하지 못하고 발산하는 경우가 흔합니다.
Ramp Function은 이 문제를 해결하는 가장 직관적인 방법입니다. 해석 초반에는 작은 값으로 시작하고, 솔버가 안정화되면서 점진적으로 최종값까지 증가시킵니다. 솔버 입장에서는 매 반복마다 처리해야 할 변화량이 줄어들어 수렴이 안정적으로 진행됩니다.
Steady-State에서의 Ramp — User Function 방식
Steady-State 해석에서는 물리적 시간이 없으므로, 반복 횟수(Iteration Number)를 기준으로 Ramp를 구성합니다. CFX에서는 1D User Function을 테이블 형태로 정의하여 이를 구현합니다.
1단계 — User Function 생성
CFX-Pre에서 Insert > Expressions, Functions and Variables > User Function을 선택하고, 1D Interpolation 타입으로 생성합니다.
- Argument Units: [ ] (무차원 — Iteration 횟수)
- Result Units: 적용할 변수의 단위 (예: [s] — Time Scale, [m s^-1] — 속도)
테이블 예시 — Time Scale을 0.001 s에서 0.1 s까지 램프:
- Iteration 1 → 0.001 s
- Iteration 5 → 0.002 s
- Iteration 10 → 0.005 s
- Iteration 50 → 0.01 s
- Iteration 100 → 0.05 s
- Iteration 200 → 0.1 s
2단계 — Expression에서 호출
생성한 User Function의 이름이 ramp_ts라면, Expression에서 아래와 같이 호출합니다.
ramp_ts(aitern)
- aitern은 CFX 내장 변수로, 누적 반복 횟수(Accumulated Iteration Number)를 의미합니다.
3단계 — 상한값 제한
테이블 범위를 벗어나면 외삽(Extrapolation)되어 값이 무한정 커질 수 있습니다. min 함수로 상한을 제한합니다.
min(ramp_ts(aitern), 0.1 [s])
이 표현식을 Solver Control > Physical Timescale에 지정하면, 200 Iteration까지 Time Scale이 0.001에서 0.1로 점진적으로 증가하고, 이후에는 0.1 s로 고정됩니다.
Transient에서의 Ramp — CEL 표현식 방식
Transient 해석에서는 물리적 시간(t)을 기준으로 Ramp를 구성합니다. User Function 없이 CEL 표현식만으로 간단하게 구현할 수 있습니다.
선형 램프
V_final * min(t / t_ramp, 1 [])
- V_final: 최종 속도
- t_ramp: 램프 완료 시간
- t가 t_ramp에 도달하면 min 함수에 의해 1로 고정
step 함수를 활용한 단계 변화
특정 시점 이후에 갑자기 조건을 적용할 때 사용합니다. 선형 램프보다 급격하지만, 해석 초반이 아닌 중간에 조건을 추가할 때 유용합니다.
Q_source * step(t - 0.5 [s])
t가 0.5초 이상이면 Q_source를 적용하고, 미만이면 0입니다.
어떤 변수에 Ramp를 적용해야 하는가?
모든 변수에 Ramp를 적용할 필요는 없습니다. 아래는 실무에서 Ramp가 효과적인 변수와 그렇지 않은 경우를 정리한 것입니다.
Ramp 적용이 효과적인 경우
- 입구 유속/유량 — 고속 유동, 강한 회전류에서 초기 발산 방지
- Physical Timescale — 초기에 작게 시작하여 수렴 안정화 후 증가
- 열유속/열원(Source Term) — 큰 열유속이 초기 온도장에 충격을 주는 경우
- 회전 속도(Rotating Domain) — 고속 회전 해석에서 초기 안정화
- Porous Domain 저항 계수 — 높은 저항값이 초기 유동장을 급격히 변화시키는 경우
Ramp가 불필요한 경우
- 출구 압력 — 대부분 고정값으로 충분
- 물성치 — 이미 CEL로 온도/압력 의존 정의가 되어 있으므로 별도 Ramp 불필요
- Wall 조건 — No-slip, 단열 등 고정 조건은 Ramp 대상이 아님
Ramp 구간 설정 기준
Ramp 구간(몇 Iteration 또는 몇 초 동안 증가시킬 것인지)은 모델에 따라 다르지만, 실무적인 기준이 있습니다.
Steady-State
- 전체 예상 반복 횟수의 10~20%를 Ramp 구간으로 설정
- 예: 총 500 Iteration 예상이면, 50~100 Iteration 동안 Ramp 적용
- Ramp 구간이 너무 짧으면 안정화 효과 부족, 너무 길면 수렴이 지연됨
Transient
- 유동이 도메인을 1~2회 통과하는 시간을 Ramp 구간으로 설정
- 예: 유로 길이 1 m, 유속 10 m/s → 통과 시간 0.1 s → Ramp 구간 0.1~0.2 s
- 물리 현상의 시간 스케일보다 짧으면 효과 부족
Ramp 기준 변수 참조표
Ramp Function에서 독립 변수(Argument)로 사용할 수 있는 CFX 내장 변수입니다. 해석 유형에 따라 적절한 변수를 선택해야 합니다.
Steady-State 해석
- aitern (Accumulated Iteration Number) — 누적 반복 횟수. Steady-State Ramp의 표준 기준 변수
Transient 해석
- t (Time) — 물리적 시간. 시간 기반 Ramp의 표준 기준 변수
- ctstep (Current Time Step) — 현재 타임스텝 번호. 타임스텝 단위로 제어할 때 사용
- atstep (Accumulated Time Step) — 누적 타임스텝 번호
주의사항
Steady-State 해석에서 t를 사용하면 에러가 발생합니다. 반드시 aitern을 사용해야 합니다. 반대로 Transient에서 aitern을 사용하면 각 타임스텝 내부의 내부 반복(Coefficient Loop)까지 카운트되어 의도와 다르게 동작할 수 있습니다.
실무 팁 — Time Scale뿐 아니라 경계조건 자체에 Ramp 적용
Ramp Function은 Time Scale에 적용하는 것이 가장 기본적인 방법이지만, 경계조건 자체에 직접 적용하는 방식도 매우 효과적입니다.
경계조건의 온도, 압력, 속도, 회전수(RPM) 등이 물리적으로 해석이 어려운 수준의 극단적인 값인 경우, 초기 조건을 아무리 잘 잡아도 첫 반복부터 최종 경계조건을 적용하면 발산하는 경우가 있습니다. 이때 경계조건 값 자체를 낮은 수준에서 시작하여 Iteration이 진행됨에 따라 점진적으로 최종값까지 발달시키는 방식으로 Ramp를 적용하면 안정적으로 수렴시킬 수 있습니다.
예를 들어, 입구 속도가 100 m/s인 해석에서 처음부터 100 m/s를 적용하면 발산하지만, 10 m/s에서 시작하여 200 Iteration에 걸쳐 100 m/s까지 증가시키면 솔버가 유동장을 점진적으로 발달시키며 안정적으로 수렴합니다. 초기 조건 설정과 병행하면 효과가 더 좋지만, 초기 조건만으로 해결이 안 될 때 경계조건 Ramp가 결정적인 역할을 합니다.
결론
Ramp Function은 CFD 해석 초반의 불안정을 해결하는 가장 기본적이면서 효과적인 기법입니다. Steady-State에서는 User Function 테이블과 aitern을, Transient에서는 CEL 표현식과 t를 기준으로 구성합니다. Time Scale, 입구 유속, 열원 등 초기에 큰 변화를 유발하는 변수에 적용하면 발산 없이 안정적인 수렴을 유도할 수 있습니다.
- 테스트 환경: ANSYS CFX 2020 R1 이상
- 마지막 업데이트: 2026.03
'CFD 실무 > CFX 설정 가이드' 카테고리의 다른 글
| ANSYS CFX 상대습도 모델링 (0) | 2026.03.18 |
|---|---|
| Multiphase vs Multicomponent 구분 (1) | 2026.03.12 |
| ANSYS CFX CCL 가이드 (0) | 2026.03.11 |
| ANSYS CFX CEL 완전 정복 (0) | 2026.03.11 |
| ANSYS CFX Time Scale 설정 가이드 (0) | 2026.03.10 |