요즘 code_v를 구동해보고 있습니다. 조금은 익숙치 않은 interface와 이런저런 고급 tool에 대한 이해가 부족하지만 프로그램 manual에 충실하니 가속이 붙네요. reference manual은 모두 같으므로 또다시 보지 않아도 되네요.
zemax와 code_v 이 둘은 비슷한것 같은데 oslo는 약간은 다른것 같군요.
프로그램 상의 bug도 각각 다르고
저번에 모 박사님이 하신 말씀이 새삼 생각이 나는군요. oslo는 어떤식으로 돌아가는지 알겠는데, code_V는 알수가 없다고...
자 그럼 각각의 프로그램 source에 대하여 간략히 설명해보겠습니다.
단 두 예제는 u.s.-patent로 하겠습니다. 제가 하고 있는 작업으로 하면 더 좋겠지만 서도 그게 그렇게 여의치 않으므로 어쩔수 없네요.
그리고 여기서 설명하는 것은 각각의 command의 역할과 선언등을 하겠습니다. 광학 설계가 어떤식으로 되는지를 간략히 말씀드리려고 합니다.
저는 이렇게 하지 않고 최대한 analogue에 중점을 두어 옛날 사람들이 줄 그어서 수식 풀며 하는 ray tracing에서 그다지 벗어나지 않는 방법으로 합니다만... (일명 줄타기...)
최종 source는 다 이런 수식과 명령어로 파일이 저장됩니다.
어쨎든 분석을 시작하겠습니다.
먼저 code_V seqence파일 분석
in E:\cv\Array\array_example.seq
(불러들이기-아래줄부터가 파일내용이고 code v>는 실행창에 나오는 프롬프트이니 아무것도 아닙니다.)
CODE V> len
(lens 파일 선언)
Radius input/output mode
CODE V> rdm y
(곡률에 대하여 radii로 할것인지 curvature로 할것인지 여기서는 yes이므로 radii로 한다고 선언하는 것입니다.)
CODE V> title 'Lens Array example'
(요건 파일이름 선언...*^^*)
CODE V> wl 587.56
(reference 파장 선언)
CODE V> nao .28
(물체측 numerical aperture, 4가지 정도로 광특성을 정의하는데 여기서는 nao로 선언함)
CODE V> ca ape
(유효경 선언: clear aperture = aperture)
CODE V> so 0. 49.
OBJECT SURFACE:
RDY 0.000000 ; THI 49.000000 ; GLA AIR
(물체면 선언: 평,49mm 1번 렌즈와의 거리)
CODE V> s -80 9 bk7
Warning: Glass BK7 is no longer available from SCHOTT
A replacement glass is NBK7
(요즘 나오는 유리는 납이나 비소가 없는 친환경적인 유리재질로 바뀌어 앞에 n,e,k등등의 알파벳이 붙어서 나옵니다. 그에 대한 프로그램상의 경고 문구임)
CODE V> s 205 2.613
SURFACE 2:
RDY 205.000000 ; THI 2.613000 ; GLA AIR
CODE V> s -85 5 bk7
SURFACE 3:
RDY -85.000000 ; THI 5.000000 ; GLA BK7_SCHOTT
CODE V> s -40 .18
SURFACE 4:
RDY -40.000000 ; THI 0.180000 ; GLA AIR
CODE V> s 150 9.2 bk7
SURFACE 5:
RDY 150.000000 ; THI 9.200000 ; GLA BK7_SCHOTT
CODE V> s -50 10
SURFACE 6:
RDY -50.000000 ; THI 10.000000 ; GLA AIR
CODE V> sto
CODE V> s 0 0
SURFACE 7:
RDY 0.000000 ; THI 0.000000 ; GLA AIR
(aperture stpper 선언)
CODE V> arr 10 5 0 25 25
(gloval한 평행 array 선언: 가로 10, 세로 5간격을 두고 광축으로 중심으로 상하좌우 +-25까지 병렬로 arry됨(fly eye lens 선언 항임))
CODE V> s 15 44 bk7
SURFACE 8:
RDY 15.000000 ; THI 44.000000 ; GLA BK7_SCHOTT
CODE V> rex 4
CODE V> rey 2
CODE V> rex edg 4
CODE V> rey edg 2
(local한 4각면 영역 선언-fly eye 요소)
CODE V> s -15 0
SURFACE 9:
RDY -15.000000 ; THI 0.000000 ; GLA AIR
CODE V> rex 4
CODE V> rey 2
CODE V> s 0 20
SURFACE 10:
RDY 0.000000 ; THI 20.000000 ; GLA AIR
CODE V> ear
(array 마지막 면 선언-(여기까지 fly eye lens 임))
CODE V> s 60 10 bk7
SURFACE 11:
RDY 60.000000 ; THI 10.000000 ; GLA BK7_SCHOTT
CODE V> cir 25
CODE V> cir edg 26
(local한 원형면 영역 선언-stpper 대신 유효 aperture 구간정의)
CODE V> s 0 100
SURFACE 12:
RDY 0.000000 ; THI 100.000000 ; GLA AIR
CODE V> si 0 0
IMAGE SURFACE:
RDY 0.000000 ; THI 0.000000
(상면 선언)
CODE V> GO
(lens파일 실행 명령)
다음은 oslo lens 파일 분석
// OSLO 6.2 12643 0 50466
LEN NEW "No name" 1.4884 6
NAP 0.5
(구경비 정의)
ANG 1.0
(화각. 물체고로 정의하기도 함)
DES "OSLO"
(designer 이름, 여기서는 default로 oslo)
UNI 1.0
(렌즈 unit 여기서는 1.0 으로 mm임(1mm가 아님. 2,3은 inch나 다른 unit임))
// SRF 0
AIR
TH 1.0621393971e+20
AP 1.8539712139e+18
(물체면 정의)
NXT // SRF 1
AIR
TH -0.1062139397058
NXT // SRF 2
WV 0.58756 0.48613 0.65627
GLA MOD G1 1.605 1.6134011763124 1.6013972080584
TCE 236.0
RD 1.017623
TH 0.88
CC -0.695054
(렌즈 물체면 정의 파장이 default로 된 상태로 d,F,C선입니다. 글라스는 상용 글라스는 아니고 이 렌즈를 특허로 낸 회사측의 개발품으로 G1이라 임으로 지정 n값과 분산률을 넣어 각 color에 대한 분산률이 자동계산 되어 위 nd, nF, nC가 나옴, 다음 tce도 default로 되었고, Radii, thickness, conic-constant,)
ASP ASR 10
(비구면 선언 차수 10까지 이용)
AS2 -0.004088
AS3 -0.021192
AS4 -0.007506
AS5 -0.005623
(as2=AD, as3=AE,...)
NXT // SRF 6
AIR
TH 0.0
(상면)
DRW ON
(auto draw 상태 정의 on/off)
CBK 1
(ccl 명령어에 따른 callback상태 정의)
WV 1.55
(이 system에 쓰이는 파장 선언, 적외선 laser focusing용 single glass aspheric lens system임)
WW 1.0
(wave weight로 default로 1임)
END 6
(상면 정의하여 ray tracing을 멈추라는 명령어로 code V의 go 명령어와 비슷한 기능)
DLRS 3
(drawing condition을 말하며 여기서는 3이므로 상면까지 drawing 하여 보여주라는 것임)
여기는 복잡한 operating 명령어가 없는 순수 data에 대한 입출력 명령어만 포함되어 있으나 살제 복잡한 여러면 system의 파일은 tilt, 좌표이동, array 삽입등의 위 code_V 예제보다 더 복잡하게 저장되기도 합니다. 또한 최종 optimization하는 genii error function이나 oslo error function 내용을 포함하기도 합니다. 이 부분에서 operand에 대한 기능의 이해가 있어야 접근할수 있는 것입니다.
code V 명령체제와 oslo를 구지 구분하자면 oslo는 약간 저급 언어를 쓰는것 같지만 설계자가 접근하기 쉽고 ccl이라는 plug-in을 가지고 있습니다. code V는 고급언어로서 macro라는 plug-in을 가지고 있고, 일반 프로그래머라도 쉽게 접근가능한 tool인것 같습니다.
zemax는 따로 설명 안했지만 code_V와 비슷한 계열이라 생각하면 될것입니다.
외부적인 interface를 비교하자면 analysis tool이 좋은 것은 당연 zemax이고, macro에 따른 응용이 쉽고 새로운것에 대한 접근이 용이한것은 code_V입니다. oslo는 광특성에 대하여 직접접근 하고 이론을 실제에 적용하는데 충실한 프로그램입니다. 그러나 user가 그리 많지 않기때문에 code V의 아성을 따라가기 쉽지 않습니다.
첫댓글 좋은 분석 잘 보았습니다. 감사합니다.^^
감사합니다.