수치지형도를 이용한 CFD 전처리 자동화 및 오염물질 확산 시뮬레이션

전산유체역학(CFD)을 이용하여 오염물 확산을 분석하기 위해, 수치지형도를 이용하여 형상과 격자를 생성하는 전처리 과정을 자동화했습니다. 모든 과정은 오픈소스 소프트웨어를 이용하여 수행되었으며, 개발된 소프트웨어를 활용한 분석 사례들을 제시합니다.

전처리 과정은 지형 및 건물 정보를 불러오고, 3차원 형상을 만들고, 격자를 구성하는 단계로 구성됩니다.

  • 형상 정보 : 국토지리정보원에서 API 형식으로 제공하는 수치지형도는 지리 정보 시스템(GIS)의 표준 형식을 따릅니다. 오픈소스 QGIS 프로그램용 Python 라이브러리인 OsGeo는 GIS 형식 데이터에서 기하 정보를 추출하고 처리하는 데 사용됩니다.
  • 형상 생성 및 처리 : 형상에 대한 3차원 데이터를 불러오고, 형상 간의 boolean 연산을 수행하고, 형상을 격자 생성 프로그램으로 내보내는 기능이 포함됩니다.
  • 격자 생성 : 격자는 오픈 소스 프로그램 OpenFOAM의 격자 생성 유틸리티인 snappyHexMesh를 사용하여 생성됩니다.

지형 형상 생성

수치지형도에서 3차원 표면 격자를 생성하기 위해 다음 단계를 수행합니다.

  1. 등고선 데이터 불러오기
    • 국립지리정보원에서 제공하는 연속적인 디지털 지형도를 사용합니다.
    • F10000.shp 파일을 읽어 정보를 얻습니다.
    • OsGeo를 사용하여 Python 객체로 변환합니다.
  2. 정보 포인트 추출
    • 수치지형도에서 다중 라인 문자열 형태로 저장된 등고선 점의 위치 및 높이 값을 추출합니다.
  3. 선형 보간을 이용한 높이 계산
    • 추출된 점을 사용하여 전체 지형을 나타내는 새로운 점을 정의합니다.
    • 새로운 점은 사용자가 임의로 설정한 간격으로 x, y 방향으로 정렬된 격자 형태로 생성됩니다.
    • 새로 생성된 격자점의 높이 값은 주변 윤곽점으로부터 2차원 선형 보간을 통해 계산됩니다.
  4. 높이 보정
    • 가장 낮은 고도의 z좌표가 0이 되도록 이동합니다.
    • 지형의 끝이 경계에 도달하기 전에 z 값이 점차 감소하도록 지형을 이동합니다.
  5. 표면 격자 만들기
    • vtk 라이브러리(STL 또는 OBJ 형식)를 사용하여 점들을 표면 격자로 변환합니다.
  6. 추가 보정
    • 미래에 예정된 디지털 지형도나 토목 공사에 반영되지 않은 최신 변경 사항을 포함합니다.

건물 형상 만들기

수치지형도에서 건물의 평면 데이터를 가져와서 3D 형상을 만들고, 건물의 메타데이터를 사용하여 건물 정보를 확인합니다.

다음 단계를 거쳐 진행됩니다.

  1. 건물 평면도 가져오기 – 연속 디지털 지형도의 B0010000.shp 파일에서 건물 정보를 Python 객체로 변환합니다.
  2. 건물 층 정보를 추출합니다.
  3. 건물의 평면도를 나타내는 표면 데이터를 추출합니다.
  4. 각 지점의 좌표를 추출합니다.
  5. OpenCaseCade 라이브러리를 사용하여 점, 선, 표면을 만듭니다.
  6. 표면을 특정 높이까지 끌어 당겨 3차원 모양을 만듭니다.

추가 구조물 생성

디지털 지형도에는 포함되지 않지만 모델링에 필요한 탱크나 대형 파이프와 같은 대형 구조물 모델과 오염 물질 누출원의 기하학적 모델을 추가할 수 있습니다. 구, 원통, 정육면체, 파이프 등의 모델을 생성할 수 있습니다.

격자 생성

전체 계산 영역은 오픈 소스 프로그램 OpenFOAM의 blockMesh 유틸리티를 사용하여 육면체 격자로 구성됩니다.

SnappyHexMesh(OpenFOAM의 격자 생성 유틸리티)를 사용하여 지형과 구조물을 포함한 3차원 격자를 최소한의 사용자 입력으로 자동 생성합니다.

오염물질 확산 분석 사례

시뮬레이션을 위한 수치 해석 방법은 다음과 같습니다.

  • 대기 조건
    • 대기안정도를 고려하기 위한 Pasquill 클래스 대기 조건 개발
    • 지표면 열복사와 대기온도 차이로 인한 대기 안정성 고려
    • 입구 경계에서의 속도 및 난류(U, k, epsilon) 분포 설정
  • solver
    • 넥스트폼이 개발한 열유동 해석 솔버
    • buoyantSimpleNFoam, buoyantPimpleNFoam
  • 사고 시나리오 및 소스 항
    • 질량 소스 : 해석 시나리오에 따라 제트 소스와 풀 소스의 두 가지 유형의 소스를 사용합니다.
    • 운동량 소스 : 시간에 따른 속도의 함수로 표현됩니다.
(Left) Gas jet source, (Right) Gas jet source and liquid pool source

계산 조건은 다음과 같습니다.

  • 대기안정도 : Pasquill class D
  • 풍향 및 풍속 : 해발 10m에서 서풍 2.41m/s
  • 대기 온도: 25’C
  • 오염원 : 암모니아 누출, 총 10.83톤
    • 누출량, 누출율, 누출시간, 누출유형(가스 누출 또는 가스와 액체 동시 누출)의 조합에 따른 시나리오 구성
    • 가스 누출은 제트 분사만 고려합
    • 동시적인 기체 및 액체 누출은 제트 및 풀 증발까지 고려됩니다(풀 증발은 시간에 따라 변화하는 액체층의 표면적을 계산하여 증발 속도와 시간당 증발량을 계산하여 계산합니다).

시뮬레이션 결과는 다음과 같습니다.


CFD를 이용한 정밀 오염 물질 확산 시뮬레이션을 위한 자동화 시스템을 개발했습니다. 국토지리정보원의 수치지형도를 활용하여 지형, 건물 형상 및 격자의 모델링과 시뮬레이션을 자동화했습니다. 이 시스템을 통해 CFD 전문가가 아니더라도 쉽고 정확한 시뮬레이션을 수행할 수 있습니다.