Program LAYOUT ! Optical layout for VIRGO plus. ! jlm: Last modified: Oct 2010 use optocad use rsplot use rsutil implicit none integer, parameter :: nt=10 ! number of tanks integer, parameter :: mt=nt+9 ! total number of tanks + benches integer :: ibf=-1,cf=-1,wf=-1,nf=-1,mcf=-1,wbf=-1,eib2f=-1, mcemf=-1,omcf=-1! reference numbers of frames integer :: dbf=-1,nbf=-1,ebf=-1,bsf=-1,eibf=-1,lbf=-1,af=-1,rcf=-1,ercf=-1,emcbf=-1! reference numbers of frames integer :: lcg,ltg,lcben,it,i,ibs=0 integer :: lcbc1, lcbc2, lcbc3, ltb, lccs, nib integer :: lcbni, lcb0, ltb0, lcb1, lcb2, lcb3 integer :: icc, icpd, iccam, icqpd, icpsd character :: ocd*32, version*16 character(40) :: dwi(5) real :: arcrange real :: tank(2,mt), trad real :: cross(2,5), pst(6) real :: psc, psc2, pzc, pzc2, pzc3, pez, pez2 real :: pof, iof real :: cfxs, cfxe, cfys, cfye, cfxrange, cfyrange,cfxof, cfyof real :: wfxs, wfxe, wfys, wfye, wfxrange, wfyrange,wfxof, wfyof real :: nfxs, nfxe, nfys, nfye, nfxrange, nfyrange,nfxof, nfyof real :: afxs, afxe, afys, afye, afxrange, afyrange,afxof, afyof real :: mcfxs, mcfxe, mcfys, mcfye, mcfxrange,mcfyrange, mcfxof, mcfyof real :: ibzxs, ibzxe, ibzys, ibzye, ibzxrange,ibzyrange, ibzxof, ibzyof real :: bszxs, bszxe, bszys, bszye, bszxrange,bszyrange, bszxof, bszyof real :: dbzxs, dbzxe, dbzys, dbzye, dbzxrange,dbzyrange, dbzxof, dbzyof real :: ebzxs, ebzxe, ebzys, ebzye, ebzxrange,ebzyrange, ebzxof, ebzyof real :: nbzxs, nbzxe, nbzys, nbzye, nbzxrange,nbzyrange, nbzxof, nbzyof real :: wbzxs, wbzxe, wbzys, wbzye, wbzxrange,wbzyrange, wbzxof, wbzyof real :: eibzxs, eibzxe, eibzys, eibzye, eibzxrange,eibzyrange, eibzxof, eibzyof real :: eib2zxs, eib2zxe, eib2zys, eib2zye,eib2zxrange, eib2zyrange, eib2zxof, eib2zyof real :: lbzxs, lbzxe, lbzys, lbzye, lbzxrange,lbzyrange, lbzxof, lbzyof real :: rczxs, rczxe, rczys, rczye, rczxrange,rczyrange, rczxof, rczyof real :: erczxs, erczxe, erczys, erczye, erczxrange,erczyrange, erczxof, erczyof real :: mczxs, mczxe, mczys, mczye, mczxrange,mczyrange, mczxof, mczyof real :: omczxs, omczxe, omczys, omczye, omczxrange,omczyrange, omczxof, omczyof real :: emcbzxs, emcbzxe, emcbzys, emcbzye, emcbzxrange,emcbzyrange, emcbzxof, emcbzyof real :: xb(9), yb(9), xbi(9), ybi(9) ,rfci(9) ocd=arg(1,trim(arg(0))//'.ocd') ! get name of input file version=ocd(scan(ocd,'_')+1:index(ocd,'.ocd')-1) ! extract version ! Suspended detection bench shape yb(:)=(/.44,.44,.182,-.182,-.44,-.44,-.182,.182,.44/) xb(:)=(/11.182,10.818,10.56,10.56,10.818,11.182,11.44,11.44,11.182/) ! Suspended injection bench (same shape as detection bench): ybi=-11. xbi=-11.0261 rfci=-100. ! The following data are measured in the CBRS (with x=-Wc) ! Tanks: xpos ypos tank(:, 1)=(/ -0.02697, -11.0/) ! IB ! tank(:, 2)=(/ -142.867, -11.064/) ! MC tank(:, 2)=(/ -143.699, -11.064/) ! MC tank(:, 3)=(/ -0.002295, -6.00285/) ! PR tank(:, 4)=(/ -0.0001, 0.0179/) ! BS tank(:, 5)=(/ 0.0, 6.39805/) ! NI tank(:, 6)=(/ 0.0,3006.40015/) ! NT tank(:, 7)=(/ -5.59905, 0.0015/) ! WI tank(:, 8)=(/ -3005.6, 0.001282/) ! WT tank(:, 9)=(/ 6.00115, 0.0202/) ! SR tank(:, 10)=(/ 11.0009, -0.0015/) ! DB trad=1.0 ! radius of the tanks ! Benches: xpos ypos tank(:,11)=(/ -1.816, -15.025/) ! external injection bench tank(:,12)=(/ tank(1,10)+1.685+.52,tank(2,10)-1./) ! external detection bench tank(:,13)=(/ tank(1,8)-5.023,tank(2,8)-1.1275/) ! west bench tank(:,14)=(/ tank(1,6)-1.1275, tank(2,6)+2.623/) ! north bench tank(:,15)=(/ -4.576, -14.925/) ! laser bench tank(:,16)=(/ tank(1,1)-0.42, tank(2,1)-1.615/) ! external injection bench2 tank(:,17)=(/ tank(1,1)-100, tank(2,1)-100/) ! reference cavity bench tank(:,18)=(/ tank(1,17)-0.96, tank(2,17)-2.1/) ! external reference cavity bench tank(:,19)=(/ tank(1,2)-2.0, tank(2,2)-0.3/) ! external mode cleaner bench ! Set up data for demo waist indicators: ! act xap yap rap phi cur dwi(1)='#o 12., -15.' ! origin dwi(2)='b 105.920, 103.340,.033648, 180.,4.551' ! tang. plane dwi(3)='c d, 105.520, 103.340, .00001' ! beam stop dwi(4)='b 105.520, 103.040,.033648, 0.,4.551' ! sagi. plane dwi(5)='c d, 105.920, 103.040, .00001' ! beam stop psc=0.025 ! Scaling factor psc2=1000.*psc pzc=0.25 pzc3=0.22 pzc2=1000.*pzc pez=0.125 pez2=1000.*pez pof=30. ! offset on page iof=25. ! offset between frames cfxs=-12. cfxe=18. cfys=-15.5 cfye=15. cfxrange=cfxe-cfxs cfyrange=cfye-cfys wfxs=-3011. wfxe=-2999. wfys=-2.1 wfye=2.1 wfxrange=wfxe-wfxs wfyrange=wfye-wfys nfxs=-2.1 nfxe=2.1 nfys=3000. nfye=3012. nfxrange=nfxe-nfxs nfyrange=nfye-nfys afxof=815. afyof=715. afxs=100. afxe=111. afys=102.5 afye=106.5 afxrange=nfxe-nfxs afyrange=nfye-nfys mcfxs=-148. mcfxe=-136. mcfys=-15.5 mcfye=-8.5 mcfxrange=mcfxe-mcfxs mcfyrange=mcfye-mcfys mcfxof=pof mcfyof=pof cfxof=wfxrange*psc2+iof+pof cfyof=pof wfxof=pof wfyof=pof-(cfys+wfyrange/2.)*psc2 nfxof=pof+100 nfyof=wfyof+wfyrange*psc2+iof ibzxof=855. ibzyof=505. ibzxs=-.5-0.025 ibzxe=.5-0.025 ibzys=-11.5+.05 ibzye=-10.6+.05 ibzxrange=ibzxe-ibzxs ibzyrange=ibzye-ibzys bszxof=377. bszyof=312. bszxs=-.27 bszxe=.27 bszys=-.27 bszye=.27 bszxrange=bszxe-bszxs bszyrange=bszye-bszys omczxof=540. omczyof=555. omczxs=10.75 omczxe=10.855 omczys=0.265 omczye=0.325 omczxrange=omczxe-omczxs omczyrange=bszye-omczys dbzxof=530. dbzyof=255. dbzxs=10.5 dbzxe=11.5 dbzys=-.5 dbzye=.6 dbzxrange=dbzxe-dbzxs dbzyrange=dbzye-dbzys ebzxof=810. ebzyof=118. ebzxs=13.1 ebzxe=14.2 ebzys=-1.05 ebzye=1.1 ebzxrange=ebzxe-ebzxs ebzyrange=ebzye-ebzys nbzxof=300. nbzyof=460. nbzxs=tank(1,14)-0.02 nbzxe=tank(1,14)+1.52 nbzys=tank(2,14)-0.2 nbzye=tank(2,14)+2.52 nbzxrange=nbzxe-nbzxs nbzyrange=nbzye-nbzys wbzxof=pof wbzyof=235. wbzxs=tank(1,13)-0.02 wbzxe=tank(1,13)+2.4+0.22 wbzys=tank(2,13)-0.02 wbzye=tank(2,13)+1.5+0.12 wbzxrange=wbzxe-wbzxs wbzyrange=wbzye-wbzys eibzxof=570. eibzyof=pof eibzxs=tank(1,11)-0.02 eibzxe=tank(1,11)+2.42 eibzys=tank(2,11)-0.02 eibzye=tank(2,11)+1.62 eibzxrange=eibzxe-eibzxs eibzyrange=eibzye-eibzys eib2zxof=862.5 eib2zyof=415. eib2zxs=tank(1,16)-0.05 eib2zxe=tank(1,16)+.9 eib2zys=tank(2,16)-0.1 eib2zye=tank(2,16)+.21 eib2zxrange=eib2zxe-eib2zxs eib2zyrange=eib2zye-eib2zys lbzxof=pof lbzyof=pof+21. lbzxs=tank(1,15)-0.02 lbzxe=tank(1,15)+2.02 lbzys=tank(2,15)-0.02 lbzye=tank(2,15)+1.08 lbzxrange=lbzxe-lbzxs lbzyrange=lbzye-lbzys rczxof=140. rczyof=600. rczxs=ibzxs-100 rczxe=ibzxe-100 rczys=ibzys-100 rczye=ibzye-100 rczxrange=rczxe-rczxs rczyrange=rczye-rczys erczxof=pof erczyof=370 erczxs=tank(1,18)-0.02 erczxe=tank(1,18)+1.22 erczys=tank(2,18)-0.40 erczye=tank(2,18)+0.55 erczxrange=erczxe-erczxs erczyrange=erczye-erczys mczxof=730. mczyof=545. mczxs=tank(1,2)-0.2 mczxe=tank(1,2)+0.2 mczys=tank(2,2)-0.2 mczye=tank(2,2)+0.2 mczxrange=mczxe-mczxs mczyrange=mczye-mczys emcbzxof=600. emcbzyof=507. emcbzxs=tank(1,2)-2.02 emcbzxe=tank(1,2)-1.68 emcbzys=tank(2,2)-0.37 emcbzye=tank(2,2)+0.32 emcbzxrange=emcbzxe-emcbzxs emcbzyrange=emcbzye-emcbzys !############################################################################## ! First page: Global Layout call oc_init(pform='A0_L',pid='',psout='') ! initialize OPTOCAD A0 landscape 1189, 841 ! call oc_init(pform='A0_L',pid='') ! initialize OPTOCAD A0 landscape 1189, 841 ! Assign colors for optics, benches, grid lines: icc=ps_color((/.90,1.0,1.0/)) ! default color for interior of optics icpd=ps_color((/.0,.5,1./)) ! color for interior of ordinary photodiodes icqpd=10 ! color for interior of quadrant photodiodes icpsd=14 ! color for interior of position sensitive photodiodes iccam=5 ! color for interior of CCD cameras lccs=7 ! color of major surfaces of components lcben=ps_color((/.0,.5,1./)) ! color for bench outlines lcbni=ps_color((/1.0,1.0,.85/)) ! color for bench interior ! lcbni=ps_color((/.95,.95,.85/)) ! color for bench interior lcg=ps_color((/.9,.9,.9/)) ! color for grid lines ltg=0 ! line pattern for grid lines ! Assign colors and line types for ray segments: lcb0=1 ltb0=5 lcb1=2 ! color for beam at/upto 1*w lcb2=ps_color((/1.,.6,.6/)) ! color for beam at/upto 2*w lcb3=ps_color((/1.,.8,.8/)) ! color for beam at/upto 3*w ! lcbc1=lcb2 ! color for beam contour at 1*w lcbc1=ps_color((/1.,.7,.7/)) ! color for beam contour at 1*w lcbc2=lcb3 ! color for beam contour at 2*w lcbc3=ps_color((/1.,.9,.9/)) ! color for beam contour at 3*w ltb=-1 ! fill the beam area pst=(/100.,10.,1.,.1,.01,.001/) ! Power thresholds for color steps ! Bind some keywords (text strings) to color-index variables: call oc_bind('icc',icc) call oc_bind('icpd',icpd) call oc_bind('icqpd',icqpd) call oc_bind('icpsd',icpsd) call oc_bind('iccam',iccam) ! Draw buildings call oc_frame(cfxs,cfys,cfxe,cfye,cfxof,cfyof,psc,cf,d_tl=30.,d_tm=8.,gld=1.,glc=lcg,glp=ltg) ! C house call oc_frame(wfxs,wfys,wfxe,wfye,wfxof,wfyof,psc,wf,gld=1.,glc=lcg,glp=ltg) ! W house ! call oc_frame(nfxs,nfys,nfxe,nfye,cfxof-(cfxs+nfxrange/2.)*psc2,cfyrange*psc2+iof+pof,psc,nf,gld=1.,glc=lcg,glp=ltg) ! N house call oc_frame(nfxs,nfys,nfxe,nfye,nfxof,nfyof,psc,nf,gld=1.,glc=lcg,glp=ltg) ! N house call oc_frame(mcfxs,mcfys,mcfxe,mcfye,mcfxof,mcfyof,psc,mcf,gld=1.,glc=lcg,glp=ltg) ! MC house ! Draw tank platforms do it=1,nt ! do tanks if (it == 2) then i=mcf else if (it == 6) then i=nf else if (it == 8) then i=wf else i=cf end if call ps_quad(i,tank(1,it)-2,tank(2,it)-2,4.,4.,fill=0,ci=1) ! platform end do ! Draw tubes, valves and cryotrap call ps_quad(cf,tank(1,1),tank(2,1)-0.15,cfxs,.3,fill=0,ci=1) ! MC tube call ps_quad(mcf,tank(1,2),tank(2,2)-0.15,10.,.3,fill=0,ci=1) ! MC tube call ps_quad(cf,tank(1,1)-1.8,tank(2,1)-0.25,0.1,.5,ci=6,fill=0) ! MC valve call ps_text(cf,'IMC valve',-3.2,-10.8,fs=5.,ci=6) call ps_quad(cf,tank(1,1)-.13,tank(2,1),.26,tank(2,3)-tank(2,1),fill=0,ci=1) ! IB-PR tube call ps_quad(cf,tank(1,3)-.2,tank(2,3),.4,tank(2,4)-tank(2,3),fill=0,ci=1) ! PR-BS tube call ps_quad(cf,tank(1,4)-0.25,tank(2,4)-1.8,0.5,.1,ci=6,fill=0) ! PR valve call ps_text(cf,'PR valve',0.3,-1.8,fs=5.,ci=6) call ps_quad(cf,tank(1,4)-.2,tank(2,4),.4,tank(2,5)-tank(2,4),fill=0,ci=1) ! BS-NI tube call ps_quad(cf,tank(1,5)-0.25,tank(2,5)-1.8,0.5,.1,ci=6,fill=0) ! NI-BS valve call ps_text(cf,'NI-BS valve',0.3,4.5,fs=5.,ci=6) call ps_quad(cf,tank(1,5)-.4,tank(2,5),.8,cfye-tank(2,5),fill=0,ci=1) ! NI-N tube call ps_quad(cf,-0.5,11.,1.,0.1,ci=6,fill=0) ! NI large valve call ps_text(cf,'NI large valve',0.7,11.,fs=5.,ci=6) call ps_quad(cf,tank(1,4),tank(2,4)-.2,tank(1,7)-tank(1,4),.4,fill=0,ci=1) ! BS-WI tube call ps_quad(cf,tank(1,7)+1.8,tank(2,7)-0.25,0.1,.5,ci=6,fill=0) ! WI-BS valve call ps_text(cf,'WI-BS valve',-4.,-0.5,fs=5.,ci=6) call ps_quad(cf,tank(1,7),tank(2,7)-.4,cfxs-tank(1,7),.8,fill=0,ci=1) ! WI-W tube call ps_quad(cf,tank(1,7)-5.4,tank(2,7)-0.5,0.1,1.,ci=6,fill=0) ! WI large valve call ps_text(cf,'WI large valve',-11.5,-0.8,fs=5.,ci=6) call ps_quad(cf,tank(1,4),tank(2,4)-.2,tank(1,9)-tank(1,4),.4,fill=0,ci=1) ! BS-SR tube call ps_quad(cf,tank(1,9),tank(2,10)-.2,tank(1,10)-tank(1,9),.4,fill=0,ci=1) ! SR-DB tube call ps_quad(cf,tank(1,4)+1.8,tank(2,4)-0.25,0.1,.5,ci=6,fill=0) ! SR valve call ps_text(cf,'SR valve',1.6,-0.5,fs=5.,ci=6) call ps_quad(cf,7.8,-0.25,0.1,.5,ci=6,fill=0) ! Cryo valve1 call ps_text(cf,'valve',7.6,-0.5,fs=5.,ci=6) call ps_quad(cf,8.,-0.2,0.95,0.4,ci=6,fill=0) ! Cryotrap call ps_text(cf,'Cryotrap',8.,0.3,fs=5.,ci=6) call ps_quad(cf,9.1,-0.25,0.1,.5,ci=6,fill=0) ! Cryo valve2 call ps_text(cf,'valve',8.8,-0.5,fs=5.,ci=6) call ps_quad(wf,tank(1,8),tank(2,8)-.4,wfxe-tank(1,8),.8,fill=0,ci=1) ! WT-W tube call ps_quad(wf,tank(1,8)+6.0,tank(2,8)-0.5,0.1,1.,ci=6,fill=0) ! WE large valve call ps_text(wf,'WE large valve',-3000.6,-0.8,fs=5.,ci=6) call ps_quad(nf,tank(1,6)-.4,tank(2,6),.8,nfys-tank(2,6),fill=0,ci=1) ! NT-N tube call ps_quad(nf,tank(1,6)-0.5,tank(2,6)-6.0,1.,0.1,ci=6,fill=0) ! NE large valve call ps_text(nf,'NE large valve',0.7,3000.4,fs=5.,ci=6) call ps_set(ci=1, lp=0, lw=.7) ! Draw tanks do it=1,nt if (it == 2) then i=mcf else if (it == 6) then i=nf else if (it == 8) then i=wf else i=cf end if call ps_quad(i,tank(1,it)-.5,tank(2,it)+.5,1.,1.,fill=0,ci=1) ! N flange call ps_quad(i,tank(1,it)-.5,tank(2,it)-.5,1.,-1.,fill=0,ci=1) ! S flange call ps_quad(i,tank(1,it)-.5,tank(2,it)-.5,-1.,1.,fill=0,ci=1) ! W flange call ps_quad(i,tank(1,it)+.5,tank(2,it)-.5,1.,1.,fill=0,ci=1) ! E flange call ps_arc(i,tank(1,it),tank(2,it),trad-0.04,0.,twopi,fill=0,ci=0) !clean tank interior arcrange=pi/12. call ps_arc(i,tank(1,it),tank(2,it),trad,-arcrange,arcrange,rot=pi/4.,ci=1,lw=.6) call ps_arc(i,tank(1,it),tank(2,it),trad,-arcrange,arcrange,rot=3.*pi/4.,ci=1,lw=.6) call ps_arc(i,tank(1,it),tank(2,it),trad,-arcrange,arcrange,rot=5.*pi/4.,ci=1,lw=.6) call ps_arc(i,tank(1,it),tank(2,it),trad,-arcrange,arcrange,rot=7.*pi/4.,ci=1,lw=.6) call ps_plot(i,5,xy=cross,xu=tank(1,it),yu=tank(2,it),lw=.1) ! centre end do ! Draw benches call ps_quad(cf,tank(1,15),tank(2,15),2.,1.,ci=lcben,fill=lcbni) ! laser bench call ps_quad(cf,tank(1,11),tank(2,11),2.4,1.5,ci=lcben,fill=lcbni) ! external injection bench call ps_quad(cf,tank(1,16),tank(2,16),0.85,0.1,ci=lcben,fill=lcbni) ! external injection bench2 call ps_plot(cf,9,x=xb+xbi,y=yb+ybi,ci=lcben,fill=lcbni) ! injection bench call ps_quad(mcf,tank(1,19),tank(2,19),0.3,0.6,ci=lcben,fill=lcbni) ! external mode cleaner bench call ps_quad(cf,tank(1,12),tank(2,12),0.9,2.0,ci=lcben,fill=lcbni) ! external detection bench call ps_quad(wf,tank(1,13),tank(2,13),2.4,1.5,ci=lcben,fill=lcbni) ! west bench call ps_quad(nf,tank(1,14),tank(2,14),1.5,2.4,ci=lcben,fill=lcbni) ! north bench call ps_plot(cf,9,x=xb,y=yb,ci=lcben,fill=lcbni) ! detection bench ! Tank and table annotation: call ps_text(cf,'Laser Bench',tank(1,15), tank(2,15)-.25,fs=5.,ci=lcben) call ps_text(cf,'External Injection Bench',tank(1,11),tank(2,11)-.25,fs=5.,ci=lcben) call ps_text(cf,'Suspended Injection Bench',tank(1,1)+0.8,tank(2,1)-1.3,fs=5.,rot=pi/2.,ci=lcben) call ps_text(mcf,'External Mode Cleaner Bench',tank(1,19)-0.3,tank(2,19)-1.0,fs=5.,rot=pi/2.,ci=lcben) call ps_text(cf,'Suspended Detection Bench',tank(1,10)-1.4,tank(2,10)-0.8,fs=5.,ci=lcben) call ps_text(cf,'External Detection Bench',tank(1,12)+1.2,tank(2,12),fs=5.,rot=pi/2.,ci=lcben) call ps_text(nf,'North End Bench',tank(1,14)-.25,tank(2,14),fs=5.,rot=pi/2.,ci=lcben) call ps_text(wf,'West End Bench',tank(1,13),tank(2,13)-.25,fs=5.,ci=lcben) call oc_set( & dpr = .0019, & ! default reflectivity for AR coatings dpt = .9980, & ! default transmission for AR coatings rix=(/1.44963, & ! fused silica at 1064nm 1.94, & ! TGG for Faraday isolators 2.1517, & ! Lithium Niobate for Pockels cells 1.44963, & ! OH reduced fused silica at 1064nm 1.0, & ! vacuum for diaphragms 1.507/), & ! BK7 mcat = 3, & ! assume cavities in resonance ndcav= 6, & ! pctl = 1, & ! print data in cavity test loop pind = 1, & ! print interference data lambda=1.064e-6, & ! light wavelength of Nd:YAG fslb = 4.0, & ! character height for annotation (mm) cslw = .1, & ! linewidth for surface of components hslc = -1, & ! line color of hidden surfaces nslc = 1, & ! line color of neglected surfaces prsd = 1, & ! switch off printing of ray-segment data pcad = 1, & ! switch off printing of cavity data pclc = 0, & ! switch off printing of lens curvatures write='x2_8 y2_8 ang_6 w2t_6 w2s_6 C2t_6 C2s_6 pw_6', & print='rs act rd ang w2t w2s w0t w0s z1t_6 z2t_6 ph pw md lb') call oc_input(ocd,nib) call oc_trace(nib) ! trace all ray segments originating from beam #1 call oc_set(nslc=0) ! don't plot contours of 'n' surfaces ! call oc_set(ciwis=0,ciwit=0) ! switch off waist indicators do it=cf,mcf ! plot everything in normal (no zoom) frames ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! Annotations call oc_frame(afxs,afys,afxe,afye,afxof,afyof,psc,af,fill=0,ax='') ! Annotations call ps_insert(af,'VirgoPlus_logo.eps',102.1,97.,xsf=1.,clip=0) ! Virgo Logo call ps_text(af,'Virgo Plus Layout Version \vt|'//trim(version)// & '|\,, \date',xu=100.2,yu=103.5,fs=4.) call ps_text(af,'J. Marque, R. Schilling',xu=100.2,yu=103.2,fs=4.) call ps_text(af,'Global Layout',xu=100.2,yu=102.9,fs=4.) ! Plot demo waist indicators: ! act xap yap rap phi cur dwi(1)='#o 12., -15. ' ! origin dwi(2)='b 105.920, 103.340,.033648, 180.,4.551' ! tang. plane dwi(3)='c d, 105.520, 103.340, .00001' ! beam stop dwi(4)='b 105.520, 103.040,.033648, 0.,4.551' ! sagi. plane dwi(5)='c d, 105.920, 103.040, .00001' ! beam stop call oc_set(lambda=5.e-3,ciwit=3,ciwis=0,prsd=0) call oc_input(dwi,nib) call oc_trace(nib-1) call oc_beam(1.0,fill=lcb2) call oc_beam(0.0,1,0,.1) call oc_set(ciwis=6,ciwit=0) call oc_trace(nib) call oc_beam(1.0,fill=lcb2) call oc_beam(0.0,1,0,.1) call ps_text(af,'waist in tangential plane, propagation to the left',106.,103.3,fs=4.) call ps_text(af,'waist in sagittal plane, propagation to the right',106.,103.0,fs=4.) !goto 999 ! Skip second and third page !############################################################################## ! Second page: Zoom Frames of Input Benches call oc_init(pid='',psout='') ! re-initialize OPTOCAD, two PS file ! call oc_init(pid='') ! re-initialize OPTOCAD, one PS file 222 call oc_set( & dpr = .0019, & ! default reflectivity for AR coatings dpt = .9980, & ! default transmission for AR coatings rix=(/1.44963, & ! fused silica at 1064nm 1.94, & ! TGG for Faraday isolators 2.1517, & ! Lithium Niobate for Pockels cells 1.44963, & ! OH reduced fused silica at 1064nm 1.0, & ! vacuum for diaphragms 1.507/), & ! BK7 mcat = 3, & ! assume cavities in resonance ndcav= 6, & ! pctl = 1, & ! print data in cavity test loop pind = 1, & ! print interference data lambda=1.064e-6, & ! light wavelength of Nd:YAG fslb = 4.0, & ! character height for annotation (mm) cslw = .1, & ! linewidth for surface of components hslc = -1, & ! line color of hidden surfaces nslc = 1, & ! line color of neglected surfaces ! prsd = 0, & ! switch off printing of ray-segment data write='x2_8 y2_8 ang_6 w2t_6 w2s_6 C2t_6 C2s_6 pw_6', & print='rs act rd ang w2t w2s w0t w0s z1t_6 z2t_6 ph pw md lb') ! Injection Bench Zoom call oc_frame(ibzxs,ibzys,ibzxe,ibzye,ibzxof,ibzyof,pzc3,ibf,gld=.025,glc=lcg,glp=ltg) call ps_quad(ibf,-0.52,-11.44,0.36,.09,fill=0) call ps_text(ibf,'Suspended Injection',-0.51,-11.4,fs=7.,ci=1) call ps_text(ibf,'Bench (top)',-0.43,-11.44,fs=7.,ci=1) ! Laser Bench Zoom call oc_frame(lbzxs,lbzys,lbzxe,lbzye,lbzxof,lbzyof,pzc3,lbf,gld=.05,glc=lcg,glp=ltg) call ps_quad(lbf,-4.56,-13.92,0.39,.07,fill=0) call ps_text(lbf,'Laser Bench',-4.54,-13.91,fs=10.,ci=1) ! External Injection Bench Zoom call oc_frame(eibzxs,eibzys,eibzxe,eibzye,eibzxof,eibzyof,pzc3,eibf,gld=.05,glc=lcg,glp=ltg) call ps_quad(eibf,-1.81,-13.51,0.67,.07,fill=0) call ps_text(eibf,'External Injection Bench',-1.79,-13.50,fs=10.,ci=1) ! External Injection Bench2 Zoom call oc_frame(eib2zxs,eib2zys,eib2zxe,eib2zye,eib2zxof,eib2zyof,pzc3,eib2f,gld=.025,glc=lcg,glp=ltg) ! Reference Cavity Zoom call oc_frame(rczxs,rczys,rczxe,rczye,rczxof,rczyof,pzc3,rcf,gld=.05,glc=lcg,glp=ltg,ax='') call ps_axis(rcf,ax='Xx',beg=rczxs+100,end=rczxe+100,d_tm=5.) call ps_axis(rcf,ax='Yy',beg=rczys+100,end=rczye+100,d_tm=5.) call ps_quad(rcf,-100.52,-110.64,0.95,.06,fill=0) call ps_text(rcf,'Suspended Injection Bench (below)',-100.51,-110.63,fs=10.,ci=1) ! External Reference Cavity Bench Zoom call oc_frame(erczxs,erczys,erczxe,erczye,erczxof,erczyof,pzc3,ercf,gld=.05,glc=lcg,glp=ltg,ax='') call ps_axis(ercf,ax='Xx',beg=erczxs+100,end=erczxe+100,d_tm=5.) call ps_axis(ercf,ax='Yy',beg=erczys+100,end=erczye+100,d_tm=5.) call ps_quad(ercf,-101.,-113.22,0.54,.12,fill=0) call ps_text(ercf,'External Reference',-100.99,-113.15,fs=10.,ci=1) call ps_text(ercf,'Cavity Bench',-100.99,-113.21,fs=10.,ci=1) ! Mode Cleaner end mirror Zoom ! call ps_quad(mcemf,-143.1,-11.,0.4,.2,fill=0) call oc_frame(mczxs,mczys,mczxe,mczye,mczxof,mczyof,pzc3,mcemf,gld=.025,glc=lcg,glp=ltg) call ps_quad(mcemf,tank(1,2)-0.19,-11.25,0.38,.04,fill=0) call ps_text(mcemf,'Mode Cleaner end mirror',tank(1,2)-0.18,-11.24,fs=6.,ci=1) ! External Mode Cleaner Bench Zoom call oc_frame(emcbzxs,emcbzys,emcbzxe,emcbzye,emcbzxof,emcbzyof,pzc3,emcbf,gld=.025,glc=lcg,glp=ltg) call ps_quad(emcbf,tank(1,19)-0.01,-11.42,0.3,.03,fill=0) call ps_text(emcbf,'External Mode Cleaner Bench',tank(1,19),-11.415,fs=4.,ci=1) ! Draw benches call ps_plot(rcf,9,x=xb+xbi+rfci,y=yb+ybi+rfci,ci=lcben) ! reference cavity zoom call ps_quad(ercf,tank(1,18),tank(2,18),1.2,0.45,ci=lcben) ! external reference cavity bench zoom call ps_quad(lbf,tank(1,15),tank(2,15),2.,1.,ci=lcben) ! laser bench zoom call ps_quad(eibf,tank(1,11),tank(2,11),2.4,1.5,ci=lcben) ! external injection bench zoom call ps_quad(eib2f,tank(1,16),tank(2,16),0.85,0.1,ci=lcben) ! external injection bench2 zoom call ps_plot(ibf,9,x=xb+xbi,y=yb+ybi,ci=lcben) ! injection bench zoom call ps_quad(emcbf,tank(1,19),tank(2,19),0.3,0.6,ci=lcben) ! external mode cleaner bench zoom call oc_input(ocd,nib) call oc_trace(nib,save='# to RCB') ! trace all segments originating from... ! ...beam #1and save ray-segment data at '# to RCB' call oc_set(nslc=0) ! don't plot contours of 'n' surfaces ! call oc_set(ciwis=0,ciwit=0) ! switch off waist indicators ! plot suspended benches zoom frames call oc_set( fslb = 20.0) do it=ibf,ibf ! plot everything in zoom frames ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! plot MC end mirror zoom frame do it=mcemf,mcemf ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it,fc=0) ! plot all surfaces end do ! plot external mode cleaner zoom frame do it=emcbf,emcbf ! plot everything in zoom frames call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! plot external benches zoom frames do it=lbf,eib2f ! plot everything in zoom frames call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do call oc_input((/'o -100., -100.'/),nib,'# to RCB') ! RCB input beam call oc_trace(nib,save='# to EIB') ! trace beam through RC benches and... ! ...save ray-segment data at '# to EIB' do it=rcf,ercf ! plot reference cavity zoom frames ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do call oc_input((/'o +100., +100.'/),nib,'# to EIB') ! EIB input beam call oc_trace(nib) ! trace beam coming from ERC bench do it=eibf,eibf ! plot external input bench zoom frame ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! Draw laser boxes call ps_quad(lbf,-4.55,-14.15,0.22,0.15,ci=8,fill=4) ! master laser call ps_quad(lbf,-3.175,-14.38,0.51,0.26,ci=8,fill=4) ! slave laser call ps_quad(lbf,-4.5,-14.72,0.24,0.36,ci=8,fill=4) ! Amplifier call ps_quad(lbf,-3.8,-14.85,0.50,0.20,ci=8,fill=4) ! PMC call ps_text(lbf,'Master Laser',-4.53,-14.1,fs=4.,ci=8) call ps_text(lbf,'Slave Laser',-2.9,-14.2,fs=4.,ci=8) call ps_text(lbf,'Amplifier',-4.4,-14.5,fs=4.,ci=8) call ps_text(lbf,'PMC',-3.7,-14.8,fs=4.,ci=8) ! Annotations call oc_frame(afxs,afys,afxe,afye,afxof,afyof,psc,af,fill=0,ax='') ! Annotations call ps_insert(af,'VirgoPlus_logo.eps',102.1,97.,xsf=1.,clip=0) ! Virgo Logo call ps_text(af,'Virgo Plus Layout Version \vt|'//trim(version)// & '|\,, \date',xu=100.2,yu=103.5,fs=4.) call ps_text(af,'J. Marque, R. Schilling',xu=100.2,yu=103.2,fs=4.) call ps_text(af,'Input Benches',xu=100.2,yu=102.9,fs=4.) ! Plot demo waist indicators: call oc_set(lambda=5.e-3,ciwit=3,ciwis=0,prsd=0) call oc_input(dwi,nib) call oc_trace(nib-1) call oc_beam(1.0,fill=lcb2) call oc_beam(0.0,1,0,.1) call oc_set(ciwis=6,ciwit=0) call oc_trace(nib) call oc_beam(1.0,fill=lcb2) call oc_beam(0.0,1,0,.1) call ps_text(af,'waist in tangential plane, propagation to the left',106.,103.3,fs=4.) call ps_text(af,'waist in sagittal plane, propagation to the right',106.,103.0,fs=4.) !goto 999 ! Skip third page !############################################################################## ! Third page: Zoom Frames of BS and Output Benches call oc_init(pid='',psout='') ! re-initialize OPTOCAD, two PS file ! call oc_init(pid='') ! re-initialize OPTOCAD, one PS file 333 call oc_set( & dpr = .0019, & ! default reflectivity for AR coatings dpt = .9980, & ! default transmission for AR coatings rix=(/1.44963, & ! fused silica at 1064nm 1.94, & ! TGG for Faraday isolators 2.1517, & ! Lithium Niobate for Pockels cells 1.44963, & ! OH reduced fused silica at 1064nm 1.0, & ! vacuum for diaphragms 1.507/), & ! BK7 mcat = 3, & ! assume cavities in resonance ndcav= 6, & ! pctl = 1, & ! print data in cavity test loop pind = 1, & ! print interference data lambda=1.064e-6, & ! light wavelength of Nd:YAG fslb = 4.0, & ! character height for annotation (mm) cslw = .1, & ! linewidth for surface of components hslc = -1, & ! line color of hidden surfaces nslc = 1, & ! line color of neglected surfaces ! prsd = 0, & ! switch off printing of ray-segment data write='x2_8 y2_8 ang_6 w2t_6 w2s_6 C2t_6 C2s_6 pw_6', & print='rs act rd ang w2t w2s w0t w0s z1t_6 z2t_6 ph pw md lb') ! Detection Bench Zoom call oc_frame(dbzxs,dbzys,dbzxe,dbzye,dbzxof,dbzyof,pzc,dbf,gld=.025,glc=lcg,glp=ltg) call ps_quad(dbf,10.54,.51,0.51,.08,fill=0) call ps_text(dbf,'Suspended Detection Bench',10.55,.54,fs=8.,ci=1) ! Output Mode Cleaner Zoom call oc_frame(omczxs,omczys,omczxe,omczye,omczxof,omczyof,pzc*9,omcf,d_tm=8.,gld=.005,glc=lcg,glp=ltg) call ps_quad(omcf,10.827,0.318,0.021,.005,fill=0) call ps_text(omcf,'OMC cavity',10.828,0.319,fs=8.,ci=1) ! Beamsplitter Zoom call oc_frame(bszxs,bszys,bszxe,bszye,bszxof,bszyof,pzc,bsf,d_tm=8.,gld=.025,glc=lcg,glp=ltg) call ps_quad(bsf,0.05,0.2,0.16,.035,fill=0) call ps_text(bsf,'BS Mirror',0.055,0.205,fs=8.,ci=1) ! Beamsplitter Zoom new geometry ! call oc_frame(bszxs*2,bszys*2,bszxe*2,bszye*2,bszxof,bszyof,pzc*0.6,bsf,d_tm=4.,gld=.05,glc=lcg,glp=ltg) ! call ps_quad(bsf,0.19,0.35,0.135,.03,fill=0) ! call ps_text(bsf,'BS Mirror',0.195,0.355,fs=4.,ci=1) ! External Detection Bench Zoom call oc_frame(ebzxs,ebzys,ebzxe,ebzye,ebzxof,ebzyof,pzc,ebf,gld=.05,glc=lcg,glp=ltg) call ps_quad(ebf,13.21,1.01,0.7,.07,fill=0) call ps_text(ebf,'External Detection Bench',13.23,1.02,fs=8.,ci=1) ! North Bench Zoom call oc_frame(nbzxs,nbzys,nbzxe,nbzye,nbzxof,nbzyof,pez,nbf,gld=.05,glc=lcg,glp=ltg) ! call ps_grid(nbf,'-2.:+.05','3000.:+.05',ci=lcg,lp=ltg) call ps_quad(nbf,-1.1,3011.43,0.62,.08,fill=0) call ps_text(nbf,'North End Bench',-1.08,3011.45,fs=8.,ci=1) ! West Bench Zoom call oc_frame(wbzxs,wbzys,wbzxe,wbzye,wbzxof,wbzyof,pez,wbf,gld=.05,glc=lcg,glp=ltg) call ps_quad(wbf,-3010.6,0.4,0.6,.08,fill=0) call ps_text(wbf,'West End Bench',-3010.59,0.41,fs=8.,ci=1) ! Draw benches call ps_quad(ebf,tank(1,12),tank(2,12),0.9,2.0,ci=lcben) ! external bench zoom call ps_quad(wbf,tank(1,13),tank(2,13),2.4,1.5,ci=lcben) ! west bench zoom call ps_quad(nbf,tank(1,14),tank(2,14),1.5,2.4,ci=lcben) ! north bench zoom call ps_plot(dbf,9,x=xb,y=yb,ci=lcben) ! detection bench zoom call oc_input(ocd,nib) call oc_trace(nib) ! trace all ray segments originating from beam #1 call oc_set(nslc=0) ! don't plot contours of 'n' surfaces ! call oc_set(ciwis=0,ciwit=0) ! switch off waist indicators ! plot omc zoom frames call oc_set( fslb = 20.0) do it=omcf,omcf ! plot everything in zoom frames ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! plot suspended benches zoom frames call oc_set( fslb = 20.0) do it=dbf,dbf ! plot everything in zoom frames ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! plot BS zoom frame: ibs=233 ! go to 340 ! do the case of two reflections at the AR coating ! the case of only one reflection at the AR coating: ! call oc_beam(0.0,lcb0,ltb0,.01,frm=bsf,rns=2.) ! call oc_beam(0.0,2,0,.8,frm=bsf,frs=ibs,lrs=ibs+19) ! call oc_beam(0.0,3,0,.2,frm=bsf,frs=ibs+34,lrs=ibs+50) ! call oc_beam(0.0,2,0,.4,frm=bsf,frs=ibs+76,lrs=ibs+77) ! call oc_beam(0.0,3,0,.2,frm=bsf,frs=ibs+123,lrs=ibs+124) ! call oc_beam(0.0,4,0,.2,frm=bsf,frs=ibs+145,lrs=ibs+214) go to 350 340 continue ! the case of two reflections at the AR coating: call oc_beam(0.0,lcb0,ltb0,.01,frm=bsf,rns=2.) call oc_beam(0.0,2,0,.8,frm=bsf,frs=ibs,lrs=ibs+18) call oc_beam(0.0,3,0,.2,frm=bsf,frs=ibs+34,lrs=ibs+124) call oc_beam(0.0,2,0,.4,frm=bsf,frs=ibs+76,lrs=ibs+77) call oc_beam(0.0,3,0,.2,frm=bsf,frs=ibs+198,lrs=ibs+200) call oc_beam(0.0,4,0,.2,frm=bsf,frs=ibs+145,lrs=ibs+146) call oc_beam(0.0,3,0,.2,frm=bsf,frs=ibs+282,lrs=ibs+283) call oc_beam(0.0,4,0,.2,frm=bsf,frs=ibs+225,lrs=ibs+226) call oc_beam(0.0,4,0,.2,frm=bsf,frs=ibs+298,lrs=ibs+321) 350 continue ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=bsf) ! call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=bsf) ! call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=bsf) call oc_beam(0.0,lcb0,ltb0,.1,frm=bsf) call oc_surf(lccs,0,.1,frm=bsf,fc=0) ! plot all surfaces ! plot external benches zoom frames do it=ebf,wbf ! plot everything in zoom frames ! do it=ebf,eib2f ! plot everything in zoom frames ! call oc_beam(3.0,fill=lcb3,lc=lcbc3,pst=pst,lw=.1,frm=it) call oc_beam(2.0,fill=lcb2,lc=lcbc2,pst=pst,lw=.1,frm=it) call oc_beam(1.0,fill=lcb1,lc=lcbc1,pst=pst,lw=.1,frm=it) call oc_beam(0.0,lcb0,ltb0,.1,frm=it) call oc_surf(lccs,0,.1,frm=it) ! plot all surfaces end do ! Annotations call oc_frame(afxs,afys,afxe,afye,afxof,afyof,psc,af,fill=0,ax='') ! Annotations call ps_insert(af,'VirgoPlus_logo.eps',102.1,97.,xsf=1.,clip=0) ! Virgo Logo call ps_text(af,'Virgo Plus Layout Version \vt|'//trim(version)// & '|\,, \date',xu=100.2,yu=103.5,fs=4.) call ps_text(af,'J. Marque, R. Schilling',xu=100.2,yu=103.2,fs=4.) call ps_text(af,'Output Benches',xu=100.2,yu=102.9,fs=4.) ! Plot demo waist indicators: call oc_set(lambda=5.e-3,ciwit=3,ciwis=0,prsd=0) call oc_input(dwi,nib) call oc_trace(nib-1) call oc_beam(1.0,fill=lcb2) call oc_beam(0.0,1,0,.1) call oc_set(ciwis=6,ciwit=0) call oc_trace(nib) call oc_beam(1.0,fill=lcb2) call oc_beam(0.0,1,0,.1) call ps_text(af,'waist in tangential plane, propagation to the left',106.,103.3,fs=4.) call ps_text(af,'waist in sagittal plane, propagation to the right',106.,103.0,fs=4.) !############################################################################## 999 continue call oc_exit end