2013년 1월 1일 화요일

NEC2의 문법(grammar of NEC2)


[경고] 아래 글을 읽지 않고 "NEC2의 문법"을 보면 바보로 느껴질 수 있습니다.
1. 계산용 전자파 코드: NEC


NEC2(Numerical Electromagnetic Code)는 포트란(Fortran: The IBM MathematicalFormula Translating System) 언어를 기반으로 만들었기 때문에 문법 구조도 포트란과 매우 유사하다. 포트란 사용자는 거의 없기 때문에 프로그래밍계의 라틴어에 해당하지만 우리 선배들이 이루어 놓은 방대한 포트란 코드로 인해 수치해석을 할 때는 어쩔 수 없이 포트란을 사용해야 하는 경우가 있다.
NEC2에서 사용하는 길이의 단위는 항상 표준인 미터(meter)이다.

[Example1.nec]

CM Example 1 : Dipole in free space  ' Comment cards
CM See GetStarted.txt
CE      ' End of comment
'
SY a = 1
'
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


1. 주석 처리(CM: CoMment)

주석은 반드시 'CM'으로 시작해야 한다. 주석이 끝내려면 'CE'(Comment End)를 넣는다. 예를 들어 위에 있는 'Example1.nec'을 보자. 위 코드에 보이는 (') 표시는 그 다음 부분부터는 무시하라는 뜻이다.


2. 변수 정의(SY: SYmbol)

변수 정의는 'SY'로 시작해야 한다. 문법은 아래와 같다.

SY a = 1   ' a에 1을 대입


3. 금속구조 입력(geometry)

NEC2는 아래처럼 여러가지 구조를 입력할 수 있다. 구조 입력이 끝나면 'GE'(Geometry End)를 넣는다.

   3-1. 선구조 입력(GW: Geometry of Wire)

NEC2에 금속선을 넣는 명령은 'GW'이다.

GW nTag nSegment x1 y1 z1 x2 y2 z2 rad   ' nTag번 금속선에 nSegment개의 분할(segment) 생성, 금속선은 좌표값 (x1, y1, z1)과 (x2, y2, z2)에 위치, 금속선의 반경은 rad

금속선 좌표값과 반경의 단위는 모두 미터이다. 위에 있는 금속선 번호(nTag)는 선 특성을 변경할 때 사용되므로 모든 선이 다른 번호를 가져야 한다.

   3-2. 접지면(ground) 선택

접지면은 'GE' 다음에 오는 숫자로 다음처럼 결정한다.
  • GE 0   ' 구조물이 자유공간에 있음
  • GE 1   ' 구조물이 접지면 위에 있음, 자세한 사항은 GN(GrouNd) 명령어로 정해야 함
  • GE -1   ' 구조물이 접지면 위에 있음, 자세한 사항은 GN(GrouNd) 명령어로 정해야 함
GE 1과 GE -1은 접지면이 있다는 것은 동일하지만 금속구조물이 접지면과 닿은 경우의 처리가 다르다. GE 1은 구조물이 접지면과 닿으면 구조물의 전류분포를 바꾸어 구조물과 접지면이 붙게 한다. GE -1은 접지면과 닿은 부분의 구조물 전류분포를 0으로 만들어 구조물과 접지면 연결을 사실상 끊는다.


4. 원천 입력(EX: EXcitation)

구조물 입력후에는 원천(source or excitation)을 넣어야 한다.

   4-1. 전압원(voltage source)

EX 0 nTag nSegment 0 real imag   ' 전압원을 nTag 번호를 가진 선구조의 nSegment에 입력, 전압원의 복소수 입력값은 (real, imag)임


5. 주파수 입력(FR: FRequency)

계산을 위한 다양한 주파수 입력은 아래처럼 한다. 주파수 단위는 [MHz]이다.

   5-1. 단일주파수(single frequency)

FR 0 1 0 0 freq 0   ' 주파수 freq [MHz]로 계산


6. 끝내기(EN: ENd)

NEC2 입력을 끝내려면 'EN'을 넣는다.

[참고문헌]
[1] G. J. Burke and A. J. Poggio, Numerical Electromagnetic Code (NEC) - Method of Moments, Part I: Program Description - Theory, Jan. 1981.
[2] G. J. Burke and A. J. Poggio, Numerical Electromagnetic Code (NEC) - Method of Moments, Part II: Program Description - Code, Jan. 1981.
[3] G. J. Burke and A. J. Poggio, Numerical Electromagnetic Code (NEC) - Method of Moments, Part III: User's Guide, Jan. 1981.
[4] G. Kraus, Simulation of Wire Antennas Using 4NEC2, 2010.
[5] T. Molteno, NEC2++: Numerical Electromagnetics Code, 2007.
[6] P. Knott, Wire Antenna Modelling with NEC-2, 2009.

댓글 6개 :

  1. 저는 인천에서 은사를 취급하고 있는 사람입니다.
    올리신 글에 직물안테나에 대한 글을 읽고 관심이 있어 댓글을 남김니다. 저희가 개발한 캡슐내시경이 있는데 웨어러블안테나의 기본형 같습니다. 조언을 구하고 싶은데 010-4725-2201로 연락주시면 감사하겠습니다.

    답글삭제
    답글
    1. 말씀하신 은사는 銀絲겠지요. ^^
      도움이 될 지 모르겠지만 개인적으로 연락하시려면 iGhebook@gmail.com으로 메일 주세요.

      캡슐 내시경은 입는 안테나와는 좀 다른데요...
      더 상세한 소개를 하셔야 이해할 수 있을 것 같습니다.

      삭제
  2. 안녕하세요 nec공부를 이제 시작한 학생입니다 4nec2를 이용해 시뮬을 돌리는데는 문제가 없지만 위에 nec문법을 이용해 nec파일을 만드는데는 어떤 프로그램을 써야하나요 ?? nec2c를 이용해 비쥬얼로 소스를 짜면 그걸가지고 4nec2에서 쓸수있는 건가요?

    답글삭제
    답글
    1. C 언어처럼 하나의 문법이라 생각해야 합니다. 어떤 언어를 쓰든지 문자열 처리를 통해 위 구문을 생성하면 됩니다.

      삭제
    2. 감사합니다. 근데 어떤 언어를 쓰든지 문자열 처리를 통해 위구문을 생성한다고 하셨는데
      제가 궁금한것은 NEC문법을 사용해 소스코드를 짠후(C언어문법을 비쥬얼스튜디오를 이용해 소스코드 짜는것처럼...) 컴파일 하면 ~~.nec란 파일이 만들어지자나요이걸가지고 4nec2를 통해 결과값을 보는거라고..생각하고있는데 nec코드를 짜서 컴파일 할수있는 프로그램이 뭐가있나요..?? 아니면 저 소스코드를 제가 직접 4nec2에 직접 적용 시키는 건가요??

      삭제
    3. 4NEC2에서 읽는 것이 가장 쉽습니다. 아래 참고하세요.

      http://ghebook.blogspot.kr/2012/10/necnumerical-electromagnetic-code.html

      삭제

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