2012년 10월 11일 목요일

계산용 전자파 코드: NEC(Numerical Electromagnetic Code)


[경고] 아래 글을 읽지 않고 "NEC"를 보면 바보로 느껴질 수 있습니다.
1. 미분방정식의 만병통치약: 그린 함수


계산용 전자파 코드인 NEC(Numerical Electromagnetic Code)[1], [2]는 금속으로 만들어진 선형(linear) 혹은 표면형(surface) 안테나(antenna)를 해석할 수 있는 프로그램이다. NEC는 미 해군(the US Navy)이 지원해서 1970년대부터 포트란(Fortran: The IBM Mathematical Formula Translating System) 언어를 기반으로 개발되었다. NEC를 만든 전자파 수치해석 기법은 그린 함수(Green's function)에 바탕을 둔 MoM(Method of Moments)이다.

[그림 1] NEC로 계산한 안테나 특성(출처: wikipedia.org)

NEC를 읽을 때는 '엔이시'라고 해야 한다. '넥'이 아니다.
NEC는 개발순서에 따라 NEC, NEC2, NEC3, NEC4 등으로 구분한다. NEC2는 무료로 사용할 수 있으며 소스 코드(source code)까지 공개되어 있다. NEC4는 미국 밖에서 상업적으로 쓰려면 하나당 165만원($1,500)을 줘야 한다. 하지만 공짜라고 해서 NEC2를 아무 프로그램이나 쓸 수 있다는 뜻은 아니다. NEC2는 GNU GPL(General Purpose License) 2.0을 따르고 있어 내부적으로 NEC2 소스 코드를 사용하면 그 프로그램의 소스 코드를 반드시 공개해야 한다.

포트란이 아닌 C 언어(C language)에 익숙하다면 NEC2C란 이름을 가진 C 언어로 변환된 NEC2 소스 코드를 사용할 수 있다. C 언어용 소스 코드 설명은 [여기]서 볼 수 있다.
혹시 위 소스 코드의 내려받기가 되지 않으면 [여기1], [여기2]에서도 받을 수 있다.

C++ 언어(C++ language)로 된 NEC2++의 소스 코드도 이미 만들어져 포트란으로 작성한 NEC2와 마찬가지로 GNU GPL 기반으로 배포되고 있다. 소스 코드는 [여기1], [여기2][여기3], [여기4]에서 받을 수 있다. Visual Studio에서 돌리고 싶으면 관련된 프로젝트 파일을 [여기1], [여기2]에서 받아야 한다.

최근에는 다중처리(multiprocessing)가 가능한 NEC2/MP도 제안되었다. 관련된 설명은 [여기]서, 실행 파일은 [여기1], [여기2]에서 받을 수 있다. NEC2/MP를 쓰려면 GUI(Graphical User Interface) 프로그램인 4NEC2가 있어야 한다.

[그림 2] 4NEC2 주요(Main) 창 실행 모습

4NEC2는 무료로 사용할 수 있으며 [여기1], [여기2]에서 내려받기 할 수 있다. 4NEC2의 사용설명서를 보면 쉽게 활용할 수 있다. 덤으로 NEC2의 문법도 공부할 수 있다. 4NEC2 사용시 주의할 사항은 다음과 같다.
  • 설치시 폴더는 바꾸지 말 것: 폴더를 바꿀 수는 있지만 설치후 4NEC2 프로그램에 들어가서 경로명을 바꾼 폴더로 일일이 바꾸어야 함(현재까지 자동으로 변경되지 않음)
  • 메뉴에서 File > Open 4NEC2 In/Out File을 선택해 이미 만들어진 NEC 파일을 불러들임
  • 메뉴에서 Calculate > NEC Output-Data를 선택하거나 F7을 눌러 "Generate (F7)" 창을 실행시킴
  • "Generate (F7)" 창에서 필요한 사항을 선택한 후 'Generate' 단추를 누름
  •  그러면 "Pattern (F4)" 창에 결과가 나옴
예를 들어 다이폴 안테나(dipole antenna)의 복사 특성을 4NEC2를 이용해 계산해 보자. 메뉴에서 File > Open 4NEC2 In/Out File을 눌러 예제 입력파일인 'Example1.nec'를 불러오자. 이게 4NEC2에서 제공하는 다이폴 안테나의 예제 파일이다. 그러면 [그림 2]와 같은 창이 얻어진다. 'Example1.nec'는 아래와 같은 NEC 문법으로 작성되어 있다.

[Example1.nec]

CM Example 1 : Dipole in free space  ' Comment cards
CM See GetStarted.txt
CE      ' End of comment
'
GW 1 9 0 -.2418 0 0 .2418 0 .0001     ' Wire 1, 9 segments, halve wavelength long.
GE 0     ' End of geometry
'
EX 0 1 5 0 1 0    ' Voltage source (1+j0) at wire 1 segment 5.
'
FR 0 1 0 0 300 0   ' Set design frequency (300 Mc).
'
EN     ' End of NEC input

메뉴에서 Calculate > NEC Output-Data를 선택하거나 F7을 눌러 "Generate (F7)" 창을 실행하면 [그림 3]과 같은 창을 생성할 수 있다.

[그림 3] 4NEC2 생성(Generate) 창 실행 모습

[그림 4] 4NEC2의 패턴(Pattern) 창 실행 모습

'원역장 패턴(Far Field Pattern)'을 선택하고 '생성(Generate)' 단추를 누른다. 그러면 [그림 4]에 있는 다이폴 안테나의 복사패턴(radiation pattern)을 얻을 수 있다.

[그림 5] 4NEC2의 기하구조(Geometry) 창 실행 모습

[그림 6] 4NEC2의 3차원 보기(3D Viewer) 창 실행 모습

4NEC2로 작성한 기하구조가 맞는 지 확인하려면 3차원 구조를 보면 된다. 메뉴에서 Window > Geometry를 선택하거나 F3를 누르면 기하구조(Geometry) 창이 뜨고, 메뉴에서 Window > 3D Viewer를 선택하거나 F9을 누르면 3차원 보기(3D Viewer)가 떠서 쉽게 구조를 확인할 수 있다.

[그림 7] 4NEC2의 3차원 복사패턴 실행모습

다이폴 안테나의 복사패턴을 3차원 형태로 보고 싶으면 [그림 6]의 3차원 보기(3D Viewer) 옆에 있는 콤보박스(ComboBox)의 "Hide Patt."을 "Multi-Color"로 바꾸면 된다. 그러면 [그림 7]과 같은 멋진 그림을 얻을 수 있다.

[그림 8] 안테나 입력부 특성을 계산하기 위한 생성(Generate) 창 설정

[그림 9] 다이폴 안테나의 반사도 특성

안테나의 반사도(reflection), 안테나 이득(antenna gain), 입력임피던스(input impedance) 특성을 계산하려면 [그림 3]의 생성(Generate) 창 설정을 [그림 8]처럼 바꾸어야 한다. 다음에 'Generate' 단추를 누르면 [그림 9]에 있는 다음 결과를 얻을 수 있다.

[참고문헌]
[1] R. Anderson, The Unofficial Numerical Electromagnetic Code (NEC) Archives.
[2] T. Marshall, Numerical Electromagnics Code (Method of Moments).

[다음 읽을거리]
1. NEC2의 문법

댓글 없음 :

댓글 쓰기

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.