Last updated: 2026-08-03 43 min read

1. Flow360이란 무엇인가

Flow360은 미국 FlexCompute사가 개발한 압축성 나비어-스톡스(Navier-Stokes) 방정식 기반의 CFD(전산유체역학) 솔버입니다. 가장 큰 특징은 솔버 커널이 처음부터 GPU에서 구동되도록 설계되었다는 점입니다. 기존의 대다수 상용/오픈소스 CFD 코드는 CPU 클러스터에서 수십~수백 개의 코어에 도메인을 분할해 병렬 계산을 수행하는 방식으로 발전해 왔습니다. 반면 Flow360은 처리량이 큰 GPU의 SIMD/SIMT 병렬 구조에 맞춰 이산화 스킴과 선형대수 해법, 메모리 레이아웃 자체를 다시 설계했습니다. 그 결과로 얻는 이점은 단순히 "빠르다"는 한 마디로 요약하기 어려운, 몇 가지 서로 다른 성격의 장점을 동시에 갖습니다.

첫째는 순수한 계산 속도입니다. 동일한 정확도(공간 2차 정확도, RANS 계열 난류모델 기준)를 목표로 할 때, 수백만~수천만 셀 규모의 정상상태 해석이 수 시간이 아니라 수분 ~ 수십 분 내에 해석을 완료할 수 있습니다. 비정상(unsteady) 해석이나 회전체 해석처럼 많은 타임스탭에 대한 계산이 필요한 경우, 이 차이는 누적되어 실제 설계 반복(iteration) 횟수에 큰 영향을 줍니다.

둘째는 클라우드 네이티브 아키텍처입니다. Flow360은 로컬 워크스테이션에 설치해서 쓰는 소프트웨어가 아니라, 격자 업로드부터 솔버 실행, 후처리까지 전 과정이 브라우저 기반 웹 애플리케이션과 클라우드 컴퓨팅 노드에서 이뤄지는 SaaS(Software as a Service) 형태로 제공됩니다. 사용자는 자체적으로 GPU 서버를 구매·운영·유지보수할 필요 없이, 필요한 시점에 필요한 만큼의 GPU 자원을 사용하고 사용한 만큼만 비용을 지불합니다. 이는 사내에 대규모 HPC 클러스터를 두기 어려운 중소 규모 엔지니어링 조직이나, 특정 프로젝트 기간에만 대규모 해석이 필요한 팀에게 특히 유리한 구조입니다. 물론 자체 프라이빗 클라우드 인스턴스나 내부 HPC에 Flow360을 설치할 수 있는 옵션도 제공합니다.

셋째는 워크플로우 처리 방식의 차이입니다. 전통적인 CFD 워크플로우는 격자 생성 소프트웨어, 솔버, 후처리 도구가 각각 분리되어 있고 이들 사이를 파일로 주고받는 경우가 많습니다. Flow360은 형상 준비(ESP 기반 파라메트릭 CAD) → 자동 표면/체적 격자 생성 → 솔버 실행 → 결과 시각화·후처리에 이르는 흐름을 하나의 클라우드 플랫폼과 하나의 계정 안에서 처리하도록 설계하였습니다. 즉, 파일을 이곳저곳으로 옮기며 발생하는 실수와 시간 낭비를 줄여줍니다.

FlexCompute는 Flow360 외에도 전자기 시뮬레이션 도구인 Tidy3D를 함께 개발하는 회사로, MIT 출신 연구진이 설립했습니다. 클루(CLEW)는 FlexCompute의 한국 공식 리셀러로서, 대한민국 고객을 대상으로 Flow360 라이선스 공급, 기술지원, 교육, 데모 지원을 담당하고 있습니다. 여기에 제시된 Flow360 문서들은 클루가 국내 엔지니어를 위해 별도로 정리한 한국어 안내 자료이며, 보다 상세한 자료는 FlexCompute의 공식 영문 문서(아래 "더 알아보기" 참고)에서 확인할 수 있습니다.

1.1 왜 "GPU Native"가 중요한가

CPU 기반 솔버를 GPU로 단순히 "포팅"하는 것과, 처음부터 GPU를 염두에 두고 알고리즘을 설계하는 것은 전혀 다른 이야기입니다. CPU 코드를 GPU로 옮기기만 하면 메모리 접근 패턴이 GPU의 대규모 병렬 구조에 맞지 않아 이론적 성능의 일부만 활용 가능한 경우가 흔합니다. Flow360은 유한체적법 이산화, 시간 적분, 선형 솔버 등 솔버의 핵심 구성요소를 GPU 아키텍처에 맞춰 재구성했다는 점에서, 뒤늦게 GPU 지원을 추가한 솔버들과는 설계 철학 자체가 다릅니다.

1.2 정확도는 어떻게 확보하는가

속도가 빠르다고 해서 정확도를 희생하는 것은 아닙니다. Flow360은 압축성 RANS(Reynolds-Averaged Navier-Stokes) 방정식을 기본으로 하며, Spalart-Allmaras, k-ω SST 계열의 검증된 난류모델, 천이(transition) 모델, 그리고 필요 시 DES/DDES 계열의 scale-resolving 기법까지 지원합니다. FlexCompute는 NASA Turbulence Modeling Resource, AIAA Drag Prediction Workshop, High Lift Prediction Workshop 등 CFD 커뮤니티가 인정한 표준 벤치마크 케이스들에 대해 지속적으로 검증 작업을 수행하고 그 결과를 공개하고 있습니다.

2. 어떤 문제에 적합한가, 적합하지 않은가

CFD 솔버를 도입하기 전에 가장 먼저 확인해야 할 것은 "우리가 풀고 싶은 문제 유형에 대해 이 솔버가 실제로 검증되고 적합한가"입니다. Flow360은 특정 산업이나 특정 Flow Regime 에 국한되지 않고 폭넓게 적용 가능하지만, 아래에 정리한 응용 분야들은 특히 두텁게 검증되어 있습니다.

2.1 잘 맞는 응용 분야

외부 유동 - 항공기 및 날개 형상. 아음속부터 천음속, 초음속 영역까지 항공기 외부 유동 해석은 Flow360이 가장 오랫동안 다져온 영역입니다. 에어포일부터 3차원 전기체(full aircraft) 형상까지, 격자 수렴성과 공력 계수(CL, CD, CM) 예측 정확도가 폭넓게 검증되어 있습니다. 관련 사례로 NACA0012 저속 에어포일 검증, NACA4412 후연 박리 검증, ONERA M6 날개 천음속 유동 검증, 그리고 전기체급 형상인 HL-CRM 고양력 형상 검증DPW4 CRM 항력 예측 검증을 참고하시기 바랍니다.

경계층 물리 - 박리, 재부착, 천이. 실제 설계 문제에서 중요한 것은 단순한 공력 계수뿐 아니라 유동 박리가 어디서 일어나는지, 경계층이 층류에서 난류로 언제 전이되는지를 정확히 포착하는 능력입니다. 후향계단 유동 재부착점 검증천이 모델링 검증, 벽면모델 검증은 이러한 세부 물리 예측 성능을 제시합니다.

회전체 - 프로펠러, 로터, 풍력터빈. Actuator Disk, BET(Blade Element Theory) Disk/Line, 실제 형상을 회전시키는 Sliding Interface/Rotational Volume Zone까지 다양한 정밀도-비용 트레이드오프의 회전체 모델링 기법을 제공합니다. 틸트로터 항공기의 로터 성능을 다룬 XV-15 BET Disk 검증과 대형 해상풍력 로터를 다룬 DTU 10MW 풍력터빈 로터 공력 검증이 이 영역의 대표 사례입니다.

scale-resolving 시뮬레이션이 필요한 비정상 유동. RANS로는 제대로 포착하기 힘든 대규모 박리와 와류 구조(예: 원기둥 뒤편의 카르만 와열)를 다뤄야 할 때는 ILES, DES, DDES와 같은 scale-resolving 기법이 필요합니다. 원형 실린더 유동 검증에서 이러한 기법들의 정확도를 확인할 수 있습니다.

공력소음(Aeroacoustics). 로터나 고속 형상 주변에서 발생하는 소음을 예측해야 하는 문제라면, Flow360에 내장된 FWH(Ffowcs Williams-Hawkings) 음향 솔버가 유용합니다. 공력음향 및 소음 시뮬레이션 검증에서 원통 교차유동, Rod-Airfoil, 프로펠러 소음 사례를 확인할 수 있습니다.

수중 유동. 잠수함이나 수중운동체와 같이 물속에서 움직이는 형체의 저항 및 유동장 예측에도 활용 가능합니다. DARPA SUBOFF 잠수함 모형 비압축 유동 검증이 이를 뒷받침합니다.

초음속/발사체 공력. 로켓, 발사체와 같이 마하수가 1을 크게 넘는 초음속 영역의 압축성 유동, 충격파 포착 성능도 검증되어 있습니다. 해머헤드 발사체 초음속 공력 특성 검증에서 마하 1.2부터 4.8까지의 풍동시험 대비 결과를 확인할 수 있습니다.

정리하면 Flow360은 항공우주, 자동차, 풍력·에너지, 방산, 조선/해양 등 폭넓은 산업 분야에서 적용될 수 있다는 것을 알 수 있습니다.

2.2 아직 개발이 진행중인 부분

모든 CFD 문제에 Flow360이 최선의 선택은 아닙니다. 다음과 같은 경우에는 클루 기술지원팀과 사전 협의를 권장합니다.

  • 다상유동(multiphase flow). 자유표면(free surface), 기포/액적 등 상(phase) 경계를 직접 추적해야 하는 문제는 Flow360의 주력 영역이 아닙니다. 조선 분야에서도 SUBOFF처럼 완전 수몰된 물체의 단상 유동은 검증되어 있지만, 파도-선체 상호작용과 같은 자유표면 문제는 별도 확인이 필요합니다.

  • 화학반응, 연소. 연소 반응이나 화학종 수송(species transport)을 포함한 반응 유동 해석은 이 문서 작성 시점 기준으로 Flow360의 표준 기능 범위에 포함되어 있지 않습니다.

  • 입자 유동, 이산상(discrete phase) 모델. 라그랑주 입자 추적이 필수적인 문제(분무, 분진 등)는 별도 확인이 필요합니다.

  • 매우 특이한 경계조건이나 커스텀 물리. Flow360이 표준으로 제공하지 않는 물리 현상이라도, 사용자 정의 동역학(UDD)이나 사용자 정의 표현식을 통해 구현 가능한 경우가 있습니다. 이 부분은 3.3절에서 다시 다룹니다.

결론적으로, 순수한 공기/물 등 단상 유체의 외부·회전 유동이면서 RANS 혹은 scale-resolving 스케일의 난류 해석이 필요한 문제라면 Flow360이 강력한 선택지가 됩니다. 반면, 반응 유동이나 다상유동처럼 특수한 물리가 지배적인 문제라면 사전 검토가 필요합니다.

3. 핵심 기능/역량 개요

Flow360이 표준 RANS 외부 유동 해석에 더해 제공하는 특화 기능들을 제시합니다. 각 기능은 뒤에서 설명할 솔버 설정 항목과 직접 연결되어 있습니다.

3.1 회전체 모델링 - 네 가지 접근 방식

프로펠러, 로터, 팬과 같은 회전체 문제를 다룰 때 Flow360은 정확도와 계산 비용이 서로 다른 여러 모델링 기법을 제공하며, 프로젝트 단계와 목적에 맞게 선택할 수 있습니다. 이 기능은 특히 UAM, UAV, 드론 산업군의 요구에 맞춰 개발된 기능으로, 다수의 로터/프롭을 사용하는 항공기 성능해석에 적합합니다.

기법특징주로 쓰는 상황
Actuator Disk (AD)원판 영역에 균일한 압력 변화를 가하는 방식으로 운동량을 지배방정식에 추가하는 가장 단순한 모델. 추력/토크 분포가 이미 알려진 경우에 적합프로펠러 downwash가 후류에 미치는 영향만 보고 싶을 때
BET Disk (Blade Element Theory Disk)2D 익형 공력 데이터(양력/항력 계수)를 바탕으로 시간 평균된 보정력을 부여. 실제 블레이드 형상 격자가 필요 없음프로펠러 CAD가 없거나, 계산 비용을 크게 아끼면서도 비대칭 유입 조건(받음각, 옆미끄럼각 등)을 반영하고 싶을 때
BET LineBET Disk와 원리는 같지만 시간 평균이 아닌 분해(resolved) 방식으로 블레이드 통과에 따른 천이나 와류-블레이드 상호작용까지 포착비정상 블레이드 통과 효과가 중요한 경우
Rotational Volume Zone (실제 형상 회전)블레이드 형상을 그대로 격자화하고 물리적으로 회전시키는 방식. 정확도가 가장 높지만 격자 생성과 해석 비용이 가장 큼최종 검증, 블레이드 표면 상세 유동이 필요한 경우

이 외에도 정상상태 로터 해석에 적합한 MRF(Multiple Reference Frame) 방식과, 기체 전체가 하나의 축을 중심으로 회전하는 기동(피치/롤/요)을 다루는 SRF(Single Reference Frame) 방식이 있습니다. MRF는 격자 자체는 고정된 채로 나비어-스톡스 방정식에 원심력·코리올리 항을 추가해 회전 효과를 구현하므로, Rotational Volume Zone 대비 계산 비용이 훨씬 저렴합니다. 여러 겹의 회전 영역이 필요한 경우 Nested Rotational Volume Zone도 지원되어, 예컨대 로터 안에 또 다른 회전축을 갖는 구조물을 중첩해서 표현할 수 있습니다.

어떤 기법을 선택할지는 결국 "지금 단계에서 어떤 정보가 필요한가"에 달려 있습니다. 초기 개념 설계 단계에서 downwash의 대략적 영향만 확인하려 한다면 Actuator Disk로 충분하고, 프로펠러 성능 곡선을 상세히 파악하고 형상을 최적화해야 한다면 BET Disk/Line이 합리적이며, 최종 검증이나 블레이드 국소 유동이 중요하다면 실제 형상을 회전시키는 방식으로 넘어가는 식의 단계적 접근이 일반적입니다. XV-15 틸트로터 사례의 BET Disk 검증 결과는 XV-15 틸트로터 블레이드 해석 문서에서 확인할 수 있습니다.

3.2 공력음향 (Aeroacoustics)

Flow360은 F1A 정식화 기반의 FWH(Ffowcs Williams-Hawkings) 음향 솔버를 내장하고 있습니다. FWH 방정식은 나비어-스톡스 방정식으로부터 Lighthill의 음향 유사성 이론을 통해 유도되는 비균질 파동방정식으로, 물리적으로는 단극자(monopole), 이중극자(dipole), 사중극자(quadrupole) 세 종류의 소음원을 포함합니다. Flow360의 구현은 계산 비용이 크게 증가하는 사중극자 항은 제외하고, 고체 표면 적분으로 계산 가능한 단극자·이중극자 항만으로 관측자 위치에서의 음압 시간이력을 추정합니다. 실무적으로 이 두 항만으로도 대부분의 공력소음 응용에서 충분히 정확한 결과를 얻을 수 있다는 것이 FlexCompute의 검증 결과입니다.

또한 관측자 시간(observer-time) 기반이 아니라 소스 시간(source-time) 기반으로 동작하기 때문에, 동일한 정확도 대비 계산 시간이 짧다는 장점이 있습니다. 벽면 경계에서 반사되는 음향 신호를 다루기 위한 대칭 평면(SymmetryPlane) 처리도 지원합니다. 실제 검증 결과는 공력음향 및 소음 시뮬레이션 검증 문서에서 원통 교차유동, Rod-Airfoil 상호작용, 2엽 프로펠러 세 가지 케이스로 확인할 수 있습니다.

3.3 사용자 정의 동역학 (User Defined Dynamics, UDD)

UDD는 - 일반적으로 UDF라 불리는 - 사용자 정의 표현식 입력 기능은 순수한 CFD 방정식만으로는 표현할 수 없는 추가적인 물리적 거동을 사용자가 직접 정의할 수 있게 해주는 기능입니다. 내부적으로는 사용자 정의 표현식(수학식)을 통해 솔버가 매 시간 단계마다 특정 값을 갱신하도록 지시하는 방식으로 동작합니다.

대표적인 활용 예시로는 원하는 양력 계수를 유지하도록 받음각을 자동으로 조정하는 PI 제어기 구현, 또는 구조 하중에 반응해 격자가 실시간으로 회전/변형하도록 만드는 유체-구조 연성(FSI에 준하는) 문제 등이 있습니다. 즉 UDD는 "솔버가 계산한 값을 바탕으로 해석 조건 자체를 되먹임(feedback)하는" 용도로 이해하면 됩니다. 이는 2.2절에서 언급한 "표준으로 제공하지 않는 물리"를 우회적으로 구현하는 주요 수단이기도 합니다.

3.4 사용자 정의 후처리 (User Defined Post-Processing, UDPP)

Flow360의 후처리는 표면(surface), 체적(volume), 단면(slice), 등가곡면(iso-surface) 네 가지 표현 형식에 사용자 정의 표현식을 결합하는 방식으로 확장할 수 있습니다. 크게 세 가지 활용 방식이 있습니다.

  1. 사용자 정의 필드(userDefinedFields) - 솔버 내부 변수를 조합한 수식으로 새로운 후처리 변수(예: 총압 계수)를 정의하고 출력 파일에 포함시킵니다.
  2. 사용자 정의 표면 적분 - 지정한 격자 패치 집합에 대해 내부 변수를 적분합니다. 특정 부분품에 작용하는 압력력을 계산하거나, 입구/출구를 통과하는 유량을 구하는 데 활용됩니다.
  3. 사용자 정의 모니터 - 해석이 진행되는 동안 특정 변수의 시간에 따른 변화를 별도로 기록하는 모니터를 생성합니다.

이 기능들은 후술할 솔버 설정의 userDefinedFields, monitorOutput 항목과 직접 대응됩니다.

4. 전처리와 AI 자동 메싱

Flow360은 CAD 형상 준비부터 표면 격자, 체적 격자 생성까지 이어지는 자동화된 전처리 파이프라인을 제공합니다. 특히 Geometry는 CAD 입력만으로 사용자의 세세한 작없이 자동으로 격자 생성이 가능합니다. 체적 격자의 출력 형식은 CGNS입니다. 물론 이미 보유하고 있는 격자를 그대로 업로드해서 쓰는 것도 가능합니다(자세한 내용은 6절 워크플로우 참고).

4.1 Engineering Sketch Pad (ESP) - 파라메트릭 형상 정의

ESP는 OpenCASCADE 커널을 기반으로 하는 웹 지원 솔리드 모델러로, 형상을 코드(CSM 스크립트) 형태로 기술한다는 점이 특징입니다. 즉 좌표나 치수를 하드코딩하는 대신 파라미터로 정의하기 때문에, 날개 시위 길이나 동체 반경 같은 설계 변수를 바꿔가며 형상을 재생성하는 파라메트릭 스터디에 유리합니다. FlexCompute는 사전 빌드된 ESP 배포판을 제공하므로 대부분의 사용자는 소스 코드를 직접 컴파일할 필요 없이 바로 사용할 수 있습니다. CSM 파일 안에서는 각 솔리드 바디나 면(face)에 groupName, faceName과 같은 속성(attribute)을 부여할 수 있는데, 이 속성이 이후 자동 메싱 단계에서 경계조건 그룹핑이나 국소 격자 정제(refinement) 대상을 지정하는 기준이 됩니다. 외부 유동 해석에서는 여러 개의 솔리드 바디(예: 동체+날개+프로펠러 허브)를 하나의 CSM에 정의할 수 있지만, 내부 유동 해석에서는 유체 영역을 나타내는 단일 솔리드 바디만 허용된다는 제약이 있습니다.

또한 STEP 형식으로 만들어진 기존 CAD 데이터가 있다면, 이를 ESP로 불러와 면과 모서리에 라벨을 붙인 뒤 EGADS 형식으로 저장하여 자동 메싱 파이프라인에 그대로 투입할 수도 있습니다. 즉 반드시 처음부터 CSM으로 형상을 새로 그릴 필요는 없고, 외부 CAD 툴에서 만든 STEP 파일을 재활용하는 경로도 열려 있습니다.

4.2 자동 표면/체적 격자 생성

전처리는 크게 두 단계로 나뉩니다.

  • 표면 격자(Surface Mesh) 생성: 형상 파일과 함께 표면 해상도를 제어하는 설정(전역 최대 모서리 길이, 곡률 해상 각도, 성장률 등)을 입력하면 표면 삼각형/사각형 격자가 자동 생성됩니다. ESP에서 지정한 faceName, edgeName 속성을 이용해 특정 면이나 모서리(예: 앞전/뒷전)에 대해서만 국소적으로 더 촘촘한 격자를 지정할 수 있습니다.
  • 체적 격자(Volume Mesh) 생성: 표면 격자를 입력으로 받아, 벽 부근의 이방성 프리즘 레이어 첫 층 두께와 성장률, 원거리 경계(farfield) 형상, 국소 정제 영역(박스/원기둥), 로터 디스크·슬라이딩 인터페이스와 같은 회전체 관련 영역까지 포함한 체적 격자를 CGNS 형식으로 생성합니다.

Geometry AI를 이용한 자동격자 생성 방법은 복잡한 세팅이 필요없습니다. 단순히 몇가지만 입력함으로써 작동합니다.

  • refinementFactor: 전체 격자를 일괄적으로 몇 배 더 조밀하게 만들지 지정하는 전역 배율입니다. 격자 민감도 스터디를 할 때 개별 설정을 일일이 바꾸지 않고도 전체적인 해상도를 스케일링할 수 있어 편리합니다.
  • farfield 형상 결정 방식: auto(형상의 바운딩 박스로부터 완전구/반구 자동 판단), quasi-3d(준2차원 해석을 위한 얇은 디스크 형상, 양쪽 면은 대칭평면 처리), user-defined(ESP에서 사용자가 직접 지정) 세 가지 방식을 지원합니다.
  • gapTreatmentStrength: 두 표면이 매우 가까이 근접한 좁은 간격(narrow gap)을 처리하는 강도를 0~1 사이 값으로 조절합니다. 값이 클수록 이방성 격자에서 등방성 격자로의 전환에 더 보수적인 처리가 적용됩니다.
  • rotorDisks / slidingInterfaces: 회전체 주변에 반경/축/원주 방향 간격을 독립적으로 조절할 수 있는 도넛 형태의 특수 영역을 정의합니다. 이 영역은 3.1절에서 설명한 BET Disk나 실제 형상 회전 해석을 위한 격자 토폴로지를 자동으로 만들어 줍니다.

4.3 격자 구성 파일 (Flow360Mesh.json)

이미 자체적으로 만들어 둔 격자(UGRID, CGNS 등)를 업로드하는 경우에는, 어떤 경계 패치가 점착벽(no-slip wall)인지, 슬라이딩 인터페이스 쌍은 어떻게 구성되는지를 정의하는 별도의 메시 프로세서 입력 파일이 필요합니다. 슬라이딩 인터페이스가 없는 단순한 외부 유동 격자라면 이 파일의 상당 부분이 빈 목록으로 남습니다. 참고로 release 23.3.2.0 이후부터는 CGNS 격자의 존(zone) 간 연결 정보(ZoneGridConnectivity)를 Flow360이 직접 인식할 수 있게 되어, 다중 체적 영역을 가진 케이스(회전체, 복합열전달 등)의 설정 작업이 크게 단순화되었습니다. 여러 볼륨 영역으로 구성된 CGNS 격자를 사용할 경우, 회전 관련 설정은 메시 파일이 아니라 아래에서 설명할 솔버 설정의 volumeZones 항목에서 직접 지정하는 것이 최신 워크플로우입니다.

5. 솔버 설정 개요

이 파일에 들어가는 물리량은 대부분 무차원화되어 입력된다는 점이 특징인데, 이는 격자 단위 길이( LgridUnitL_{gridUnit} )와 자유흐름 음속( CC_\infty )을 기준으로 정규화한 값을 사용한다는 뜻입니다. 처음 접하는 사용자에게는 다소 생소할 수 있지만, 이렇게 하면 격자를 어떤 물리 단위(mm, m, inch 등)로 만들었든 솔버 내부 수치 스킴이 항상 같은 스케일에서 동작하도록 보장할 수 있다는 장점이 있습니다. 아래 표는 설정 파일을 구성하는 주요 영역을 개략적으로 정리한 것입니다.

설정 영역필수 여부역할
geometry선택기준 면적, 모멘트 기준점/길이 등 공력 계수 계산에 쓰이는 기하 참조값
freestream필수마하수, 레이놀즈수(또는 점성계수), 온도, 받음각/옆미끄럼각, 난류 변수 초기값 등 자유흐름 조건
boundaries필수격자의 각 경계 패치에 물리적 경계조건 유형(점착벽, 활벽, 등온벽, 아음속 유출입 등) 부여
volumeZones조건부유체/고체 영역 구분, 회전 영역의 회전축·회전속도(referenceFrame) 정의
navierStokesSolver선택(기본값 존재)나비어-스톡스 방정식 수치해법의 수렴 허용오차, 공간 정확도 차수, 감쇠 계수 등
turbulenceModelSolver선택(기본값 존재)난류모델 선택(SA/SST/None) 및 관련 수치 파라미터, DDES 활성화 여부
transitionModelSolver선택(기본 비활성)천이모델(AmplificationFactorTransport) 활성화 및 임계 증폭계수(N-factor) 등
heatEquationSolver조건부(CHT용)복합열전달(CHT) 해석에서 고체 영역 열방정식의 수치 파라미터
initialCondition선택해석 초기장을 자유흐름값으로 둘지, 수식으로 직접 정의할지
timeStepping필수정상/비정상 여부, 물리적 시간 단계 수, CFL 램프/적응형 CFL 설정
slidingInterfaces사용 중단(레거시)과거 방식의 회전 인터페이스 정의. 현재는 volumeZones→referenceFrame 사용 권장
actuatorDisks / BETDisks조건부(회전체)3.1절에서 설명한 회전체 모델의 구체적 수치 입력(추력/토크 분포, 익형 폴라 데이터 등)
porousMedia조건부다공성 매질 영역의 다르시(Darcy)/포르히하이머(Forchheimer) 계수
userDefinedDynamics조건부(3.3절 UDD)사용자 정의 동역학 표현식
Output선택(기본값 존재)체적/표면/단면/등가곡면/모니터/음향 출력 항목과 형식

각 항목을 조금 더 구체적으로 살펴보겠습니다.

5.1 geometry, freestream, boundaries

geometry는 필수는 아니지만 실무적으로는 거의 항상 지정합니다. refArea(기준 면적), momentCenter, momentLength를 정의해 두어야 힘과 모멘트를 무차원 계수(CL, CD, CMy 등)로 정확히 환산할 수 있기 때문입니다.

freestream은 유동 조건을 정의하는 필수 섹션입니다. 마하수는 항상 필요하며, 레이놀즈수는 Reynolds 또는 자유흐름 점성계수 muRef 둘 중 하나로 지정합니다. 여기서 주의할 점은 Flow360의 레이놀즈수 정의가 격자 단위 길이 LgridUnitL_{gridUnit} 을 기준으로 한다는 것으로, 일반적으로 참조 시위 길이나 동체 길이를 기준으로 하는 관행과는 차이가 있어 혼동하기 쉬운 부분입니다. 온도, 받음각(alphaAngle), 옆미끄럼각(betaAngle)도 여기서 정의하며, 필요하면 turbulenceQuantities를 통해 난류강도, 난류점성비 등 초기 난류 조건도 명시할 수 있습니다.

boundaries는 격자의 각 경계 패치 이름에 물리적 경계조건 유형을 매핑합니다. 대표적인 유형으로 점착벽(NoSlipWall), 활벽(SlipWall), 등온벽(IsothermalWall), 열유속벽(HeatFluxWall), 자유흐름(Freestream), 아음속/초음속 유출입 조건(SubsonicOutflowPressure, SubsonicOutflowMach, SubsonicInflow), 질량유량 유출입(MassOutflow/MassInflow), 벽함수(WallFunction), 주기 경계(TranslationallyPeriodic, RotationallyPeriodic), 고체 영역용 등온/단열벽(SolidIsothermalWall, SolidAdiabaticWall), 대칭평면(SymmetryPlane) 등이 있습니다. NoSlipWall이나 Freestream 같은 일부 경계조건은 좌표(x, y, z)에 대한 수학식으로 속도를 직접 정의할 수도 있어(사용자 정의 표현식), 시간이나 공간에 따라 변화하는 벽 운동이나 유입 조건을 표현할 수 있습니다.

5.2 volumeZones와 회전 영역

volumeZones는 격자를 구성하는 각 체적 영역의 물리적 성격을 정의합니다. 기본은 유체 영역(FluidDynamics)이지만, 복합열전달(CHT) 해석을 위한 고체 영역(HeatTransfer)도 지정할 수 있습니다. 특히 회전체 해석에서 중요한 것이 referenceFrame 항목으로, 여기서 회전축(axisOfRotation), 회전중심(centerOfRotation), 회전속도(omegaRadians 또는 omegaDegrees)를 지정합니다. parentVolumeName을 지정하면 회전 영역 안에 또 다른 회전 영역을 중첩시키는 것도 가능합니다(3.1절의 Nested Rotational Volume Zone). 비정상 해석에서 timeStepping의 시간 간격을 무한대("inf")로 두면 사실상 MRF(영역이 여러 개인 경우) 또는 SRF(영역이 하나인 경우) 방식의 정상상태 해석으로 동작한다는 점도 알아 둘 만합니다.

5.3 navierStokesSolver, turbulenceModelSolver, transitionModelSolver

이 세 섹션은 각각 유동 방정식, 난류모델 방정식, 천이모델 방정식을 수치적으로 어떻게 풀지 결정하는 파라미터들입니다. 공통적으로 절대/상대 수렴 허용오차, 선형솔버 반복 설정, 자코비안 갱신 빈도, 공간 정확도 차수(대부분 2차)를 지정할 수 있습니다.

난류모델은 modelType으로 Spalart-Allmaras(SA), k-ω SST, 또는 None(층류) 중에서 선택합니다. 앞서 소개한 검증 문서들에서 SA와 SST 계열 모델의 정확도를 확인할 수 있으며(NACA0012 검증, 후향계단 유동 검증 등), DDES 옵션을 true로 설정하면 Delayed Detached Eddy Simulation으로 전환되어 대규모 박리 유동의 scale-resolving 해석이 가능해집니다(원형 실린더 검증, DTU 10MW 풍력터빈 검증에서 이 방식이 사용되었습니다).

천이모델은 기본적으로 비활성(None)이며, AmplificationFactorTransport 모델을 켜면 층류-난류 천이를 예측하는 e^N 계열 접근이 활성화되고 임계 증폭계수(Ncrit, 대체로 1~11 범위) 또는 자유흐름 난류강도로 천이 위치를 제어합니다. 실제 검증 사례는 천이 모델링 검증 문서를 참고하십시오.

5.4 heatEquationSolver와 initialCondition

heatEquationSolver는 유체-고체 복합열전달(CHT, Conjugate Heat Transfer) 해석에서 고체 영역의 열방정식을 풀 때 필요한 섹션으로, 선형솔버 반복 설정과 수렴 허용오차를 정의합니다.

initialCondition은 해석을 시작할 때의 초기 유동장을 지정합니다. 기본값인 freestream을 쓰면 도메인 전체가 자유흐름 조건으로 초기화되고, expression을 사용하면 밀도, 속도 3성분, 압력 각각을 좌표에 대한 수식으로 직접 정의할 수 있어 복잡한 초기 유동장(예: 충격파가 이미 형성된 상태)을 구성하는 것도 가능합니다.

5.5 timeStepping

정상상태/비정상 여부와 관계없이 모든 해석에서 필수로 지정하는 섹션입니다. 정상상태 해석은 timeStepSize"inf"로 두고 물리적 시간 단계를 1로 설정하는 형태가 일반적이며, 비정상 해석은 실제 물리적 시간 간격과 물리적 시간 단계 수(physicalSteps)를 지정합니다. 각 물리적 시간 단계 내부에서는 다시 여러 번의 pseudo-시간 반복(maxPseudoSteps)이 수행되며, 이때 CFL 수를 어떻게 키워나갈지를 CFL 항목에서 결정합니다. type: "ramp"는 지정된 pseudo-step 동안 초기값에서 최종값까지 선형적으로 CFL을 증가시키고, type: "adaptive"는 매 pseudo-step의 수렴 품질을 보고 솔버가 스스로 CFL을 적응적으로 조절합니다. 실무적으로는 adaptive CFL이 튜닝 부담을 줄여주어 초기 설정 단계에서 특히 유용합니다.

5.6 slidingInterfaces, actuatorDisks, BETDisks

slidingInterfaces는 회전 인터페이스를 정의하는 예전 방식으로, release 23.3.2.0 이후 공식적으로 사용 중단(deprecated)되었습니다. 현재는 5.2절에서 설명한 volumeZones→referenceFrame 방식을 사용하는 것이 권장되는 최신 워크플로우입니다.

actuatorDisksBETDisks는 3.1절에서 설명한 회전체 모델의 실제 수치 입력을 정의하는 섹션입니다. actuatorDisks는 반경별 축방향/원주방향 단위면적당 힘(forcePerArea) 분포를 직접 입력받고, BETDisks는 블레이드 수, 반경, 회전속도, 기준 시위 길이와 함께 마하수·레이놀즈수·받음각별 2D 양력/항력 계수 폴라 데이터(sectionalPolars)를 입력받아 내부적으로 블레이드에 걸리는 보정력을 계산합니다. 블레이드 끝단 손실을 보정하는 tipGap, 비정상 BET Line 해석으로 전환하는 bladeLineChord와 같은 세부 옵션도 있습니다.

5.7 porousMedia

다공성 매질(예: 라디에이터, 열교환기, 필터)을 통과하는 유동의 압력 손실을 개별 셀 단위로 형상화하지 않고 등가의 체적력으로 모델링하는 섹션입니다. 점성 손실 항의 크기를 결정하는 다르시 계수(DarcyCoefficient)와 관성 손실 항을 결정하는 포르히하이머 계수(ForchheimerCoefficient)를 각 축 방향으로 지정하고, 이 힘이 적용될 체적 영역(현재는 박스 형태 지원)을 정의합니다.

5.8 Output

Output 관련 섹션들(volumeOutput, surfaceOutput, sliceOutput, isoSurfaceOutput, monitorOutput, aeroacousticOutput)은 각각 독립적으로 설정할 수 있어, 필요한 결과 표현 형식만 선택적으로 켤 수 있습니다. 공통적으로 제공되는 무차원 출력 변수로는 압력계수(Cp), 마하수, 난류 점성비, 와도, Q-criterion, 벽거리 등이 있고, 표면 출력에는 표면마찰계수 벡터(CfVec), 열유속(heatFlux) 등이 추가됩니다. aeroacousticOutput을 지정하면 3.2절에서 설명한 FWH 음향 솔버가 활성화되며, 도메인 외부의 임의 관측자 좌표(observers)에서의 음압 시간이력을 얻을 수 있습니다. 그리고 앞서 3.4절에서 소개한 userDefinedFields를 이용하면 미리 정의된 변수 목록에 없는 임의의 물리량(예: 총압 계수, 특정 부분에 작용하는 압력력)도 C 언어와 유사한 문법의 수식으로 직접 정의해 출력에 포함시킬 수 있습니다.

힘과 모멘트 계수는 자유흐름 동압( 12ρUref2\frac{1}{2}\rho_\infty U_{ref}^2 )과 5.1절의 geometry 기준값으로 정규화된 CL, CD, CFx/y/z, CMx/y/z 형태로 WebUI의 "Forces" 탭이나 Python API를 통해 바로 확인할 수 있습니다.

5.9 설정 항목들이 하나로 합쳐지는 모습

지금까지 설명한 항목들이 실제로 하나의 설정 파일 안에서 어떻게 어우러지는지 감을 잡기 위해, 아음속 날개 외부 유동에 대한 간단한 정상상태 케이스를 예로 들어 봅니다(실제 값은 예시일 뿐이며, 각 항목의 정확한 스키마는 반드시 공식 문서로 확인하시기 바랍니다).

code
{
  "geometry": {
    "refArea": 2.313,
    "momentCenter": [0.25, 0.0, 0.0],
    "momentLength": [1.0, 1.0, 1.0]
  },
  "freestream": {
    "Mach": 0.2,
    "Reynolds": 5000000,
    "Temperature": 288.15,
    "alphaAngle": 4.0,
    "betaAngle": 0.0
  },
  "boundaries": {
    "wing": { "type": "NoSlipWall" },
    "farfield": { "type": "Freestream" }
  },
  "navierStokesSolver": {
    "absoluteTolerance": 1e-9,
    "orderOfAccuracy": 2
  },
  "turbulenceModelSolver": {
    "modelType": "SpalartAllmaras",
    "absoluteTolerance": 1e-8
  },
  "timeStepping": {
    "timeStepSize": "inf",
    "maxPhysicalSteps": 1,
    "maxPseudoSteps": 3000,
    "CFL": { "type": "adaptive" }
  },
  "surfaceOutput": {
    "outputFormat": "tecplot",
    "outputFields": ["Cp", "CfVec", "yPlus"]
  }
}

여기서 눈여겨볼 점은, 회전체·복합열전달·다공성 매질·음향 해석과 같은 특수 기능이 필요 없는 가장 기본적인 외부 유동 케이스라면 geometry, freestream, boundaries, timeStepping 정도만 신경 써서 채우고 나머지는 기본값에 맡겨도 무리 없이 첫 결과를 얻을 수 있다는 것입니다. 프로젝트가 요구하는 특수 기능(3절, 5.6~5.7절)은 필요해지는 시점에 하나씩 섹션을 추가해 나가는 방식으로 설정을 키워가면 됩니다.

6. 사용 워크플로우 - WebUI와 Python API

Flow360은 동일한 클라우드 백엔드를 두 가지 인터페이스로 사용할 수 있게 해줍니다. 어느 쪽을 선택하든 내부적으로 처리되는 격자, 설정, 결과 파일의 구조는 동일하므로, 자동화나 반복 스터디가 필요하면 Python API로, 처음 배우거나 손으로 몇 개 케이스만 다뤄보고 싶다면 WebUI로 시작하는 것이 자연스럽습니다.

6.1 WebUI 방식의 흐름

브라우저에서 flow360.simulation.cloud에 로그인한 뒤 진행되는 전형적인 흐름은 다음과 같습니다.

  1. 격자 준비: 이미 보유한 격자 파일(UGRID, CGNS 등)을 업로드하거나, 4절에서 설명한 자동 메싱 파이프라인을 통해 CAD로부터 표면/체적 격자를 클라우드에서 직접 생성합니다.
  2. 케이스 설정: 화면에 순차적으로 표시되는 단계별 폼을 따라 geometry, freestream, boundaries 등 5절에서 설명한 설정 항목들을 입력합니다. 대부분의 항목은 합리적인 기본값이 채워져 있어, 처음에는 필수 항목(자유흐름 조건, 경계조건 유형 정도)만 채우고 나머지는 기본값으로 두어 빠르게 첫 해석을 돌려볼 수 있습니다.
  3. 케이스 제출 및 모니터링: 케이스를 제출하면 클라우드에서 GPU 자원이 할당되어 해석이 시작됩니다. 해석이 진행되는 동안 잔차 수렴 추이, 공력 계수의 시간 이력, 유동 변수의 최소/최대값 등을 실시간으로 확인할 수 있어 발산이나 이상 징후를 조기에 파악할 수 있습니다.
  4. 결과 검토: 해석이 끝나면(또는 진행 중에도) 등위선(contour), 등가곡면(iso-surface), 표면 분포 등을 브라우저 안에서 바로 인터랙티브하게 시각화하고, 필요하면 결과 파일을 내려받아 별도의 후처리 도구(Tecplot, ParaView 등)로 넘길 수 있습니다.

이 흐름을 실제로 손으로 따라 해보고 싶다면, ONERA M6 날개나 자동 메싱 예제로 첫 케이스를 실행해 보는 것을 권장합니다. 처음 사용하는 경우 데모 신청을 통해 클루로부터 계정 발급과 함께 첫 케이스 실습을 지원받을 수 있습니다.

6.2 Python API 방식의 흐름

반복적인 파라미터 스터디, CI/CD 파이프라인 연동, 대량의 케이스를 스크립트로 관리해야 하는 경우에는 Python 클라이언트가 더 적합합니다. 기본적인 사용 흐름은 다음과 같은 형태를 띱니다.

code
import flow360client

# 격자 업로드
mesh_id = flow360client.NewMesh("mesh.ugrid", noSlipWalls=[...], meshName="my_mesh")

# 케이스 제출 (Flow360.json 설정 파일 또는 dict 전달)
case_id = flow360client.NewCase(mesh_id, "Flow360.json", caseName="my_case")

# 수렴 이력, 공력 계수 등 결과 조회
residuals = flow360client.case.GetCaseResidual(case_id)
forces = flow360client.case.GetCaseTotalForces(case_id)

# 결과 파일 다운로드
flow360client.case.DownloadSurfaceResults(case_id)

이 외에도 형상 파일로부터 표면/체적 격자를 직접 생성하는 NewSurfaceMeshFromGeometry, NewMeshFromSurface, 케이스를 이어서(fork) 실행하는 parentId 인자, 장시간 비정상 해석을 여러 개의 케이스로 나눠서 순차 제출하는 NewCaseListWithPhase 등 자동화에 유용한 함수들이 제공됩니다. 다운로드 가능한 결과 파일에는 비선형/선형 잔차, CFL 이력, 유동 변수 최소/최대값, 표면별·전체 공력 계수, BET 디스크 결과, Actuator Disk 출력 등이 있으며, 각각 CSV 형식으로 정리되어 있어 Python이나 다른 분석 도구에서 곧바로 후처리하기 쉽습니다.

Python API의 가장 큰 장점은 재현성과 확장성입니다. 형상 파라미터 몇 개만 바꾼 수십~수백 개의 케이스를 스크립트 한 번으로 제출하고, 결과가 나오는 대로 자동으로 수집·비교하는 파이프라인을 구성할 수 있습니다. WebUI로 개념을 충분히 익힌 뒤, 반복 작업이 늘어나는 시점에 Python API로 넘어가는 것이 일반적인 학습 경로입니다.

7. 지식 베이스 - 참고할 만한 이론/레퍼런스 자료

Flow360 공식 문서에는 단순한 설정 레퍼런스를 넘어, CFD 실무자에게 유용한 이론적 배경과 팁을 다루는 지식 베이스(Knowledge Base) 섹션이 있습니다. 대표적으로 다음과 같은 주제를 다룹니다.

  • 격자 생성 권장사항: 앞전/뒷전과 같이 큰 유동 기울기가 예상되는 영역의 세분화 기준, 인접 요소 크기 성장률(대략 1.2배 이내 권장), 원거리 경계(farfield)의 적정 크기(비운동 표면 최대 치수의 약 100배)와 같은 실무적인 경험칙을 정리하고 있습니다.
  • CGNS 격자 형식과 다중 영역 계면 연결성: CGNS가 여러 체적 영역을 계층적으로 저장하는 방식과, Flow360이 이 연결 정보를 자동으로 인식해 복합열전달·회전체 케이스의 설정을 단순화하는 방법을 설명합니다.
  • STEP 형식 CAD를 이용한 자동 메싱: 외부 CAD 도구에서 만든 STEP 파일을 ESP로 불러와 라벨링하고 EGADS로 변환해 자동 메싱 파이프라인에 연결하는 절차를 다룹니다.
  • 무차원 입력값(Nondimensional Inputs): 레이놀즈수, 무차원 점성계수, 받음각·옆미끄럼각 정의 등 Flow360 설정 파일 전반에서 반복적으로 등장하는 무차원화 규칙을 정리합니다. 5절에서 다룬 것처럼 Flow360 고유의 격자 단위 기준 정규화 방식을 이해하는 데 필수적인 자료입니다.
  • 경계조건 상세 설명: 경계조건에 수식을 입력값으로 사용하는 방법, 난류모델별로 지정 가능한 난류 변수 조합(예: SST 모델에서는 난류운동에너지+비소산율 조합이 가능하지만 SA 모델에서는 수정 난류점성비만 유효한 식)을 표로 정리하고 있습니다.
  • 사용자 정의 표현식(User Defined Expressions): C 언어와 유사한 문법으로 스칼라/벡터 연산을 표현하는 방법을 설명합니다. 이 문법이 3.3절 UDD, 3.4절 UDPP, 그리고 경계조건·초기조건의 수식 입력 전반에서 공통으로 사용됩니다.
  • 나비어-스톡스/난류모델 솔버 이론: 솔버 내부에서 사용하는 수치기법과 난류모델 방정식의 이론적 배경을 다룹니다.
  • 후처리(Postprocessing) 가이드: 결과 파일에서 자주 쓰이는 무차원 변수의 정규화 기준값(길이는 격자 단위, 속도는 자유흐름 음속, 압력은 ρC2\rho_\infty C_\infty^2 등)과 힘/모멘트 계수의 정의를 정리합니다.

이 자료들은 설정 파일의 개별 옵션이 "왜" 그렇게 정의되어 있는지 이해하는 데 도움이 되므로, 처음 몇 개의 케이스를 성공적으로 돌려본 뒤 한 번쯤 훑어보는 것을 권장합니다.

8. Flow360이 검증된 사례

FlexCompute와 클루는 Flow360의 정확도를 공인된 CFD 벤치마크와 실험 데이터에 대해 지속적으로 검증하고 있습니다. 아래 14개 문서는 클루가 이러한 검증 결과를 카테고리별로 정리한 국문 자료입니다. 도입을 검토 중이라면, 자신의 응용 분야와 가장 가까운 카테고리의 문서를 먼저 살펴보는 것을 권장합니다.

8.1 항공기/날개 외부 유동

8.2 경계층 물리 (박리·재부착·천이·벽면모델)

8.3 회전체 (프로펠러·로터·풍력터빈)

8.4 scale-resolving 비정상 유동 및 공력음향

8.5 수중 유동 및 초음속/발사체

이 14개 문서를 종합적으로 살펴보면, Flow360이 저속 아음속부터 초음속까지, 정상상태 RANS부터 scale-resolving 비정상 해석까지, 그리고 항공·풍력·조선/방산에 이르는 폭넓은 레짐과 산업에서 검증되어 왔음을 알 수 있습니다.

9. 시작하는 방법

Flow360을 실제로 써보기까지 필요한 절차는 생각보다 간단합니다.

9.1 클라우드 접속 및 계정

Flow360은 별도의 로컬 설치 없이 브라우저에서 flow360.simulation.cloud에 접속하는 것으로 시작합니다. 계정이 없다면 FlexCompute 사이트에서 직접 가입할 수도 있지만, 클루를 통해 진행하면 라이선스 안내와 함께 한국어로 온보딩을 지원받을 수 있습니다. 처음 시작하는 경우 클루 데모 신청 페이지를 통해 데모 계정과 초기 실습 지원을 요청할 수 있습니다.

9.2 Python 클라이언트 설치

자동화나 반복 스터디를 염두에 둔다면 Python 클라이언트를 설치해 두는 것이 좋습니다. PyPI를 통해 배포되며, 설치와 업데이트는 다음 명령으로 수행합니다.

code
pip install flow360client
pip install --upgrade flow360client

설치 후 처음 import flow360client를 실행하면 FlexCompute 계정에 등록된 이메일/비밀번호로 로그인 절차를 거치게 되며, 이후에는 로그인 상태가 로컬에 유지되어 매번 인증할 필요가 없습니다.

9.3 첫 케이스 실행 순서 제안

  1. 데모 신청 또는 자체 가입으로 계정을 확보합니다.
  2. WebUI에서 익숙한 형상(예: 보유한 날개나 로터 격자, 혹은 예제 격자)으로 격자를 업로드해 봅니다.
  3. 5절에서 설명한 필수 항목(freestream, boundaries, timeStepping) 위주로 케이스를 구성하고 제출해, 잔차 수렴과 결과 시각화 흐름을 직접 경험해 봅니다.
  4. 익숙해지면 4절의 자동 메싱 파이프라인이나 6.2절의 Python API로 워크플로우를 확장합니다.
  5. 자신의 응용 분야와 가까운 8절의 검증 문서를 참고해, 예상되는 정확도 수준과 권장 설정(난류모델, y+ 범위 등)을 미리 가늠해 둡니다.

이 과정에서 막히는 부분이 있다면 클루 기술지원팀에 문의해 주시기 바랍니다.

10. 더 알아보기

이 문서는 국내 엔지니어를 위해 자체적으로 구성한 안내 문서이며, Flow360의 모든 기능과 세부 옵션을 다루지는 않습니다. 개별 설정 항목의 정확한 스키마, 최신 버전에서 추가/변경된 기능, 더 많은 예제 튜토리얼이 필요하다면 FlexCompute의 공식 영문 문서를 참고하시기 바랍니다.

또한 이 문서에서 언급한 14개 검증 사례(8절)를 통해 여러분의 응용 분야에 대한 구체적인 정확도 수준을 확인하시고, 궁금한 점은 언제든 클루로 문의해 주시기 바랍니다.