Basic Template 불러오기

‘3.1 Start scripts’에서 우리는 이미 Import Template을 통해 ASAP에서 기본적으로 지원하는 코드를 불러와 실행해 본 적이 있다. 이번에는 Import Template 안에서 Basic Template을 불러와서 내용을 살펴보자. ASAP에서 Basic Template는 Visual C++에서 Wizard를 통해 초기 코딩을 자동으로 작성해 주는 것과 같은 역할을 한다.

ASAP Workspace의 INR Input 항목 위에서 오른쪽 마우스를 클릭하고 NEW를 선택해서 새로운 입력 Script 입력창을 하나 생성한다.

Editor Toolbar의  Import Template  Import_button을 클릭하고, Basic Template를 선택한 후 OK 를 클릭한다.

Basic Template
그림 3.7 Basic Template

Basic Template을 선택하면 아래 그림3.8과 같이 기본적인 프로그램이 자동으로 작성된다. Template으로 작성된 코딩을 보면 앞에서 이야기 했던 프로그램 작성의 5단계가 순차적으로 표시되어 있는 것을 확인할 수 있다.

Note…
코드에 보면 두 개의 느낌표(!!)로 시작하는 초록색 문장이 있다. 이렇게 두 개의 느낌표가 있는 문장의 뒷부분은 모두 주석으로 간주되어 실행이 되지 않는다. 다만 사용자가 참조하려는 문장을 적어두는 공간으로 사용한다. C나 C++에서 //와 같은 기능이다. 단, C나 C++와 같이 한 줄이 아닌 여러 줄을 한번에 주석처리하는 기능( /* … */)은 없다. 대신 Ctrl 키를 누른 상태에서 마우스를 위,아래로 움직이면 세로줄로 여러줄을 선택할 수 있다. 맨 앞줄에서 이 기능을 사용해서 여러줄을 선택하고 느낌표 두 개(!!)를 입력하면 된다.

Basic Template_code
그림 3.8 Basic Template으로 생성한 Code

1단계 Define the System 부터 하나하나 확인해 보자.

▧  SYSTEM NEW : 프로그램이 보유하고 있던 데이터 저장소의 모든 데이터를 초기화 시킨다. 프로그램을 새롭게 시작할 때는 데이터를 초기화 시켜 주어야 한다. 그렇지 않으면 원하지 않은 쓰레기 데이터가 적용될 수 있다.

RESET : 모든 세팅 값들과 Rays 정보들을  초기화 시켜준다. 이것은 RAYS  0 명령어와 같은 역할을 수행한다.

UNITS : 프로그램 전체에 적용되는 기구적인 치수 단위를 설정하는데 처음에 한번 치수가 정의되면 프로그램 안에서 다른 치수로 변경해서 사용할 수 없다. 명령어는 앞의 짧은 형식이나 뒤의 긴 형식 중 편한 것을 선택해서 사용하면 된다.

IN         or         INCHES

MM     or         MILLIMETERS

YD        or         YARDS

FT         or         FEET

MI        or         MILES

M         or         METERS

KM       or        KILOMETERS

MIL      or        MILS

UM      or        MICRONS

CM       or        CENTIMETERS

UIN      or         MICROINCHES

UNITS의 마지막에 있는 ‘Watts’는 Ray Simulation이 완료되고, 그 결과를 flux 단위로 표시할 때 사용된다. 결과에서 flux의 단위가 들어가야 할 자리에 ‘Watts’라고 표시해 준다. 작은 따음표가 있어서 알겠지만 이것은 ASAP 프로그램이 돌아가는 내부적인 결과에는 영향을 미치지 않고 그냥 표시하기 위한 것이다. 이 부분은 나중에 Analysis에서 상세히 살펴 보겠다.

WAVELENGTH(S) : 프로그램에 적용될 빛의 파장을 설정한다. 여기서 설정된 파장은 MEDIA와 COATING에 적용되며 몇 개의 파장을 사용할 것인지는 사용자가 설정해 주면 된다. Basic Template 에서는 550nm 하나의 파장만을 사용하였다.  여러 개의 파장을 사용하려면 WAVELENGTH 430 550 640 NM 처럼 순차적으로 사용할 파장을 나열해서 적어주면 된다. 단, 설정해준 파장의 순서는 나중에 설정해 줄 파장에 따른 굴절률에도 영향을 미치기 때문에 중요한 요소이다.

파장은 보통 Nanometer 단위를 사용하기 때문에 기구적인 치수를 설정해 주는 UNITS의 단위가 적용되면 파장은 소숫점 단위로 작성되어야 하기때문에, 이런 불편함을 없애기 위해 파장 뒤에 단위를 적어주면 파장에만 적용되는 새로운 단위를 설정할 수 있다. 단, 파장 뒤에 붙는 단위는 오직 파장에만 적용된다.

         A            or         ANGSTROMS

         NM        or         NANOMETERS

         UM        or         MICRONS

         MM       or         MILLIMETERS

         CM        or         CENTIMETERS

         M           or         METERS

Note…
WAVELENGTH(S) 라는 이름에 (S)가 붙어있다. 이것은 ASAP은 단수/복수를 구분한다는 뜻이다. 무슨 영어 문법책도 아닌데 단수/복수가 왠말인가 싶겠지만, 파장을 하나만 정의할 때는 WAVELENGTH라고 하고, 여러개의 파장을 정의할 때는 WAVENENGTHS 처럼 S를 붙여 주어야 한다. 영어로 만들어진 프로그램이기 때문에 이런 단수/복수는 WAVELENGTH 뿐만 아니라 ASAP의 모든 경우에 해당된다. 따라서, 앞으로 명령어를 공부할 때는 복수가 적용되는지유심히 살펴 보아야 한다.

COATING PROPERTIES : 광학 매질의 투과, 반사, 흡수의 특성을 정의한다. 먼저 COATING PROPERTIES 라고 정의하고 다음 줄에 반사율, 투과율을 적어주면 된다. COATING PROPERTIES 다음 줄에 있는 앞쪽의 숫자는 반사율을 의미하고, 뒤쪽의 숫자는 투과율을 의미한다. 첫 번째 정의된 것처럼 0 1 이라고 하면 반사 0%, 투과 100%를 의미하고 이런 특성을 ‘TRANSMIT’ 이라는 이름으로 정의하였다. 이름이 정의된 다음 부터는 프로그램을 작성할 때 매질의 특성을 ‘TRANSMIT’ 이라는 이름으로 적어주면 투과율 100%의 매질이 되는 것이다. 즉, r   t   ‘name’ 의 순서로 매질의 특성을 작성하면 된다.

또 다른 예를 들어보면, 반사 20%, 투과 70%, 흡수 10%의 매질을 ‘TRANS_70’이라는 이름으로 정의할 때는, 0.2   0.7   ‘TRANS_70’ 이라고 하면 된다. ASAP은 R/T(반사/투과) 특성 만을 작성하게 되어 있어서 r+t의 합이 100을 넘지 못하는 경우 나머지는 자동으로 흡수 특성으로 설정된다. 줄을 추가하면서 원하는 매질의 특성을 나열해 놓으면 된다.

MEDIA : 프로그램에 적용되는 매질의 굴절률을 설정한다. 먼저 MEDIA라고 선언을 하고 다음줄에 사용하려는 매질의 굴절률과 이름을 순서대로 선언한다. MEDIA 명령어를 첫 줄에 적고 다음 줄부터 줄을 바꿔가며 사용하려는 매질의 굴절률 값과 이름을 적어주면 된다. 프로그램을 작성할 때는 매질의 이름을 사용해도 되고, 바로 굴절률의 숫자를 사용해도 된다.

MEDIA  [m]

n  [ n’  n” …] [options…] [‘name’]

Help를 찾아보면 위와 같이 MEDIA 를 정의하고 있다. n 은 굴절률을 의미하며, n  n’  n”… 처럼 여러개의 굴절률을 하나의 이름으로 정의할 수 있다. 이것은 앞의 WAVELENGTHS에서 파장을 여러개 적용하였으면 이에 맞게 굴절률도 여러개를 정의해야 하기 때문이다.

1단계 System을 정의하였으니, 이제 2단계로 Geometry Definitions를 정의해 보자.

!! GEOMETRY DEFINITIONS BEGIN HERE : 렌즈, 경통, 반사판, 확산판등과 같은 기하학적 형상들을 정의한다. ASAP의 모든 형상은 면으로 만들어 진다. 3차원 형상을 만들기 위해서는 면들을 조합하여 3차원 형상으로 만들어야 한다. 예를 들어, 육면체를 만든다고 하면 3차원 CAD 프로그램들은 육면체를 하나의 Object로 만들 수 있지만, ASAP은 6개의 면을 각각의 Object로 만들어서 각 면을 붙여서 만들어야 한다. ASAP은 모든것을 면으로 만들어야 하기 때문에 불편할 수 있다. 그러나, 개념을 잘 이해하고 있으면 오히려 편하다고 느껴질 수도 있을 것이다. CAD같지 않아 처음에는 형상을 만들기가 쉽지 않지만 익숙해지면 CAD만큼 편하게 형상들을 만들 수 있다.

3단계로 Source를 정의한다.

!! SOURCE DEFINITIONS BEGIN HERE : CCFL, LED, Head-Lamp와 같은 광원을 정의한다. Ray 하나를 만들어서 지나가는 경로를 확인할 수도 있고, 수백만개의 Rays를 통해 실제 결과를 도출할 수도 있다.

Rays는 다양한 형태와 방법으로 만들어 지는데 CCFL이나 LED 같은 광원을 측정기로 측정하고 그 결과를 Library로 만들어 사용할 수도 있고, 내가 직접 광원의 형상을 만들어서 광원으로 사용할 수도 있다. Library로 만들어진 광원을 사용하면 좀 더 현실적인 결과를 얻을 수 있는데 Library 광원을 얻는 방법에는 여러 가지가 있다.

1. 우선 ASAP에서 기본적으로 제공해 주는 Library를 사용하는 방법이다. ASAP 버전이 올라갈수록 library에 포함되는 source도 많아진다.

2. 세계적인 광원 회사들의 홈페이지에 가보면 ASAP이나 LightTools와 같은 설계 프로그램에 적용할 수 있는 library를 직접 만들어서 친절히 제공해 준다. 이 소스를 다운받아 사용하면 된다.

3. 어디에서도 library를 찾을 수 없는 경우는 직접 광원을 측정해서 library로 만들어 사용해야 한다. 국내/외에 광원을 측정해주는 장비나 업체가 있으니 활용하면 된다. 그러나 이 경우에는 측정 비용이 만만치 않다.

Note…
ASAP은 LightTools와 달리 광원으로 정해진 Object에 제한이 없다. 즉, 만들어진 모든 Object를 광원으로 지정할 수 있고 Rays도 생성시킬 수 있다.

다음은 4단계로 정의된 Source에서 Rays를 생성시키고, Object나 Trace된 Rays 결과를 PLOT 명령어를 통해서 확인하는 단계이다.  

 !! TRACE RAYS WITH OPTIONAL PLOT : Object와 Source가 정의되었으면 Rays를 Trace할 단계이다.

!! WINDOW  Y  Z : WINDOW 명령어는 그림이 그려지는 윈도우를 의미하며, 먼저 나오는 좌표축이 윈도우의 세로축 방향이고 뒤에 나오는 좌표축이 윈도우의 가로축 방향이다. 프로그램에서 윈도우 방향이 한번 정의되면 사용자가 방향을 변경하기 전까지는 모두 같은 방향으로 적용된다.

!! PLOT  FACETS  5  5  OVERLAY : 윈도우의 방향이 설정되었으니 이제 그림을 그려 보자. PLOT FACETS 은 기구적인 형상들을 CAD 프로그램처럼 그려주는 역할을 한다. 숫자 5  5 는 Y, Z축의 면을 몇 등분으로 분할해서 보여줄지에 대한 설정이다. 이 값이 높으면 높을수록 그림은 깨끗하게 그려지지만 그림을 그리는 시간이 오래 걸린다. 그래서, 처음에 그림을 확인할 때는 숫자를 높게 가져가서 형상이 맞는지를 확인하고, 그 다음부터는 숫자를 낮게 가져가서 프로그램 속도를 빨리하는게 좋다.

OVERLAY는 PLOT FACETS로 그려진 그림 위에 다음에 그려질 그림을 중첩시켜서 그리겠다는 뜻이다.

 TRACE  !!PLOT :  TRACE는 광원에 전원을 넣어 주는 역할을 한다. 즉, TRACE 명령어가 광원의 전원 스위치를 ON 시켜 준다. TRACE 명령어가 실행되면 Rays가 생성되면서 Objects를 투과하거나 반사하면서 광학적인 결과들을 만들어 낸다. TRACE 명령어는 컴퓨터가 Rays를 내부적으로 계산만 하고 보여주지는 않는다. PLOT명령어가 있어야 Rays가 날아가는 것을 그림으로 보여준다. 100개의 Rays를 내부적으로 계산한다고 할 때, 프로그램 속도를 높이기 위해서 그 중 10개 만 그래픽으로 보여지게 할 수 있다. TRACE  PLOT  10 이라고 PLOT 뒤에 숫자를 추가하면 된다. 이 숫자는 Rays 가 만들어지면서 n번째 Ray 만을 PLOT 하게 해 주는 기능이다. 이 외에도 여러 기능들이 있으니 TRACE 명령어에 대한 Help를 참조하기 바란다.

Note…
생성된 Rays 들은 Objects를 만나면 투과하거나 반사하게 되는데 이때의 모든 상황은 파일로 저장된다. 그리고, 정의된 광원에서 Rays를 1개만 생성시킬 수도 있고 100만개를 생성시킬 수도 있다. 몇 개의 Rays를 생성시키는 것이 가장 좋은지에 대한 정답은 없다. 사용자가 선택하야 할 몫이지만 추천하는 방법들은 있으니 차차 공부해 보자.

Rays가 많으면 많을수록 결과는 정확해지지만 시간이 엄청 오래 걸린다. 시스템이 복잡하고 Rays를 많이 생성시키면 1박2일이 아니라 2박3일 동안 프로그램이 돌아갈 수도 있기 때문이다.

Note…
TRACE 뒤의 PLOT은 Rays가 지나가는 경로를 보여주는 것으로, PLOT 앞에 있는 두 개의 느낌표(!!)를 제거하면 Rays를 그래픽으로 볼 수 있다. 내가 설정해 놓은 방향으로 Rays가 나가고 있는지, 혹 뭔가 잘못 설정해서 엉뚱한 방향으로 Rays가 가고 있지는 않는지를 확인하고 이를 수정하기 위해서 초기에 PLOT을 해 보는것은 중요하다. 확인 및 수정이 끝나고 나면 PLOT을 주석으로 만들거나 지워주어야 한다. SOURCE DEFINITIONS에서 너무 많은 Rays를 설정해 놓았다면 그래픽으로 보는 시간이 오래 걸릴 수 있다. 심한 경우에는 ‘윈도우 메모리 부족’이라는 에러창을 볼 수 있다.  

마지막 5단계로 TRACE 가 끝나고 나면, 어떤 결과들이 만들어졌는지 확인해야 한다.

!! ANALYSIS BLOCK BEGINS HERE : ASAP에서 가장 강력한 기능이 바로 Analysis 라고 생각한다. Analysis에 대해서는 어떤 규정된 틀이 있는 것이 아니라 Rays를 Trace 하고 난 결과를 모두 저장하고 분석할 수 있는 여러가지 명령어들을 준비해 놓았다. 사용자는 각각의 기능에 맞게 명령어들을 조합해서 원하는 결과를 얻어내면 된다. ASAP은 명령어의 조합이 잘못되어도 결과가 나오기 때문에 전혀 엉뚱한 결과를 얻을 수도 있다. 초보자들이 주의해야 할 것이 바로 이런 것이다. 잘못된 결과라 하더라도 에러라고 표시해주지 않기 때문에 사용자들은 맞는 결과로 생각하고 그대로 받아들일 수 있음에 항상 주의해야 한다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: