요약
- ANSYS CFX에서 User Fortran은 CEL로 구현하기 어려운 복잡한 물리 모델을 사용자 코드로 직접 삽입할 수 있는 기능입니다.
- Intel oneAPI ifx 컴파일러와 Visual Studio Build Tools를 설치하고, 환경 변수를 설정하면 컴파일 환경이 구축됩니다.
- 본 글에서는 PMV/PPD 온열 쾌적도 모델을 예제로, User Fortran의 환경 구축부터 CFX-Pre 설정, 후처리까지 전체 과정을 다룹니다.
User Fortran이 필요한 상황
CEL(CFX Expression Language)은 수식 기반의 변수 정의에 강력하지만, 조건 분기가 복잡하거나 반복 계산(iterative solving)이 필요한 경우에는 한계가 있습니다. User Fortran은 이런 한계를 넘어, 사용자가 직접 작성한 Fortran 코드를 CFX Solver에 연동하여 해석에 반영할 수 있게 합니다.
대표적인 활용 사례는 다음과 같습니다.
- PMV/PPD 같은 온열 쾌적도 지표 계산 (Fanger 모델의 반복 수렴 계산 포함)
- 커스텀 난류 모델이나 반응 모델
- 외부 데이터 파일을 읽어 경계조건에 반영
- CEL로 표현하기 어려운 복잡한 물성 함수
1단계 — 필수 프로그램 설치
User Fortran 컴파일 환경을 구축하려면 세 가지 프로그램을 아래 순서대로 설치해야 합니다. 컴파일러(ifx)는 C++ 링커에 대한 의존성을 가지므로, Visual Studio를 먼저 설치하여 빌드 환경을 구성해야 합니다.
1. Microsoft Visual Studio Build Tools
C++ 컴파일러 및 링커를 제공합니다. Fortran 컴파일 결과물(.obj)을 CFX Solver가 사용할 수 있는 동적 링크 라이브러리(.dll)로 빌드하는 데 필수입니다.
2. Intel oneAPI Base Toolkit
MKL(Math Kernel Library) 등 고성능 컴퓨팅에 필요한 핵심 라이브러리를 포함합니다. HPC Toolkit의 전제 조건입니다.
3. Intel oneAPI HPC Toolkit
Fortran 컴파일러 ifx를 제공합니다. 이전의 ifort를 대체하는 최신 컴파일러입니다.
인터넷 연결이 제한된 환경에서는 각 설치 파일을 사전에 오프라인 설치 패키지로 다운로드할 수 있습니다. 각 Toolkit은 수십 GB에 달할 수 있으므로 저장 공간을 미리 확인해야 합니다.
2단계 — 환경 변수 설정
컴파일러와 CFX가 서로의 위치를 인식할 수 있도록 Windows 시스템 환경 변수 Path에 두 개의 경로를 추가합니다.
ifx컴파일러 경로:C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin- CFX Solver 경로:
C:\Program Files\ANSYS Inc\v2XX\CFX\bin
v2XX는 설치된 ANSYS 버전에 맞게 수정합니다 (예: v241, v242).
설정 방법: 시작 메뉴에서 "시스템 환경 변수 편집"을 검색하여 실행 → 환경 변수 → 시스템 변수의 Path를 편집 → 위 두 경로를 추가합니다.
3단계 — 컴파일러 검증
환경 변수 설정이 올바른지 CFX에 내장된 검증 명령어로 확인합니다.
- ANSYS CFX-Solver Manager를 실행합니다.
Tools>Command Line을 선택하여 CFX 명령 프롬프트를 엽니다.- 아래 명령어를 입력합니다.
cfx5_fortran_info -v ifx
- 성공 시: 컴파일러 버전 정보와 함께 ifx가 CFX와 연결되었다는 메시지가 출력됩니다.
- 실패 시: Error 메시지가 출력되면 1, 2단계의 설치 경로와 Path 변수를 다시 확인합니다.
4단계 — User Fortran 코드 준비
CFX는 다양한 User Fortran 템플릿을 기본 제공합니다. PMV/PPD 계산을 위한 공식 템플릿을 활용합니다.
템플릿 파일 복사
ANSYS 설치 경로의 예제 폴더에서 PMV 관련 템플릿을 프로젝트 폴더로 복사합니다.
- 원본 경로:
C:\Program Files\ANSYS Inc\v2XX\CFX\examples\UserFortran\ - 파일:
cfx_user_routines_PMV.F - 복사한 파일의 이름을
cfx_user_routines.F로 변경합니다. CFX Solver는 이 기본 파일명을 우선 인식하므로, Pre 단계에서 파일 경로를 별도로 지정할 필요가 없어 편리합니다.
주요 파라미터 설정
Fortran 편집기(VS Code, Notepad++ 등)로 파일을 열고, USER_GET_CCL 서브루틴에서 해석에 사용할 변수를 설정합니다. 이 서브루틴은 CFX-Pre에서 설정한 파라미터를 Fortran 코드로 읽어오는 역할을 합니다.
- CMET (Metabolic Rate): 인체의 활동 수준입니다. 단위는 met이며, 사무실 앉은 상태는 1.0~1.2입니다.
- CWCL (Clothing Insulation): 의복의 단열 성능입니다. 단위는 clo이며, 여름철 평상복은 0.5, 겨울철은 1.0입니다.
- IFA (Air Velocity Option): 기류 속도 계산 방식입니다. 0이면 주변 공기 속도를 그대로 사용합니다.
- IVEL (Velocity Type): 사용할 속도의 종류입니다. 1이면 절대 속도(Absolute Velocity)를 사용합니다.
- JGICL (Clothing Insulation Option): 0이면 CWCL에 직접 입력한 값을 사용하고, 1~7이면 코드 내부에 사전 정의된 의복 종류를 사용합니다.
- JGTRAD (Radiation Temperature Option): 0이면 복사 온도를 공기 온도와 같게 가정하고(단순 해석), 1이면 복사 모델을 활성화하여 계산된 복사 온도를 사용합니다(정밀 해석).
PMV/PPD 모델 이론
PMV(Predicted Mean Vote)는 Fanger가 제안한 온열 쾌적도 지표로, 인체의 열수지 방정식을 기반으로 열적 감각을 -3(추움)에서 +3(더움) 사이의 값으로 예측합니다. 0에 가까울수록 쾌적합니다.
PPD(Predicted Percentage of Dissatisfied)는 주어진 환경에서 불만족을 느낄 사람의 비율(%)을 나타내며, PMV로부터 산출됩니다.
$$
PPD = 100 - 95 \cdot \exp(-0.03353 \cdot PMV^4 - 0.2179 \cdot PMV^2)
$$
PMV 계산에 필요한 6가지 입력 변수는 다음과 같습니다.
- 환경 변수 4가지: 기온(Air Temperature), 평균복사온도(Mean Radiant Temperature), 풍속(Air Velocity), 상대습도(Relative Humidity)
- 개인 변수 2가지: 대사량(Metabolic Rate, met), 착의량(Clothing Insulation, clo)
환경 변수 4가지는 CFX Solver가 해석 중 계산하고, 개인 변수 2가지는 사용자가 Fortran 코드에 입력합니다. Fanger 모델의 PMV 계산은 의복 표면 온도에 대한 반복 수렴(iteration)이 필요하므로, CEL만으로는 구현이 어렵고 User Fortran이 필요합니다.
5단계 — CFX-Pre 설정
CFX-Pre에서 PMV/PPD를 설정하는 방법은 두 가지입니다. 라이브러리 템플릿을 사용하면 대부분의 설정이 자동으로 완료되므로 권장됩니다.
방법 A — 라이브러리 템플릿 활용 (권장)
CFX-Pre에는 PMV/PPD 모델이 라이브러리 템플릿으로 내장되어 있습니다. 이 템플릿을 불러오면 Additional Variables(PMV, PPD), User Fortran 파일 경로, Expert Parameters 등이 자동으로 설정됩니다.
- CFX-Pre 메뉴에서
Tools>Import Library Data를 선택합니다. - 라이브러리 목록에서 PMV/PPD 관련 템플릿을 찾아 Import합니다.
- 템플릿이 적용되면 Outline 트리에 PMV, PPD Additional Variables와 User Fortran 설정이 자동 생성됩니다.
- 대사량(CMET), 착의량(CWCL) 등 개인 변수만 프로젝트에 맞게 수정하면 됩니다.
템플릿을 사용하더라도 User Fortran 컴파일 환경(1~3단계)은 반드시 사전에 구축되어 있어야 합니다. 템플릿은 CFX-Pre 설정을 자동화할 뿐, 컴파일러 설치를 대신하지는 않습니다.
방법 B — 수동 설정
라이브러리 템플릿 없이 직접 설정하는 방법입니다. 템플릿 내부 구조를 이해하거나 커스터마이징이 필요한 경우에 사용합니다.
User Fortran Routines 활성화:
- Outline 트리에서
Simulation>Solver>Expert Parameters>User Fortran Routines탭으로 이동합니다. - Option을 User Routines File로 변경하고, File Name에
cfx_user_routines.F의 전체 경로를 지정합니다. - 파일 이름을 기본명으로 변경하고 프로젝트 폴더에 두었다면, 파일 이름만 입력해도 됩니다.
Additional Variables 생성:
- PMV와 PPD는 CFX의 기본 변수가 아니므로, 결과를 저장할 Additional Variable을 생성해야 합니다.
- Outline 트리에서 Domain Default를 우클릭하여 Insert > Additional Variable을 선택합니다.
- Name에 PMV, PPD를 각각 입력하여 두 개의 변수를 생성합니다. Tensor Type은 Scalar로 유지합니다.
파라미터 전달:
- Fortran 코드의 USER_GET_CCL에서 읽어오는 파라미터를 CFX-Pre에서 동일하게 정의합니다. Expert Parameters 탭에서 다음과 같이 설정합니다.
- Real 타입: CMET = 1.1, CWCL = 0.5 (사무실 여름철 기준 예시)
- Integer 타입: IFA = 0, IVEL = 1, JGICL = 0, JGTRAD = 1
복사 모델 관련 주의사항
복사 모델을 사용하는 경우(JGTRAD = 1), 별도로 Radiation 모델(예: Discrete Transfer, Monte Carlo)을 Domain에서 활성화해야 합니다. 복사 모델 없이 JGTRAD = 1을 설정하면 복사 온도가 계산되지 않습니다.
6단계 — 결과 확인 및 후처리
실시간 모니터링
Output Control > Monitor 탭에서 Monitor Points를 생성하고, Expression으로 PMV를 선택하면 Solver가 계산하는 동안 PMV 값의 변화를 그래프로 확인할 수 있습니다.
CFD-Post 후처리
- Variables 목록에 Additional Variable로 생성한 PMV, PPD가 자동으로 나타납니다.
- Contour 플롯을 생성하고 Variable을 PMV 또는 PPD로 설정하면 공간적인 온열 쾌적도 분포를 시각화할 수 있습니다.
- PMV의 절대값이 가장 작은 영역에서 PPD 값도 최소가 됩니다.
쾌적 기준
- ISO 7730 기준에서 쾌적 범위는 PMV -0.5 ~ +0.5, PPD < 10% 입니다.
- PMV = 0 (중립)일 때에도 PPD는 약 5%로, 완전히 0이 되지는 않습니다.
실무 팁
- User Fortran 파일은 반드시 프로젝트 폴더(Working Directory)에 두어야 합니다. 다른 경로에 있으면 Solver가 파일을 찾지 못하거나 컴파일 오류가 발생할 수 있습니다.
- 컴파일 오류가 발생하면 Solver Manager의 Output 탭에서 오류 메시지를 확인합니다. 대부분 환경 변수 Path 누락이나 Visual Studio Build Tools 미설치가 원인입니다.
- JGTRAD = 0(복사 무시)으로 먼저 해석하여 기본 유동장과 온도장이 수렴하는지 확인한 후, JGTRAD = 1(복사 포함)로 전환하면 디버깅이 수월합니다.
- 하나의 프로젝트에서 여러 활동 수준(앉기, 서기, 걷기)을 비교하려면, CMET 값만 변경하여 동일 유동장에서 PMV/PPD를 재계산하면 됩니다.
결론
ANSYS CFX의 User Fortran 기능을 활용하면 CEL의 한계를 넘어 PMV/PPD 같은 복잡한 물리 모델을 해석에 직접 연동할 수 있습니다. Intel oneAPI ifx 컴파일러 환경을 구축하고, CFX가 제공하는 공식 PMV 템플릿을 활용하면 최소한의 코드 수정으로 온열 쾌적도 해석이 가능합니다. User Fortran은 PMV/PPD 외에도 커스텀 물성, 경계조건, 소스 항 등 다양한 확장에 활용할 수 있으므로, 한 번 환경을 구축해 두면 이후 프로젝트에서 계속 활용할 수 있습니다.
- 테스트 환경: ANSYS CFX 2024 R1 이상, Intel oneAPI HPC Toolkit 2024, Visual Studio Build Tools 2022
- 마지막 업데이트: 2026.03
'CFD 실무 > CFX 설정 가이드' 카테고리의 다른 글
| ANSYS CFX CEL if문 심화 — step, min, max 활용까지 (0) | 2026.03.31 |
|---|---|
| ANSYS CFX Total VS Static Pressure / Temperature (0) | 2026.03.31 |
| ANSYS CFX Porous Domain 열전달 (0) | 2026.03.25 |
| ANSYS CFX Porous Domain 압력 손실 (0) | 2026.03.18 |
| ANSYS CFX 상대습도 모델링 (0) | 2026.03.18 |