PyAEDT 기반 이식형 의료기기의 무선 전력 전송 해석 및 SAR평가
Introduction
Python을 활용하여 시뮬레이션 자동화에 대한 요구가 점차 증대되고 있습니다. 사용자들의 목표로는 이전처럼 처음부터 끝까지 세팅을 직접 하지 않고 Run 버튼을 누르거나 간단히 클릭하면 자동으로 프로그램을 시작하여 세팅 후 결과까지 도출하기를 원하고 있습니다. 또한 자동화에 필요한 코딩도 자연어 기반으로 AI에 물어보고 답을 얻어 자동화 해석에 더 쉬운 접근을 원하고 있습니다. AI가 제공하는 답변을 검토하고 더 효율적으로 업무에 활용하기 위해서는 Python에 대하여 알아야 한다고 생각합니다. 이번 호의 내용을 참고하시어 실제로 직접 설정하셨던 기본적인 조건들과 그래프 생성 방법들을 보시며 업무에 도움이 되셨으면 합니다. AEDT(Ansys Electronics Desktop)안에서 Python 자동화에 특화된 PyAEDT를 사용하여 해석할 예제로는 이식형 의료기기의 무선 전력 전송 해석 및 SAR(Specific Absorption Rate)을 볼 것입니다. 본 예제에서는 PyAEDT개발환경으로 PyCharm을 사용하고, AEDT는 Ansys HFSS™과 Circuit을 활용하여 진행됩니다. 이번 호를 보시고 PyAEDT를 해볼 사용자께서는 유/무료 version이 있어 사용에 유의가 필요한 PyCharm이 아닌 Visual studio를 이용해 진행하시면 됩니다.
무선 전력 전송 해석 개요 및 PyAEDT
[그림 1]은 Osia System社와 Paradromics社의 상용화 제품 또는 개발 중인 이식형 의료기기의 예시 이미지입니다. 이식형 의료기기는 인체 내에 일정 기간 이상 삽입되어 감지, 자극, 통신 등을 수행하는 능동형/수동형 전자기계 장치로 청각, 신경자극기, 심혈관 등에 사용되고 있습니다. 무선 전력전송이 중요한 이유는 배터리 교체 수술을 줄이고 밀폐 구조로 감염과 단선 위험을 낮추어 사용자 편의성을 크게 개선할 수 있기 때문입니다. 의료기기가 체외가 아닌 이식형 구조로도 발전함에 따라 전자기에 대한 인체 영향을 볼 수 있는 SAR과 같은 안전 지표도 중요도가 높아지고 있습니다. 또한 SAR의 경우 측정과 Simulation 결과가 유사한 Case가 늘어남에 따라 측정하지 않고 Simulation으로 대체할 수 있도록 바뀌고 있으며, 이번 해석은 미국과 유럽 중 미국 기준으로 결과를 분석할 예정입니다.

[그림 1] Osia 골전도 보청 이식형 모델 & Paradromics 뇌-컴퓨터 인터페이스(BCI)
[그림 2]는 이번 호에서 진행할 무선 전력 전송 해석의 전반적인 개요입니다. 해석에 사용할 무선 전력 전송 모델을 HFSS상에서 해석하고 이를 Circuit으로 가져와 회로를 구성하여 최적화를 진행합니다. 또한 이 모델을 인체 모델에 직접 적용 후 최적화도 진행하여 얻은 결과를 이용한 HFSS에서 SAR 분석을 통해 전자기기에 인가 가능한 전력을 확인할 수 있습니다. 이 과정 중 무선 전력 전송 모델 해석과 Circuit 활용에 대한 부분에 대해 PyAEDT Code 설명을 드릴 것입니다.

[그림 2] 무선 전력 전송 해석 개요
[그림 3]은 PyAEDT란 무엇인지 소개하는 그림입니다. PyAEDT는 CPython 환경에서 AEDT를 제어할 수 있는 인터페이스 라이브러리입니다. AEDT는 IronPython 기반의 스크립트를 제공하고 있으나, AEDT 이외 타 Ansys 제품군이나 Ansys 이외 제품과 제어에 어려웠으며 AI나 DB 관련 해석시에도 어려움이 있었습니다. IronPython 환경의 어려움을 개선하고자 만든 것이 PyAEDT이며, 수치 해석용 과학 계산 라이브러리인 SciPy나 AI & 머신러닝 등에 사용중인 Keras 등과 연결하여 해석할 수 있게 만들어 해석에 편의성을 높이고 있습니다.

[그림 3] PyAEDT 소개
[그림 4]는 PyAEDT 뿐만 아니라 다양한 Ansys tool들을 Python으로 사용한 여러 사례들을 볼 수 있는 Site입니다. 이 Site를 통하여 함수나 명령어, 다양한 예제별 코드와 Guide도 확인하실 수 있어 Python을 활용한 해석 자동화 입문에 큰 도움을 얻을 수 있습니다. 어떤 사례가 있는지 그 사례가 어떻게 진행되었는지 살펴보시고 진행하신다면 업무 시 훨씬 수월하게 할 수 있습니다.

[그림 4] PyAnsys API (출처: https://aedt.docs.pyansys.com/version/stable/API/index.html)
PyAEDT를 활용한 HFSS 해석
[그림 5]는 PyAEDT기초이며 pyaedt를 불러오고 초기 시작을 어떻게 할 수 있는지 설명하는 그림입니다. pyaedt를 import하여 임의 변수 hfss를 만드는데 그림과 같이 pyaedt 뒤에 점(.)을 입력하면 pyaedt내에 사용할 수 있는 기능들의 목록을 보여 줍니다. HFSS를 선택하고 소괄호 “(“ 를 열면 자동으로 괄호가 닫히며 hfss 내부에 solution type, version, new_desktop 등 사용할 수 있는 목록들도 보여 주며 따로 지정하지 않으면 default된 값이나 None으로 인식 후 진행되게 됩니다.

[그림 5] PyAEDT 기초1
[그림 6]은 PyAEDT의 기초2 입니다. 그림에서 보시면 Project name, design name을 설정했고, 사용자가 사용하는 특정 version을 지정한 모습입니다. Version을 입력 방법으로 예를 들면 2024R1은 2024.1이고 2024R2이면 2024.2로 적용 시 원하는 version으로 aedt가 실행되게 됩니다. 또한 hfss뒤에 점(.)을 붙이면 항목을 확인할 수 있는데, 목록 중 assign_radiation 기능을 볼 수 있습니다. 만약 hfss 내에 원하는 기능이 있는지 확인하고 싶다면 아래 그림과 같이 검색을 하여 찾아볼 수도 있으며, 검색어 위치에 구분 없이 검색이 가능합니다.

[그림 6] PyAEDT 기초2
[그림 7]은 PyAEDT를 사용하여 실행 후 종료하는 예시입니다. Project, design name을 설정하고 원하는 version으로 aedt를 실행하였습니다. hfss 내 modeler 내 create_box기능을 활용하여 box의 원점과 size, material정보로 정육면체를 만들 수 있습니다. Box를 만들고 AEDT 상태를 정의하기 위해 hfss 내 release_desktop을 사용했습니다. Release_desktop의 close_desktop, close_project가 False라면 Box 생성 후 종료되지 않고 유지하며, True인 경우 Box를 만들고 AEDT를 종료합니다. 참고로 실행버튼으로 실행 시 왼쪽에 현재 선택된 파일이 실행 대상인지 확인이 필요한데, 이는 현재 파일의 수정 사항을 다 고쳤어도 다른 실행 파일로 실행되기 때문입니다.

[그림 7] AEDT 실행 및 종료 예시
[그림 8]부터는 이번 호에서 진행한 무선 전력 전송 해석 예제에 사용된 코드를 순차적으로 설명 드리겠습니다. 해석의 첫 시작으로 무선 전력 전송의 핵심 부품인 Spiral형상 생성 방법부터 살펴보겠습니다. [그림 7]처럼 pyaedt를 import하고 hfss란 변수에 pyaedt.hfss를 지정합니다. [그림 8]에서는 Spiral 형상을 만들기 위해 Spiral변수에 hfss.을 사용했으며, 이 의미는 이미 설정된 hfss내 pyaedt.hfss을 불러오는 것으로 이해하시면 됩니다. Spiral에 사용되는 명칭 (internal_radius, spacing, faces, turn 등)에 대하여 개별 설명이 되어 있으므로, 실 사용 시 원하는 특성을 고려하여 만들어 보시면 되며, PyAEDT를 사용하지 않고 AEDT상에서 모델 구현을 원하시는 경우 Draw>User Defined Primitive>Examples or RMxprt에서 형상을 만드실 수도 있습니다.

[그림 8] Spiral 형상 생성 방법
PyAEDT와 같이 코딩 기반 모델링에서 특히 신경 써야 할 부분은 Port 설정입니다. Create로 모델링을 만든 후 원하는 위치에 port를 설정해야 하는데 어떻게 접근할지 결정이 필요합니다. 이번 호에서는 Edge로 설정하고 만드는 방법으로 하였으며, [그림 9]와 같이 만들어진 모델 기준 내부 시작되는 Edge와 외부 끝나는 Edge 번호를 확인할 수 있습니다. 확인한 edge number를 [그림 10]처럼 설정하고 circuit port를 생성할 수 있습니다. 만약 assignment와 reference가 바뀌면 port 방향도 바뀌니 원하는 방향에 맞게 설정하시면 됩니다.

[그림 9] 생성된 Spiral의 Edge Number

[그림 10] Edge number를 활용한 Port 설정 방법
[그림 11]은 hfss에서 사용되는 변수와 Radiation 경계조건 설정 방법입니다. 해당 project에서 사용하실 변수를 그림 참고하여 만드시면 되며 “ “ 로 적용되니 사용 시 참고하시면 됩니다. hfss는 기본적으로 background가 PEC 설정이므로, 모델에서 권장된 크기를 가지는 box와 경계조건이 필요합니다. 사용되는 경계조건마다 권장 크기가 다르므로 모델이 있는 모델러 화면에서 우클릭>Create open region으로 경계조건 설정을 추천 드립니다. 만약 해석하시는 모델이 30˚ 이상 Beam tilt가 있는 안테나라면 PML 경계조건으로 설정하셔야 합니다.

[그림 11] 변수 및 Radiation boundary 설정 방법
[그림 12]는 hfss simulation의 Setup과 frequency sweep 방법입니다. 일반적으로 pass는 20, delta S는 0.02로 권장 드립니다. hfss는 delta S를 맞추기 위해 자동 적응형 메쉬 기능이 있어 유저가 직접 메쉬를 설정해야 하는 부담을 줄여줍니다. Setup의 Adaptive option에서 Minimum Number of Pass, Converged Pass등을 볼 수 있는데 기본값은 1입니다. Number의 의미는 delta S가 이미 만족해도 적용한 pass 만큼 더 진행하라는 의미이고, Converged가 2라면 delta S가 2번은 만족할 때까지 진행하라는 의미입니다. Sweep은 빠르다고 Fast를 사용하시는 분들이 계시나, Fast 보다는 Interpolating으로 가늠 후 최종 확인은 Discrete로 하시는 것을 권장 드립니다.

[그림 12] Setup & Frequency Sweep
[그림 13]은 2D 그래프를 만드는 그림이며, hfss.post.에 있는 create report로 만들 수 있습니다. 기본 제공하는 수식이 아닌 원하는 수식이 있으시다면, expression에 적용하여 결과를 보실 수도 있습니다. 무선 전력 전송에서 S11 규격은 최소 -10 dB이하가 필요하나 결과를 보시면 -0.2 dB 수준으로 Tuning이 필요합니다. S11이 나오지 않는 이유는 해석 모델이 Spiral 형상으로 인한 인덕터 성분만 있으므로 커패시터를 추가하여 개선이 필요하기 때문입니다.

[그림 13] 2D 결과 Report 설정
[그림 14]부터는 Tuning을 하기 위해 필요한 Circuit tool을 설명하는 그림입니다. circuit이란 변수에 pyaedt에 있는 Circuit으로 만들면 화면이 grid 형태로 나타납니다. 이 grid 위에 Port나 저항, 인덕터, 커패시터 등 다양한 소자를 배치하여 해석을 진행하게 됩니다. 단위를 mil이라고 지정하였는데, 이는 grid의 1칸이 100 mil이라고 생각하시면 됩니다. 0, 0 위치를 기준으로 C1, C2 등을 놓았으며 커패시터 하나도 400 mil의 크기를 가지는 소자라는 점 참고하시면 됩니다. Ground의 경우에는 symbol 표시를 위해 100 mil이 더 필요하므로 사용 시 유의하시기 바랍니다.

[그림 14] Circuit Code 설명
[그림 15]는 Circuit에서 사용할 Port 정의에 대한 그림입니다. Port를 기본적으로 만들고 port의 ac 전압값이나 phase 등을 지정해야 할 경우 그림을 참고하시어 설정하시면 됩니다. Code를 사용하지 않고 설정하실 경우에는 Port1를 더블 클릭하여 Edit Source > Add to Selected port 화면에서 값을 설정해 주실 수 있습니다.

[그림 15] Port1의 Source insert 및 정의
[그림 16]은 hfss 기존 해석 결과를 기반으로 tuning하여 얻은 값 C1, C2을 얻어 회로를 구성한 그림입니다. [그림 13]에서 matching 회로가 없던 S11이 matching 회로를 넣으며 15 MHz에서 동작하는 결과를 도출할 수 있었습니다. 이 모델은 무선 전력 전송 모델이 하나만 있는 경우를 가정한 것이며, [그림 17]에서 실제를 가정하여 무선 전력 전송 모델, 이식형 모델, 인체 모델까지 적용한 구성을 볼 수 있습니다. 이식형 모델은 spiral 형상을 유지하기위해 유전체를 추가했습니다. 인체 모델은 hfss의 view > component libraries > Human Body Extension에서 사용 가능한 목록을 볼 수 있으며, 머리 이외에 팔, 다리, 손, 몸통 등도 활용할 수 있습니다. 머리 내부에 이식형 모델을 넣고 머리 외부에 무선 전력 전송 모델을 둔 후 Circuit을 다시 최적화하여 구성했습니다. Circuit에서 결과를 본 후 hfss에 적용하기 위해 circuit 상 hfss model을 우클릭하여 Push Excitations을 눌러야 결과가 가므로, 결과가 변화 없을 시 눌렀는지 체크하시면 됩니다.

[그림 16] Tuning 회로 및 개선 Data 확인

[그림 17] 인체 모델에 적용한 최종 해석 구성
[그림 18]은 SAR에 대한 의미와 규격을 설명하는 그림입니다. SAR은 전자기기에서 발생하는 전자파가 인체에 흡수되는 에너지의 양을 나타내며 단위는 W/kg입니다. 세계 공통으로 단일 수치가 정해져 있지 않고 지역(유럽/미국)별로 기준이 있으며 조건도 다릅니다. 그림을 참고하시면 대표적으로 미국과 유럽이 어떤 기준으로 되어있는지 볼 수 있습니다. 이번 호에서는 미국 기준으로 가정하여 진행하였습니다.

[그림 18] SAR(Specific Absorption Rate)의 의미와 규격
[그림 19]는 SAR 설정과 결과를 보는 방법입니다. Project manager의 Design 아래에 field Overlays를 우클릭하면 SAR Setting을 할 수 있습니다. Density, Tissue, Size 등을 모두 1로 놓으면 미국 SAR 기준으로 설정한 것이며, 만약 유럽의 경우에는 Tissue를 10으로 두시면 됩니다. 그림에서 볼 수 있듯이 Field Overlays > Plot Field > Other > Average SAR로 SAR 결과를 확인할 수 있습니다.

[그림 19] SAR Setting 및 SAR Plot 방법과 결과
[그림 20]은 무선 전력 전송 모델에 인가되는 power를 바꿔가며 SAR 평균이 어떻게 나오는지 확인한 그림입니다. 그림에서 알 수 있듯이 모델에 인가되는 power에 6W를 인가했을 때 1.782 W/kg이므로 기준인 1.6 W/kg을 초과했습니다. 이를 통하여 이 모델의 경우 5W까지는 문제가 없으나 그 이상의 power를 인가한다면 규제에 걸리는 것을 예상할 수 있습니다.

[그림 20] SAR 미국 기준으로 Power 인가 시 결과 비교
맺음말
이식형 의료기기의 무선 전력 전송 해석 및 SAR 평가를 PyAEDT로 진행해 보았습니다. CAE를 활용하여 측정에 대한 비용과 시간을 줄였듯, Python을 활용한 Simulation으로 사용자분들이 업무 효율을 높이셨으면 합니다. Python으로 AEDT를 실행할 수 있을까? 모델은 어떻게 만들지? 설정은 어떻게 할까? 하는 막연한 마음이 있을 수 있으나, 그림을 참고하여 기본 code를 따라 하시다 보면 Python을 활용한 해석에 흥미가 생기실 것으로 생각합니다. 이번 예제는 25년 10월의 열린세미나 내용의 일부로, 태성포털에서 더 자세히 다룬 설명을 영상으로 확인하실 수 있습니다.
참고자료