본문 바로가기
CFD 실무/CFX 설정 가이드

ANSYS CFX CEL 완전 정복

by Digital-ENG-Note 2026. 3. 11.

요약

  • CEL(CFX Expression Language)은 ANSYS CFX에서 경계조건, 물성치, 모니터링 등에 수식을 직접 입력할 수 있는 표현식 언어입니다.
  • Fortran 코드 없이 조건부 경계조건, 온도 의존 물성치, 시간 변화 함수 등 복잡한 물리 조건을 구현할 수 있습니다.
  • 이 글에서는 CEL 문법 기초부터 실무에서 자주 쓰는 표현식 모음까지 정리합니다.

CEL이란?

CFX Expression Language(CEL)은 ANSYS CFX에서 숫자 값이 들어가는 거의 모든 곳에 수식을 입력할 수 있도록 설계된 표현식 언어입니다. 경계조건에 고정 숫자 대신 CEL 표현식을 지정하면, 위치, 시간, 온도 등 변수에 따라 동적으로 값이 계산됩니다.

CEL은 CFX-Pre(시뮬레이션 설정), CFX-Solver(해석 실행), CFD-Post(후처리) 전 단계에서 사용 가능하며, 모듈별로 지원하는 함수와 평가 방식이 다소 다릅니다.

CEL과 CCL의 차이

혼동하기 쉬운 두 용어를 구분합니다.

  • CEL (Expression Language) — 수식과 조건을 정의하는 표현식 언어. 경계조건, 물성치, 모니터 포인트에 사용
  • CCL (Command Language) — 시뮬레이션 설정 전체를 텍스트로 정의하는 명령 언어. 자동화, 배치 처리에 사용

CEL은 CCL 내부에서 값으로 사용됩니다. 예를 들어, CCL로 경계조건 블록을 정의할 때 CEL 표현식을 값으로 지정할 수 있습니다.


CEL 표현식 생성 방법

CFX-Pre에서 CEL 표현식을 생성하는 경로는 두 가지입니다.

방법 1 — Expressions 탭에서 직접 생성

CFX-Pre 상단 메뉴 또는 Outline 트리에서 Expressions를 선택하고, 표현식 이름과 수식을 입력합니다. 생성한 표현식은 경계조건, 물성치 등 값 입력란에서 이름으로 참조할 수 있습니다.

방법 2 — 값 입력란에서 직접 참조

경계조건이나 물성치 설정 화면에서 값 입력란 옆의 아이콘을 클릭하면 기존 표현식을 선택하거나 새로 생성할 수 있습니다.


CEL 문법 기초

단위 지정

CEL에서 모든 수치에는 단위를 명시해야 합니다. 단위는 대괄호로 감쌉니다.

  • 속도: 10 [m s^-1]
  • 온도: 300 [K]
  • 압력: 101325 [Pa]
  • 무차원: 0.5 []

단위가 불일치하면 솔버가 경고 또는 에러를 발생시킵니다.

산술 연산자

  • 사칙연산: +, -, *, /
  • 거듭제곱: ^
  • 괄호: ()

시스템 변수

CEL에서 바로 사용할 수 있는 내장 변수들입니다.

  • x, y, z — 좌표 (공간 위치 기반 조건에 사용)
  • r, theta — 원통 좌표 (사용자 좌표계 설정 시)
  • t — 시간 (Transient 해석에서 시간 변화 조건에 사용)
  • atstep, aiteration — 현재 타임스텝, 반복 번호
  • 그 외에도 더 다양한 내장 변수들이 있습니다.

주요 함수 모음

수학 함수

  • abs(x) — 절대값
  • sqrt(x) — 제곱근
  • exp(x) — 지수
  • log(x) — 자연로그
  • log10(x) — 상용로그
  • sin(x), cos(x), tan(x) — 삼각함수 (라디안)
  • asin(x), acos(x), atan(x) — 역삼각함수
  • min(a, b), max(a, b) — 최솟값, 최댓값

조건 함수

  • if(조건, 참값, 거짓값) — 조건 분기
  • step(x) — x >= 0이면 1, x < 0이면 0 (Heaviside 함수)

물리량 함수 (후처리/모니터링)

  • areaAve(변수)@위치 — 면적 가중 평균
  • massFlowAve(변수)@위치 — 질량유량 가중 평균
  • massFlow()@위치 — 질량유량
  • area()@위치 — 면적
  • force_x(), force_y(), force_z() — 방향별 힘
  • torque_x(), torque_y(), torque_z() — 방향별 토크
  • probe(변수)@위치 — 특정 점에서의 값
  • maxVal(변수)@위치, minVal(변수)@위치 — 최대/최소값
  • volumeAve(변수)@위치 — 체적 가중 평균

논리 연산자

  • 비교: ==, !=, >, <, >=, <=
  • 논리: && (AND), || (OR), ! (NOT)

실무에서 자주 쓰는 표현식

아래는 CFX 실무에서 빈번하게 사용되는 CEL 표현식입니다.

포물선 속도 프로파일

원형 파이프 입구에 완전 발달 유동 프로파일을 적용할 때 사용합니다.

U_max * (1 - (r / R_pipe)^2)
  • U_max: 중심 최대 속도
  • R_pipe: 파이프 반경
  • r: 반경 방향 좌표 (사용자 좌표계 설정 필요)

온도 의존 점도

Arrhenius 형태의 온도 의존 점도를 정의할 때 사용합니다.

mu_ref * exp(A * (1/T - 1/T_ref))
  • mu_ref: 기준 온도에서의 점도
  • A: 활성화 에너지 관련 상수
  • T_ref: 기준 온도

시간 기반 램프 함수 (Transient)

Transient 해석에서 경계조건을 갑자기 적용하면 수렴이 불안정해질 수 있습니다. 램프 함수로 점진적으로 증가시키면 안정적입니다.

V_final * min(t / t_ramp, 1 [])
  • V_final: 최종 속도
  • t_ramp: 램프 완료 시간
  • t: 현재 시간

step 함수를 활용한 단계 변화

step 함수는 특정 시점 이후에 조건을 적용할 때 유용합니다.

Q_source * step(t - 0.5 [s])

t가 0.5초 이상이면 Q_source를 적용하고, 미만이면 0입니다.

위치 기반 초기 온도 분포

도메인 내에서 높이에 따라 초기 온도를 선형 분포로 지정합니다.

T_bottom + (T_top - T_bottom) * (y - y_min) / (y_max - y_min)

압력 손실 모니터링

입구와 출구의 전압(Total Pressure) 차이를 모니터링하는 표현식입니다.

areaAve(Total Pressure)@Inlet - areaAve(Total Pressure)@Outlet

질량유량 가중 평균 온도

출구에서의 질량유량 가중 평균 온도를 계산합니다. 열전달 해석에서 자주 사용됩니다.

massFlowAve(Temperature)@Outlet

조건부 소스항

특정 온도 이상인 영역에서만 열원을 적용합니다.

if(Temperature > 373 [K], Q_source, 0 [W m^-3])

조건문 작성 시 주의사항

if문의 양쪽 표현식은 항상 평가됨

CEL의 if 함수는 프로그래밍 언어의 if-else와 다르게, 조건의 참/거짓과 관계없이 양쪽 표현식을 모두 평가합니다. 따라서 아래와 같은 표현식은 x가 0일 때 0으로 나누기 오류가 발생합니다.

if(x > 0 [m], 1/x, 0 [m^-1])

이 경우 안전한 대안은 분모에 작은 값을 더하는 것입니다.

if(x > 0 [m], 1/(x + 1e-10 [m]), 0 [m^-1])

중첩 if문으로 다중 분기

CEL에는 elseif가 없으므로, 여러 조건 분기가 필요하면 if문을 중첩합니다.

if(Temperature > 400 [K], mu_high,
  if(Temperature > 300 [K], mu_mid, mu_low))

단위 일관성

if문의 참값과 거짓값은 반드시 동일한 단위여야 합니다. 단위가 다르면 솔버 에러가 발생합니다.


결론

ANSYS CFX CEL은 경계조건, 물성치, 모니터링에 수식을 직접 입력하여 복잡한 물리 조건을 구현하는 핵심 도구입니다. 포물선 프로파일, 온도 의존 물성, 램프 함수, 조건부 소스항 등 실무에서 자주 쓰는 표현식을 미리 정리해두면 설정 시간을 크게 줄일 수 있습니다. if문의 양쪽 평가 특성과 단위 일관성은 반드시 숙지해야 할 주의사항입니다.


  • 테스트 환경: ANSYS CFX 2020 R1 이상
  • 마지막 업데이트: 2026.03