
Hertzon은 모델을 그리고 경계와 가진 조건을 설정한 뒤 적응형 메시와 주파수 스윕을 적용해 결과를 확인하는 오픈소스 3D 전자기 시뮬레이터다. Windows와 Linux용 설치 파일을 제공하며, 시뮬레이션 결과는 중요한 설계나 의사결정에 활용하기 전에 독립적으로 확인해야 한다.
Hertzon은 현재 활발히 개발 중이며 버그가 남아 있을 수 있다. 제작자는 문제를 단계적으로 수정하고 있다고 설명하며, 중요한 결과를 독립적으로 검증하고 문제를 GitHub 이슈로 보고해 달라고 안내한다. 소프트웨어는 보증 없이 제공되고, 시뮬레이션 결과가 틀릴 수 있으므로 측정값이나 해석적 추정, 다른 도구를 이용해 확인해야 한다.
Hertzon의 유한요소법(FEM) 계산 코어는 로버트 페니스(Robert Fennis)가 개발한 오픈소스 솔버 EMerge다. Hertzon은 2차 Nédélec FEM과 gmsh/OpenCASCADE 기반 형상을 사용하는 EMerge 위에 그래픽 작업 흐름과 자체 솔버 확장을 더했다. 추가 기능에는 hzmesh 메시 생성기, 국소 Delaunay·이분·Mmg 방식의 적응형 세분화, 빠른 오차 추정기, 더 빠른 조립 커널, 곡선 요소, 원거리장과 RCS 후처리, 대형 모델 수정 사항이 포함된다. EMerge는 GPL로 제공되며 Hertzon도 EMerge와 같은 GPL-2.0-or-later 라이선스를 사용한다. Hertzon은 상용 시뮬레이션 소프트웨어 업체와 제휴하지 않은 독립 오픈소스 프로젝트다.
Hertzon은 Qt와 VTK를 사용하는 데스크톱 애플리케이션이다. 객체별로 형상을 점진적으로 테셀레이션하고, 솔버를 별도 프로세스에서 실행하며, 솔버가 결과를 GUI로 보내는 동안에도 프로그램을 계속 사용할 수 있도록 설계됐다.
설치와 실행
설치 파일은 최신 릴리스 페이지에서 내려받을 수 있다.
Windows 설치 프로그램인 Hertzon-Setup-<version>.exe는 관리자 권한 없이 현재 사용자 계정에 설치된다. 설치 위치는 %LOCALAPPDATA%\Programs\Hertzon이며, 시작 메뉴와 바탕 화면에 바로 가기를 추가하고 설정의 앱 목록에서 제거할 수 있다. .hzn 프로젝트 파일을 Hertzon으로 열도록 설정하며, 설치를 마치기 전에 약 1GB의 Python 환경을 내려받는다.
Linux에서는 Hertzon-<version>-linux.tar.gz의 압축을 푼 다음 ./install.sh를 실행한다. 현재 사용자 계정의 ~/.local/share/hertzon에 설치하고 애플리케이션 메뉴와 hertzon 명령, .hzn 파일 연결을 추가한다. 새 패키지의 install.sh를 실행하면 업데이트할 수 있고, ~/.local/share/hertzon/uninstall.sh로 제거할 수 있다.
두 운영체제의 설치 프로그램은 packaging/build_installer.sh로 빌드한다. Windows 설치 프로그램을 만들려면 NSIS가 필요하다. GitHub Actions가 설치 프로그램을 빌드하고 버전마다 릴리스를 게시한다. 관련 워크플로는 .github/workflows/release.yml에 있다.
Windows에서는 설치하지 않고 실행할 수도 있다. 압축을 푼 뒤 Hertzon.exe를 두 번 클릭하면 첫 실행 때 같은 폴더의 .venv에 필요한 구성 요소를 설치한다. Python 3.13이 없으면 winget으로 설치한 다음 EMerge, Qt, VTK 등을 내려받으며 전체 용량은 약 1GB다. 이어 솔버를 컴파일하고 간단한 테스트 계산을 한 뒤 Hertzon을 연다. 이후 실행은 바로 프로그램을 열고, 첫 시뮬레이션은 전체 속도로 실행된다. .hzn 파일을 Hertzon.exe에 끌어다 놓으면 해당 프로젝트를 열 수 있다. 다시 설치하려면 .venv 폴더를 삭제하면 된다.
운영체제에 상관없이 직접 설치하려면 Python 3.10 이상이 필요하다. 첫 계산에서는 EMerge의 numba 커널을 컴파일하며, 이 작업은 한 번 몇 분 걸릴 수 있다. 이후 계산은 곧바로 시작한다. 데스크톱 환경이 없는 Linux에서는 xvfb-run으로 실행한다.
python -m venv .venv && source .venv/bin/activate # Windows: .\\setup.ps1 then .\\run.ps1
pip install -e . # installs emerge, PySide6, pyvista, pyvistaqt ...
python -m hertzon examples/WaveguidePost.hzn # or just: hertzon
모델링부터 결과 확인까지
기본 작업은 프로젝트에 디자인을 추가하고 해석 유형을 고른 뒤 형상을 만들고, 경계와 가진 조건을 설정하고, 해석 설정과 주파수 스윕을 추가하는 순서로 진행한다. 검증을 마치면 전체 해석을 실행하고 수렴 정보와 결과를 확인한다.
Project > Insert Design으로 디자인을 추가한다.Simulation > Solution Type에서 Modal, Terminal 또는 Eigenmode를 고른다.Auto Open은 복사 경계 조건이나 PML을 자동으로 선택한다. 필터나 그 밖의 비교적 닫힌 회로에는 여유 공간을 고정하고 복사 경계를 적용하는 공기 상자를 사용하는Auto Open - Filter를 선택할 수 있다.- 상자, 원기둥, 구, 원뿔, 토러스, 다면체, 직사각형, 원, 타원, 다각형, 다중선, 영역을 그릴 수 있다. 격자에서 클릭하면 격자와 꼭짓점에 맞춰지고, 상태 표시줄에 좌표를 입력할 수도 있다. 모든 매개변수는 변수와 단위를 포함한 식을 받는다.
Modeler메뉴에서는 합집합·빼기·교집합·분할, 배치, 복제, 두께 추가, 스윕을 수행하고 STEP 파일을 가져올 수 있다. - 면은
F, 객체는O를 눌러 선택한다. 경계 조건으로 Perfect E/H, Finite Conductivity, Impedance, Lumped RLC, Radiation, PML, Symmetry를 지정할 수 있다. 가진 조건에는 Wave Port, Lumped Port, Floquet Port가 있다. Analysis > Add Solution Setup에서 해석 주파수(단일·다중·광대역), 최대 반복 횟수, 최대 Delta S, 행렬 수렴 조건, 최소 수렴 반복 횟수, 세분화 비율과 최대 세분화, 파장 기반 세분화, 솔버를 설정한다. Frequency Sweep은 이산 방식이나 보간 방식을 고르고, 선형 간격·개수·로그 간격·개별 주파수점을 지정한다.Validation Check로 검증한 뒤Analyze All또는 F5를 눌러 전체 해석을 실행한다. 진행 창에서 적응형 메시의 각 반복을 볼 수 있다. Solution Data에는 수렴 표와 그래프, 행렬 데이터, 메시 통계가 표시된다.- 결과에서는 직교 좌표 그래프, 스미스 차트, 데이터 표, 방사 패턴, 3D 극좌표 그래프를 확인할 수 있다. 필드 보기에서는 면·객체·절단면에 전기장 E, 자기장 H, 표면 전류의 크기, 복소 크기, 벡터를 표시하고 위상 애니메이션을 재생할 수 있다. Touchstone, CSV, 이미지로 내보낼 수 있다.
구현된 기능과 아직 빠진 기능의 개요는 기능 표에서 확인할 수 있다. 적응형 메시 세분화와 hzmesh, 국소 Delaunay 메시 생성기, 곡선 요소, 벤치마크 결과는 메시 생성기 문서에 설명돼 있다.
예제와 스크립트
저장소에는 여러 해석 유형을 담은 .hzn 예제가 포함돼 있다.
examples/WaveguidePost.hzn: 유도성 PEC 기둥이 있는 WR-90 도파관과 도파관 포트, 8~12 GHz 보간 스윕examples/Microstrip.hzn: FR4 기판의 50 Ω 마이크로스트립과 집중 포트, 얇은 도체 트레이스,Auto Open - Filter, 1~6 GHz 스윕examples/PatchAntenna.hzn: FR4 기판의 2.45 GHz 인셋 급전 패치, 복사 경계를 사용하는Auto Open, 원거리장과 이득 패턴examples/HairpinFilter.hzn: RO4350B 기판의 2.45 GHz 3차 헤어핀 대역통과 필터, 구리 손실, 2~2.9 GHz 스윕과 최적화examples/GPS_L1_RHCP.hzn: 유전율 20의 세라믹 패치와 프로브 급전·급전 보드 스텁을 사용하는 1.575 GHz GPS L1 원편파(RHCP) 원거리장examples/RotmanLens_24GHz.hzn: RO4350B 기판의 24 GHz Rotman 렌즈 빔포머를 세 가지 디자인으로 구성한다. 빔·배열·더미 포트가 있는 렌즈, 단일 배열 패치, 빔 원거리장을 계산하는 렌즈와 패치 배열을 다룬다.examples/PlaneWave.hzn: 복사 상자 안의 PEC 구에 입사하는 평면파와 빈 상자 안의 동일한 평면파examples/NATO-Sphere.hzn: 반지름 250 mm인 PEC 구의 1 GHz 레이더 단면적(RCS), 평면파, PML, 2차 곡선 요소examples/DroneRCS.hzn:Delta_Composites_Demo_3_Layers/의 드론 STL 모델을 가져와 1 GHz 평면파로 계산하는 RCSexamples/Coax.hzn: 길이 20 mm, 임피던스 50 Ω인 PTFE 동축 케이블과 TEM 도파관 포트, 1~10 GHz 스윕. 동축 케이블 튜토리얼도 제공한다.examples/Dipole.hzn: 집중 포트와Auto Open을 사용하는 1 GHz 반파장 다이폴, 원거리장과 이득. 다이폴 튜토리얼이 있다.examples/SphereRCS.hzn: 반지름 100 mm인 PEC 구의 1 GHz RCS, 평면파와 PML. 결과를 Mie 급수와 비교하며 구의 레이더 단면적 튜토리얼에서 다룬다.
examples/benchmark/에는 패치 안테나, 기준 결과와 비교하는 도파관 기둥, Mie 급수와 비교하는 구 RCS, 소형부터 대형까지의 모델 확장을 포함한 검증·시간 측정 사례와 스크립트가 있다. 첫 네 개 예제는 다음 명령으로 다시 생성한다.
python examples/make_examples.py
File > Export EMerge Python Script는 같은 EMerge 모델을 다시 만드는 독립 실행형 스크립트를 작성한다. 스크립트는 형상, 재료, 경계, 포트, 초기 메시를 구성하고 해석을 실행한다. --prepare-only를 지정하면 메시 생성 뒤 멈춰 일반 EMerge에서 작업을 이어갈 수 있다.
GUI 없이 해석할 때는 다음 명령을 사용한다.
python -m hertzon.solver.run Project.hzn DesignName Setup1 out_folder
프로젝트 파일 .hzn은 일반 JSON 파일이다. 결과는 <project>.hznresults/<design>/<setup>/에 저장되며, 파일에는 sparams_*.npz, Touchstone 형식의 *.sNp, fields_*.npz, farfield_*.npz, convergence.json이 포함된다.
AI 도우미 연결
Hertzon에는 MCP 서버가 포함돼 있어 Claude Code, Codex, VS Code의 Copilot 에이전트 모드에서 시뮬레이션을 만들고 실행할 수 있다. 튜토리얼에는 설정 방법과 프롬프트 예시가 있으며, MCP 튜토리얼에서 확인할 수 있다. 예시 요청은 FR4 기판에 집중 포트를 쓰는 2.45 GHz 패치를 만들고 해석한 뒤 S11과 이득을 알려 달라는 내용이다.
Tools > AI Assistants (MCP)...에서 사용할 도우미 옆의 Register를 누른다. Claude Code 설정은~/.claude.json, Claude 데스크톱 앱은claude_desktop_config.json, Codex는~/.codex/config.toml, VS Code는 사용자mcp.json에 기록된다. GUI를 사용하지 않는 경우python -m hertzon.mcp --install claude를 실행할 수 있다.desktop,codex,vscode,all도 선택할 수 있다. 다른 클라이언트에 넣을 설정은python -m hertzon.mcp --config으로 출력한다.Let AI assistants work in this window를 선택하면 설치된 Claude Code, Claude 데스크톱 앱, Codex 가운데 아직 Hertzon이 등록되지 않은 클라이언트에도 등록한다. 이후 변경 사항은 열린 창에 바로 나타나며 Ctrl+Z로 되돌릴 수 있고, 해석은 해당 창의 계산 대기열에서 실행된다. 창과 실시간 연결을 사용하지 않으면 도우미는.hzn파일을 직접 수정하고 솔버를 백그라운드에서 실행한다.- 도우미에서 새 세션을 시작하고 시뮬레이션을 요청한다.
MCP 서버는 프로젝트 생성, 변수와 디자인 설정, 형상 그리기와 가져오기, 면의 인덱스·중심·법선 조회, 경계와 포트 지정, 메시 작업, 해석 설정과 스윕 및 원거리장 구 설정, 검증과 실행을 지원한다. 적응형 반복 진행 상황을 추적하고 S-파라미터, 이득, RCS를 읽거나 모델 이미지를 렌더링하는 도구도 제공한다.
패키지 구성과 검증
Python 패키지의 이름은 hertzon, 프로젝트 파일 확장자는 .hzn이다. 구성은 모델 데이터와 단위가 포함된 식·재료·속성 스키마·검증을 담당하는 hertzon/model, OpenCASCADE(gmsh) 형상 생성과 표시 테셀레이션을 담당하는 hertzon/kernel, EMerge 연결·자동 경계·적응형 반복·스윕·원거리장을 담당하는 hertzon/solver, 메인 창·3D 모델러·프로젝트 트리·속성 표·보고서·필드 오버레이를 담당하는 hertzon/gui, AI 도우미용 MCP 서버와 창 실시간 연결·클라이언트 등록을 담당하는 hertzon/mcp로 나뉜다.
테스트에는 pytest를 설치한 뒤 다음 명령을 사용한다.
pip install pytest && python -m pytest tests
출판물에서 Hertzon을 사용하면 저장소 페이지의 Cite this repository에서 CITATION.cff에 기반한 APA 또는 BibTeX 인용 정보를 확인할 수 있다. 각 릴리스는 Zenodo에 개별 DOI로 보관된다. Hertzon이 기반으로 삼은 로버트 페니스의 EMerge도 함께 인용해야 하며 DOI는 10.5281/zenodo.17025518이다. 사용되는 Python 패키지와 라이선스 목록은 제3자 소프트웨어 문서에 있다.
Hertzon은 어떠한 보증도 없이 제공되며, GPL 제11조와 제12조에 따라 손해에 대한 책임을 지지 않는다. 설계나 제품, 의사결정에 결과를 활용하기 전에는 측정이나 해석적 추정, 두 번째 도구 등으로 직접 확인해야 한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요