차수축소모델(Reduced Order Model, ROM)

격자 파일 다운로드
계산 파일 다운로드

개요

본 예제는 계산된 데이터들을 이용하여 계산되지 않은 조건에 대한 결과를 만들어내는 차수축소모델(Reduced Order Model, ROM)의 예제이다. 관내 혼합 예제 문제를 이용한다. 2개의 입구와 1개의 출구로 이루어진 원형 파이프 내부 유동의 혼합을 예측한다.

주유동의 속도는 1m/s로 고정되어 있고, 온도가 280~300K 범위에서 변할 수 있다. 2차유동은 속도가 1~4 m/s, 온도가 310~360K 범위에서 변할 수 있는 조건이다. 실험계획법(라틴 하이퍼큐브 샘플링)으로 3개의 변수에 대해 30개의 해석 조건을 결정하고, 계산된 결과를 이용해 임의의 조건에서의 결과를 실시간으로 얻을 수 있는 모델을 제작한다.

프로그램의 구동

프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multiphase Model)]은 [None]을 선택한다.

격자

격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.

기본조건(General)

기본조건에서는 [시간(Time)], [중력(Gravity)], [작동압력(Operating Pressure)] 등을 설정할 수 있다. 본 예제에서는 디폴트 조건을 사용한다.

모델(Models)

모델에서는 [난류(turbulence)], [에너지(Energy)], [화학종(Species)], [사용자 정의 스칼라(User-defined Scalar)]를 설정할 수 있다. 다상유동 모델과 솔버 유형은 시작 창에서 설정한다.

본 예제에서는 Standard k−epsilon 모델을 사용하고 에너지를 포함한다.

물질(Materials)

공기의 밀도를 완전기체(Perfect Gas)로 설정한다.

사용자 변수 선언

일괄 계산을 위해 필요한 사용자 변수인 속도를 정의하고, 경계조건, 기준값, 초기조건 등에 사용한다.

[솔루션(Solution)]-[실행(Run)]으로 가서 변수를 선언한다.

[사용자 파라미터(User Parameters)]의 편집 버튼을 눌러 창이 열리면 [파라미터 값(Parameter Values)] 옆의 (+)를 눌러 아래 그림과 같이 TSMALL, TLARGE, USMALL을 추가한다. 이름은 대문자이어야 한다. TSMALL은 2차유동의 온도, TLARGE는 주유동의 온도, USMALL은 2차유동의 속도이다.

경계조건(Boundary Conditions)

여러 경계면의 조건을 설정할 수 있다. 각 경계면을 선택하면 해당 경계면이 붉은색으로 변한다.

경계면을 마우스 오른쪽 버튼으로 클릭하면 경계면 타입을 변경할 수 있고, 더블 클릭하거나 아래의 [편집(Edit)] 버튼을 누르면 값을 설정할 수 있는 창이 열린다.

각 경계조건은 다음과 같이 설정한다.

  • in-1 : 입구 속도(Velocity Inlet)
    • 속도 크기(Velocity Magnitude) : 1 (m/s)
    • 난류 강도(Turbulent Intensity) : 1 (%)
    • 난류 점도 비율(Turbulent Viscosity Ratio) : 10
    • 온도(Temperature) : $TLARGE (사용자 변수 사용)
  • in-2 : 입구 속도(Velocity Inlet)
    • 속도 크기(Velocity Magnitude) : $USMALL (사용자 변수 사용)
    • 난류 강도(Turbulent Intensity) : 1 (%)
    • 난류 점도 비율(Turbulent Viscosity Ratio) : 10
    • 온도(Temperature) : $TSMALL (사용자 변수 사용)
  • out : 출구 압력(Pressure Outlet)
    • 압력(Pressure) : 0 (Pa)
  • wall
    • 속도 조건(Velocity Condition) : 정지(No Slip)

수치해석 기법(Numerical Conditions)

아래와 같이 설정을 변경한다.

  • 압력-속도 연성기법(Pressure-Velocity Coupling Scheme) : SIMPLEC
  • 완화계수(Under-Relaxation Factors) : 압력, 운동량, 난류는 0.9, 에너지는 1.0을 사용한다.
  • 나머지는 모두 디폴트 조건을 사용한다.

초기화(Initialization)

모두 디폴트 조건을 사용한다.

하단의 [초기화(Initialize)] 버튼을 클릭한다. 그 후, 메뉴의 [파일(File)]-[저장(Save)] 버튼을 클릭하여 저장한다.

계산

메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.

[계산 조건(Run Conditions)]은 다음과 같이 설정한다.

  • 계산회수(Number of Iterations) : 1000
  • 자동 저장 간격(Save Interval) : 500

[계산(Run)]에서 [일괄계산모드로 전환(Switch To Batch Running Mode)] 버튼을 누르면 아래 그림과 같이 [일괄계산 케이스(Batch Cases)] 설정 부분이 나타난다.

각 변수의 조건을 설정한 파일을 [불러오기(import)] 버튼을 눌러 선택하면 조건들이 표시된다. 조건 설정 파일은 csv(comma separated values) 혹은 xlsx 파일 형식을 사용할 수 있다.

이 예제에서는 아래 그림과 같은 csv 파일이다. 라틴 하이퍼큐브 샘플링 방법으로 결정된 조건이다.

csv 파일 다운로드

[불러오기(Import)] 버튼을 누르고 위 파일을 선택하면 [일괄계산 케이스(Batch Cases)] 부분이 다음 그림과 같이 바뀐다.

마우스의 드래그를 이용해서 전체를 선택하고(혹은 키보드에서 ctrl-A 사용) 오른쪽 마우스 버튼을 눌러 [계산목록(Schedule Calculation)]을 선택하면 [계산(Calc.)] 열에 체크 표시가 나타난다. 체크 표시가 된 것들만 계산된다.

[계산 시작(Start Calculation)]을 누르면 순차적으로 계산이 시작된다.

제일 왼쪽 열에 현재 계산중인 케이스에 화살표가 나타난다. 계산이 완료된 케이스는 [결과(Result)] 열에 초록색으로 표시되며, 계산 중 발산한 경우는 빨간색으로 표시된다.

차수축소모델(Reduced Order Model) 제작

모델 제작(Build Model)의 Build ROM 버튼을 눌러 ROM 제작에 사용할 케이스를 선택한다. a1에서 a30까지 전체를 선택한다.

OK 버튼을 누르면 ROM 제작에 사용할 변수를 선택하는 창이 나타난다. 여기에는 사용자 변수로 선언한 모두가 나타나는데, 이 예제에서는 3개 모두 선택한다. OK 버튼을 누르면 ROM이 만들어진다.

아래쪽의 Reconstruct from Model에서 3가지 변수의 값을 입력하고 Case name을 써 준 다름 Reconstruct case with ROM 버튼을 누르면 해당 조건에 대한 결과가 만들어진다. 만들어진 결과는 Run의 Batch Cases에 Case name에 입력한 이름으로 추가된다. 추가된 케이스에서 오른쪽 버튼으로 Load를 선택하면 해당 결과를 후처리할 수 있다.