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

ANSYS CFX CCL 가이드

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

요약

  • CCL(CFX Command Language)은 ANSYS CFX의 시뮬레이션 설정 전체를 텍스트로 표현하는 명령 언어입니다.
  • GUI에서 설정한 모든 내용은 내부적으로 CCL로 저장되며, 직접 편집하면 GUI에서 불가능한 세부 설정이나 배치 자동화가 가능합니다.
  • 이 글에서는 CCL 구조 이해, 실무 활용법, 배치 처리, Power Syntax까지 단계별로 정리합니다.

CCL이란?

CFX Command Language(CCL)은 ANSYS CFX에서 시뮬레이션의 모든 설정을 텍스트 형태로 정의하는 명령 언어입니다. 도메인, 경계조건, 물성치, 솔버 설정 등 GUI에서 클릭으로 설정하는 모든 항목은 내부적으로 CCL 텍스트로 저장됩니다.

CCL을 직접 다루면 아래와 같은 작업이 가능해집니다.

  • GUI에서 제공하지 않는 고급 설정을 직접 입력 (방정식별 Time Scale, 고급 솔버 파라미터 등)
  • 여러 케이스의 설정을 텍스트 파일로 관리하고 배치 처리
  • 반복적인 설정 작업을 스크립트로 자동화
  • 설정 파일을 버전 관리(Git 등)하여 변경 이력 추적

CCL과 CEL의 차이

이 두 용어는 약자가 비슷하여 혼동하기 쉽습니다.

  • CCL (Command Language) — 시뮬레이션 설정 전체를 정의하는 명령 언어. 자동화와 배치 처리에 사용
  • CEL (Expression Language) — 경계조건이나 물성치에 수식을 입력하는 표현식 언어

CEL 표현식은 CCL 블록 내부에서 값으로 사용됩니다. 예를 들어, CCL로 경계조건 블록을 정의하고 그 안에 CEL 표현식을 값으로 지정하는 구조입니다.


CCL 기본 구조

CCL은 계층적인 블록 구조로 이루어져 있습니다. 모든 블록은 이름으로 시작하고 END로 닫힙니다.

FLOW: Flow Analysis 1
  DOMAIN: FluidDomain
    BOUNDARY: Inlet
      Boundary Type = INLET
      BOUNDARY CONDITIONS:
        MASS AND MOMENTUM:
          Normal Speed = 10 [m s^-1]
        END
      END
    END
  END
END

핵심 규칙

  • 들여쓰기는 가독성을 위한 것이며, 솔버 동작에는 영향 없음
  • 콜론(:)이 붙은 이름은 하위 블록이 있음을 의미
  • 파라미터는 Key = Value 형태로 지정
  • 모든 블록은 반드시 END로 닫아야 함
  • 단위는 대괄호로 지정: 10 [m s^-1]

주요 블록 계층

CCL의 전체 구조는 아래와 같은 계층으로 구성됩니다.

  • FLOW — 최상위 해석 블록
  • DOMAIN — 유동/고체 도메인 정의
  • BOUNDARY — 경계조건 (Inlet, Outlet, Wall 등)
  • DOMAIN INTERFACE — 도메인 간 인터페이스
  • SOLVER CONTROL — 솔버 설정 (Time Scale, 수렴 기준 등)
  • OUTPUT CONTROL — 결과 출력 설정
  • LIBRARY — 재료, 물성치 정의
  • EXPRESSIONS — CEL 표현식 정의

CCL 접근 방법

CCL을 편집하는 방법은 여러 가지가 있습니다.

방법 1 — CFX-Pre Command Editor

CFX-Pre 메뉴에서 Insert > Solver > Command Editor를 열면 현재 시뮬레이션의 전체 CCL을 확인하고 편집할 수 있습니다. GUI에서 설정이 불가능한 파라미터를 추가할 때 주로 사용합니다.

방법 2 — .def 파일에서 CCL 추출

이미 생성된 Definition 파일(.def)에서 CCL을 텍스트로 추출할 수 있습니다.

cfx5dfile -dump-ccl model.def > model_settings.ccl

추출한 CCL을 수정한 후 다시 삽입할 수도 있습니다.

cfx5dfile -write model.def model_settings.ccl

방법 3 — .ccl 파일 직접 작성

텍스트 에디터에서 필요한 설정만 담은 CCL 스니펫 파일을 작성하여, 솔버 실행 시 적용할 수 있습니다. 전체 설정을 모두 작성할 필요 없이, 변경하고 싶은 부분만 작성하면 기존 설정에 덮어씌워집니다.


실무 활용 — CCL 스니펫

전체 CCL을 처음부터 작성할 필요는 없습니다. GUI에서 기본 설정을 완료한 뒤, 변경이 필요한 부분만 CCL 스니펫으로 작성하여 적용하는 방식이 실무적입니다.

예시 1 — 방정식별 Time Scale 지정

GUI에서는 도메인 전체에 하나의 Time Scale만 설정할 수 있지만, CCL을 사용하면 방정식별로 개별 지정이 가능합니다.

FLOW: Flow Analysis 1
  DOMAIN: FluidDomain
    SOLVER CONTROL:
      EQUATION CLASS: momentum
        CONVERGENCE CONTROL:
          Physical Timescale = 0.001 [s]
          Timescale Control = Physical Timescale
        END
      END
      EQUATION CLASS: energy
        CONVERGENCE CONTROL:
          Physical Timescale = 0.0005 [s]
          Timescale Control = Physical Timescale
        END
      END
    END
  END
END

예시 2 — Newton-Raphson 파라미터 조정

IAPWS-IF97 등 비선형 물성 모델에서 Newton-Raphson 수렴이 어려울 때, 기본값을 수정해야 합니다.

LIBRARY:
  MATERIAL: Steam3vl
    EQUATION OF STATE:
      IAPWS IF97:
        Newton Pressure Criterion = 10 [Pa]
        Newton Pressure Iteration Limit = 200
        Newton Pressure Under Relaxation = 0.8
      END
    END
  END
END

예시 3 — Solid Domain Time Scale 분리 (CHT 해석)

CHT 해석에서 고체 도메인의 에너지 수렴이 느릴 때, Solid Domain만 별도로 Time Scale을 키울 수 있습니다.

FLOW: Flow Analysis 1
  DOMAIN: SolidDomain
    SOLVER CONTROL:
      EQUATION CLASS: energy
        CONVERGENCE CONTROL:
          Physical Timescale = 0.05 [s]
          Timescale Control = Physical Timescale
        END
      END
    END
  END
END

예시 4 — 이방성 열전도도 정의

GUI에서는 등방성(Isotropic) 열전도도만 설정할 수 있지만, CCL을 사용하면 이방성(Orthotropic) 값을 직접 정의할 수 있습니다.

LIBRARY:
  MATERIAL: CustomSolid
    PROPERTIES:
      THERMAL CONDUCTIVITY:
        Option = Orthotropic
        Thermal Conductivity X Component = 50 [W m^-1 K^-1]
        Thermal Conductivity Y Component = 10 [W m^-1 K^-1]
        Thermal Conductivity Z Component = 10 [W m^-1 K^-1]
      END
    END
  END
END

배치 처리 — 여러 케이스 자동 실행

CCL의 가장 강력한 활용처 중 하나는 배치 처리입니다. 동일한 모델에서 경계조건만 바꿔가며 여러 케이스를 실행할 때, CCL 스니펫과 명령줄 옵션을 조합하면 GUI 없이 자동 실행이 가능합니다.

기본 사용법

cfx5solve -def model.def -ccl case01.ccl

-ccl 옵션으로 전달한 CCL 파일이 .def 파일의 기존 설정을 덮어씌웁니다. 변경하고 싶은 설정만 CCL 파일에 작성하면 됩니다.

다중 케이스 실행 스크립트

입구 속도를 2, 3.5, 10 m/s로 변경하며 3개 케이스를 순차 실행하는 예시입니다.

#!/bin/bash
for speed in 2 3.5 10; do
  cat > case_${speed}.ccl << EOF
FLOW: Flow Analysis 1
  DOMAIN: FluidDomain
    BOUNDARY: Inlet
      BOUNDARY CONDITIONS:
        MASS AND MOMENTUM:
          Normal Speed = ${speed} [m s^-1]
        END
      END
    END
  END
END
EOF
  cfx5solve -def model.def -ccl case_${speed}.ccl
done

이 스크립트는 각 속도에 대해 CCL 파일을 자동 생성하고 솔버를 실행합니다. 야간이나 주말에 다수의 케이스를 자동으로 처리할 때 유용합니다.


실행 중 CCL 수정 — cfx5control

장시간 실행되는 해석에서 도중에 설정을 변경해야 할 때, 솔버를 중단하지 않고 CCL을 주입할 수 있습니다.

cfx5control model.dir --inject -commands modify.ccl --no-backup
  • model.dir — 실행 중인 솔버의 작업 디렉토리
  • --inject — CCL 파일을 실행 중인 솔버에 주입
  • -commands modify.ccl — 적용할 CCL 파일

예를 들어, 실행 중에 Time Scale을 변경하거나, 수렴 기준을 조정할 때 활용합니다. 솔버를 다시 시작할 필요 없이 다음 반복부터 변경된 설정이 적용됩니다.


Power Syntax — Perl 스크립트 연동 (CFD-Post)

CFD-Post에서는 CCL에 Perl 스크립트를 삽입하여 반복, 조건, 사용자 함수 등 프로그래밍 로직을 추가할 수 있습니다. 이를 Power Syntax라고 합니다.

기본 문법

  • !로 시작하는 줄은 Perl 코드로 실행
  • 나머지 줄은 일반 CCL로 실행
  • Perl 변수를 CCL 내에서 $변수명으로 참조 가능

예시 — 다중 케이스 후처리 자동화

여러 결과 파일에서 동일한 면적/유량 계산을 반복하는 스크립트입니다.

! my @case_list = ('case1.res', 'case2.res', 'case3.res');
! foreach my $case (@case_list) {
!   my ($area, $units) = evaluate("area()\@Plane 1");
!   my ($flow, $funits) = evaluate("massFlow()\@Inlet");
!   print "Case: $case, Area: $area $units, Flow: $flow $funits\n";
! }

예시 — 사용자 정의 매크로

CFD-Post에서 재사용 가능한 매크로를 정의할 수 있습니다. .cse 파일에 아래와 같이 작성합니다.

# Macro GUI begin
# macro name = Area Average Calculator
# macro subroutine = calcAreaAvg
# macro parameter = Location
# type = location
# location category = surface
# Macro GUI end

! sub calcAreaAvg {
!   my ($loc) = @_;
!   my ($val, $units) = evaluate("areaAve(Pressure)\@$loc");
!   print "Location: $loc, Area Average Pressure: $val $units\n";
! }

이 매크로를 CFD-Post의 Macro Calculator에서 불러오면, GUI에서 위치를 선택하고 실행하는 형태로 활용할 수 있습니다.


CCL 활용 시 주의사항

END 블록 누락

가장 흔한 실수입니다. 모든 블록은 반드시 END로 닫아야 하며, END가 누락되면 파싱 에러가 발생합니다. 복잡한 CCL에서는 들여쓰기를 일관되게 유지하여 블록 계층을 시각적으로 확인합니다.

스니펫 적용 범위

CCL 스니펫은 기존 설정을 덮어씌우는 방식으로 동작합니다. 스니펫에 포함되지 않은 설정은 기존 값이 유지됩니다. 단, 동일한 Key에 새 Value를 지정하면 기존 값이 대체됩니다.

CCL 파라미터 이름 확인

GUI에서 보이는 이름과 CCL에서 사용하는 파라미터 이름이 다른 경우가 있습니다. GUI에서 설정한 후 Command Editor에서 CCL을 확인하면 정확한 파라미터 이름을 알 수 있습니다.


결론

ANSYS CFX CCL은 GUI 뒤에서 동작하는 시뮬레이션 설정의 실체입니다. GUI에서 불가능한 세부 설정, 다중 케이스 배치 처리, 실행 중 설정 변경 등 실무에서 반복되는 작업을 효율적으로 처리할 수 있습니다. 처음에는 GUI에서 설정 후 Command Editor에서 CCL 구조를 확인하는 것으로 시작하고, 익숙해지면 스니펫과 배치 스크립트로 확장하는 것을 권장합니다.


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