이번 포스팅에서는 Ansys의 강력한 Python 라이브러리인 PyAEDT를 사용해 HFSS(High-Frequency Structure Simulator)에서 Chaff(차프) 모델링을 구현하는 방법을 소개합니다.

그림 1. PyAEDT
PyAEDT는 PyAnsys의 주요 라이브러리 중 하나로 Ansys Electronics Desktop(AEDT)의 Python 인터페이스입니다.
전자기 시뮬레이션 소프트웨어(예: HFSS, Maxwell 등등)를 프로그래밍적으로 제어합니다. 이를 통해 시뮬레이션과 결과의 후처리를 자동으로 수행할 수 있습니다.
사용 준비
- Ansys Electronics Desktop: PyAEDT는 AEDT(Ansys Electronics Desktop) 기반으로 작동합니다. 최신 버전의 Ansys가 설치되어 있어야 합니다.
- Python 환경: Python 3.7 이상 권장.
- PyAEDT 설치: 아래 명령어로 PyAEDT를 설치하세요.
pip install pyaedt
PyAEDT으로 HFSS에서 Chaff 모델링 과정
PyAEDT를 사용해 Chaff를 모델링하는 단계별 코드를 설명드리겠습니다.
1.PyAEDT 환경 설정
import os
import tempfile
import numpy as np
import ansys.aedt.core
PyAEDT 모듈과 후에 사용될 기능들을 설정합니다.
AEDT_VERSION = “2024.2”
NUM_CORES = 8
NG_MODE = False
AEDT_VERSION: 사용 중인 AEDT 버전
NUM_CORES: 사용할 CPU 코어 수
NG_MODE: False이면 AEDT의 그래픽 UI를 띄우고, True이면 비그래픽(non-graphical) 모드로 실행됩니다.
2. 임시 폴더 생성 및 프로젝트 초기화
custom_path = “C:/Users/MOA/Desktop/blog/Chaff”
temp_folder = tempfile.TemporaryDirectory(suffix=”.ansys”, dir=custom_path)
project_name = os.path.join(temp_folder.name, “Chaff.aedt”)
custom_path: 프로젝트를 저장할 기본 경로
tempfile.TemporaryDirectory: 지정된 경로(custom_path)에 임시 디렉토리를 생성
project_name: 생성된 임시 디렉토리에 프로젝트 파일 이름을 추가합니다.
3.HFSS 객체 생성
hfss = ansys.aedt.core.Hfss(
project=project_name,
design=”Ansys”,
solution_type=”SBR+”,
version=AEDT_VERSION,
new_desktop=True,
non_graphical=NG_MODE)
project: 프로젝트 파일 이름
design: 디자인 이름
solution_type: 시뮬레이션 타입. “SBR+”는 레이더와 관련된 시뮬레이션에 사용됩니다
version: AEDT 버전
new_desktop: 새로운 AEDT 인스턴스를 실행
non_graphical: 비그래픽 모드 여부
4.Chaff 생성 매개변수 정의
num_chaffs = 100
length = 30
radius = length / 1000
x_range = (-100, 100)
y_range = (-100, 100)
z_range = (-100, 100)
num_chaffs: 생성할 Chaff 개수
length: Chaff의 길이
radius: Chaff의 반경
x_range, y_range, z_range: Chaff가 배치될 3D 공간 범위
5.Chaff 생성 및 무작위 배치
chaffs = []
for i in range(num_chaffs):
x = np.random.uniform(*x_range)
y = np.random.uniform(*y_range)
z = np.random.uniform(*z_range)
theta = np.random.uniform(0, 360)
phi = np.random.uniform(0, 360)
np.random.uniform(*x_range): 범위 내에서 무작위 값을 생성
theta, phi: Chaff의 무작위 회전 각도
chaff = hfss.modeler.create_cylinder(
origin=[x, y, z],
orientation=”Z”,
radius=radius,
height=length,
name=f”Chaff_{i}”,
material=”aluminum”,
color=”Red”,
transparency=0)
hfss.modeler.create_cylinder: Chaff를 원통으로 생성
origin: 원통의 중심 좌표
orientation: Z축 방향으로 원통을 생성
radius: 원통의 반경
height: 원통의 높이
name: 생성된 Chaff의 이름
material: 재질 (알루미늄)
color: 원통 색상 (빨간색)
transparency: 투명도 (0은 불투명)
hfss.modeler.rotate(chaff, cs_axis=”X”, angle=theta)
hfss.modeler.rotate(chaff, cs_axis=”Z”, angle=phi)
생성된 Chaff를 X축과 Z축을 기준으로 각각 회전
6.프로젝트 저장 및 정리
hfss.save_project(project_file=”C:/Users/MOA/Desktop/blog/Chaff/Chaff.aedt”)
hfss.release_desktop()
temp_folder.cleanup()
hfss.save_project: 지정된 경로에 프로젝트 파일을 저장
hfss.release_desktop: AEDT를 닫아 리소스를 해제
temp_folder.cleanup: 임시 디렉토리를 삭제
최종 결과

그림 2. HFSS에 생성된 Chaff 모델
위 코드를 사용하면 Chaff 100개를 무작위 위치와 방향으로 3D 공간에 생성하고, 이를 AEDT 프로젝트 파일로 저장합니다.
이렇게 PyAEDT를 사용하여 쉽고 빠르게 Chaff 모델링을 만들어 보았습니다. 다음 Part에서는 이러한 Chaff 모델링을 사용하여 자동으로 시뮬레이션을 진행하고 결과를 확인하는 PyAEDT 작성을 설명하겠습니다.
관련 문의: 02-6945-2156 / Contact us – (주)모아소프트








