어떤 제품이나 시스템의 CFD 해석을 할 때 형상을 어느 정도로 단순화 할 것인지, 격자 구성은 어떻게 할 것인지, 물리 모델과 수치해석 기법은 어떤 것을 사용할 것인지, 어떤 항목들을 후처리를 할 것인지가 결정되어야 합니다. 자신의 경험, 선행 연구들의 검토, 다양한 테스트 등을 거쳐 이런 해석 방법을 정립하게 됩니다.

일단 해석 방법이 정립되었다면, 그 다음은 전체 workflow를 효율적으로 구축하는 것이 중요한 단계가 됩니다. 특히 해당 업무를 다른 이에게 이관하는 경우, 형상 최적화나 데이터베이스 구축을 위한 다량의 계산이 필요한 경우, 지속적으로 유사한 문제를 계속 해석해야 하는 경우에 작업의 효율성 뿐 아니라 결과의 일관성 측면에서도 workflow 구축은 매우 중요한 문제가 됩니다.

해당 업무를 다른 이에게 이관하는 경우나 유사한 문제를 지속적으로 계속 해석해야하는 경우는 단일 문제 해석을 위한 전처리-계산-후처리 단계의 최적 프로세스를 만드는 것으로 충분한 경우가 많습니다. 그러나 최적설계나 데이터베이스 구축과 같은 경우는 해석 조건이 너무나 많기 때문에, 모든 조건을 계산하지 않고도 정확한 결과를 얻을 수 있는 방법론을 구축하는 것이 추가로 필요하게 됩니다. 이 글에서는 workflow 구축 관련 문제에 대한 넥스트폼의 보유기술과 사례들을 소개하고자 합니다.

형상/격자 생성 자동화

형상은 전문 3차원 캐드 프로그램에서 만들어진(직접 만들었든, 다른 사람이 만들었든) 파일을 단순화하고 수정(cleanup)하여 사용하는 경우와, 직접 형상을 만드는 경우가 있습니다. 전자의 경우는 개별 캐드 프로그램에서 cleanup 프로세스를 최적화하는 문제입니다. 이 글에서는 직접 형상을 다루는 후차의 경우에 대해 이야기 하려고 합니다.

어떤 제품이나 시스템의 형상을 정의하는 방법은 다음과 같은 것들이 있습니다.

  • 형상을 매개변수(parameter)로 정의
    • 대부분의 경우에 사용되는 가장 일반적인 방법입니다. 복잡한 형상일수록 매개변수의 개수가 많아지고 상호 연관성이 높아지기 때문에 매개변수를 효율적으로 결정하는 과정이 중요합니다.
  • 2차원 픽셀 데이터를 이용하여 3차원 형상 재구성
    • 산업체의 제조 현장과 다양한 분야에서는 아직 2차원 도면을 많이 사용하고 있습니다. 3차원이라고 무조건 좋은 것은 아니니까요. 2차원 도면의 픽셀 데이터를 이용해서 단면을 구성하고 3차원으로 확장하는 방법이 유효한 경우가 많이 있습니다.
  • CAD 프로그램에서 추출한 데이터를 재구성
    • 상용으로 판매되는 3차원 캐드 프로그램들은 이런 기능이 없기 때문에 일반적으로 사용할 수 있는 것은 아닙니다. 공개 소스 캐드 프로그램을 이용해서 개발하거나 상용 캐드 제작사와 협력을 통한 개발이 필요한 특수한 경우입니다.

정의된 형상을 3차원 파일로 만드는 방법은 다음과 같은 것들이 있습니다.

  • OpenCASCADE, SALOME 등의 공개 소스 캐드 커널/프로그램을 이용해서 제작
    • OpenCASCADE : C++ 코드를 직접 이용하거나 파이썬 wrapper인 pythonOCC를 이용할 수 있습니다.
    • SALOME : geometry tool을 이용하여 파이썬 스크립트로 프로그램을 제어할 수 있습니다.
  • 상용 캐드 프로그램을 이용하여 제작
  • Bezier/NURBS, curve/Surface를 이용하여 제작
    • 3차원 곡면을 수학적으로 표현하는 방식으로 공개 소스나 상용 캐드에서 사용하고 있는 방식인데 특별한 필요성이 있는 경우에 직접 코드를 만들어 사용합니다.
  • Free Form Deformation(FFD)
    • FFD는 곡면이나 3차원 형상을 변형(deformation)하는 기술로 3차원 객체 주위에 격자점을 배치하고 control point를 이동하여 변형합니다. 적은 수의 매개변수를 이용하여 형상을 자유롭게 구현할 수 있지만 최적화 문제에서 기하학적 구속조건을 유지하기 어려다는 단점이 있습니다.
  • 격자 변형을 통한 형상 구현
    • 넥스트폼이 개발한 deformMesh 유틸리티를 사용하여 CFD 해석 격자를 변형(deformation)해서 새로운 형상을 만들 수 있습니다. 하나의 격자만 있으면 형상과 격자의 변화를 한번에 구현할 수 있다는 장점이 있지만 자유도의 제한이 있습니다.


deformMesh를 이용한 새로운 형상 구현. (좌)원본 격자 (우)변형 후 격자

  • STL 파일을 변형하여 원하는 형상 파일 제작
    • 기준 형상이 있고 변형이 그리 크지 않은 경우 STL 파일의 vertex 좌표를 transform(이동, 확대/축소, 회전)하여 새로운 STL 파일을 만드는 방법입니다. 간단한 코딩으로 구현할 수 있지만 곡면의 변화를 처리하는데는 한계가 있습니다.
  • 전문 프로그램(OpenVSP)를 이용해서 제작
    • OpenVSP는 항공기의 기하학적 설계를 위해 만들어진 공개 소스 소프트웨어입니다. 항공기의 기체, 날개, 꼬리날개 등의 요소를 조합하여 복잡한 형상을 만들 수 있으며 형상을 매개변수로 정의하는 기능도 포함하고 있습니다. 일반적인 구조물도 모델링 할 수 있으나 항공기 전용으로 개발되어 한계는 있습니다.

CFD 해석을 위한 자동격자 생성은 상대적으로 격자수가 많아질 수 밖에 없는 단점이 있지만, 격자 생성에 소요되는 시간을 줄이고 격자의 품질이 일정 수준으로 보장된다는 장점이 있어 많은 양의 계산을 해야될 때 상당히 중요한 부분입니다. 그리고 전체 workflow를 자동화하기 위해서는 반드시 필요한 단계입니다.

격자 생성 자동화를 위해서는 GUI 구동 없이 스크립트를 이용하는 것이 좋습니다. SALOME, snappyHexMesh, blockMesh, cfMesh 등의 공개 소스 프로그램을 사용할 수 있는데 문제에 따라 적절한 프로그램을 선정합니다.

snappyHexMesh

snappyHexMesh는 OpenFOAM 내에 있는 격자 생성 유틸리티로 육면체 격자를 기반으로 자동으로 격자를 만들어 주는 프로그램입니다. blockMesh 유틸리티로 배경 격자를 만들고 STL 파일을 입력 받아 형상을 구현합니다. 면과 공간에서 격자의 크기를 조절할 수 있습니다. 모든 설정들의 입력은 C++ 딕셔너리 파일을 사용하기 때문에, 스크립트를 통한 형상 변화에 따른 격자 자동 생성을 구현하기 매우 쉽습니다.

snappyHexMesh를 이용한 격자 예

SALOME

SALOME는 수치 시뮬레이션의 전 후처리를 위한 공개 소스 소프트웨어로 다양한 모듈들이 포함되어 있습니다. SALOME는 GUI 환경에서 사용할 수 있으며 파이썬 매크로 CLI로 작업을 수행할 수도 있습니다.

SALOME는 격자 생성 부분에서는 삼각형 표면격자, 사면제 공간격자, 경계면에서 프리즘 격자 생성을 지원합니다. 형상 정보로부터 특이점을 추출하고 이를 이용해 edge를 생성한 다음 2차원 표면격자와 3차원 공간격자를 만듭니다.

SALOME를 이용한 격자 생성 자동화는 파이썬 스크립트를 사용하여 GUI 프로그램 구동 없이 스크립트 작성과 실행 만으로 격자를 만들 수 있습니다.

사면체 격자는 격자수가 불필요하게 많아지는 경우가 있어 다면체(polyhedral) 격자로 변환할 수 있는 프로그램을 개발하였습니다.

사면체 격자를 다면체 격자로 변환

blockMesh

blockMesh는 OpenFOAM 내에 있는 격자 생성 유틸리티인데 정렬격자 형식만 만들 수 있습니다. 따라서 형상을 육면체 토폴로지로 구성할 수 있는 경우에만 사용할 수 있습니다.

cfMesh

cfMesh는 Creative Fields라는 회사에서 개발하여 공개하였고, 현재 OpenFOAM 포크에 포함되어 있습니다. snappyHexMesh와 유사한 방법으로 격자를 만드는데 설정이 간단하다는 장점이 있지만 cell zone, baffle 등을 만들 수 없는 제약이 있습니다.

계산 및 후처리 자동화

OpenFOAM 솔버에서 경계조건, 수치해석 기법, 계산 조건 등의 모든 입력은 C++ 딕셔너리 파일을 사용하기 때문에, 많은 계산 조건의 일괄 처리(batch preocessing)는 쉘 스크립트만으로 쉽게 작성할 수 있습니다.

물체가 받는 힘, 원하는 대상(점, 선, 면, 공간)에서 유동변수 값의 추출, 특정 경게면에서 유동변수 분포, 스트림라인 등의 후처리 요소들을 OpenFOAM의 function object 기능을 이용하여 입력으로 주면 별도의 후처리 과정 없이 계산과 동시에 데이터들을 얻을 수 있습니다.

이와 별도로 공개 소스 데이터 분석 및 가시화 프로그램인 ParaView를 이용하여 후처리를 할 수 있습니다. ParaView는 분산 메모리 시스템을 통한 병렬 실행 기능과 Server/Client 모드를 지원하기 깨문에 대규모 데이터 처리에 효과적입니다. 파이썬 스크립팅 매크로와 플러그인 확장 기능을 제공하기 때문에 후처리 과정의 자동화에 쉽게 사용할 수 있으며, 파이썬의 py-pptx를 이용해서 pptx 파일 형식의 보고서를 자동으로 작성할 수 있습니다.

ParaView를 이용한 후처리 자동화 예 (좌)이미지 자동 생성 (중)사용자 특화 GUI (우)보고서 자동생성

대리 모델(Surrogate model)을 이용한 데이터베이스 구축 / 최적설계

다양한 설계 변수들의 특성을 분석하거나 데이터베이스를 구축할 때 모든 조건들에 대해 계산하지 않고 실제 모델의 근사치를 제공하는 대리 모델을 만들어서 사용합니다.

실험계획법을 이용한 샘플링 포인트 조건들에 대한 계산을 수행하고 그것들을 바탕으로 대리 모델을 구성하게 됩니다. 구성된 대리 모델의 정확성을 검증하고 필요한 경우 추가 계산을 진행하게 됩니다. 만들어진 대리 모델을 이용하여 데이터베이스를 구축하거나 최적설계에 활용할 수 있습니다.

적합직교분해(Proper Orthogoanl Decomposition, POD)를 이용한 차수 축소 모델

적합직교분해는 주어진 데이터셋(snap shot)에서 시공간 모드를 추출하고 중요한 모드들만 취하여 시스템의 차원을 줄여 효과적으로 모델링할 수 있는 방법입니다. 데이터 행렬에 대한 특이값 분해(Singular Value Decomposition, SVD)를 수행한 결과를 기반으로 주성분을 선택하고 특이값과 특이벡터를 사용해서 원본 데이터의 주요 특성을 찾아냅니다.

최종 결과물은 대리 모델과 비슷하지만 대리 모델은 공력 계수와 같은 특정한 값을 얻을 수 있는 반면 적합직교분해는 전체 해석공간에 대한 모든 변수값을 재현할 수 있다는 장점이 있어 디지털트윈 등의 실시간 시뮬레이터 개발에 사용될 수 있습니다.

맞춤형 인터페이스 제작

특정 제품이나 시스템의 CFD 해석 workflow가 구축되면 그에 맞는 사용자 인터페이스 제작이 필요합니다. 사용자 인터페이스는 TUI(Text User Interface)일 수도 있고 GUI(Graphic User Interface)일 수도 있지만 서로 장단점이 있기 때문에 두 가지 기능이 모두 있는 것이 좋습니다.

TUI는 전문가들이 사용할 때 스크립트를 이용해서 작업을 일괄 처리하기에 용이하고 클러스터로 구성된 HPC나 클라우드에서 계산할 때 유리한 점이 있습니다. GUI는 사용자 편의성이 높다는 것 뿐 아니라 프로그램에 익숙해지는데 필요한 시간을 줄일 수 있으며, 작업상의 오류를 줄일 수 있다는 점에서도 중요합니다. GUI는 단지 입력항목을 그래픽 창에 나열하는 것이 아니라 사용자 경험(User Experience, UX) 관점에서 잘 설계 되어야 합니다.

TUI(좌)와 GUI(우)의 비교 (Source https://qr.ae/prXQNV)

넥스트폼에서 다양한 툴을 이용해서 사용자 인터페이스를 제작하고 있습니다.

  • Qt : 대부분 파이썬을 사용하기 위해 pyQt를 이용하고 있으며 필요에 따라 C++을 사용하기도 합니다.
  • Web : 많은 사람들이 서버에 접속해서 사용하는 솔루션인 경우 사용합니다.
  • Matlab GUI : 솔루션이 Matlab과 연동되어 있는 경우에 사용합니다.
  • GTK : Baram v6까지 사용했었으나 지금은 잘 사용하지 않습니다.

넥스트폼 개발 GUI 사례

넥스트폼의 개발 사례

미사일 공력해석 및 최적설계 플랫폼 개발

미사일의 형상 정의는 Missile DATCOM에서 사용하는 파라미터를 사용하였습니다. 동체, fin set, 부착물(protubulence) 각각에 대해 파라미터를 정의해서 사용합니다. 동체는 nose, center body, after body로 나누어 정의합니다. Fin set 파라미터는 planform, airfoil, 부착 방법으로 구분됩니다. 부착물은 6가지 종류를 설정할 수 있습니다.

파라미터의 입력은 XML 형식을 사용하며, 형상 파일은 공개 소스 캐드 커널인 OpenCASCADE를 사용하여 STEP 파일 형식으로 출력합니다.

파라미터를 이용한 미사일 형상 자동화

격자는 SALOME와 파이썬 스크립트를 이용하여 표면 격자와 공간격자를 자동으로 생성할 수 있도록 구현하였습니다. 물체 표면에는 프리즘 형태의 경게층 격자를 만들고 공간에는 사면체 격자로 구성하였습니다.

SALOME를 이용한 표면격자와 공간격자 자동 생성

CFD 해석은 형상과 유동 파라미터 설정으로 다양한 조건에 대한 계산을 GUI와 CLI 환경에서 스케쥴러와 연동된 일괄 처리 방식으로 수행할 수 있습니다. 사용자 환경은 최적설체 프레임워크와 연동되어 설계 단계에서 호출될 수 있습니다.

공력해석 및 최적설계 사용자 환경

그리드핀 공력 DB 구축

다양한 그리드핀의 설계변수에 따른 공력 특성을 분석하기 위해 수백~수천개의 CAD 파일이 필요한데, 이것을 CAD 프로그램에서 하나씩 만드는 것은 불가능하여 그리드핀의 형상을 파라미터로 정의하여 자동으로 CAD 파일을 생성하는 프로그램을 개밣하였습니다.

Fin/Frame, Web, Support의 3부분으로 나누어 전체 22개의 파라미터를 도출하였습니다. 공개 소스 소프트웨어인 Salome에서 제공하는 geometry tool을 이용하여 파이썬 스크립트로 자동형상생성 알고리즘을 작성하였으며, Salome GUI에서 형상을 확인할 수 있습니다. 이를 이용해 10초 미만의 시간에 해석을 위한 하나의 형상을 만들 수 있습니다.

파라미터를 이용한 그리드핀 형상 자동화

CFD 해석은 무격자 솔버인 FAMUS를 사용하였습니다. FAMUS는 공간격자 없이 질점만으로 계산하기 때문에 표면격자는 SALOME에서, 공간 질점은 FAMUS에서 일괄 처리 스크립트를 통해 자동으로 생성하였습니다.

DB 구축을 위해서 실험계획법으로 샘플링 포인트들을 도출하여 유동해석을 수행한 다음 민감도 분석과 1차 DB를 만듭니다. 1차 DB의 타당성 검증을 통해 추가 해석 포인트들을 도출하고 추가적인 유동해석을 수행하여 최종 DB를 구축하였습니다.

데이터베이스 구축 프로세스

공력 데이터베이스 뿐 아니라 이와 관련된 여러 종류의 데이터를 효율적으로 관리 및 활용하기 위해 계층적 데이터 형식인 HDF5를 사용하였습니다.

HDF5 기반 공력 데이터베이스 구축

철도차량 전두부 최적설계

CFD를 통한 고속철도 차량의 전두부 형상 최적화를 위해 파라미터를 이용하여 형상을 정의하였습니다. Bezier 곡선 및 곡면을 이용하여 형상을 정의하였으며 측면, 정면, 상면에 9개의 곡선과 27개의 control point를 사용하였습니다.

CAD 파일 생성을 위한 코드를 개발하였습니다. 형상 파라미터를 입력 받아 control point와 Bezier curve와 surface를 계산하고, STL 파일 형식으로 출력하게 만들었습니다. STL 파일의 삼각형 구성이 일정하게 유지될 수 있도록 하여 해석 결과의 적합직교분해(POD)를 쉽게 할 수 있도록 하였습니다.

형상 생성 과정을 그래픽 환경에서 시각적으로 확인할 수 있도록 GUI 기반의 프로그램을 개발하였습니다. 스크롤바 조작을 통해 파라미터를 구속조건 범위 내에서 제어할 수 있으며, 종속적인 구속조건을 자동으로 업데이트 합니다. 곡면 생성에 소요되는 시간은 수초 정도입니다.

Bezier 곡면을 이용한 철도차량 전두부 형상 자동화

격자는 snappyHexMesh를 이용하여 자동으로 생성하였습니다.

snappyHexMesh를 이용한 고속열차 격자 생성

최적화의 목적함수인 챠량의 주행 저항, 측풍 안정성, 터널 미기압파를 평가하기 위한 다양한 조건에 대한 계산 및 후처리를 진행하였습니다. 다양한 조건에 대한 반복해석은 파이썬 스크립트를 통해 일괄 진행하였으며 후처리는 파이썬 스크립트로 Tecplot 매크로를 작성하여 batch mode로 일괄 실행하였습니다.

고속열차 해석결과 및 후처리 사례

웹 기반 배관시스템 해석 자동화 플랫폼 개발

배기가스 배관 시스템 해석의 자동화를 위해 해석용 형상 자동생성 기능을 개발하였습니다. 설계 단계에서 만들어진 CAD 파일은 유동과 무관한 많은 장비들이 포홤되어 있으며 솔리드만 모델링 되어 있고 tolerance 차이에 의한 불연속, 겹침 등이 많아 별도의 cleanup 과정이 필요한데 이 과정이 너무 복잡하여 형상 자동화에 사용하기는 어렵습니다. 그래서 CAD 프로그램에서 추출한 데이터를 분류, 수정, 재구성하여 해석을 위한 배관 시스템의 형상을 별도로 제작하는 프로그램을 개발하였습니다.

CAD 추출 데이터는 csv 파일로 입력되며 다음과 같은 단계로 진행됩니다.

  • 배관 데이터 필터링(불필요한 배관 제거)
  • 기본 배관 요소를 이용하여 branch 생성
  • 장비 데이터 수정(reducer 생성, 밸프 활성/비활성화)
  • 유동과 무관한 장비를 제거하면 나타나는 불연속적인 지점을 기준으로 group을 형성
  • Group interface 생성(이 interface는 CFD 해석에서 경계조건으로 처리됩니다.)

CAD 추출 배관 정보를 이용한 형상 제작

생성된 형상으로부터 격자를 생성하는 과정은 SALOME 스크립트를 이용하여 자동화하였습니다. 형상 정보로부터 특이점을 추출하고, 추출된 점을 통해 edge를 생성합니다. 생성된 edge로부터 2D surface mesh를 생성하고 volume mesh를 생성합니다.

배관들이 장비 기준으로 단절되어 있기 때문에 단절된 부분을 처리할 수 있는 경계조건을 개발하여 하나의 시스템으로 해석할 수 있게 하였습니다. 해석이 완료되면 입력 파일에서 명시된 위치에서 유량, 온도, 압력, 밀도 등의 값을 OpenFOAM의 function object를 이용해 엑셀 파일에 자동으로 저장되게 하였습니다. 해석 결과는 엑셀 파일 형식의 보고서 파일이 자동 생성됩니다.

사용자 환경은 설계자들이 쉽게 프로그램에 접속하여 사용할 수 있도록 웹 기반의 플랫폼으로 개발하였습니다. 웹 서버, DB 서버, 해석 시스템을 포함한 웹 플랫폼은 사용자 UI를 제공하며 사용자는 이 UI를 통해 파일을 업로드해 해석 케이스를 등록하고 진행상태를 확인할 수 있습니다.

배관시스템 해석 자동화시스템

인쇄 레벨링 해석 전용 프로그램 개발

인쇄 레벨링 전용 CFD 해석 프로그램 개발을 위해 전사 상태의 형상을 자동으로 생성하는 프로그램을 개발하였습니다. 2차원 설계 도면을 픽셀 형태로 읽어오고 이를 수정하여 3차원 형상을 생성합니다. Fillet, Radius, Shape size 등의 설계 파라미터를 변경하여 형상을 생성할 수 있습니다. 다음과 같은 과정으로 진행됩니다.

  • 픽셀 데이터에서 최외각 경계 점 탐색
  • 형상 간소화(내부는 없애고 외부는 직선으로 연결)
  • 2차원 fillet 적용
  • 높이 방향으로 확장하여 3차원 형상 생성
  • 3차원 fillet 적용

공개 소스 캐드 커널인 OpenCASCADE를 이용하여 3차원 형상을 생성하고, SALOME를 이용하여 3차원 형상의 표면격자를 출력합니다.

2차원 픽셀 데이터를 이용한 3차원 형상 자동 생성

계산은 VOF 다상유동 모델을 사용하였습니다. OpenFOAM의 육면체 격자 생성 툴인 blockMesh를 이용하여 격자를 생성하였으며, 3차원 형상 모델을 이용하여 leveling paste의 전사 영역에 paste의 volume fraction을 초기화하였습니다.

그래픽 사용자 환경에서 형상 모델링, 격자 생성, 해석 설정 및 실행, 자동후처리, 조건에 따른 일괄 처리를 할 수 있게 개발하였습니다.

그래픽 사용자 환경

무인기 유동해석 자동화 프로세스 개발

무인이동체 개발을 위해 매개변수를 통한 형상 정의부터 유동해석까지 전 과정을 자동화하는 프레임워크를 개발하였습니다. 파라미터 기반의 형상 설계 자동화 모듈은 한국항공우주연구원에서 개발하였는데 상용 캐드 프로그램인 Rhino-GH를 사용하여 파트별 캐드 파일이 자동으로 출력됩니다. 넥스트폼에선 출력된 캐드 파일을 입력 받아 격자 생성, 경계조건 설정, 로터/프로펠러 해석을 위한 actuating disk 모델 설정, 유동해석 결과 추출 등의 전 과정을 자동화하였으며, 클라우드 기반의 고성능 컴퓨팅 기반 공력해석 서비스 플랫폼을 구현했습니다.

해석 자동화 플랫폼에서는 형상 파일과 엑셀 파일을 입력 받아 격자 생성 및 실험계획법에 따른 다양한 유동조건의 계산을 클라우드 환경에서 일괄 수행할 수 있는 플랫폼을 만들었습니다.

무인이동체 해석 자동화

지형/건물 모델링 자동화

도심의 바람길이나 유해물질 확산 시뮬레이션을 위해 지형과 건물들을 3차원 형상으로 만드는 프로세스를 개발했습니다. 사용자가 원하는 위치를 지정하면 국토지리원에서 제작한 연속수치지형도를 불러와 CFD 해석을 위한 형상을 자동으로 생성합니다. 절차는 다음과 같습니다.

  • OsGeo를 이용하여 연속수치지형도를 불러와 파이썬 객체로 생성
  • 등고선 데이터에서 각 선을 정의하는 점의 위치와 선이 가진 높이를 추출
  • 전체 지형을 표현할 새로운 점을 정의
  • CFD 해석을 위해 경계면 근처의 높이 보정
  • 격자점을 이용해 표면격자 생성
  • 건물 형상 데이터를 파이썬 객체로 생성
  • 건축물 평면 데이터에서 점 좌표 추출 후 선과 면으로 생성
  • 건축물의 층 수 데이터 추출 및 면을 건축물 높이만큼 3차원으로 확장
  • 건축물 형상 데이터를 표면 격자 형태로 변환
  • 추가 구조물 생성 – 파라미터에 의한 파이프라인, 저장 탱크 등 생성

수치지형도를 이용한 지형과 건물 형상 자동 생성

도심 화학물질 확산 계산 결과 예

선박 소음저감 부가물(Vortex generator) 설계 프로그램 개발

주어진 선박의 유동해석 결과가 있을 때, 설계자가 지정한 설계변수에 의해 부가물 형상을 자동으로 생성하는 코드를 개발하였습니다. 부가물 생성 절차는 다음과 같습니다.

  • 사용자가 입력한 위치에서 선폭과 선체 표면의 법선 벡터 계산
  • 선체로부터 법선 방향으로 사용자가 입력한 거리만큼 떨어진 곳의 유속을 측정
  • 계측된 유속으로부터 부가물의 받음각이 사용자가 입력한 각도와 같아지는 회전변환을 계산
  • 사용자가 입력한 설계변수와 회전변환을 이용하여 STL 파일 생성

Vortex generator 형상 및 격자 자동 생성

격자는 snappyHexMesh를 이용하여 자동으로 생성됩니다. 계산 결과 저항값, nominal wake 값, 프로펠러 단면에서의 wake 이미지가 자동으로 생성됩니다.

사용자 환경 및 후처리 결과

대리(Surrogate) 모델 기반 비행체 공력 데이터베이스 구축 프레임워크 개발

CFD 시뮬레이션 기반의 공력 DB 구축을 위해 대리 모델 기반의 공력 DB 구축 자동화 프레임워크와 GUI 환경의 프로그램을 개발하였습니다. 대리 모델 기법은 상대적으로 적은 비용으로 실제 모델의 반응을 모델링함으로써, DB 구축에 필요한 비용/기간을 크게 줄일 수 있고 실험점 외의 연속적인 모든 조합의 조건에 대해 공력 특성을 도출할 수 있습니다.

전체 프로세스는 다음 그림과 같습니다.

공력 DB 구축 프로세스

대리 모델 구축은 DOE 기반 해석점 선정, 유동해석, 대체모델 생성 및 검증 등 여러 층위의 작업이 필요히기 때문에, 상호 이질적인 작업들을 하나의 프레임워크로 통합하여 작업 효율성을 높이고 확장성을 얻을 수 있었습니다.

CFD 해석은 무격자 해석 프로그램인 FAMUS를 사용하였습니다. 무격자 기법은 파라미터 기반의 작동 방식으로 전처리 작업 자동화가 용이하여 작업시간을 단축할 수 있으며, 날개나 핀의 deflection 상황에서도 강건하고 유연하게 대응이 가능하다는 장점이 있습니다.

비행체의 마하수, AOA, Bank angle, 2개 Fin의 deflection angle 등 5개의 변수에 대해 적절한 해석점을 도출하고 크리킹 모델 생성을 통해 공력 DB를 구축하고 검증하였습다.

사용자 환경 및 후처리 예

대기오염 저감 장치 해석 전용 프로그램 개발

질소산화물 제거 장치의 설계에 활용하기 위해 설계변수와 작동조건의 입력만으로 CFD 결과를 확인할 수 있는 전용 프로그램을 개발하였습니다. 장치의 기본적인 형태는 유지하고 용량이나 운전 조건에 따른 설계변경에 활용하는 것이기 때문에 표준 형상을 선정하고 이를 기준으로 설계변수를 변경시켜 형상 파일을 만드는 방법을 사용했습니다.

전체 장치를 Chamber, injection pipe, mixing pipe, elbow로 나누어 10가지의 표준 형상을 정의하고 STL 파일로 만들었습니다. 이 파일의 vertex들을 변수 변경에 따라 transform(이동, 회전, 확대/축소)하여 새로운 형상을 만드는 코드를 개발하였습니다.

파라메터를 이용한 SCR 형상 제작 (좌) chamber, (우) pipe & elbow

격자는 snappyHexMesh를 이용하여 자동으로 생성됩니다. 계산은 화학종의 혼합과 반응, 액적 스프레이, 다공성 모델을 사용합니다. 후처리는 사전 입력 평면과 출구부의 주요 변수의 값이 자동으로 출력되며 그래픽 사용자 환경을 제작하였습니다.

질소산화물 저감장치 해석 결과 예

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다