Start Builder

ASAP에서 프로그램을 작성하는 방법에는 2가지 종류가 있다. 그 중 이번장에서는 Builder를 사용하는 방법에 대해서 알아보자. Builder는 엑셀의 시트와 비슷하게 생겼다. 아래 그림 2.1이 이번 장에서 만들 프로그램의 최종 결과이다.

Builder_all
그림 2.1 Builder를 이용한 프로그램 작성 결과

ASAP Workspace의 Builder 항목에서 오른쪽 마우스를 클릭해서 New를 선택하거나 툴바의 Builder 버튼 Builder_button 을 클릭해보자. 그러면 ASAP 윈도우의 중앙에 있는 User Task Space에 엑셀처럼 생긴 시트가 생성된다. Type 셀 아래의 빈칸을 더블 클릭해보자. 그러면 아래와 같이 Pop-up 메뉴가 생성되는데System > Setup > System을 선택해보자.

Builder_02
그림 2.2 Builder 생성하기

참고로 메뉴 선택을 위해서는 각 줄의 가장 앞에 있는 셀을 더블클릭 해야 한다. 그렇지 않으면 메뉴창이 생성되지 않는다.

Builder_03
그림 2.3 System 메뉴 선택

그러면 첫 번째 줄이 System New로 입력된다. 그 다음 줄로 가서 위와 같은 방법으로 더블 클릭해서 Rays > Ray Control > Reset을 선택하자. 시트의 가장 위에 있는 줄은 마우스로 선택된 셀에 맞춰서 그 내용이 변경되는데, 각 셀이 어떤 의미인지를 알려주기 때문에 주의 깊게 살펴봐야 한다.

Builder_04
그림 2.4 Reset 메뉴 선택

그러면 Reset이 입력된다. 다음 줄에 프로그램에서 사용할 단위를 설정해보자. System > Setup > Units를 선택하자. 기본적인 단위가 Millimeter로 설정된 것을 확인할 수 있을 것이다. 다음은 Simulati- on에 사용할 빛의 파장대를 설정하자. System > Setup > Wavelengths를 선택해보자. 그러면 550nm가 기본적으로 설정된다. 앞에서 설정한 Units의 mm와 Wavelength의 nm는 서로 다른 것으로서, 기본적인 모든 형상은 Units의 단위인 mm를 따른다. 단, Wavelength만 따로 nm를 따르게 된다. 그럼, 이번에는 Lens를 하나 만들어보자. System > Geometry > Lenses > Singlet 을 선택하자. ASAP2005 버전부터는 Geometry 명령어 옆에 그림이 나오기 때문에 쉽게 원하는  형상을 선택할 수 있을 것이다. Singlet이 만들어지면 Axis-[Z], Location-[0], Thickness-[0.4], Semidiameter-[1], Media1-[SCHOTT_BK7], Cmd-[RD], Radius1-[-0.5], Radius2-[-0.5]로 설정된다. 여기서 Cmd 셀을 마우스로 더블 클릭하면 셀이 콤보박스 형식으로 변경되면서 항목을 선택할 수 있게 바뀐다.

Radius1의 값인 -0.50.5로 변경하자. 그래야 양면이 볼록한 Lens가 된다. Singlet Object를 만들었기 때문에 Preview를 통해서 미리 형상을 확인할 수 있다. 그림 2.5와 같이 Builder Tool Bar에서 Previ-ew All 버튼을 찾아서 클릭해보자.

Builder_05
그림 2.5 Preview All 버튼으로 형상 확인하기

Builder_06
그림 2.6 Preview로 형상보기

그러면 3D Viewer에 Singlet이 그려진다. 3D Viewer Toolbar에 있는 아이콘들을 눌러보면 그림을 여러 형태로 변경할 수 있다. 그리고 오른쪽 마우스를 클릭한 상태에서 마우스를 움직이면 그림을 회전 시킬 수 도 있다.

Lens를 만들었으니 이번에는 Rays의 결상 결과를 확인하기 위한 Detector를 만들어보자.  Detector는 둥근 원판으로 만드는데 렌즈에서 어느 정도 떨어진 거리에서 Lens보다 훨씬 크게 만들어 보자.

다음 줄의 가장 앞쪽 셀을 더블 클릭해서 System > Geometry > Surface > Plane을 선택한다. Axis-[Z], Location-[0], Aperture-[Ellipse], Semiwidth X-[1.0]으로 기본 설정이 되어 있을 것이다. 우리는 멀리 떨어져있는 큰 원판이 필요하기 때문에 Location-[100], Semiwidth X-[100]으로 값을 변경하자.  그리고 Name 셀에  Detector라고 입력하자. 이것은 이 Plane에 이름을 지어주는 것이다. Semiwidth Y에는 값을 입력하지 않았는데, 이것은 쌍으로 이루어진 요소들 중에서 하나의 값만 있으면 다른 하나는 자동으로 값이 설정되기 때문이다. 즉, Y에 값이 없으면 X값이 Y값에 자동 적용된다.

ASAP의 버전에 따라서 조금 다르지만, Builder에서 Plane을 만들 경우 Plane 다음 줄에 Local 명령어가 함께 만들어지는 경우가 있다. Local은 유효 영역을 설정하는 것으로 지금은 사용하지 않을 것이기 때문에 만약 Local 명령어가 생겼다면 선택 후 Delete 키를 눌러 지워버리자.

Detector를 만들었으니 이제 Rays를 만들어 보자. Rays > Grids > Grid를 선택하자. 그러면 Elliptic 형태의 Rays가 Axis-[Z], Position-[-10]의 위치에 X축으로 -1~1, Y축으로 -1~1의 영역에 10×10의 총 100개의 Rays가 만들어 진다.

Grid 형태의 Rays가 만들어졌고, 이제 이 Rays가 어느 방향으로 진행할지를 설정해 주어야 한다. 다음 줄에서 Rays > Grids > Source를 선택하자. 그러면 Cmd-[Direction], Vector A-[0], Vector B-[0], Vector C-[1]의 값이 설정되는데 이것은 Vector C 방향, 즉 +Z방향으로 진행하라는 뜻이다. 여기까지 했으면 Lens도 만들었고 Detector도 만들었고 Rays도 만들었다.

ASAP 내부적으로 광경로를 계산할 수 있는 모든 조건을 갖춘샘이다. 그런데 ASAP에서는 Rays의 진행을 내부적으로 계산하기만 하지 그래픽적으로 보여주지는 않는다. 이유는 그래픽으로 보여주기 위해서는 추가적으로 시간이 더 걸리기 때문이다. 그러나, 설계를 처음 하였다면 Rays가 맞게 진행하는지를 먼저 확인하고 맞다면 그때는 그래픽으로 보여주지 않고 계산만 해도 될 것이다. 우선 Lens와 Detector를 Preview가 아니라 실제로 그려주는 명령어를 추가해 보자. System > Geometry > Verify Geometry > Graphics > Plot을 선택하자. Intra FacetsInter Facets의 값은 Resolution을 의미한다. 그리고 Overlay를 사용하게 되면 현재의 형상이 그려진 다음에 또 다른 형상이나 Rays가 그려질 때 현재의 형상 위에 중첩되게 그려지게 된다. Lens와 Detector를 그리고, 다음에 Rays를 그려서 모든 내용이 중첩되게 그려져야 하기 때문에 Overlay 셀을 더블 클릭해서 콤보박스에서 Overlay를 선택하자. 이제 전구의 스위치를 ON 시킬 일 만 남았다. Trace > Trace를 선택하자. 그리고 Plot 셀을 더블 클릭하여 Plot을 선택하자. Trace 명령어는 Rays를 내부적으로 계산하라는 뜻이고, Plot은 계산된 Rays를 우리가 볼 수 있게 그림을 그리라는 뜻이다.  

Trace Plot
그림 2.7 Trace Plot 선택하기

이것으로 모든 프로그램을 작성하였다. 이제 프로그램을 Run 시켜보자. Builder Tool Bar에 있는 Run 버튼 RUN 을 클릭하면 된다. 뭔가 휙휙 돌아가는 것 같다. 그리고는 ASAP Workspace의 Plot  Viewer 아래에 PLOT이 만들어지면서 Lens, Detector, Rays가 그려진다.

Plot Facets
그림 2.8 Plot Viewer에 PLOT 생성

ASAP Tool Bar에 있는 3D View 버튼 3D Viewer_button 을 클릭해보자. 그러면 3D Viewer로 만들어진 3차원 형상을 표시해준다. Lens 뒤에서 생성된 Rays가 Lens 를 통과한 후 Detector에 도달하는 것을 볼 수 있다.

3D Viewer
그림 2.9 3D 형상보기

이제 Detector에 도달한 Rays가 어떻게 맺혀있는지 확인해 보자. 우선 메뉴바에서 Analysis > Choose Rays > Consider…를 선택하자.

Analysis Consider
그림 2.10 Consider 선택하기

그러면 Consider Objects/Rays 윈도우가 생성된다. ASAP에서는 Trace가 진행되고 나면 모든 Rays에 대한 정보들이 파일로 저장되고 사용자가 원하는 정보들을 뽑아서 분석할 수 있게 해 준다. 우리는 알고 싶은 정보가 뭔지만 지정해 주면 되는 것이다. Consider Objects/Rays 윈도우를 보면 Rays, Spots…등과  <object #1>에 대한 정보 뿐만 아니라 DETECTOR에 만들어진 정보들에 대해서 분석을 할 수 있게 되어있다. 사용자가 DETECTOR와 같이 이름을 지정해 주면 그 이름을 따르고, 그렇지 않으면 ASAP이

알아서 이름을 만들어 준다. 앞으로는 우리가 이름을 다 지정해 줄 것이다. 그래야 알아보기가 쉽기 때문이다. 여기서는 DETECTOR에 맺힌 Rays에 대한 정보들만을 분석하려고 한다. 그래서 DETECTOR만 체크하고 나머지는 체크를 해제하자. 그리고 OK를 클릭해 보자.

Consider Objects
그림 2.11 Consider Objects / Rays 윈도우

무엇을 분석할지 정했으니 이제 분석에 들어가 보자. Analysis > Calculate Flux Distribution…을 선택하자.

Calculate Flux
그림 2.12 Calculate Flux Distribution… 선택하기

그러면 Calculate Flux Distribution 윈도우가 생성된다. Detector에 맺힌 Rays의 위치와 세기를 분석하기 위해 Method 그룹 박스에서 Flux/Area (Irradiance using SPOTS POSITION)을 선택하자. 그리고  Detector의 기준축이 Z축이기 때문에 Detector는 Y-X 평면상에 만들어진다. 그래서 WINDOW 그룹박스의 Vertical:은 Y축으로, Horizontal: 은 X축으로 설정해주어야 한다. Horizontal: 콤보 박스의 역삼각형 버튼을 눌러 Horizontal:ZX로 변경해 보자. 다른 부분은 뒤에서 알아 보기로 하고 여기서는 넘어가기로 하자. 윈도우의 오른쪽 아래에 있는 Script>> 버튼을 클릭해 보면 그림 2.13과 같이 Script가 나오는 창이 생성되는데 이것은 현재 윈도우 안에서 설정한 내용을 코딩으로 표시했을 때의 결과이다. 3줄짜리 코딩이 위의 설정과 동일한 결과를 나타내게 된다.  OK를 클릭해 보자.

Calculate Flux Distribution
그림 2.13 Calculate Flux Distribution… 설정하기

그러면 ASAP Workspace 창의 Plot Viewer 아래에 SPOTS 창이 생성되는데, 이것은 Detector 평면(Y-X축)에 맺힌 Rays를 보여준다. GRID로 Rays를 만들었기 때문에 Rays가 등간격으로 맺힌것을 확인할 수 있다.

Note…
 ASAP 에서는 모니터의 세로축을 기준으로 생각하기 때문에 X-Y라고 하지 않고 Y-X라고 한다.

Rays Plot
그림 2.14 PLOT POSITION 결과

다음은 메뉴바에서 Display > Graphics > Picture를 선택해보자.

Picture_menu
그림 2.15 Display > Graphics > Picture 선택하기

그러면 Display Viewer 창에 displa01.tmp 파일이 생성되고 그림 2.16과 같은 결과를 보여준다. 왼쪽 마우스를 클릭한 상태에서 마우스를 움직여 보자. 붉은색 점이 Rays가 맺힌 위치이고, 마우스를 붉은점 위에 놓으면 Y-X의 좌표값과 그때의 세기값(FLUX/sq-MM)을 확인할 수 있다.

Picture
그림 2.16 PICTURE 결과

간단한 예제를 통해서 ASAP이 어떻게 돌아가는지 확인해 보았다. 그런데 위의 과정을 따라하면서 마우스를 여러 번 클릭해야 하는 번거러움이 있었을 것이다. 그래서 ASAP에서는 이렇게 셀과 마우스를 이용한 Builder 방법이 아니라 text를 이용한 코딩 방법도 같이 제공하고 있다. ASAP을 처음 배우게 되면 Builder 방법을 먼저 공부하게 되지만 이번 장에서 해본 예제가 전부다. 다음부터는 Builder가 아니라 코딩을 이용해서 프로그램을 작성할 것이다. 코딩이 처음에는 어려워 보이지만 얼마 지나지 않아 코딩이 얼마나 명확하고 간편한지 알게 될 것이다. 그때가 되면 다시는 Builder를 사용할 수 없을 것이라고 확신한다.

그럼 위에서 작성한 Builder를 코딩으로 변환해 보자. 이 변환 방법 또한 ASAP에서 기본적으로 제공해준다. Builder의 셀을 마우스 클릭-드레그하여 모든 셀을 선택하자. 그리고 오른쪽 마우스를 클릭해서 Copy를 선택하거나 Ctrl+C를 눌러 내용을 복사하자. 그리고 ASAP Workspace 창의 INR Input 디렉토리를 선택하고 오른쪽 마우스를 클릭하여 New를 선택하자. 그러면 Input 1*라는 코딩창이 하나 생성된다.

코딩창을 선택한 후 오른쪽 마우스 클릭하고 Paste를 선택하던지, Ctrl+V를 눌러 내용을 붙여넣기 하자. 그러면 Builder에서 설정한 내용이 몇 줄의 코딩으로 표시 된다.

INR_new
그림 2.17 Builder 선택하기

ASAP 버전에 따라 복사되는 내용이 조금씩 다르다.  그림 2.18과 같이 만들어졌다면 내용을 조금 수정해야 하는데, SINGLET 과 PLANE을 OBJECT로 설정해 주어야 한다.

INR_code
그림 2.18 INR 파일에 붙여 넣기

자세한 내용은 뒤에서 알아보기로 하고 우선 아래와 같이 SINGLETPLANE 앞 줄에 ENT OBJECT라고 코딩을 추가해보자. ENT OBJECT; 명령어가 이미 추가되어 있다면 따로 수정하지 않아도 된다. 이것은 실제로 형상을 가지는 물체를 OBJECT라고 선언해 주는 것이고, 이렇게 선언된 Object를 PLOT FACETS 명령어를 통해서 그림으로 그려주게 된다.

SYSTEM NEW
RESET

UNITS MILLIMETERS
WAVELENGTHS 550 NANOMETERS          

ENT OBJECT                                    !! 추가 하기      
SINGLET Z 0 0.4 1 SCHOTT_BK7 RD 55.0

ENT OBJECT                                    !! 추가 하기 
PLANE Z 100 ELLIPSE 100 ‘DETECTOR’

GRID ELLIPTIC Z10 -1 1 1 1 10 10
SOURCE DIRECTION 0 0 1
PLOT FACETS 5 5
TRACE PLOT

Editor Toolbar의 Run 버튼 RUN 을 클릭해보자. 그러면 앞의 Builder에서 실행한 것과 동일한 결과를 얻을 수 있을 것이다. 아직은 좀 암호 같지만 마우스를 클릭해서 시트로 작성한 것 보다는 간결해 보이지 않는가! 앞으로는 Builder가 아닌 코딩을 통해서 프로그램을 작성할 것이다. 금방 익숙해 질것이니 너무 걱정하지 않아도 된다. ‘Builder 라는게 ASAP 프로그램 안에 있다’ 정도만 알고 있으면 될 것 같다.

Note…
ASAP에서는 주석을 만들기 위해서 !!(느낌표 2개)를 사용한다. 주석은 프로그램에 설명을 달아주는 것으로 코드가 어떤 의미인지 설명을 달아 주는 것이다. 단지 사람이 보는것에만 의미를 두고 있어서 주석이 Simulation 되지는 않는다. !!는 한줄에만 적용되는 명령어이며 !! 뒤의 모든 내용이 주석처리 된다.C/C++ 프로그램에서의 한줄 주석 명령어인 //(슬레시 2개)와 같은 것이다. 그러나, C/C++과 달리 ASAP에는 여러줄 주석을 만들어주는 /* ~ */ 명령어는 없다. 대신 Ctrl 키를 누르고 마우스를 움직여보자. 그러면 세로줄로 한글자 한글자를 선택할 수 있게 되어있다. 여러줄을 주석처리 하고 싶으면 Ctrl 키를 누른 상태에서 마우스를 움직여 세로로 여러줄을 선택하자. 그리고 !!을 입력하면 여러줄에 !!을 한번에 입력할 수 있다. 이 기능은 ASAP이 제공하는 아주 편리한 기능이다. 다른 데이터들을 편집할 때도 아주 유용하게 쓰이는 기능이다. 마지막으로, ASAP에서는 주석처리가 되면 글자가 녹색으로 변경된다.

이번 장에서 해 본 내용이 앞으로 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: