$GRAB

ASAP을 실행하다 보면 수많은 계산 결과물들이 Command Output Window에 표시되는 것을 볼 수 있다. 이렇게 표시된 수많은 값들 중에서 내가 원하는 값만을 뽑아내는 방법에 대해서 알아보자. 일단, 사각형에서 10,000개의 Rays를 만들고 이때 만들어진 Rays가 XYZ 평면의 어디에서 만들어졌는지에 대한 내용들을 확인해 보려한다.

SYSTEM NEW
RESET

EMITTING  RECTANGLE  Z  0  1  1  10000

WINDOW Y X
STATS POSITION
RETURN

위의 프로그램을 실행시키고 나면, Command Output Window에서 다음과 같은 결과를 확인할 수 있을 것이다.

— STATS POSITION
Current Statistics for Object 0 –
Total Flux =  1.000000     from 10000 rays (100.00%)
                                      X                     Y                     Z
                   Centroid: 0.2892359E-02  -.1040085E-02   0.000000
       RMS Deviation: 0.5797728          0.5767288              0.000000
  Maximum Spread: -1.002879          -.9988816               0.000000
                                    to 0.9968241         1.000964               0.000000

— RETURN

결과는 XYZ 축에 대한 각각의 Rays 데이터에 관한 것이다. 이 값들 중에서 X축의 중심값인 Centroid:  X의 값을 뽑아내보자. Command Output Window에서 원하는 데이터를 뽑아내는 명령어는 $GRAB 이다. 아래 프로그램과 같이 $GRAB 명령어를 추가해 보자.

STATS (ASAP Command)
Lists statistics of the currently selected ray data.Syntax
STATS [ ALL      ]  [ p ]
SOURCES
POSITION
P#
DIRECTION
D#

Option Description
ALL object summary for all considered objects
p sort by total flux and truncate list below this percentage
SOURCES lists current number of rays and total flux from each source
POSITION statistical analysis of positional ray data
DIRECTION statistical analysis of directional ray data
P# statistical analysis of positional ray data of the base ray or a particular
parabasal ray
D# statistical analysis of directional ray data of the base ray or a particular
parabasal ray

 


SYSTEM NEW

RESET

EMITTING
  RECTANGLE  Z
  0  1  1  10000

WINDOW Y X
STATS POSITION

$GRAB  ‘Centroid:’  0  1
RETURN

$GRAB 명령어 다음에 찾고자 하는 단어를 ‘ ‘(작은따음표) 안에 적어준다. 이 단어는 Command Output Window에 있는 단어를 대/소문자를 확실히 구분해서 입력해 주어야 한다. 여기서는 ‘Centroid:’를 찾고자 했다. 다음은 Script의 줄(행)을 의미한다. 0 은 Centroid: 가 있는 자신의 행이다. 마지막 1 은 그 행의 첫번째 데이터를 의미한다. 즉, ‘Centroid:’가 있는 그 행의 첫번째 데이터 0.2892359E-02 이다. 한번 실행해보자. 그러면, $GRAB 명령어 다음에 원하는 값이 표시된 것을 확인할 수 있을 것이다. 이렇게 하면, 간단하게 내가 원하는 값을 뽑아낼 수 있게된다.

— STATS POSITION
Current Statistics for Object 0 –
Total Flux =  1.000000     from 10000 rays (100.00%)
X                            Y                              Z
Centroid: 0.2892359E-02    -.1040085E-02     0.000000
RMS Deviation: 0.5797728            0.5767288             0.000000
Maximum Spread: -1.002879             -.9988816             0.000000
to 0.9968241            1.000964                0.000000

— $GRAB  ‘Centroid:’  0  1
2.892359000000000E-003                                !! Centroid:  X 값을 찾아준다.
— RETURN

작은따음표 안에 들어가는 단어를 이리저리 바꿔가며 프로그램을 실행시켜보자. 심지어 ‘C’라고 해도 원하는 값을 얻을 수 있다. 이것은 STATS POSITION 아래에 있는 데이터 중 ‘C’로 시작하는 문장이 ‘Centroid:’ 뿐이기 때문이다. ‘Current’ 뒤에는 데이터가 없기 때문에 무시된다. 그럼 ‘R’이나 ‘RM’을 해보자. 그럼 ‘RMS Deviation:’의 첫번째 값인 0.579772800000000가 표시된다. ‘RMS Dev’ 라고 해도 결과는 같다. 이번에는 ‘S’를 해보자.  그러면, ‘Maximum Spread:’의 ‘S’가 적용되어 -1.00287900000000 을 표시한다. 이처럼 대/소문자만 잘 구별해서 적어주면 원하는 데이터를 찾기는 그리 어렵지 않을 것이다.

원하는 데이터의 이름을 찾았다면, 다음은 그 이름에 속해있는 데이터를 찾는 방법을 알아보자. 즉, 이름으로 인식되는 작은따음표 다음에 있는 숫자에 대한 것이다.

GRAB_01
표 8.1 $GRAB의 데이터 순서

작은따음표로 ‘Centroid:’를 찾았기 때문에 $GRAB 명령어에 있는 첫번째 숫자 값은 표 8.1의 행을 의미한다. 즉, ‘Centroid:’가 있는 행이 0번이다. 그리고, 앞쪽으로 한행씩 줄어들때 마다 -1씩 값이 감소하고, 뒤쪽으로 한행씩 늘어날때 마다 +1씩 값이 증가한다. 두번째 값은 열을 의미하는데, 열은 옆으로 +1씩 증가한다. 여기서는 음수값은 없다. 다시한번 정리하면, 명령어 $GRAB  ‘Centroid:’  0  1 은 ‘Centroid:’가 있는 0행 1열의 값을 가리키게 된다.

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: