2012년 10월 27일 토요일

나노 기술(NT: Nanotechnology)의 이해

요즘 많이 들을 수 있는 과학용어 중의 하나가 나노 기술을 의미하는 NT(Nano Technology)이다. NT는 IT(Information Technology), BT(BioTechnology)와 더불어 인류를 먹여살릴 T자가 들어가는 차세대 기술이다. 이중 IT는 이미 우리들에게 막대한 영향을 끼치고 있다. 하지만 IT 혁명은 끝나지 않았고 이제 시작이다. IT와 비교해 NT와 BT는 걸음마 단계이다. NT에 들어가는 나노(nano)는 난쟁이를 의미하는 그리스어에서 왔다. 나노는 과학과 공학에서 $10^-9$[십억분의 일]을 뜻하는 접두어로 쓰이므로, NT에 쓰이는 나노는 1 nm를 의미한다. 원자(atom)의 크기는 0.03~0.2 nm, 소형 분자(molecule)의 크기는 약 0.1~1 nm 정도 되기 때문에, NT에서 연구하는 주된 분야는 원자와 분자 크기의 영역이다. 그래서 나노라는 크기는 미시 세계를 위한 가장 적절한 측정 단위가 된다.

[그림 1] STM의 동작 원리(출처: wikipedia.org)

[그림 2] 1981년에 만든 최초의 STM(출처: IBM Research - Zurich)

나노 세계를 탐색하는 기본 도구는 [그림 1, 2]에 제시한의 STM(주사 굴 뚫기 현미경, Scanning Tunneling Microscope)이다. STM이 없었으면 NT도 존재하지 않았을 것이다. STM의 개발자인 비니히Gerd Binnig(1947–)와 로러Heinrich Rohrer(1933–2013)는 1986년에 노벨물리학상을 받았다. STM의 동작 원리는 단순하지만 실상은 정말 대단한 기술이다.

[그림 3] 양자 굴 뚫기의 예(출처: wikipedia.org)

양자 역학(quantum mechanics)에 나오는 [그림 3]의 양자 굴 뚫기(quantum tunneling)가 STM의 기본 원리이다. 고전 역학(classical mechanics)에서는 장벽을 뚫고 입자가 전달될 수 없지만, 양자 역학에서는 장벽의 폭이 매우 좁은 경우 입자의 파동성으로 인해 입자의 일부가 장벽을 뚫고 전달될 수 있다. 이 현상이 양자 굴 뚫기 현상이다. [그림 1]에 있는 탐침의 끝[빨간색]을 원자 하나의 크기로 만들어 시료[하늘색] 가까이에 대면 양자 굴 뚫기 현상에 의해 탐침 끝과 시료 사이에 미세한 전류가 흐른다. 이 전류의 양을 분석해서 그림을 그리는 방법이 STM이다. STM의 탐침은 매우 미세하게 움직여야 하기 때문에, 모터(motor)를 이용해서 제어할 수는 없고 압전관(piezoelectric tube)을 이용해야 한다. 압전관은 압전 효과(piezoelectric effect)를 이용해 전압(voltage)이 가해진 경우 특정한 방향으로 기계적 힘을 생성할 수 있다.

[그림 4] STM 측정 결과를 이용한 영상 복원(출처: IBM Research - Zurich)

[그림 4]는 STM을 이용해 실리콘(silicon) 원자의 결정구조를 측정한 후 이를 영상 처리하여 3차원 영상을 만드는 방식을 보여준다. 실리콘이 가진 결정 구조를 STM은 정확하게 검출할 수 있다.

[그림 5] STM으로 촬영한 CENS 글자를 가진 유기 반도체 형상(출처: wikipedia.org)

STM 기술을 이용하면 원자 세계의 모양을 정밀하게 볼 수 있다. [그림 4]는 독일 나노과학센터(Center for NanoScienceCeNS)가 만든 유기 반도체(organic semiconductor)의 원자 수준 사진이다.

[그림 6] 1989년에 크세논 원자로 만든 IBM 글자(출처: IBM Research - Zurich)

[그림 7] 1996년에 만든 세계에서 가장 작은 주판(출처: IBM Research - Zurich)

[그림 6, 7]은 IBM에서 원자 혹은 분자를 재배열하여 특정한 모양을 만든 결과를 보여준다. [그림 7]에 있는 분자의 크기는 1 nm 보다도 작다. 어떻게 보면 위 그림은 아이들 장난 같지만, NT에서는 매우 중요한 의미를 가진다. NT에서 관심 있는 미시 세계의 특성을 이해하여 새로운 물질을 만들려면 원자나 분자를 우리가 원하는 정밀도로 마음대로 배치할 수 있어야 한다. 이렇게 한 경우 현실에서는 관찰하기 어려운 신비한 현상이 나노 영역에서 생길 수 있다는 철학이 NT의 중요한 특성이다.
NT에서 연구하는 영역은 크기가 100 nm보다 작은 영역이다. 100 nm 이하가 되면 물질의 물리적 혹은 화학적 특성이 매우 이상하게 변한다.  예를 들면 체적은 작으면서 표면적은 매우 클 수도 있고 용융점, 강도, 마찰력, 점성, 거칠기(roughness) 등의 물리적 특성이 특별해질 수도 있다. 전자파(electromagnetic wave) 관점에서는 반사도(reflection), 흡수율, 공진(resonance) 특성이 달라지기도 한다. 이런 관점을 보여주는 파인만Richard Feynman(1918–1988)의 유명한 강연이 [1]에 소개되어 있다. 아래에 원자 재배열에 대한 내용만 발췌해서 번역한다.

원자 재배열
자 이제 마지막 질문을 생각해봅시다. 아주 먼 미래에 우리는 원자를 우리가 원하는 방식대로 재배치할 수 있을까요? 바로 이런 원자를, 아주 밑바닥까지 내려가서요! 우리 뜻대로 원자를 하나씩 하나씩 배열할 수 있다면 어떤 일이 생길까요? 물론 이유를 가지고 배치를 해야죠. 예를 들면 재배치 했을 때 원자가 화학적으로 불안정해진다면 원자를 조정할 수 없지요. 지금까지 우리는 채굴을 해서 광물을 획득하고 있습니다. 이 광물을 대량으로 가열해서 순도가 높은 물질을 대량으로 생산하고 있지요. 사실 여기에도 불순물은 많이 들어 있어요. 하지만 우리는 자연이 허락해준 원자 재배열의 가능성을 항상 생각해야 합니다. 아직까지는 우리 마음대로 이 불순물을 배치하는 방법을 잘 모릅니다. 예를 들면 불순물 원자가 장기판처럼 1,000 Å을 정확하게 떨어져 있거나 어떤 특정한 모양으로 배치하기는 불가능합니다. 적당한 층으로 물질을 적층하면 우리는 무엇을 얻을 수 있을까요? 우리 마음대로 원자를 배치할 수 있다면 물질의 성질은 어떻게 바뀔까요? 이런 부분을 이론적으로 탐구하기는 매우 흥미로워요. 하지만 정확히 어떤 일이 생길지는 잘 모릅니다. 하지만, 나는 확신합니다. 우리가 물질을 아주 미세한 수준까지 정밀하게 재배치하는 제어력을 얻으면, 우리는 더욱 다양하고 현재와는 다른 물질의 성질을 만들 수 있을 것입니다.

파인만이 대가라 칭송 받는 이유를 [1]의 강연에서 느낄 수 있다. 미래를 보는 정확한 시각을 볼 수 있기 때문이다. 파인만이 강연한 1959년파이만 41세, 이승만 정부 시절에는 NT를 할 수 있는 여건이 안되었지만, 1959년 이후 앞으로 일어날 일의 가치를 쉽고 명확하게 보여주고 있다.

[참고문헌]
[1] R. P. Feynman, "There's plenty of room at the bottom," An Invitation to Enter a New Field of Physics, 1959.

2012년 10월 16일 화요일

리스트 컨트롤 사용법(How to Use a List Control)

MFC(Microsoft Foundation Class) GUI(Graphical User Interface)에서 많이 사용하는 리스트 컨트롤(List Control)은 다음처럼 쓰면 된다.
CListCtrl m_ctList; // 적당한 곳에 변수 선언
// 리스트 컨트롤 초기화: 양식 설정 m_ctList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
// 리스트 컨트롤 초기화: 열 추가
m_ctList.InsertColumn(0, _T("번호"), LVCFMT_LEFT, 100);
m_ctList.InsertColumn(1, _T("이름"), LVCFMT_LEFT, 100);
// 리스트 행 추가
m_ctList.InsertItem(0, _T("1")); // 첫째행(0), 첫째열에 삽입
m_ctList.SetItem(0, 1, LVIF_TEXT, _T("가우스"), NULL, NULL, NULL, NULL); // 첫째행(0), 둘째열(1)에 삽입
m_ctList.InsertItem(1, _T("2")); // 둘째행(1), 첫째열에 삽입
m_ctList.SetItem(1, 1, LVIF_TEXT, _T("맥스웰"), NULL, NULL, NULL, NULL); // 둘째행(1), 둘째열(1)에 삽입

[참고문헌]
[2] 쿠식, "CListCtrl 에 관한 정리", 2010.

2012년 10월 11일 목요일

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

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


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

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

NEC를 읽을 때는 엔이시라고 해야 한다. 이 아니다. NEC는 개발순서에 따라 NEC, NEC-2, NEC-3, NEC-4 등으로 구분한다. NEC-2는 무료로 사용할 수 있으며 소스 코드(source code)까지 공개되어 있다. NEC-4는 미국 밖에서 상업적으로 쓰려면 하나당 약 165만원[$1,500]을 줘야 한다. 하지만 공짜라고 해서 NEC-2를 아무 프로그램이나 쓸 수 있다는 뜻은 아니다. NEC-2는 GNU GPL(General Purpose License) 2.0을 따르고 있어 내부적으로 NEC-2 소스 코드를 사용하면 그 프로그램의 소스 코드를 반드시 공개해야 한다.
포트란이 아닌 C 언어(C language)에 익숙하다면 NEC2C란 이름을 가진 C 언어로 변환된 NEC-2 소스 코드를 사용할 수 있다. C++ 언어(C++ language)로 된 NEC2++의 소스 코드도 이미 만들어져 포트란으로 작성한 NEC-2와 마찬가지로 GNU GPL 기반으로 배포되고 있다. 소스 코드는 [여기]에서 받을 수 있다. Visual Studio에서 돌리고 싶으면 관련된 프로젝트 파일을 [여기]에서 받아야 한다. 최근에는 다중 처리(multiprocessing)가 가능한 NEC2/MP도 제안되었다. 관련된 설명은 [여기]에서, 실행 파일은 [여기]에서 받을 수 있다. NEC2/MP를 쓰려면 GUI(Graphical User Interface) 프로그램인 4NEC2가 있어야 한다. 4NEC2는 무료로 사용할 수 있으며 [여기]에서 내려받기 할 수 있다. 4NEC2의 사용 설명서를 보면 쉽게 활용할 수 있다.

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

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 문법으로 작성되어 있다.

[표 1] NEC-2용 다이폴 안테나 예제
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 Electromagnetics Code (Method of Moments).

[다음 읽을거리]
1. NEC-2의 문법