Skip Navigation
Skip to contents

eTSNE


ANZINE : CAE 기술 매거진

KULI Python controller 알아보기

KULI Python controller 알아보기 

 

 

Introduction

최근 가장 대중적이고 범용적인 프로그램 언어가 있다면 Python일 것이다. 1D Thermal management S/W인 KULI에서는 이러한 Python을 활용할 수 있는 Python controller가 추가되었다. 본 고에서는 Python controller의 기능 및 활용 방안에 대해서 알아보겠다.
 
 

 

현재 가장 대중적이고 범용적으로 사용되는 프로그램 언어는 Python이다. 간결하고 읽기 쉬운 문법이 특징으로 데이터 분석, 웹 개발, AI등 다양한 분야에서 활용되고 있으며, 많은 오픈 소스 라이브러리와 GitHub와 같은 다양한 커뮤니티를 가지고 있는 장점이 있는 프로그램 언어이다. 이러한 Python을 활용할 수 있는 Python controller 기능은 KULI 17.1 버전에서 처음 도입되었다.(2025 1월에 출시된 최신 버전은 19임) 
기존에 KULI에서 지원하고 있는 COM object, Calculation controller 등 다양한 controller component의 조합으로 시스템 제어 로직을 작성하거나, thermal management 최적화를 사용할 수 있었으나, 이번에 도입된 Python controller를 이용하면, 좀 더 적은 노력으로 더욱 확장된 기능을 이용할 수 있게 되었다. (그림 1)

 

 


그림 1 Python Controller 사용 예시

 

 

Python controller를 사용하기 위해서는 KULI advanced 모듈이 필요하며, 미리 구성되어 있는 ‘.py’ 스크립트가 필요하다. 정상적인 구동을 위해서는 Python 설치가 되어 있어야 하며, KULI 버전에 따른 지원 가능한 Python 버전이 다르므로 Help > about KULI를 이용하여 지원되는 Python을 사용자가 직접 설치하여야 한다. (그림 2)
 


그림 2 KULI에서 지원하는 Python 버전 확인

 

 

사용하는 환경에서 여러 버전의 Python을 사용하고 있다면 KULI에서는 PATH 환경 변수에서 발견되는 첫 번째 Python을 기준으로 구동되니 원활한 사용을 위해서는 PATH 환경 변수에서 다른 모든 버전을 제거하거나 KULI가 지원하는 Python 버전을 PATH의 첫 번째 위치에 두어야 한다.
Python 컨트롤러는 KULI thermal system circuit 상의 signal path의 일부이므로 기존에 지원하고 있던 Calculation controller, PID controller, characteristic curve등과 마찬가지로 동일한 방식으로 사용이 가능하다. 최소 1개 이상의 input을 취하며 다양한 output을 제공하게 된다. Python controller는 KULI의 해석 iteration 마다 반복적으로 script를 호출하므로 time step과 iteration을 구분해야 하는 경우에는 script 자체에서 정의해야 한다. (그림 3)

 


 
그림 3 Python script 작동 순서

 


 Python controller를 사용하기 위해서는 Python 스크립트가 반드시 필요하며, 이 script는 KULI가 확인 가능한 경로에 존재해야 한다. 일반적으로는 현재 사용중인 프로젝트 디렉토리 내에 있는 ‘PythonScripts’ 폴더에 저장하게 된다. (그림 4)
  

 


그림 4 Script 저장 경로

 

 

그럼 이제 KULI 상에서 Python controller를 사용하는 것은 다음과 같다. Library > Controllers / Interfaces 에서 Python controller component를 2D circuit으로 Drag & Drop하게되면 그림 5와 같은 팝업이 생성된다. 팝업에 Python module에서 Python 스크립트를 선택하여야 한다. Function에서 스크립트에 정의된 function을 선택하게 되며, 스크립트 상에 docstring상에 정의된 기능 설명을 확인할 수 있다. 스크립트 상에 function을 정의할 때 반드시 1개 이상의 Mandatory input 매개변수가 필요하다. Initialization/Termination function은 선택사항으로 해석에 대한 변수를 초기값을 정의하거나 해석이 끝난 후 그래프를 생성, code 초기화, 출력 파일 생성 등을 별도로 정의할 수 있다. 이 Initialization/Termination function을 스크립트 상에서 정의할 때 주의해야 될 사항으로 function을 정의할 때와는 달리 Mandatory input 매개변수를 지원하지 않는다는 점이다.
 Function까지 정의하게 되면 스크립트 상에 정의되어 있는 input이 자동적으로 추가되며, identifier에 스크립트 상의 input이 자동으로 설정되지만, 2D circuit상의 식별을 용이하게 하기위해서 수정이 가능하다. 그리고, 사용자는 반드시 input의 단위계를 정의해주어야 한다.
Output의 경우 input과는 다르게 스크립트에서 자동으로 설정되지 않다. 이는 Python 스크립트에서 출력값을 반환하는 방법이 다소 유연하기 때문이다. 그렇기 때문에 사용자는 Python 스크립트의 output값과 일치하도록 output의 수와 순서를 정의해야 한다. 만일 스크립트 상에 정의된 output의 수와 controller상에서 정의한 output의 상이할 경우에는 해석이 중지되고 오류 메시지가 출력되게 된다. Output의 단위계는 KULI가 올바르게 해석을 할 수 있도록 정확하게 정의해야 한다.
 

 


그림 5 Python controller 설정 팝업

 

 

Python controller를 이용 방안은 그림 6과 같이 Python의 다양한 라이브러리와 연동하거나 다른 application과의 연동을 통해 KULI를 더욱 유연하게 활용할 수 있게 된다. 기존에는 KULI lab을 통해 그래프 작업을 진행하거나 다양한 물리적 작용을 경험식들을 활용하여 calculation controller로 정의해야 했지만, Python 스크립트를 활용하여 좀 더 손쉽게 복잡한 thermal system circuit을 구성할 수 있게 되었다.
 

 


그림 6 Python controller 활용 예시

 

 

맺음말

위와 같이 최근 업그레이드된 KULI Python controller에 대하여 알아보았다. 코딩이 생소한 사용자의 경우 ChatGPT나 다른 AI platform을 이용하여 Python 스크립트를 구성하면 더욱 다양한 열관리 시스템 해석이 가능할 것으로 판단된다.

 

 

좋아요이 원고가 마음에 든다면 하트를 꾸욱!