!! spire_tel3.inr !! Sent to RAL in december 2002 for checks on the SPIRE geometry. ! --- Modif. by RAL (Marc Ferlet, 16/12/02) on the SPIRE.HOUSING.WALLM8 definition !! In order to accelerate file transfer to RAL, only the data necessary !! for raytrace have been copied and explained with comments. !! The file received from ESTEC contains (in addition) macros and models !! for scattering which are not included here, but could be included, if desired. !! The scatter is switched on only for the straylight calculations, !! not for the geometry checks. !! !! A hexapod and telescope mirrors are added for raytracing purposes. !! The present status (december 2002) for the telescope now is included. !! !! The SPIRE apodization is not done by geometrical simulation, instead !! it is done with the ASAP command APODIZE after the straylight calculations, !! thus it is not included here. The function used is shown in the !! straylight report HP-2-ASED-TN-0023 issue 2 (page 15). !! !! An optional centering of the M4-assembly of SPIRE can be commanded, this !! centering is done with respect to a ring grid near the inner hole of M1. !! I.e. the hole of M4 is centered w.r.t. the hole of M1 (roughly). !! !! You can find the program sections by applying the editor 'find' function !! e.g. with !! 4. for finding the branch SPIRE !! !! PROGRAM SECTIONS !! !! 1. Program control by setting variables, several macros !! !! 2. Coating properties !! !! 3. Branch telescope (hexapod section is quite long) !! !! 4. Branch SPIRE !! !! 5. Some raytraces with 2D-plots in the following sequence: !! (type $IO for continuation) !! !! SPIRE FOCAL RAYS, BACKWARD TRACE !! !! SPIRE CENTRAL RAY UP TO SPIRE FOCUS !! !! SPIRE FOCAL BEAM UP TO DETECTOR !! !! SPIRE FIELD, GRID BEFORE M1 !! !! SPOTS ON OPTICAL SURFACES, FORWARD_TRACE !! (PLOTS ON ALL OPTICAL SURFACES) !! !! SPIRE FIELD, CHIEF RAYS ON M2, UP TO DETECTOR !! !! SPIRE FIELD, RING GRID AT M2, UP TO DETECTOR !! !! SPIRE FOCAL BEAM WITH RING GRID NEAR PUPIL !! !! RAYS FROM PUPIL RIM IMAGED ONTO COLD STOP !! !! RING GRID NEAR INNER HOLE OF PRIMARY !! !! BACKWARD TRACE FROM SPIRE DETECTOR !! !! SPOTS ON OPTICAL SURFACES, BACKWARD_TRACE !! (PLOTS ON ALL OPTICAL SURFACES) !! !! Most of these 2D-plots can be inspected by the ASAP 3D-viewer. !! !! Set number of plots to >=15 (File, preferences, plot viewer) !! !! ****************************************************************************** !! 1. Program control by setting variables, several macros SPRR=1 $SCR 2 SPIRE reflectivity for FP_UNIT: set 0 for zero, 1 for actual value (=0.3, phone information on 24.05.02) !!$ASK SPRR '0, 1 ??' SPM4C=1; $SCR 3 An optional centering of the M4-assembly of SPIRE can be commanded, this centering is done with respect to a ring grid near the inner hole of M1. I.e. the hole of M4 is centered w.r.t. the hole of M1 (roughly). $ASK SPM4C 'centering of M4 (1=yes, 0=no), see output' BAR=1; $SCR 2 1: rectangular cross section of telescope hexapod legs 0: elliptical cross section of telescope hexapod legs $ASK BAR 'bartype (1=rectangular, 0=elliptical)' HEXP=1 !! variable setting for actual status of telescope bars !! $ASK HEXP '0=flat hexapod bar, 1=tilted' !!antinarcissustype: ANTYPE=0 for continuous one with small diameter ANTYPE=1 !! set fixed complying with decision of scientists GAPAN=0.0 !! Gap between Anti Narcisssus and M2 is zero now !!$ASK GAPAN 'Gap between Anti Narcisssus and M2 (0 or 0.2)' $IO OUTPUT CANCEL !! $IO OUTPUT 6 XSYS=202 !! X-coordinate of system focus !! now variables used in telescope branch NSEGM=181 !! number of segment per curvedge !! Tolerances RM1TOL=0!!-2 RM2TOL=0!!.1 FTOL=0!!150 CCM1TOL=0!!.001 CCM2TOL=0!!.001 DZFOC=0 !!3 !!max EFL=28500+(FTOL) FIEL=0.25 !! in degree, field of view (circular) !! Primary Mirror CHMFR=.2 WFLAT1=3 RPUP=1750-(WFLAT1-CHMFR) !!taking into account flat surf. and chamfer at the edge RM1=3500.+(RM1TOL) CCM1=-1.+(CCM1TOL) $FCN SAGM1 (_^2/RM1/2) SAG1=SAGM1(RPUP) DIAM1H=560 R1H=DIAM1H/2 SAG1H=SAGM1(R1H) !! Secondary Mirror RPUP2=308.12/2.-(CHMFR) RM2=345.2+(RM2TOL) CCM2=-1.279+(CCM2TOL) $FCN SAGM2 (_^2/RM2/(1+SQRT(1-(1+CCM2)*((_/RM2)^2)))) SAG2=SAGM2(RPUP2) IMD=(RM1/2*(1-RM2*(EFL-RM1/2)/EFL/RM1)) !! inter mirror distance re-computed by ASAP M1M2=1587.998 !! inter mirror distance from design TB=1050 !! back focal length from design M1M2=(RM1/2*(1-RM2*(EFL-RM1/2)/EFL/RM1)) !! inter mirror distance after alignment BFL=(RM2/RM1*(EFL-RM1/2)-IMD) !! back focal length re-computed by ASAP TB=(RM2/RM1*(EFL-RM1/2)-M1M2) !! back focal length after alignment TB=(TB+DZFOC) !! the telescope is re-focused during alignment !! M1M2 is used in the following sections, not IMD !! TB is used in the following sections, not BFL DM2SYS=M1M2+TB !! distance M2--system focus !! Variables for small Anti-Narcissus after end of may 2002, now baseline selection ANTYPE=0 !! sets small antinarcissus type in telescope branch HFNAR=33/2 !! Anti Narcissus Filter parameters RNAR=450 !! Anti Narcissus Filter parameters RNAR2=(RNAR)^2 !! Anti Narcissus Filter parameters TETAR=ATAN(HFNAR/(RM2-(1+CCM2)*SAGM2(HFNAR))) XNAR=-(RNAR*COS(TETAR)-SAGM2(HFNAR)) !! Anti Narcissus Filter parameters ZNAR=(RNAR)*SIN(TETAR)+(HFNAR) !! Anti Narcissus Filter parameters RBOT=380/2 !! radius of flat annular disk for ray intercept purposes !!----------------------------------------------------------------------------- !! definition of important macros ANGBIS { !! YIELDS DIRECTION COSINES OF ANGLE BISECTOR XB/YB/ZB ---> XW/YW/ZW !! !! STARTING WITH: XC/YC/ZC !! COORDINATES OF POINTS * C2 DISTANCE C !! XA/YA/ZA * !! XB/YB/ZB * XW/YW/ZW !! XC/YC/ZC * + C1 !! * + !! * + XA/YA/ZA !! * + * !! DISTANCE B * + * !! * + * !! * + * DISTANCE A !! * + * !! * + * !! * + * !! XB/YB/ZB !! !! !! DIE LINES A B C FORM A TRIANGLE !! THE DISTANCE C IS DIVIDED BY THE ANGLE BISECTOR: C1+C2=C !! WE HAVE !! C1/C2=A/B !! AND !! C1/C=1/(B/A+1) !! AND !! XW=XA+C1/C*(XC-XA)=XA+(XC-XA)/(B/A+1) etc. !! A=SQRT((XB-XA)^2+(YB-YA)^2+(ZB-ZA)^2) B=SQRT((XC-XB)^2+(YC-YB)^2+(ZC-ZB)^2) C=SQRT((XC-XA)^2+(YC-YA)^2+(ZC-ZA)^2) XW=XA+(XC-XA)/(B/A+1) YW=YA+(YC-YA)/(B/A+1) ZW=ZA+(ZC-ZA)/(B/A+1) D=SQRT((XW-XB)^2+(YW-YB)^2+(ZW-ZB)^2) !! DIRECTION COSINES: A=(XW-XB)/D; B=(YW-YB)/D; C=(ZW-ZB)/D S=A*A+B*B+C*C $SCR 7 coordinates of points XA=\XA. \ YA=\YA. \ ZA=\ZA. \ XB=\XB. \ YB=\YB. \ ZB=\ZB. \ XC=\XC. \ YC=\YC. \ ZC=\ZC. \ XW=\XW. \ YW=\YW. \ ZW=\ZW. \ Direction cosines of angle bisector (point B ---> point W): A=\A. \ B=\B. \ C=\C. \ sum of squares=\S. \ } SPTSSP { !! display of spots on telescope and SPIRE surfaces $IF #1 EQ (OM1) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M1, #3' $IF #1 EQ (OM2) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M2, #3' $IF #1 EQ (OSPFPIN) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON FPIN, #3' $IF #1 EQ (OSPFIL1) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON PFIL1, #3' $IF #1 EQ (OSPM3) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M3, #3' $IF #1 EQ (OSPFPOUT) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON FPOUT, #3' $IF #1 EQ (OSPM4) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M4, #3' $IF #1 EQ (OSPM4+1) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M5, #3' $IF #1 EQ (OSPM4+2) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M6, #3' $IF #1 EQ (OSPM4+3) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M7, #3' $IF #1 EQ (OSPM4+4) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON PFIL2, #3' $IF #1 EQ (OSPM4+5) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M8, #3' $IF #1 EQ (OSPUP) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON COLD STOP, #3' $IF #1 EQ (OSPUP+1) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON M9, #3' $IF #1 EQ (OSDET) TITLE 'SPIRE FIELD 8 X 4 ARCMIN ON DETECTOR, #3' N=#4; $SCR 1 #3 UP TO OBJECT #1, TRACE STEP \N \ TRACE STATS STEP #4 WINDOW Y Z; WINDOW 1.1 CONSIDER ONLY #1 $IF #2 EQ 0; CONSIDER ADD 0 $IF #1 EQ (OSPUP); CONSIDER ADD (OSSTOP) $IF #1 EQ (OM2); CONSIDER ADD (ONARTOR) (OHEXA):(OHEXE) GROUP #1 $IF #1 EQ (OSPUP); GROUP #1 (OSSTOP) $IF #1 NE (OM1) AND #1 NE (OM2) ALIGN (AS#1) (BS#1) (CS#1) 1 0 0 (XS#1) (YS#1) (ZS#1) $IF #1 EQ (OSPFPIN) OR #1 EQ (OSPFIL1) OR #1 EQ (OSPFPOUT) THEN PLOT FACETS 16 16 OVERLAY $ELSEIF #1 EQ (OSPM3) THEN WINDOW Y (-19.5-139/2) (-19.5+139/2) Z (ZS#1-62/2) (ZS#1+62/2); WINDOW 1.1 PLOT FACETS 9 9 OVERLAY $ELSE PLOT FACETS 3 3 OVERLAY $ENDIF $IF #1 NE (OM1) AND #1 NE (OM2) RAYSET; ALIGN (AS#1) (BS#1) (CS#1) 1 0 0 (XS#1) (YS#1) (ZS#1) SPOTS POS ATTR 1 } !! preliminarily closes the mirror centre of M4 for the case of chief raytrace M4CENTRE { SURFACE PLANE X 0 ELLIP 2@2 OBJECT; 0.1 'M4CENTER'; INTERFACE COAT SPREFM ALIGN NOR OBJ 0.1 NOR OBJ (OSPM4) PLACE OBJ (OSPM4) QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPM4C } PLTFCT { !! macro for plot facets, telescope included CONSIDER REMOVE (OSPFPIN) (OSPFIL1) (OSPFPOUT) (OSPINFACE), (OSPSIDE4PX) (OSPBAFFLE) (OSSTOP+2) CONSIDER REMOVE (OHEXFOOT1-1):(OHEXFOOT3), (OBARBOT-1) (OBARBOT) (OM2) (ONARTOR) $IO VECTOR REWIND; WINDOW X Z PLOT FACETS 3 3 OVERLAY CONSIDER ONLY (OHEXFOOT1-1):(OHEXFOOT3) PLOT FACETS 1 1 OVERLAY CONSIDER ONLY (OM2) (ONARTOR) PLOT FACETS 7 7 OVERLAY CONSIDER ONLY (OSPFPIN) (OSPFIL1) (OSPFPOUT) (OSPINFACE) (OSPSIDE4PX), (OSPBAFFLE) (OSSTOP+2) (OBARBOT-1) (OBARBOT) PLOT FACETS 12 12 OVERLAY CONSIDER ALL } PLTFCS { !! macro for plot facets, telescope excluded CONSIDER REMOVE (OSPFPIN) (OSPFIL1) (OSPFPOUT) (OSPINFACE), (OSPSIDE4PX) (OSPBAFFLE) (OSSTOP+2) $IO VECTOR REWIND; WINDOW X Z PLOT FACETS 3 3 OVERLAY CONSIDER ONLY (OSPFPIN) (OSPFIL1) (OSPFPOUT) (OSPINFACE) (OSPSIDE4PX), (OSPBAFFLE) (OSSTOP+2) PLOT FACETS 12 12 OVERLAY CONSIDER ALL } !! other SPIRE macros (V.Kirscner) &&M4TILT EOM !! ENTER VALUES FOR CHOP AND JIGGLE $IF #0 LT 1; $LEAVE GROUP SPIRE.M4? SHIFT -316.125 0 200.094 !! according to e-mail 29.04.02 ROTATE Y ASIN[-0.308074] !! according to e-mail 29.04.02 $IF (SPM4C) EQ 1; SHIFT Z 0.5 !! introduceded by ASED ROTATE Y -JIGG. 0 0 ROTATE Z -CHOP. 0 0 ROTATE Z (CHOP=#1) 0 0 !! +/- 2.336 ROTATE Y (JIGG=#2) 0 0 !! +/- 0.573 $IF (SPM4C) EQ 1; SHIFT Z -0.5 !! introduceded by ASED ROTATE Y ASIN[0.308074] !! according to e-mail 29.04.02 SHIFT 316.139 0 -200.265 RETURN EOM &&LASTEDGE EOM QPRINT EDGE .1 $GRAB 'CURVEDG' #1 EOM ************************************************************************************************ !! 2. Coating properties, functions !! !! functions !! for telescope !! $FCN SAGM1 (_^2/RM1/2) !! sag M1 already set above !! $FCN SAGM2 (_^2/RM2/(1+SQRT(1-(1+CCM2)*((_/RM2)^2)))) !! sag M2 already set above $FCN REVOL (XNAR)+SQRT(RNAR2-(_*_)) !! for object anti-narcissus COATING PROPERTIES 0 0 'ABSORB' 0 1 'TRANSMIT' !! COATINGS PROPERTIES for telescope objects 0.985000 0.000000 'TREFLECT' 0.950000 0.000000 'TVDA' 0.900000 0.000000 'TMLI' 0.200000 0.000000 'TSIC' !! bare SiC emissivity 80% 0.200000 0.000000 'THOTPLM' !! coating of -Z part of PLM 0.950000 0.000000 'TGOLD1' !! internal shield coating 0.850000 0.000000 'TGOLD2' !! 0.000000 0.000000 'TBLACK' !! coating of absorbing dummy surfaces !! COATINGS PROPERTIES for SPIRE objects !!MIRROR_REFL=0.995; STRUCT_REFL=0.7 in old spire file SPREFLM=0.995 SPREFO=1-0.26 !! 0.26 = emissivity of outer surface SPREFLS=0.3 !! (inner reflectivity of FP_UNIT, phone information 24.05.02) (SPREFLM) 0 'SPREFM' !! reflectivity of all SPIRE mirrors (SPREFLS) 0 'SPREFS' !! reflectivity of SPIRE structure (SPREFO) 0 'SPREFO' !! reflectivity of outer SPIRE structure ****************************************************************************** !! 3. Branch telescope BRANCH TELESCOPE !! contains BRANCH .HEXLEGS BRANCH ^^.BARREL BRANCH ^^.MIRR !! telescope model of jean-jacques.arnoux (Astrium France) included partially here !! in order to facilitate raytrace. !! There are two subbranches !! -- hexapod (quite long) !! -- mirrors (can be found most easily with tool 'Find' OM1, i.e. object number of M1) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! Herschel Telescope Project !! _ !! Stray light Geometrical Model of Telescope with Hexapod !! !! As for CDR stray light study !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! @jja !! date: 15-MAR-2002 !! name: Jean-Jacques ARNOUX !! contact: Tel (33) 5 62 19 64 30 !! Email jean-jacques.arnoux@astrium-space.com !! !! updated and detailed (issued May-26/2002) taking into account comments from CDR !! !!-------|---------|---------|---------|---------|---------|---------|---------|-- !! Table of OBJECTs !! number name: Temp: emiss: rough: Refl: BRDF: !! (K) (nm) (sr-1) !! 1 HEXLEGS.BAR1.BOT 90 0.02 0.98 !! 2 HEXLEGS.BAR1.TOP 90 0.02 0.98 !! 3 HEXLEGS.BAR1.SURF 90 0.02 0.98 !! 4 HEXLEGS.BAR2.TOP 90 0.02 0.98 !! 5 HEXLEGS.BAR2.BOT 90 0.02 0.98 !! 6 HEXLEGS.BAR2.SURF 90 0.02 0.98 !! 7 HEXLEGS.BAR3.BOT 90 0.02 0.98 !! 8 HEXLEGS.BAR3.TOP 90 0.02 0.98 !! 9 HEXLEGS.BAR3.SURF 90 0.02 0.98 !! 10 HEXLEGS.BAR4.TOP 90 0.02 0.98 !! 11 HEXLEGS.BAR4.BOT 90 0.02 0.98 !! 12 HEXLEGS.BAR4.SURF 90 0.02 0.98 !! 13 HEXLEGS.BAR5.BOT 90 0.02 0.98 !! 14 HEXLEGS.BAR5.TOP 90 0.02 0.98 !! 15 HEXLEGS.BAR5.SURF 90 0.02 0.98 !! 16 HEXLEGS.BAR6.TOP 90 0.02 0.98 !! 17 HEXLEGS.BAR6.BOT 90 0.02 0.98 !! 18 HEXLEGS.BAR6.SURF 90 0.02 0.98 !! 19 HEXLEGS.BARL.EXT 90 0.02 0.98 !! 20 HEXLEGS.BARL.INT.1 90 0.02 0.98 !! 21 HEXLEGS.BARL.INT.2 90 0.02 0.98 !! 22 HEXLEGS.BARL.INT.3 90 0.02 0.98 !! 23 HEXLEGS.BARL.INT.4 90 0.02 0.98 !! 24 HEXLEGS.BARL.INT.5 90 0.02 0.98 !! 25 HEXLEGS.BARL.INT.6 90 0.02 0.98 !! 26 HEXLEGS.BARL.TOP 90 0.02 0.98 !! 27 HEXLEGS.BARL.BOTM 90 0.02 0.98 !! 28 M1.RIM.CHMFR 90 0.05 500 0.95 !! 29 M1.RIM.TUB 90 0.05 500 0.95 !! 30 M1.FLAT 90 0.05 500 0.95 !! 31 M1.MIRR.BACK 90 0.80 0.20 !! 32 M1.MIRR 90 0.015 50 0.985 !! 33 M1.HOLE1.TUB 90 0.85 0.15 !! 34 M1.HOLE2.TUB 90 0.85 0.15 !! 35 M1.HOLE3.TUB 90 0.85 0.15 !! 36 M1.HOLE1.FLA 90 0.85 0.15 !! 37 M1.HOLE2.FLA 90 0.85 0.15 !! 38 M1.HOLE3.FLA 90 0.85 0.15 !! 39 M1.CHOLE.CHMFR 90 0.05 0.95 !! 40 M1.CHOLE.TUB1 90 0.05 0.95 !! 41 M1.CHOLE.TUB2B 90 0.05 0.95 !! 42 M1.CHOLE.TUB2T 90 0.80 0.20 !! 43 M1.CHOLE.FLAT 90 0.80 0.20 !! 44 M1.FITT.TOP1 90 0.05 0.95 !! 45 M1.FITT.COVER1 90 0.05 0.95 !! 46 M1.FITT.TOP2 90 0.05 0.95 !! 47 M1.FITT.COVER2 90 0.05 0.95 !! 48 M1.FITT.TOP3 90 0.05 0.95 !! 49 M1.FITT.COVER3 90 0.05 0.95 !! 53 M2.MIRR 90 0.015 0.985 !! 54 M2.MIRR.BACK 90 0.05 0.95 !! 55 M2.RIM.CHMFR 90 0.05 0.95 !! 56 M2.RIM.TUB 90 0.05 0.95 !! 57 M2.CENTHOLE.CHMFR 90 0.05 0.95 !! 58 M2.CENTHOLE.TUB 90 0.05 0.95 !! 59 M2.ANTI-NARCISSUS.TOR 90 0.015 500 0.985 !! 60 M2.ANTI-NARCISSUS.CHMFR 90 0.05 0.95 !! 61 M2.ANTI-NARCISSUS.RIM 90 0.05 0.95 !! 62 M2.ANTI-NARCISSUS.CLOSING 90 0.80 0.20 !! 63 M2.ANTI-NARCISSUS.FLAT 90 0.015 0.985 !!================================================================================ !! COATINGS PROPERTIES: shifted to section 2. models etc. !! !! mirror parameters in variables EFL, RPUP, RM1 etc.: !! shifted to section 1. variables for geometry !! !!EFL=28500 !!RPUP=1750 !!RM1=3500. !!CCM1=-1. !!$FCN SAGM1 (_^2/RM1/2) !!SAG1=SAGM1(RPUP) !!DIAM1H=560 !!RPUP2=308.1/2. !!RM2=345.2 !!CCM2=-1.279 !!$FCN SAGM2 (_^2/RM2/(1+SQRT(1-(1+CCM2)*((_/RM2)^2)))) !!SAG2=SAGM2(RPUP2) !!IMD=(RM1/2*(1-RM2*(EFL-RM1/2)/EFL/RM1)) !! inter mirror distance re-computed by ASAP !!M1M2=1587.998 !! inter mirror distance from design !! M1M2 is used in the following sections, not IMD !!BFL=(RM2/RM1*(EFL-RM1/2)-IMD) !! back focal length re-computed by ASAP !!TB=1050 !! back focal length from design !! TB is used in the following sections, not BFL !! data for telescope system focus !!FIEL=0.25 !! in degree, field of view !!RIS=165. !! RIS=137.2 !! specified value 165 !!CCIS=-1. !! CCIS=-0.914633 !! specified value -1 !! !! further parameters !! !! Configuration parameters : !! Anti-Narcissus size !! (0) small sized Anti Narcissus !! (1) large sized Anti Narcissus !! parametric setion of bars elliptical(0)/rectangular(1) !! (0) elliptical section !! (1) rectangular section $IF (BAR) EQ 1 THEN $IF (ANTYPE) EQ 0 THEN !! corrected TITLE 'Geometry with rectangular hexapod bar section and Small Anti-Narcissus' $REG ANTYPE $ELSE TITLE 'Geometry with rectangular hexapod bar section and Large Anti-Narcissus' $REG ANTYPE $ENDIF $REG BAR $ELSE $IF (ANTYPE) EQ 0 THEN !! corrected TITLE 'Geometry with elliptical hexapod bar section and Small Anti-Narcissus' $REG ANTYPE $ELSE TITLE 'Geometry with elliptical hexapod bar section and Large Anti-Narcissus' $REG ANTYPE $ENDIF $REG BAR $ENDIF !! hexapod XATB1=1976.5302 ; YATB1=442.76720 ; ZATB1=0.4441043 XBTB1=1971.4524 ; YBTB1=443.77805 ; ZBTB1=-18.87413 XCTB1=1929.0694 ; YCTB1=421.62690 ; ZCTB1=-8.89291 XDTB1=1929.0694 ; YDTB1=421.62690 ; ZDTB1=11.812918 XETB1=1967.0426 ; YETB1=421.62690 ; ZETB1=-18.87413 XFTB1=1972.3220 ; YFTB1=421.62690 ; ZFTB1=0.4441043 X0TB1=(XATB1+XBTB1+XCTB1+XDTB1)/4 Y0TB1=(YATB1+YBTB1+YCTB1+YDTB1)/4 Z0TB1=(ZATB1+ZBTB1+ZCTB1+ZDTB1)/4 NXTB1=(YBTB1-YATB1)*(ZDTB1-ZATB1)-(ZBTB1-ZATB1)*(YDTB1-YATB1) NYTB1=(ZBTB1-ZATB1)*(XDTB1-XATB1)-(XBTB1-XATB1)*(ZDTB1-ZATB1) NZTB1=(XBTB1-XATB1)*(YDTB1-YATB1)-(YBTB1-YATB1)*(XDTB1-XATB1) AETB1=SQRT(((XATB1-XBTB1-XCTB1+XDTB1)^2+(YATB1-YBTB1-YCTB1+YDTB1)^2+(ZATB1-ZBTB1-ZCTB1+ZDTB1)^2)/8) BETB1=SQRT(((XATB1+XBTB1-XCTB1-XDTB1)^2+(YATB1+YBTB1-YCTB1-YDTB1)^2+(ZATB1+ZBTB1-ZCTB1-ZDTB1)^2)/8) XABB1=484.49827 ; YABB1=739.79915 ; ZABB1=408.16675 XBBB1=479.4205 ; YBBB1=740.81003 ; ZBBB1=388.8485 XCBB1=473.56306 ; YCBB1=711.38741 ; ZCBB1=388.84852 XDBB1=478.6408 ; YDBB1=710.3765 ; ZDBB1=408.16675 X0BB1=(XABB1+XBBB1+XCBB1+XDBB1)/4 Y0BB1=(YABB1+YBBB1+YCBB1+YDBB1)/4 Z0BB1=(ZABB1+ZBBB1+ZCBB1+ZDBB1)/4 NXBB1=(YBBB1-YABB1)*(ZDBB1-ZABB1)-(ZBBB1-ZABB1)*(YDBB1-YABB1) NYBB1=(ZBBB1-ZABB1)*(XDBB1-XABB1)-(XBBB1-XABB1)*(ZDBB1-ZABB1) NZBB1=(XBBB1-XABB1)*(YDBB1-YABB1)-(YBBB1-YABB1)*(XDBB1-XABB1) AEBB1=SQRT(((XABB1-XBBB1-XCBB1+XDBB1)^2+(YABB1-YBBB1-YCBB1+YDBB1)^2+(ZABB1-ZBBB1-ZCBB1+ZDBB1)^2)/8) BEBB1=SQRT(((XABB1+XBBB1-XCBB1-XDBB1)^2+(YABB1+YBBB1-YCBB1-YDBB1)^2+(ZABB1+ZBBB1-ZCBB1-ZDBB1)^2)/8) XATB2=1976.5302 ; YATB2=-442.76720 ; ZATB2=0.4441043 XBTB2=1971.4524 ; YBTB2=-443.77805 ; ZBTB2=-18.87413 XCTB2=1929.0694 ; YCTB2=-421.62690 ; ZCTB2=-8.89291 XDTB2=1929.0694 ; YDTB2=-421.62690 ; ZDTB2=11.812918 XETB2=1967.0426 ; YETB2=-421.62690 ; ZETB2=-18.87413 XFTB2=1972.3220 ; YFTB2=-421.62690 ; ZFTB2=0.4441043 X0TB2=(XATB2+XBTB2+XCTB2+XDTB2)/4 Y0TB2=(YATB2+YBTB2+YCTB2+YDTB2)/4 Z0TB2=(ZATB2+ZBTB2+ZCTB2+ZDTB2)/4 NXTB2=(YBTB2-YATB2)*(ZDTB2-ZATB2)-(ZBTB2-ZATB2)*(YDTB2-YATB2) NYTB2=(ZBTB2-ZATB2)*(XDTB2-XATB2)-(XBTB2-XATB2)*(ZDTB2-ZATB2) NZTB2=(XBTB2-XATB2)*(YDTB2-YATB2)-(YBTB2-YATB2)*(XDTB2-XATB2) AETB2=SQRT(((XATB2-XBTB2-XCTB2+XDTB2)^2+(YATB2-YBTB2-YCTB2+YDTB2)^2+(ZATB2-ZBTB2-ZCTB2+ZDTB2)^2)/8) BETB2=SQRT(((XATB2+XBTB2-XCTB2-XDTB2)^2+(YATB2+YBTB2-YCTB2-YDTB2)^2+(ZATB2+ZBTB2-ZCTB2-ZDTB2)^2)/8) XABB2=484.49827 ; YABB2=-739.79915 ; ZABB2=408.16675 XBBB2=479.4205 ; YBBB2=-740.81003 ; ZBBB2=388.8485 XCBB2=473.56306 ; YCBB2=-711.38741 ; ZCBB2=388.84852 XDBB2=478.6408 ; YDBB2=-710.3765 ; ZDBB2=408.16675 X0BB2=(XABB2+XBBB2+XCBB2+XDBB2)/4 Y0BB2=(YABB2+YBBB2+YCBB2+YDBB2)/4 Z0BB2=(ZABB2+ZBBB2+ZCBB2+ZDBB2)/4 NXBB2=(YBBB2-YABB2)*(ZDBB2-ZABB2)-(ZBBB2-ZABB2)*(YDBB2-YABB2) NYBB2=(ZBBB2-ZABB2)*(XDBB2-XABB2)-(XBBB2-XABB2)*(ZDBB2-ZABB2) NZBB2=(XBBB2-XABB2)*(YDBB2-YABB2)-(YBBB2-YABB2)*(XDBB2-XABB2) AEBB2=SQRT(((XABB2-XBBB2-XCBB2+XDBB2)^2+(YABB2-YBBB2-YCBB2+YDBB2)^2+(ZABB2-ZBBB2-ZCBB2+ZDBB2)^2)/8) BEBB2=SQRT(((XABB2+XBBB2-XCBB2-XDBB2)^2+(YABB2+YBBB2-YCBB2-YDBB2)^2+(ZABB2+ZBBB2-ZCBB2-ZDBB2)^2)/8) XXXX1=(XATB1-XABB1) YYYY1=(YATB1-YABB1) ZZZZ1=(ZATB1-ZABB1) RBAR1=-5 ABAR1=(XXXX1)/SQRT((XXXX1)^2+(YYYY1)^2+(ZZZZ1)^2) BBAR1=(YYYY1)/SQRT((XXXX1)^2+(YYYY1)^2+(ZZZZ1)^2) CBAR1=(ZZZZ1)/SQRT((XXXX1)^2+(YYYY1)^2+(ZZZZ1)^2) RBAR2=-(RBAR1) ABAR2=(XXXX1)/SQRT((XXXX1)^2+(YYYY1)^2+(ZZZZ1)^2) BBAR2=(-YYYY1)/SQRT((XXXX1)^2+(YYYY1)^2+(ZZZZ1)^2) CBAR2=(ZZZZ1)/SQRT((XXXX1)^2+(YYYY1)^2+(ZZZZ1)^2) !! Focal Surface !!RIS=165. !! RIS=137.2 !! specified value 165 Defined in 1. !!CCIS=-1. !! CCIS=-0.914633 !! specified value -1 Defined in 1. $FCN SAGFP (_^2/RIS/2) RIS2=157.6518 !! dummy focal plane image by the ideal lens CCIS2=-2.1 !! ="= $FCN SAGFP2 (_^2/RIS2/2) !! Image in object space of aperture stop XENTPUP=(1/((2/RM1)-(1/(M1M2+SAG2))))+(TB+202) ENTPUP=1613.10 XDUMSTOP=202-2*400-1/((1/400)-(1/(M1M2+TB+2*400))) $GO continue $REG 'SAG_M1=' SAG1 $REG 'SAG_M2=' SAG2 $REG 'Inter Mirror Distance=' M1M2 $REG 'Back Focal Length=' TB $REG 'TTB1' TTB1 $REG 'Rnar=' RNAR $REG 'Xnar=' XNAR $REG 'Znar=' ZNAR $REG 'TetAR=' TETAR $REG XDUMSTOP $REG XENTPUP END continue !! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !! || GEOMETRY DEFINITION || !! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !!======== !!HEXAPOD newdef !!======== !!************** !! with rotation of bar by + or -5 deg. !! choose between rectangular (1) or elliptical bars (0) !!************** BRANCH .HEXLEGS BRANCH .BAR1 $IF (BAR) EQ 0 execute next 1 line $GO lbla CURVES POINTS, x y z c (XATB1) (YATB1) (ZATB1) 1, (XBTB1) (YBTB1) (ZBTB1) 1, (XETB1) (YETB1) (ZETB1) 1, (XCTB1) (YCTB1) (ZCTB1) 1, (XDTB1) (YDTB1) (ZDTB1) 1, (XFTB1) (YFTB1) (ZFTB1) 1, (XATB1) (YATB1) (ZATB1) 0 POINTS, x y z c (XABB1) (YABB1) (ZABB1) 1, (XBBB1) (YBBB1) (ZBBB1) 1, (XBBB1+XCBB1)/2 (YBBB1+YCBB1)/2 (ZBBB1+ZCBB1)/2 1, (XCBB1) (YCBB1) (ZCBB1) 1, (XDBB1) (YDBB1) (ZDBB1) 1, (XDBB1+XABB1)/2 (YDBB1+YABB1)/2 (ZDBB1+ZABB1)/2 1, (XABB1) (YABB1) (ZABB1) 0 $GO skipa lbla CURVES ELLIPSE X 0 (AETB1) (BETB1) 24 ROTATE X 115 ALIGN 1 0 0 (NXTB1) (NYTB1) (NZTB1) SHIFT (X0TB1) (Y0TB1) (Z0TB1) CURVES ELLIPSE X 0 (AEBB1) (BEBB1) 24 ROTATE X +195 ALIGN 1 0 0 (NXBB1) (NYBB1) (NZBB1) SHIFT (X0BB1) (Y0BB1) (Z0BB1) skipa OBJECT; .1 =BOT OBJECT; .2 =TOP OBJECT; .1 .2 =SURF INTERFACE COATING TVDA GROUP .1 .2 .3 ROTATE (RBAR1) ABOUT (ABAR1) (BBAR1) (CBAR1) (X0BB1) (Y0BB1) (Z0BB1) QPRINT OBJECT 0.3; $GRAB 'OBJECT' OHEXA BRANCH ^.BAR2 $IF (BAR) EQ 0 1 $GO lblb CURVES POINTS, x y z c (XATB2) (YATB2) (ZATB2) 1, (XBTB2) (YBTB2) (ZBTB2) 1, (XETB2) (YETB2) (ZETB2) 1, (XCTB2) (YCTB2) (ZCTB2) 1, (XDTB2) (YDTB2) (ZDTB2) 1, (XFTB2) (YFTB2) (ZFTB2) 1, (XATB2) (YATB2) (ZATB2) 0 POINTS, x y z c (XABB2) (YABB2) (ZABB2) 1, (XBBB2) (YBBB2) (ZBBB2) 1, (XBBB2+XCBB2)/2 (YBBB2+YCBB2)/2 (ZBBB2+ZCBB2)/2 1, (XCBB2) (YCBB2) (ZCBB2) 1, (XDBB2) (YDBB2) (ZDBB2) 1, (XDBB2+XABB2)/2 (YDBB2+YABB2)/2 (ZDBB2+ZABB2)/2 1, (XABB2) (YABB2) (ZABB2) 0 $GO skipb lblb CURVES ELLIPSE X 0 (AETB2) (BETB2) 24 ROTATE X 97 ALIGN 1 0 0 (NXTB2) (NYTB2) (NZTB2) SHIFT (X0TB2) (Y0TB2) (Z0TB2) CURVES ELLIPSE X 0 (AEBB2) (BEBB2) 24 ROTATE X +90 ALIGN 1 0 0 (NXBB2) (NYBB2) (NZBB2) SHIFT (X0BB2) (Y0BB2) (Z0BB2) skipb OBJECT; .2 =TOP OBJECT; .1 =BOT OBJECT; .1 .2 =SURF INTERFACE COATING TVDA GROUP .1 .2 .3 ROTATE (RBAR2) ABOUT (ABAR2) (BBAR2) (CBAR2) (X0BB2) (Y0BB2) (Z0BB2) BRANCH ^.BAR3 $IF (BAR) EQ 0 1 $GO lblc CURVES POINTS, x y z c (XATB1) (YATB1) (ZATB1) 1, (XBTB1) (YBTB1) (ZBTB1) 1, (XETB1) (YETB1) (ZETB1) 1, (XCTB1) (YCTB1) (ZCTB1) 1, (XDTB1) (YDTB1) (ZDTB1) 1, (XFTB1) (YFTB1) (ZFTB1) 1, (XATB1) (YATB1) (ZATB1) 0 POINTS, x y z c (XABB1) (YABB1) (ZABB1) 1, (XBBB1) (YBBB1) (ZBBB1) 1, (XBBB1+XCBB1)/2 (YBBB1+YCBB1)/2 (ZBBB1+ZCBB1)/2 1, (XCBB1) (YCBB1) (ZCBB1) 1, (XDBB1) (YDBB1) (ZDBB1) 1, (XDBB1+XABB1)/2 (YDBB1+YABB1)/2 (ZDBB1+ZABB1)/2 1, (XABB1) (YABB1) (ZABB1) 0 $GO skipc lblc CURVES ELLIPSE X 0 (AETB1) (BETB1) 24 ROTATE X 115 ALIGN 1 0 0 (NXTB1) (NYTB1) (NZTB1) SHIFT (X0TB1) (Y0TB1) (Z0TB1) CURVES ELLIPSE X 0 (AEBB1) (BEBB1) 24 ROTATE X +195 ALIGN 1 0 0 (NXBB1) (NYBB1) (NZBB1) SHIFT (X0BB1) (Y0BB1) (Z0BB1) skipc OBJECT; .1 =BOT OBJECT; .2 =TOP OBJECT; .1 .2 =SURF INTERFACE COATING TVDA GROUP .1 .2 .3 ROTATE (RBAR1) ABOUT (ABAR1) (BBAR1) (CBAR1) (X0BB1) (Y0BB1) (Z0BB1) ROTATE 120 ABOUT 1 0 0 0 0 0 BRANCH ^.BAR4 $IF (BAR) EQ 0 1 $GO lbld CURVES POINTS, x y z c (XATB2) (YATB2) (ZATB2) 1, (XBTB2) (YBTB2) (ZBTB2) 1, (XETB2) (YETB2) (ZETB2) 1, (XCTB2) (YCTB2) (ZCTB2) 1, (XDTB2) (YDTB2) (ZDTB2) 1, (XFTB2) (YFTB2) (ZFTB2) 1, (XATB2) (YATB2) (ZATB2) 0 POINTS, x y z c (XABB2) (YABB2) (ZABB2) 1, (XBBB2) (YBBB2) (ZBBB2) 1, (XBBB2+XCBB2)/2 (YBBB2+YCBB2)/2 (ZBBB2+ZCBB2)/2 1, (XCBB2) (YCBB2) (ZCBB2) 1, (XDBB2) (YDBB2) (ZDBB2) 1, (XDBB2+XABB2)/2 (YDBB2+YABB2)/2 (ZDBB2+ZABB2)/2 1, (XABB2) (YABB2) (ZABB2) 0 $GO skipd lbld CURVES ELLIPSE X 0 (AETB2) (BETB2) 24 ROTATE X 97 ALIGN 1 0 0 (NXTB2) (NYTB2) (NZTB2) SHIFT (X0TB2) (Y0TB2) (Z0TB2) CURVES ELLIPSE X 0 (AEBB2) (BEBB2) 24 ROTATE X +90 ALIGN 1 0 0 (NXBB2) (NYBB2) (NZBB2) SHIFT (X0BB2) (Y0BB2) (Z0BB2) skipd OBJECT; .2 =TOP OBJECT; .1 =BOT OBJECT; .1 .2 =SURF INTERFACE COATING TVDA GROUP .1 .2 .3 ROTATE (RBAR2) ABOUT (ABAR2) (BBAR2) (CBAR2) (X0BB2) (Y0BB2) (Z0BB2) ROTATE 120 ABOUT 1 0 0 0 0 0 BRANCH ^.BAR5 $IF (BAR) EQ 0 1 $GO lble CURVES POINTS, x y z c (XATB1) (YATB1) (ZATB1) 1, (XBTB1) (YBTB1) (ZBTB1) 1, (XETB1) (YETB1) (ZETB1) 1, (XCTB1) (YCTB1) (ZCTB1) 1, (XDTB1) (YDTB1) (ZDTB1) 1, (XFTB1) (YFTB1) (ZFTB1) 1, (XATB1) (YATB1) (ZATB1) 0 POINTS, x y z c (XABB1) (YABB1) (ZABB1) 1, (XBBB1) (YBBB1) (ZBBB1) 1, (XBBB1+XCBB1)/2 (YBBB1+YCBB1)/2 (ZBBB1+ZCBB1)/2 1, (XCBB1) (YCBB1) (ZCBB1) 1, (XDBB1) (YDBB1) (ZDBB1) 1, (XDBB1+XABB1)/2 (YDBB1+YABB1)/2 (ZDBB1+ZABB1)/2 1, (XABB1) (YABB1) (ZABB1) 0 $GO skipe lble CURVES ELLIPSE X 0 (AETB1) (BETB1) 24 ROTATE X 115 ALIGN 1 0 0 (NXTB1) (NYTB1) (NZTB1) SHIFT (X0TB1) (Y0TB1) (Z0TB1) CURVES ELLIPSE X 0 (AEBB1) (BEBB1) 24 ROTATE X +195 ALIGN 1 0 0 (NXBB1) (NYBB1) (NZBB1) SHIFT (X0BB1) (Y0BB1) (Z0BB1) skipe OBJECT; .1 =BOT OBJECT; .2 =TOP OBJECT; .1 .2 =SURF INTERFACE COATING TVDA GROUP .1 .2 .3 ROTATE (RBAR1) ABOUT (ABAR1) (BBAR1) (CBAR1) (X0BB1) (Y0BB1) (Z0BB1) ROTATE 240 ABOUT 1 0 0 0 0 0 BRANCH ^.BAR6 $IF (BAR) EQ 0 1 $GO lblf CURVES POINTS, x y z c (XATB2) (YATB2) (ZATB2) 1, (XBTB2) (YBTB2) (ZBTB2) 1, (XETB2) (YETB2) (ZETB2) 1, (XCTB2) (YCTB2) (ZCTB2) 1, (XDTB2) (YDTB2) (ZDTB2) 1, (XFTB2) (YFTB2) (ZFTB2) 1, (XATB2) (YATB2) (ZATB2) 0 POINTS, x y z c (XABB2) (YABB2) (ZABB2) 1, (XBBB2) (YBBB2) (ZBBB2) 1, (XBBB2+XCBB2)/2 (YBBB2+YCBB2)/2 (ZBBB2+ZCBB2)/2 1, (XCBB2) (YCBB2) (ZCBB2) 1, (XDBB2) (YDBB2) (ZDBB2) 1, (XDBB2+XABB2)/2 (YDBB2+YABB2)/2 (ZDBB2+ZABB2)/2 1, (XABB2) (YABB2) (ZABB2) 0 $GO skipf lblf CURVES ELLIPSE X 0 (AETB2) (BETB2) 24 ROTATE X 97 ALIGN 1 0 0 (NXTB2) (NYTB2) (NZTB2) SHIFT (X0TB2) (Y0TB2) (Z0TB2) CURVES ELLIPSE X 0 (AEBB2) (BEBB2) 24 ROTATE X +90 ALIGN 1 0 0 (NXBB2) (NYBB2) (NZBB2) SHIFT (X0BB2) (Y0BB2) (Z0BB2) skipf OBJECT; .2 =TOP OBJECT; .1 =BOT OBJECT; .1 .2 =SURF INTERFACE COATING TVDA GROUP .1 .2 .3 ROTATE (RBAR2) ABOUT (ABAR2) (BBAR2) (CBAR2) (X0BB2) (Y0BB2) (Z0BB2) ROTATE 240 ABOUT 1 0 0 0 0 0 !!********* BRANCH ^^.BARREL !! HEXP: '0=flat bar, 1=tilted bar' $IF (HEXP) EQ 0; $GO old !! new hexapod design modelled by Volker Kirschner, file hexapod_new.inr TILTO=2 !! TILT ANGLE OF TANGENTIAL BARS (OUTER) TILTI=2 !! TILT ANGLE OF RADIAL BARS (INNER) OFFS_O=TAN[TILTO.]*SQRT((418.94739-329.28526)^2+(34.813553-190.1129415)^2) !! CORRESPONDING HEIGHT OFFS_I=TAN[TILTI.]*SQRT((210.88772-110.00000)^2+(-340.5118+97.9237)^2) !! DITO EDGES POINTS, 1909 418.94742 -34.813553 1 1909 420.28715 -32.493020 2 1909 420.94543 -31.352818 0.9914663 1909 421.28616 -30.081211 2 1909 421.62688 -28.809603 0.9914661 1909 421.62690 -27.493020 1 1909 421.62690 27.493020 2 1909 421.62688 28.809603 0.9914661 1909 421.28616 30.081211 2 1909 420.94543 31.352818 0.9914663 1909 420.28715 32.493020 1 1909 418.94739 34.813553 1 !! barrel tangential bar start (outer surface) 1909-OFFS_O 329.28526 190.1129415 0 !! barrel tangential bar centre $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 COMPOSITE -6 GAPS 1 1 REPEAT .1 ALTER 1 6*13 X 0 0; SHIFT X 90 OBJECTS .1 .2 =OUTER_SURF QPRINT OBJECT 0.1; $GRAB 'OBJECT' OBARA BRANCH .INNER EDGES POINTS, 1909 210.88772 -340.5118 1 !! radial bar ('left' surface) 1909-OFFS_I 110.00000 -97.9237 1 !! arbitrarily inserted saddle point hidden behind secondary 1909 83.217976 -33.5254 1 !! central rounded corner part of barrel 1909 58.181592 26.675476 2. 1909 55.970024 32.012336 0.8696069 1909 59.473294 36.591356 2. 1909 62.976565 41.170377 0.8696069 1909 68.70610 40.43174 1 !! radial bar ('right' surface) 1909-OFFS_I 137.86767 31.42650 1 !! inserted saddle point according to point of 'left' surface 1909 398.39898 -2.49622 1. !! outer right rounded corner 1909 402.91806 -3.08463 2. 1909 406.65505 -3.57205 0.9366569 1909 409.14056 -6.40216 2. 1909 411.62606 -9.23228 0.9366569 1909 411.62690 -13.00092 1. 1909 411.62690 -24.81353 2. 1909 411.62688 -26.13011 0.9914661 1909 411.28616 -27.40172 2. 1909 410.94543 -28.67333 0.9914663 1909 410.28715 -29.8135 1 !! tangential bar inner surface 1909-OFFS_O 320.64172 -185.1129 1 !! centre point 1909 230.96285 -340.4123 2. !! outer left rounded corner 1909 230.30454 -341.5525 0.9914662 1909 229.37366 -342.4834 2. 1909 228.44278 -343.4143 0.9914662 1909 227.30259 -344.0726 1. 1909 225.12107 -345.3321 2. 1909 221.19810 -347.5943 0.9127643 1909 216.91346 -346.1432 2. 1909 212.62883 -344.6922 0.9127643 1909 210.88772 -340.5118 0 $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 $DO 1 6 REPEAT .6; ALTER 1 30 X 0 0; SHIFT X 90 OBJECTS .12 .6 =1 .11 .5 =2 .10 .4 =3 .9 .3 =4 .8 .2 =5 .7 .1 =6 BRANCH ^.BOTTOM EDGES POINTS, 1909 418.94739 34.813553 1 !! barrel tangential bar start (outer surface) 1909-OFFS_O 329.28526 190.1129415 1 !! barrel tangential bar centre 1909 239.62313 345.41233 0 !! barrel tangential bar end $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 POINTS, 1909 410.28715 29.8135 1 !! tangential bar inner surface 1909-OFFS_O 320.64172 185.1129 1 !! centre point 1909 230.96285 340.4123 0 $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 OBJECT .12 .6 =TANG_TRIANG1 .11 .5 =TANG_TRIANG2 .10 .4 =TANG_TRIANG3 .9 .3 =TANG_TRIANG4 .8 .2 =TANG_TRIANG5 .7 .1 =TANG_TRIANG6 EDGES POINTS, 1909 68.70610 40.43174 1 1909-OFFS_I 137.86767 31.42650 1 1909 398.39898 -2.49622 0 $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 POINTS, 1909 70.642836 55.306181 1 1909-OFFS_I 139.80441 46.300944 1 1909 400.33572 12.378222 0 $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 OBJECT .12 .6 =RAD_TRIANG1 .11 .5 =RAD_TRIANG2 .10 .4 =RAD_TRIANG3 .9 .3 =RAD_TRIANG4 .8 .2 =RAD_TRIANG5 .7 .1 =RAD_TRIANG6 SURFACE PLANE X 1999 ELLIP 2@425 BRANCH ^^.BARREL OBJECT .1 =TOP BOUNDS -.38 .26 .27 .28 .29 .30 .31 FACETS 7 7 !! was 25 25 EDGE POINTS, 1909 83.217976 -33.5254 1 central part of barrel 1909 58.181592 26.675476 2. 1909 55.970024 32.012336 0.8696069 1909 59.473294 36.591356 2. 1909 62.976565 41.170377 0.8696069 1909 68.706100 40.43174 0. $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 COMPOSITE -6 GAPS 1 1 BRANCH .BOTTOM OBJECT .1 =CENTRAL_PART FACETS 3 3 !! was 9 9 EDGES POINTS, 1909 418.94742 -34.813553 1 !! -| 1909 420.28715 -32.493020 2 !! | 1909 420.94543 -31.352818 0.9914663 !! | 1909 421.28616 -30.081211 2 !! | 1909 421.62688 -28.809603 0.9914661 !! | 1909 421.62690 -27.493020 1 !! | 1909 421.62690 27.493020 2 !! |-- lets call this 'joint' 1909 421.62688 28.809603 0.9914661 !! | 1909 421.28616 30.081211 2 !! | this joint is flat 1909 420.94543 31.352818 0.9914663 !! | 1909 420.28715 32.493020 1 !! | 1909 418.94739 34.813553 1 !! -| barrel tangential bar start (outer surface) 1909 410.28712 29.813545 2 1909 410.94541 28.67333 0.9914662 1909 411.28615 27.401716 2 1909 411.62689 26.1301 0.9914662 1909 411.6269 24.813517 1 1909 411.6269 22.294515 2 1909 411.62454 17.766023 0.9127643 1909 408.22553 14.780966 2 1909 404.82661 11.795868 0.9127643 1909 400.33572 12.378222 1 1909 398.39898 -2.49622 1. !! outer right rounded corner 1909 402.91806 -3.08463 2. 1909 406.65505 -3.57205 0.9366569 1909 409.14056 -6.40216 2. 1909 411.62606 -9.23228 0.9366569 1909 411.62690 -13.00092 1. 1909 411.62690 -24.81353 2. 1909 411.62688 -26.13011 0.9914661 1909 411.28616 -27.40172 2. 1909 410.94543 -28.67333 0.9914663 1909 410.28712 -29.813545 1 $DO 1 5 REPEAT .?; ROTATE X ?*60 0 0 $DO 1 6 QPRINT EDGE 0.?; $GRAB 'CURVEDG' IEDJOIN? OBJECT $DO 1 6 .? =JOINT? QPRINT OBJECT 0.1; $GRAB 'OBJECT' OBARBOT OHEXE=OBARBOT $DO (OBARA) (OBARBOT) OBJECT ?; INTERFACE COAT TVDA !!*************************************************************************************************** $GO new old CURVES POINTS, 1909. -420.2872 -32.4930 1. , 1909. -329.2853 -190.1129 1. , 1909. -238.2834 -347.7328 2. , 1909. -237.6251 -348.8730 0.9914661 , 1909. -236.6942 -349.8039 2. , 1909. -235.7633 -350.7348 0.9914662 , 1909. -234.6231 -351.3931 1. , 1909. -187.0038 -378.8861 2. , 1909. -185.8636 -379.5444 0.9914662 , 1909. -184.5920 -379.8851 2. , 1909. -183.3204 -380.2258 0.9914661 , 1909. -182.0038 -380.2259 1. , 1909. 0.0000 -380.2259 1. , 1909. 182.00380 -380.2259 2. , 1909. 183.32038 -380.2258 0.9914661 , 1909. 184.59199 -379.8851 2. , 1909. 185.86359 -379.5444 0.9914662 , 1909. 187.00380 -378.8861 1. , 1909. 234.62310 -351.3931 2. , 1909. 235.76329 -350.7348 0.9914662 , 1909. 236.69417 -349.8039 2. , 1909. 237.62505 -348.8730 0.9914661 , 1909. 238.28336 -347.7328 1. , 1909. 329.28525 -190.1129 1. , 1909. 420.28715 -32.49302 2. , 1909. 420.94543 -31.35282 0.9914663 , 1909. 421.28616 -30.08121 2. , 1909. 421.62688 -28.80960 0.9914661 , 1909. 421.62690 -27.49302 1. , 1909. 421.62690 27.493020 2. , 1909. 421.62688 28.809603 0.9914661 , 1909. 421.28616 30.081211 2. , 1909. 420.94543 31.352818 0.9914663 , 1909. 420.28715 32.49302 1. , 1909. 329.28525 190.11293 1. , 1909. 238.28336 347.73284 2. , 1909. 237.62505 348.87303 0.9914661 , 1909. 236.69417 349.80391 2. , 1909. 235.76329 350.73479 0.9914662 , 1909. 234.62310 351.39309 1. , 1909. 187.00380 378.88611 2. , 1909. 185.86359 379.54439 0.9914662 , 1909. 184.59199 379.88512 2. , 1909. 183.32038 380.22585 0.9914661 , 1909. 182.0038 380.22586 1. , 1909. 0.0000 380.22586 1. , 1909. -182.0038 380.22586 2. , 1909. -183.3204 380.22585 0.9914661 , 1909. -184.5920 379.88512 2. , 1909. -185.8636 379.54439 0.9914662 , 1909. -187.0038 378.88611 1. , 1909. -234.6231 351.39309 2. , 1909. -235.7633 350.73479 0.9914662 , 1909. -236.6942 349.80391 2. , 1909. -237.6251 348.87303 0.9914661 , 1909. -238.2834 347.73284 1. , 1909. -329.2853 190.11293 1. , 1909. -420.2872 32.493020 2. , 1909. -420.9454 31.352818 0.9914663 , 1909. -421.2862 30.081211 2. , 1909. -421.6269 28.809603 0.9914661 , 1909. -421.6269 27.49302 1. , 1909. -421.6269 0.00000 1. , 1909. -421.6269 -27.49302 2. , 1909. -421.6269 -28.80960 0.9914661 , 1909. -421.2862 -30.08121 2. , 1909. -420.9454 -31.35282 0.9914662 , 1909. -420.2872 -32.49302 0. POINTS, 1999. -420.2872 -32.4930 1. , 1999. -329.2853 -190.1129 1. , 1999. -238.2834 -347.7328 2. , 1999. -237.6251 -348.8730 0.9914661 , 1999. -236.6942 -349.8039 2. , 1999. -235.7633 -350.7348 0.9914662 , 1999. -234.6231 -351.3931 1. , 1999. -187.0038 -378.8861 2. , 1999. -185.8636 -379.5444 0.9914662 , 1999. -184.5920 -379.8851 2. , 1999. -183.3204 -380.2258 0.9914661 , 1999. -182.0038 -380.2259 1. , 1999. 0.0000 -380.2259 1. , 1999. 182.00380 -380.2259 2. , 1999. 183.32038 -380.2258 0.9914661 , 1999. 184.59199 -379.8851 2. , 1999. 185.86359 -379.5444 0.9914662 , 1999. 187.00380 -378.8861 1. , 1999. 234.62310 -351.3931 2. , 1999. 235.76329 -350.7348 0.9914662 , 1999. 236.69417 -349.8039 2. , 1999. 237.62505 -348.8730 0.9914661 , 1999. 238.28336 -347.7328 1. , 1999. 329.28525 -190.1129 1. , 1999. 420.28715 -32.49302 2. , 1999. 420.94543 -31.35282 0.9914663 , 1999. 421.28616 -30.08121 2. , 1999. 421.62688 -28.80960 0.9914661 , 1999. 421.62690 -27.49302 1. , 1999. 421.62690 27.493020 2. , 1999. 421.62688 28.809603 0.9914661 , 1999. 421.28616 30.081211 2. , 1999. 420.94543 31.352818 0.9914663 , 1999. 420.28715 32.49302 1. , 1999. 329.28525 190.11293 1. , 1999. 238.28336 347.73284 2. , 1999. 237.62505 348.87303 0.9914661 , 1999. 236.69417 349.80391 2. , 1999. 235.76329 350.73479 0.9914662 , 1999. 234.62310 351.39309 1. , 1999. 187.00380 378.88611 2. , 1999. 185.86359 379.54439 0.9914662 , 1999. 184.59199 379.88512 2. , 1999. 183.32038 380.22585 0.9914661 , 1999. 182.0038 380.22586 1. , 1999. 0.0000 380.22586 1. , 1999. -182.0038 380.22586 2. , 1999. -183.3204 380.22585 0.9914661 , 1999. -184.5920 379.88512 2. , 1999. -185.8636 379.54439 0.9914662 , 1999. -187.0038 378.88611 1. , 1999. -234.6231 351.39309 2. , 1999. -235.7633 350.73479 0.9914662 , 1999. -236.6942 349.80391 2. , 1999. -237.6251 348.87303 0.9914661 , 1999. -238.2834 347.73284 1. , 1999. -329.2853 190.11293 1. , 1999. -420.2872 32.493020 2. , 1999. -420.9454 31.352818 0.9914663 , 1999. -421.2862 30.081211 2. , 1999. -421.6269 28.809603 0.9914661 , 1999. -421.6269 27.49302 1. , 1999. -421.6269 0.00000 1. , 1999. -421.6269 -27.49302 2. , 1999. -421.6269 -28.80960 0.9914661 , 1999. -421.2862 -30.08121 2. , 1999. -420.9454 -31.35282 0.9914662 , 1999. -420.2872 -32.49302 0. OBJECT; .1 .2 =EXT INTERFACE COATING TVDA CURVES POINTS, 1999. 68.70610 40.43174 1. , 1999. 402.91806 -3.08463 2. , 1999. 406.65505 -3.57205 0.9366569 , 1999. 409.14056 -6.40216 2. , 1999. 411.62606 -9.23228 0.9366569 , 1999. 411.62690 -13.00092 1. , 1999. 411.62690 -24.81353 2. , 1999. 411.62688 -26.13011 0.9914661 , 1999. 411.28616 -27.40172 2. , 1999. 410.94543 -28.67333 0.9914663 , 1999. 410.28715 -29.8135 1. , 1999. 230.96285 -340.4123 2. , 1999. 230.30454 -341.5525 0.9914662 , 1999. 229.37366 -342.4834 2. , 1999. 228.44278 -343.4143 0.9914662 , 1999. 227.30259 -344.0726 1. , 1999. 225.12107 -345.3321 2. , 1999. 221.19810 -347.5943 0.9127643 , 1999. 216.91346 -346.1432 2. , 1999. 212.62883 -344.6922 0.9127643 , 1999. 210.88772 -340.5118 1. , 1999. 58.181592 26.675476 2. , 1999. 55.970024 32.012336 0.8696069 , 1999. 59.473294 36.591356 2. , 1999. 62.976565 41.170377 0.8696069 , 1999. 68.706095 40.431741 0. POINTS, 1909. 68.70610 40.43174 1. , 1909. 402.91806 -3.08463 2. , 1909. 406.65505 -3.57205 0.9366569 , 1909. 409.14056 -6.40216 2. , 1909. 411.62606 -9.23228 0.9366569 , 1909. 411.62690 -13.00092 1. , 1909. 411.62690 -24.81353 2. , 1909. 411.62688 -26.13011 0.9914661 , 1909. 411.28616 -27.40172 2. , 1909. 410.94543 -28.67333 0.9914663 , 1909. 410.28715 -29.8135 1. , 1909. 230.96285 -340.4123 2. , 1909. 230.30454 -341.5525 0.9914662 , 1909. 229.37366 -342.4834 2. , 1909. 228.44278 -343.4143 0.9914662 , 1909. 227.30259 -344.0726 1. , 1909. 225.12107 -345.3321 2. , 1909. 221.19810 -347.5943 0.9127643 , 1909. 216.91346 -346.1432 2. , 1909. 212.62883 -344.6922 0.9127643 , 1909. 210.88772 -340.5118 1. , 1909. 58.181592 26.675476 2. , 1909. 55.970024 32.012336 0.8696069 , 1909. 59.473294 36.591356 2. , 1909. 62.976565 41.170377 0.8696069 , 1909. 68.706095 40.431741 0. OBJECT; .1 .2 =INT1 INTERFACE COATING TVDA CURVES POINTS, 1999. 68.70610 40.43174 1. , 1999. 402.91806 -3.08463 2. , 1999. 406.65505 -3.57205 0.9366569 , 1999. 409.14056 -6.40216 2. , 1999. 411.62606 -9.23228 0.9366569 , 1999. 411.62690 -13.00092 1. , 1999. 411.62690 -24.81353 2. , 1999. 411.62688 -26.13011 0.9914661 , 1999. 411.28616 -27.40172 2. , 1999. 410.94543 -28.67333 0.9914663 , 1999. 410.28715 -29.8135 1. , 1999. 230.96285 -340.4123 2. , 1999. 230.30454 -341.5525 0.9914662 , 1999. 229.37366 -342.4834 2. , 1999. 228.44278 -343.4143 0.9914662 , 1999. 227.30259 -344.0726 1. , 1999. 225.12107 -345.3321 2. , 1999. 221.19810 -347.5943 0.9127643 , 1999. 216.91346 -346.1432 2. , 1999. 212.62883 -344.6922 0.9127643 , 1999. 210.88772 -340.5118 1. , 1999. 58.181592 26.675476 2. , 1999. 55.970024 32.012336 0.8696069 , 1999. 59.473294 36.591356 2. , 1999. 62.976565 41.170377 0.8696069 , 1999. 68.706095 40.431741 0. POINTS, 1909. 68.70610 40.43174 1. , 1909. 402.91806 -3.08463 2. , 1909. 406.65505 -3.57205 0.9366569 , 1909. 409.14056 -6.40216 2. , 1909. 411.62606 -9.23228 0.9366569 , 1909. 411.62690 -13.00092 1. , 1909. 411.62690 -24.81353 2. , 1909. 411.62688 -26.13011 0.9914661 , 1909. 411.28616 -27.40172 2. , 1909. 410.94543 -28.67333 0.9914663 , 1909. 410.28715 -29.8135 1. , 1909. 230.96285 -340.4123 2. , 1909. 230.30454 -341.5525 0.9914662 , 1909. 229.37366 -342.4834 2. , 1909. 228.44278 -343.4143 0.9914662 , 1909. 227.30259 -344.0726 1. , 1909. 225.12107 -345.3321 2. , 1909. 221.19810 -347.5943 0.9127643 , 1909. 216.91346 -346.1432 2. , 1909. 212.62883 -344.6922 0.9127643 , 1909. 210.88772 -340.5118 1. , 1909. 58.181592 26.675476 2. , 1909. 55.970024 32.012336 0.8696069 , 1909. 59.473294 36.591356 2. , 1909. 62.976565 41.170377 0.8696069 , 1909. 68.706095 40.431741 0. OBJECT; .1 .2 =INT2 INTERFACE COATING TVDA ROTATE 60 ABOUT 1 0 0 0 0 0 CURVES POINTS, 1999. 68.70610 40.43174 1. , 1999. 402.91806 -3.08463 2. , 1999. 406.65505 -3.57205 0.9366569 , 1999. 409.14056 -6.40216 2. , 1999. 411.62606 -9.23228 0.9366569 , 1999. 411.62690 -13.00092 1. , 1999. 411.62690 -24.81353 2. , 1999. 411.62688 -26.13011 0.9914661 , 1999. 411.28616 -27.40172 2. , 1999. 410.94543 -28.67333 0.9914663 , 1999. 410.28715 -29.8135 1. , 1999. 230.96285 -340.4123 2. , 1999. 230.30454 -341.5525 0.9914662 , 1999. 229.37366 -342.4834 2. , 1999. 228.44278 -343.4143 0.9914662 , 1999. 227.30259 -344.0726 1. , 1999. 225.12107 -345.3321 2. , 1999. 221.19810 -347.5943 0.9127643 , 1999. 216.91346 -346.1432 2. , 1999. 212.62883 -344.6922 0.9127643 , 1999. 210.88772 -340.5118 1. , 1999. 58.181592 26.675476 2. , 1999. 55.970024 32.012336 0.8696069 , 1999. 59.473294 36.591356 2. , 1999. 62.976565 41.170377 0.8696069 , 1999. 68.706095 40.431741 0. POINTS, 1909. 68.70610 40.43174 1. , 1909. 402.91806 -3.08463 2. , 1909. 406.65505 -3.57205 0.9366569 , 1909. 409.14056 -6.40216 2. , 1909. 411.62606 -9.23228 0.9366569 , 1909. 411.62690 -13.00092 1. , 1909. 411.62690 -24.81353 2. , 1909. 411.62688 -26.13011 0.9914661 , 1909. 411.28616 -27.40172 2. , 1909. 410.94543 -28.67333 0.9914663 , 1909. 410.28715 -29.8135 1. , 1909. 230.96285 -340.4123 2. , 1909. 230.30454 -341.5525 0.9914662 , 1909. 229.37366 -342.4834 2. , 1909. 228.44278 -343.4143 0.9914662 , 1909. 227.30259 -344.0726 1. , 1909. 225.12107 -345.3321 2. , 1909. 221.19810 -347.5943 0.9127643 , 1909. 216.91346 -346.1432 2. , 1909. 212.62883 -344.6922 0.9127643 , 1909. 210.88772 -340.5118 1. , 1909. 58.181592 26.675476 2. , 1909. 55.970024 32.012336 0.8696069 , 1909. 59.473294 36.591356 2. , 1909. 62.976565 41.170377 0.8696069 , 1909. 68.706095 40.431741 0. OBJECT; .1 .2 =INT3 INTERFACE COATING TVDA ROTATE 120 ABOUT 1 0 0 0 0 0 CURVES POINTS, 1999. 68.70610 40.43174 1. , 1999. 402.91806 -3.08463 2. , 1999. 406.65505 -3.57205 0.9366569 , 1999. 409.14056 -6.40216 2. , 1999. 411.62606 -9.23228 0.9366569 , 1999. 411.62690 -13.00092 1. , 1999. 411.62690 -24.81353 2. , 1999. 411.62688 -26.13011 0.9914661 , 1999. 411.28616 -27.40172 2. , 1999. 410.94543 -28.67333 0.9914663 , 1999. 410.28715 -29.8135 1. , 1999. 230.96285 -340.4123 2. , 1999. 230.30454 -341.5525 0.9914662 , 1999. 229.37366 -342.4834 2. , 1999. 228.44278 -343.4143 0.9914662 , 1999. 227.30259 -344.0726 1. , 1999. 225.12107 -345.3321 2. , 1999. 221.19810 -347.5943 0.9127643 , 1999. 216.91346 -346.1432 2. , 1999. 212.62883 -344.6922 0.9127643 , 1999. 210.88772 -340.5118 1. , 1999. 58.181592 26.675476 2. , 1999. 55.970024 32.012336 0.8696069 , 1999. 59.473294 36.591356 2. , 1999. 62.976565 41.170377 0.8696069 , 1999. 68.706095 40.431741 0. POINTS, 1909. 68.70610 40.43174 1. , 1909. 402.91806 -3.08463 2. , 1909. 406.65505 -3.57205 0.9366569 , 1909. 409.14056 -6.40216 2. , 1909. 411.62606 -9.23228 0.9366569 , 1909. 411.62690 -13.00092 1. , 1909. 411.62690 -24.81353 2. , 1909. 411.62688 -26.13011 0.9914661 , 1909. 411.28616 -27.40172 2. , 1909. 410.94543 -28.67333 0.9914663 , 1909. 410.28715 -29.8135 1. , 1909. 230.96285 -340.4123 2. , 1909. 230.30454 -341.5525 0.9914662 , 1909. 229.37366 -342.4834 2. , 1909. 228.44278 -343.4143 0.9914662 , 1909. 227.30259 -344.0726 1. , 1909. 225.12107 -345.3321 2. , 1909. 221.19810 -347.5943 0.9127643 , 1909. 216.91346 -346.1432 2. , 1909. 212.62883 -344.6922 0.9127643 , 1909. 210.88772 -340.5118 1. , 1909. 58.181592 26.675476 2. , 1909. 55.970024 32.012336 0.8696069 , 1909. 59.473294 36.591356 2. , 1909. 62.976565 41.170377 0.8696069 , 1909. 68.706095 40.431741 0. OBJECT; .1 .2 =INT4 INTERFACE COATING TVDA ROTATE 180 ABOUT 1 0 0 0 0 0 CURVES POINTS, 1999. 68.70610 40.43174 1. , 1999. 402.91806 -3.08463 2. , 1999. 406.65505 -3.57205 0.9366569 , 1999. 409.14056 -6.40216 2. , 1999. 411.62606 -9.23228 0.9366569 , 1999. 411.62690 -13.00092 1. , 1999. 411.62690 -24.81353 2. , 1999. 411.62688 -26.13011 0.9914661 , 1999. 411.28616 -27.40172 2. , 1999. 410.94543 -28.67333 0.9914663 , 1999. 410.28715 -29.8135 1. , 1999. 230.96285 -340.4123 2. , 1999. 230.30454 -341.5525 0.9914662 , 1999. 229.37366 -342.4834 2. , 1999. 228.44278 -343.4143 0.9914662 , 1999. 227.30259 -344.0726 1. , 1999. 225.12107 -345.3321 2. , 1999. 221.19810 -347.5943 0.9127643 , 1999. 216.91346 -346.1432 2. , 1999. 212.62883 -344.6922 0.9127643 , 1999. 210.88772 -340.5118 1. , 1999. 58.181592 26.675476 2. , 1999. 55.970024 32.012336 0.8696069 , 1999. 59.473294 36.591356 2. , 1999. 62.976565 41.170377 0.8696069 , 1999. 68.706095 40.431741 0. POINTS, 1909. 68.70610 40.43174 1. , 1909. 402.91806 -3.08463 2. , 1909. 406.65505 -3.57205 0.9366569 , 1909. 409.14056 -6.40216 2. , 1909. 411.62606 -9.23228 0.9366569 , 1909. 411.62690 -13.00092 1. , 1909. 411.62690 -24.81353 2. , 1909. 411.62688 -26.13011 0.9914661 , 1909. 411.28616 -27.40172 2. , 1909. 410.94543 -28.67333 0.9914663 , 1909. 410.28715 -29.8135 1. , 1909. 230.96285 -340.4123 2. , 1909. 230.30454 -341.5525 0.9914662 , 1909. 229.37366 -342.4834 2. , 1909. 228.44278 -343.4143 0.9914662 , 1909. 227.30259 -344.0726 1. , 1909. 225.12107 -345.3321 2. , 1909. 221.19810 -347.5943 0.9127643 , 1909. 216.91346 -346.1432 2. , 1909. 212.62883 -344.6922 0.9127643 , 1909. 210.88772 -340.5118 1. , 1909. 58.181592 26.675476 2. , 1909. 55.970024 32.012336 0.8696069 , 1909. 59.473294 36.591356 2. , 1909. 62.976565 41.170377 0.8696069 , 1909. 68.706095 40.431741 0. OBJECT; .1 .2 =INT5 INTERFACE COATING TVDA ROTATE 240 ABOUT 1 0 0 0 0 0 CURVES POINTS, 1999. 68.70610 40.43174 1. , 1999. 402.91806 -3.08463 2. , 1999. 406.65505 -3.57205 0.9366569 , 1999. 409.14056 -6.40216 2. , 1999. 411.62606 -9.23228 0.9366569 , 1999. 411.62690 -13.00092 1. , 1999. 411.62690 -24.81353 2. , 1999. 411.62688 -26.13011 0.9914661 , 1999. 411.28616 -27.40172 2. , 1999. 410.94543 -28.67333 0.9914663 , 1999. 410.28715 -29.8135 1. , 1999. 230.96285 -340.4123 2. , 1999. 230.30454 -341.5525 0.9914662 , 1999. 229.37366 -342.4834 2. , 1999. 228.44278 -343.4143 0.9914662 , 1999. 227.30259 -344.0726 1. , 1999. 225.12107 -345.3321 2. , 1999. 221.19810 -347.5943 0.9127643 , 1999. 216.91346 -346.1432 2. , 1999. 212.62883 -344.6922 0.9127643 , 1999. 210.88772 -340.5118 1. , 1999. 58.181592 26.675476 2. , 1999. 55.970024 32.012336 0.8696069 , 1999. 59.473294 36.591356 2. , 1999. 62.976565 41.170377 0.8696069 , 1999. 68.706095 40.431741 0. POINTS, 1909. 68.70610 40.43174 1. , 1909. 402.91806 -3.08463 2. , 1909. 406.65505 -3.57205 0.9366569 , 1909. 409.14056 -6.40216 2. , 1909. 411.62606 -9.23228 0.9366569 , 1909. 411.62690 -13.00092 1. , 1909. 411.62690 -24.81353 2. , 1909. 411.62688 -26.13011 0.9914661 , 1909. 411.28616 -27.40172 2. , 1909. 410.94543 -28.67333 0.9914663 , 1909. 410.28715 -29.8135 1. , 1909. 230.96285 -340.4123 2. , 1909. 230.30454 -341.5525 0.9914662 , 1909. 229.37366 -342.4834 2. , 1909. 228.44278 -343.4143 0.9914662 , 1909. 227.30259 -344.0726 1. , 1909. 225.12107 -345.3321 2. , 1909. 221.19810 -347.5943 0.9127643 , 1909. 216.91346 -346.1432 2. , 1909. 212.62883 -344.6922 0.9127643 , 1909. 210.88772 -340.5118 1. , 1909. 58.181592 26.675476 2. , 1909. 55.970024 32.012336 0.8696069 , 1909. 59.473294 36.591356 2. , 1909. 62.976565 41.170377 0.8696069 , 1909. 68.706095 40.431741 0. OBJECT; .1 .2 =INT6 INTERFACE COATING TVDA ROTATE 300 ABOUT 1 0 0 0 0 0 SURFACE PLANE X 1909 ELLIPSE 600 PLANE X 1999 ELLIPSE 600 OBJECT; .1 =TOP BOUNDS -.16 .3 .5 .7 .9 .11 .13 INTERFACE COATING TVDA OBJECT; .2 =BOTM BOUNDS -.15 .4 .6 .8 .10 .12 .14 INTERFACE COATING TVDA QPRINT OBJECT 0.1; $GRAB 'OBJECT' OBARBOT OHEXE=OBARBOT new $IF (HEXP) EQ 1; GROUP -45 $IF (HEXP) EQ 0; GROUP -27 SHIFT X (TB)-48 !! distance of 71mm between M2 vertex and BARREL -X surface RETURN !!======== !!TELESCOPE !!======== BRANCH ^^.MIRR BRANCH .M1 !! definition of M1 surface including fixation holes and rims. SURFACE TUBE X (TB.+202)+0 132/2 132/2 (TB.+202+SAG1) 132/2 132/2 0 0 SHIFT Z -875 TUBE X (TB.+202)+0 132/2 132/2 (TB.+202+SAG1) 132/2 132/2 0 0 SHIFT Z -875 ROTATE X 120 TUBE X (TB.+202)+0 132/2 132/2 (TB.+202+SAG1) 132/2 132/2 0 0 SHIFT Z -875 ROTATE X -120 PLANE X (TB.+202)+73 ELLIPSE 134/2 134/2 0 SHIFT Z -875 PLANE X (TB.+202)+73 ELLIPSE 134/2 134/2 0 SHIFT Z -875 ROTATE X 120 PLANE X (TB.+202)+73 ELLIPSE 134/2 134/2 0 SHIFT Z -875 ROTATE X -120 OPTICAL X (TB.+202) (RM1) (CCM1) ELLIPSE 2@(RPUP) (DIAM1H)/(2*RPUP.) 0 0 OBJECT; 0.1 =MIRR BOUNDS 0.5 0.6 0.7 INTERFACE COATING TREFLECT QPRINT OBJECT 0.1; $GRAB 'OBJECT' OM1A OM1=OM1A OBJECT; 0.5 =HOLE1_TUB BOUNDS -.1 .2 INTERFACE COATING TREFLECT OBJECT; 0.6 =HOLE2_TUB BOUNDS -.1 .3 INTERFACE COATING TREFLECT OBJECT; 0.7 =HOLE3_TUB BOUNDS -.1 .4 INTERFACE COATING TREFLECT OBJECT; 0.2 =HOLE1_FLA BOUNDS -.1 INTERFACE COATING TREFLECT OBJECT; 0.3 =HOLE2_FLA BOUNDS -.1 INTERFACE COATING TREFLECT OBJECT; 0.4 =HOLE3_FLA BOUNDS -.1 INTERFACE COATING TREFLECT EDGES ELLIPSE X (TB.+202+SAG1) 2@(RPUP+3) (NSEGM) ELLIPSE X (TB.+202+SAG1-CHMFR) 2@(RPUP+3+CHMFR) (NSEGM) OBJECT; .1 .2 =RIM_CHMFR INTERFACE COATING TVDA SURFACE TUBE X (TB.+202+SAG1-CHMFR) 2@(RPUP+3+CHMFR) (TB.+202+SAG1-4) 2@(RPUP+3+.2) OBJECT; .1 =RIM_TUB INTERFACE COATING TVDA SURFACE PLANE X (TB.+202+SAG1) ELLIPSE 2@(RPUP+3) (RPUP/(RPUP+3)) OBJECT; .1 =FLAT INTERFACE COATING TVDA SURFACE OPTICAL X (TB.+202)-4 (RM1) (CCM1) ELLIPSE 2@(RPUP) (DIAM1H/RPUP) OBJECT; 0.1 =MIRR_BACK INTERFACE 0 0 EDGE ELLIPSE X (TB.+202+SAGM1(DIAM1H/2+0.2)) 2@(DIAM1H/2+0.2) (NSEGM) ELLIPSE X (TB.+202+SAGM1(DIAM1H/2)-0.2) 2@(DIAM1H/2) (NSEGM) OBJECT; .1 .2 =CHOLE_CHMFR INTERFACE COATING TREFLECT SURFACE TUBE X (TB.+202-38) 2@276 (TB.+202-28) 2@276 0 0 OBJECT; 0.1 =CHOLE_TUB1 INTERFACE COATING TREFLECT SURFACE TUBE X (TB.+202-28) 2@(DIAM1H/2) (TB.+202+SAGM1(DIAM1H/2)-10.2) 2@(DIAM1H/2) 0 0 OBJECT; 0.1 =CHOLE_TUB2B INTERFACE COATING TVDA SURFACE TUBE X (TB.+202+SAGM1(DIAM1H/2)-10.2) 2@(DIAM1H/2) (TB.+202+SAGM1(DIAM1H/2)-0.2) 2@(DIAM1H/2) 0 0 OBJECT; 0.1 =CHOLE_TUB2T INTERFACE COATING TREFLECT SURFACE PLANE X (TB.+202)-28 ELLIPSE 2@(DIAM1H/2+.1) 276/(DIAM1H/2+.1) OBJECT; 0.1 =CHOLE_FLAT INTERFACE COATING TREFLECT !!Hexapod fitting with VDA EDGES LINE 200 33.27 44 195.4 0 85.8 37 LINE 195.4 0 85.8 200 -33.27 44 37 LINE 200 -33.27 44 200 33.27 44 37 COMPOSITE -3 GAPS -1 -1 ELLIPSE X 0 134/2 134/2 111 OBJECT; .2 =FITT_TOP1 INTERFACE COATING TVDA OBJECT; .1 .2 =FITT_COVER1 INTERFACE COATING TVDA QPRINT OBJECT 0.1; $GRAB 'OBJECT' OHEXFOOT1 GROUP .1 .2 SHIFT X (TB.+202)+73 SHIFT Z -875 EDGES LINE 200 33.27 44 195.4 0 85.8 37 LINE 195.4 0 85.8 200 -33.27 44 37 LINE 200 -33.27 44 200 33.27 44 37 COMPOSITE -3 GAPS -1 -1 ELLIPSE X 0 134/2 134/2 111 OBJECT; .2 =FITT_TOP2 INTERFACE COATING TVDA OBJECT; .1 .2 =FITT_COVER2 INTERFACE COATING TVDA QPRINT OBJECT 0.1; $GRAB 'OBJECT' OHEXFOOT2 GROUP .1 .2 SHIFT X (TB.+202)+73 SHIFT Z -875 ROTATE X 120 EDGES LINE 200 33.27 44 195.4 0 85.8 37 LINE 195.4 0 85.8 200 -33.27 44 37 LINE 200 -33.27 44 200 33.27 44 37 COMPOSITE -3 GAPS -1 -1 ELLIPSE X 0 134/2 134/2 111 OBJECT; .2 =FITT_TOP3 INTERFACE COATING TVDA OBJECT; .1 .2 =FITT_COVER3 INTERFACE COATING TVDA QPRINT OBJECT 0.1; $GRAB 'OBJECT' OHEXFOOT3 GROUP .1 .2 SHIFT X (TB.+202)+73 SHIFT Z -875 ROTATE X -120 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OM1E !! definition of M2 surface including rims and protective MLI. BRANCH ^.M2 SURFACE $IF (GAPAN) EQ 0 THEN OPTICAL X 0 (RM2) (CCM2) ELLIPSE 2@(RPUP2) +((HFNAR)/RPUP2) 0 0 $ELSE OPTICAL X 0 (RM2) (CCM2) ELLIPSE 2@(RPUP2) +((HFNAR+CHMFR+GAPAN)/RPUP2) 0 0 $ENDIF OBJECT; 0.1 =MIRR INTERFACE COATING TREFLECT SHIFT X (M1M2.+TB.+202) QPRINT OBJECT 0.1; $GRAB 'OBJECT' OM2A OM2=OM2A SURFACE TUBE X (M1M2.+TB.+202)+(SAG2+CHMFR+48-SAGM2(RPUP2+CHMFR)) 2@(RPUP2+CHMFR) (TB)-48+1909 2@64 OBJECT; 0.1 =MIRR_BACK !! INTERFACE COATING TMLI EDGES ELLIPSE X (SAG2) 2@(RPUP2) (NSEGM) ELLIPSE X (SAG2+CHMFR) 2@(RPUP2+CHMFR) (NSEGM) OBJECT; .1 .2 =RIM_CHMFR INTERFACE COATING TVDA SHIFT X (M1M2.+TB.+202) QPRINT OBJECT 0.1; $GRAB 'OBJECT' OM2RIM SURFACE TUBE X (SAG2+CHMFR) 2@(RPUP2+CHMFR) , (SAG2+CHMFR+48-SAGM2(RPUP2+CHMFR)) 2@(RPUP2+CHMFR) OBJECT; .1 =RIM_TUB INTERFACE COATING TVDA SHIFT X (M1M2.+TB.+202) $IF (GAPAN) NE 0 THEN EDGES ELLIPSE X (SAGM2(HFNAR+CHMFR)) 2@(HFNAR+CHMFR+GAPAN) (NSEGM) ELLIPSE X (SAGM2(HFNAR+CHMFR)+CHMFR) 2@(HFNAR+GAPAN) (NSEGM) OBJECT; .1 .2 =CENTHOLE_CHMFR INTERFACE COATING TVDA SHIFT X (M1M2.+TB.+202) SURFACE TUBE X (SAGM2(HFNAR+CHMFR)+CHMFR) 2@(HFNAR+GAPAN) , (SAGM2(HFNAR+CHMFR)+CHMFR)+5 2@(HFNAR+GAPAN) OBJECT; .1 'CENTHOLE_TUB' INTERFACE COATING TVDA SHIFT X (M1M2.+TB.+202) $ENDIF QPRINT OBJECT 0.1; $GRAB 'OBJECT' OM2E $DO (OM1A) (OM2E) OBJECT ?; REDEFINE COLOR 2 !!---------------------------------------------------------------------------- BRANCH ^.ANTINAR $IF (ANTYPE) GE -1 THEN SURFACE PLANE X REVOL(.5-ZNAR) ELLIPSE 2@.5 OBJECT; 0.1 'FLAT' INTERFACE COATING TREFLECT SHIFT X (M1M2+TB+XSYS) QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARA $ELSE !! case with no anti-narcissus, 'FLAT' is just a tiny (dummy) object SURFACE OPTICAL X (M1M2.+TB.+XSYS) (RM2) (CCM2) ELLIPSE 2@(HFNAR) OBJECT; 0.1 'FLAT' !! INTERFACE 1 0 INTERFACE COATING TREFLECT QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARA ONARTOR=ONARA; ONARS=ONARA $ENDIF $IF (ANTYPE) EQ -1 THEN !! anti-narcissus used in calculations up to end of may 2002 including !! all results in TN-0023-1 LSQFIT LIST OFF !! $FCN REVOL (XNAR)+SQRT(RNAR2-(_*_)) defined in section 1. SURFACE $DO 3 99; REVOLUTION X FIT, .5 REVOL(.5-ZNAR) , 0.19*? REVOL(?*0.19-ZNAR) , 19 REVOL(19-ZNAR) OBJECT; 0.1 'TOR' INTERFACE COATING TREFLECT SHIFT X (M1M2.+TB.+XSYS) RETURN QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARTOR ONARS=ONARTOR $ELSEIF (ANTYPE) GE 0 THEN !! anti narcissus filter with rim received 18.06.2002 from ASEF !! flat part already created above LSQFIT LIST OFF !! $FCN REVOL (XNAR)+SQRT(RNAR2-(_*_)) defined in section 1. NFIT=4 SURFACE $IF (GAPAN) EQ 0 THEN $DO 1 (NFIT)-1 1; REVOLUTION X FIT, .5 REVOL(.5-ZNAR) , .5+(HFNAR-.5)/(NFIT)*? REVOL(.5+(HFNAR-.5)/(NFIT)*?-ZNAR) , (HFNAR) REVOL(HFNAR-ZNAR) $ELSEIF (GAPAN) NE 0 THEN $DO 1 (NFIT)-1 1; REVOLUTION X FIT, .5 REVOL(.5-ZNAR) , .5+(HFNAR-CHMFR-.5)/(NFIT)*? REVOL(.5+(HFNAR-CHMFR-.5)/(NFIT)*?-ZNAR) , (HFNAR-CHMFR) REVOL(HFNAR-ZNAR-CHMFR) $ENDIF OBJECT; 0.1 'TOR' INTERFACE COATING TREFLECT SHIFT X (M1M2+TB+XSYS) QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARTOR $IF (GAPAN) EQ 0 THEN QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARS $ELSEIF (GAPAN) NE 0 THEN EDGES ELLIPSE X REVOL(HFNAR-ZNAR-CHMFR) 2@(HFNAR-CHMFR) (NSEGM) ELLIPSE X (CHMFR+REVOL(HFNAR-ZNAR-CHMFR)) 2@(HFNAR) (NSEGM) OBJECT; .1 .2 'CHMFR' INTERFACE COATING TVDA SHIFT X (M1M2+TB+XSYS) QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARS SURFACE TUBE X CHMFR+REVOL(HFNAR-ZNAR-CHMFR) 2@(HFNAR) , REVOL(HFNAR-ZNAR-CHMFR)+5 2@(HFNAR) OBJECT; .1 'RIM' INTERFACE COATING TVDA SHIFT X (M1M2+TB+XSYS) SURFACE TUBE X REVOL(HFNAR-ZNAR-CHMFR)+5 2@(HFNAR) , (SAGM2(HFNAR+CHMFR)+CHMFR)+5 2@(HFNAR+GAPAN) OBJECT; .1 'CLOSING' INTERFACE COATING TVDA SHIFT X (M1M2+TB+XSYS) $ENDIF $ENDIF QPRINT OBJECT 0.1; $GRAB 'OBJECT' ONARE !! find coordinates of vertex of primary mirror RAYS 0; RAYSET Z 0; 0 0; SOURCE DIR 0 0 1; PLACE OBJ (OM1) GET; XM1=X0; YM1=Y0; ZM1=Z0; RAYS 0 !! find coordinates of vertex of secondary mirror RAYS 0; RAYSET Z 0; 0 0; SOURCE DIR 0 0 1; PLACE OBJ (OM2) GET; XM2=X0; YM2=Y0; ZM2=Z0; RAYS 0 DM2SYS=XM2-XSYS !! distance M2--system focus ******************************************************************************* !! 4. Branch SPIRE BRANCH SPIRE !! contains BRANCH .HOUSING BRANCH ^.OPTICS !! there are several changes and additions made by Astrium ED !! a) object numbering, example: !! QPRINT OBJECT 0.3; $GRAB 'OBJECT' OSPIREA !! !! first object number of SPIRE stored in variable OSPIREA !! b) object names, example: !! SIDE1MZ shall indicate side towards minus Z !! c) choice of reflectivity of FP_UNIT is controlled !! with the value of variable SPRR !! SPRR=1 ---> FP_UNIT absorbing !! SPRR=2 ---> FP_UNIT reflecting with reflectivity 0.3 !! see below command $DO (OSPINFACE-1) (OSPBAFFLE) etc. !! d) Most edges needed for object creation may also serve for !! SCATTER ... TOWARDS EDGE (as received from ESTEC, see also macro LASTEDGE !! which sets the numbers used for that purpose). !! Some new edges are defined !! ---> for SCATTER .... TOWARDS !! ---> for M3 in order to have coordinates not only for the vertex !! but also for the physical mirror centre. !! e) Several INTERFACE number. commands have been changed to a totally equivalent command !! INTERFACE COAT SPREFM, where SPREFM is a coating name, the reflectivity of that coating !! is set to the original value. This change has been introduced in order to comply with !! the remainder of the Astrium file. !! f) Some walls are created as two objects with small space in between them in order to have !! different inner and outer reflectivity where necessary !! SPIRE macros shifted to section 1. !! SPIRE models, coatings etc. shifted to section 2. !! REMARKS: (by V.KIRSCHNER ??) !! - THERE'S NO WELL DEFINED STRUCTURE FOR THE OPTICS (ONLY FP-UNIT); OUT-OF-FIELD !! SCATTER IS, THEREFORE, NOT TAKEN INTO ACCOUNT !! - THE RATHER HIGH REFLECTIVITY OF THE STRUCTURE REQUIRES THE SCATTER LEVEL !! TO BE AS HIGH AS POSSIBLE BRANCH .HOUSING EDGES POINTS X 433.5, 93 -100 1, 105 -100 1, 105 -600 1, -105 -600 1, -105 -100 1, -91 -100 0 POINTS X 50, 93 -100 1, 105 -100 1, 105 -600 1, -105 -600 1, -105 -100 1, -91 -100 0 POINTS X 433.5, -105 -100 1, -91 -100 1, -91 -126.2 1, 93 -126.2 1, 93 -100 1, 105 -100 1, 105 -600 1, -105 -600 1 POINTS X 50, -105 -100 1, -91 -100 1, -91 -107.9 1, 93 -107.9 1, 93 -100 1, 105 -100 1, 105 -600 1, -105 -600 1 OBJECT .4 .3 *SIDES .2 *TOP .1 *BOTTOM QPRINT OBJECT 0.3; $GRAB 'OBJECT' OSPIREA !! first object number of SPIRE !! repetition of surfaces in order to create outer surfaces of SPIRE, introduced !! by ASED in order to have different inner/outer reflectivities EDGE; REPEAT 0.2 SHIFT X 1 OBJECT 0.1 *TOPO QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPTOPO !! outer top surface !!---------------------------------------------------------------------------- BRANCH .FP_UNIT !! surface of OSPBAFFLE copied (from below), !! used for BOUNDS for sides +Z, -Y, +Y of FP_UNIT SURFACES; PLANE X 0 ROTATE Y -18; SHIFT 232.8 0 -89.55 QPRINT SURFACE; $GRAB 'SURFUNC' SS XSPINP=445.5 EDGE !! =BOUNDS 0.20 for SIDE4PX, BOUNDS 0.6 for INPUT_FACE POINTS X 445.5, !! also created in branch optics for dummy object FPIN -87.9 -52.9 1, -67.0 -52.9 1, -67.0 -44.55 1, 53.1 -44.55 1, 53.1 -120.1 1, -87.9 -120.1 1 QPRINT EDGE 0.1; $GRAB 'CURVEDG' IEDSPINP SURFACES PLANE X 445.50 RECT 92.00 42.10 0 1.00 -84.10 !! for INPUT_FACE PLANE Y 53.10 RECT 33.60 6.00 0 -86.50 439.50 PLANE Y -87.90 RECT 33.60 6.00 0 -86.50 439.50 PLANE Z -120.1 RECT 6.00 70.50 0 439.50 -17.40 PLANE Z -52.9 RECT 6.00 10.45 0 439.50 -77.45 OBJECT .4 0 .3 0 .2 0 .1 0 *INPUT_EDGE .5 *INPUT_FACE BOUNDS .6 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPINFACE !! not reflecting in model SURFACES PLANE Z -44.55 RECT 50.00 60.05 0 395.500 -6.95 PLANE Y 53.10 RECT 4.175 50.00 0 -48.725 395.5 PLANE Y -67.00 RECT 4.175 50.00 0 -48.725 395.5 PLANE X 345.50 RECT 60.05 4.175 0 -6.950 -48.725 OBJECT .4 0 .3 0 .2 0 .1 0 *POCKET EDGES !! =BOUNDS 0.10 for SIDE1MZ RECT Z 0 30.83 61.66 !! also created in branch optics for object FPOUT SHIFT Y -10.02 ROTATE Y ATAN[-31.5/55.3] SHIFT 198.95 1 -134.05 POINTS Y -91, !! SIDE6MY, 0.9 -52.9 433.5 1, -126.2 433.5 1, -126.2 244.7 1, -118.3 226.6 1, -149.8 171.3 1, -107.9 50.0 1, -52.9 50.0 1 POINTS Y 93, !! SIDE5PY -52.9 433.5 1, -126.2 433.5 1, -126.2 244.7 1, -118.3 226.6 1, -149.8 171.3 1, -107.9 50.0 1, -52.9 50.0 1 SURFACES PLANE X 433.50 RECT 92.00 36.65 0 1.00 -89.55 !! SIDE4PX PLANE X 50.00 RECT 92.00 27.50 0 1.00 -80.40 !! SIDE3MX PLANE Z -52.90 RECT 191.75 92.00 0 241.75 1.00 !! SIDE2PZ PLANE Z -126.20 RECT 94.40 92.00 0 339.10 1.00 !! SIDE1MZ_UPPER PLANE Z 0.00 RECT SQRT(18.1^2+7.9^2)/2+1 92 !! SIDE1MZ_UPPER ROTATE Y ATAN[7.9/18.1] SHIFT 235.65 1 -122.25 PLANE Z 0.00 RECT SQRT(55.3^2+31.5^2)/2+1 92 !! SIDE1MZ_LOWER ROTATE Y ATAN[-31.5/55.3] SHIFT 198.95 1 -134.05 PLANE Z 0.00 RECT SQRT(121.3^2+41.9^2)/2+1 92 !! SIDE1MZ_LOWER ROTATE Y ATAN[41.9/121.3] SHIFT 110.65 1 -128.85 OBJECT .4 1 .3 1 *SIDE1MZ_UPPER BOUNDS -.2 .2 1 .1 1 *SIDE1MZ_LOWER BOUNDS -.3 .10 !! division into two objects for sides +Z, -Y, +Y introduced by ASED !! in order to enable the use of different scatter towards commands .5 *SIDE2PZ_UPPER BOUNDS (SS) MULTIPLE -.11 -.12 .13 .5 *SIDE2PZ_LOWER BOUNDS -(SS) .6 *SIDE3MX .7 *SIDE4PX BOUNDS .20 .8 *SIDE5PY_UPPER BOUNDS (SS) .8 *SIDE5PY_LOWER BOUNDS -(SS) .9 *SIDE6MY_UPPER BOUNDS (SS) .9 *SIDE6MY_LOWER BOUNDS -(SS) QPRINT OBJECT 0.5; $GRAB 'OBJECT' OSPSIDE4PX !! repetition of surfaces in order to create outer surfaces of SPIRE, introduced SURFACES !! by ASED in order to have different inner/outer reflectivities PLANE Z -44.55 RECT 50.00 60.05 0 395.500 -6.95 PLANE Y 53.10 RECT 4.175 50.00 0 -48.725 395.5 PLANE Y -67.00 RECT 4.175 50.00 0 -48.725 395.5 PLANE X 345.50 RECT 60.05 4.175 0 -6.950 -48.725 OBJECT; 0.4 *POCKETO !! outer side introduced by ASED SHIFT Z 0.5 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPPOCKO SURFACE PLANE Z -52.90 RECT 191.75 92.00 0 241.75 1.00 !! SIDE2PZ OBJECT; 0.1 *SIDE2PZO SHIFT Z 0.5 BOUNDS MULTIPLE -.2 -.3 .4 QPRINT OBJECT 0.5; $GRAB 'OBJECT' OSPSIDE4PZO EDGE POINTS X 0, 38.31 -24.14 1, 38.31 22.54 1, -53.09 22.54 1, -53.09 16.44 1, -78.11 16.44 1, -78.11 -16.85 1, -53.09 -16.85 1, -53.09 -24.14 1 QPRINT EDGE 0.1; $GRAB 'CURVEDG' IEDSPBAFFLE SURFACES PLANE X 0 RECT 92.00 38.54 0 1 0 OBJECT .1 *BAFFLE BOUNDS .2 ROTATE Y -18 SHIFT 232.8 0 -89.55 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPBAFFLE !! this DO-loop switches reflectivity of FP_UNIT on or off !! depending on the value of variable SPRR $DO (OSPINFACE-1) (OSPBAFFLE) { $IF ? EQ (OSPINFACE); $NEXT !! not reflecting in SPIRE file $IF (SPRR) EQ 1 OBJECT ?; INTERFACE COAT ABSORB $IF (SPRR) EQ 2 OBJECT ?; INTERFACE COAT SPREFS } $DO 2@(OSPTOPO) !! outer surface made reflecting (not reflecting in issue 1/2) OBJECT ?; INTERFACE COAT SPREFO $DO 2@(OSPINFACE) !! now made reflecting (not reflecting in issue 1/2) OBJECT ?; INTERFACE COAT SPREFO $DO 2@(OSPSIDE4PZO) !! outer surface of side +z, has different emissivity OBJECT ?; INTERFACE COAT SPREFO !! from that of inner side $DO 2@(OSPPOCKO) !! outer surface of pocket, has different emissivity OBJECT ?; INTERFACE COAT SPREFO !! from that of inner side BRANCH ^ !!---------------------------------------------------------------------------- !! COLD STOP, absorbing annular surface. !! In addition a transmitting dummy surface is created in the center of this annulus, !! see below in branch optics !! variables also used for transmitting stop surface !! i.e. object COLD_STOP_TRANS in branch optics RXSSTP=19.904; RYSSTP=23.064 !! according to e-mail 29.04.02 EDGE ELLIP Z 0 (RXSSTP) (RYSSTP) LASTEDGE EDG_STOP_RING SURFACE !! TUBE used for BOUNDS TUBE Z -1 (RXSSTP) (RYSSTP) 1 (RXSSTP) (RYSSTP) PLANE Z 0 ELLIP 2@45 OBJECT .1 *COLD_STOP_RING BOUNDS .2 ROTATE Y ASIN[0.679971] !! according to e-mail 29.04.02 SHIFT 192.327 0 -448.460 !! according to e-mail 29.04.02 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSSTOP !! inner walls of SPIRE SURFACES PLANE Z 0 RECT 134 105 ROTATE Y ASIN[0.286481] !! same rotation/shift as for M7 SHIFT 304 0 -341 OBJECT; 0.1 'WALLM7' EDGES ELLIPSE Z 0 2@45 !! used for bounds ROTATE Y ASIN[0.679971] !! according to e-mail 29.04.02 SHIFT 192.327 0 -448.460 !! according to e-mail 29.04.02 !!SURFACE !! TUBE Z -50 2@45 50 2@45 !! used for bounds, see COLD_STOP_RING !! ROTATE Y ASIN[0.679971] !! according to e-mail 29.04.02 !! SHIFT 192.327 0 -448.460 !! according to e-mail 29.04.02 SURFACE PLANE Z -480 RECT (433.5-50)/2 105 SHIFT X (433.5+50)/2 OBJECT; 0.1 'WALLM8' BOUNDS 0.2 !!---------------------------------------------------------------------------- BRANCH ^.OPTICS !! Branch optics contains the optics and dummy surfaces within the optical path !! which have been used for finding the flux and irradiance at that places. !! Dummy surfaces introduced by Astrium ED (with transmission 1.0, no scattering): !! objects FPIN, FPOUT, COLD_STOP_TRANS !! dummy surface FPIN EDGE !! Also created above as BOUNDS 0.20 for SIDE4PX, as BOUNDS .6 for INPUT_FACE. POINTS X 445.5, -87.9 -52.9 1, -67.0 -52.9 1, -67.0 -44.55 1, 53.1 -44.55 1, 53.1 -120.1 1, -87.9 -120.1 1 SURFACES !! This SURFACE is basically the same as used above for INPUT_FACE which is a stop. !! BOUNDS was used For INPUT_FACE to obtain the hole. !! Here a transmitting dummy surface (FPIN) is created filling the hole. !! The decenter values of INPUT_FACE are not used here, instead a SHIFT is used, !! because then the grahics of PLOT FACETS and SPOTS POS is displayed in a better way. PLANE X 445.50 RECT 92.00 42.10 SHIFT Z -82.55794 !! The value -82.55794 was gained by trace of chief ray. OBJECT; 0.1 'FPIN' BOUNDS -.2 INTERFACE COAT TRANSMIT QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPFPIN $DO 2@(OSPFPIN) WND?=100 !! Window value !!---------------------------------------------------------------------------- !! THERMAL FILTER 1 !! edge and surface of object BAFFLE repeated here ZSYSSM=-24.14*COS[-18]-89.55 !! smallest Z of object PFIL1 EDGE POINTS X 0, 38.31 -24.14 1, 38.31 22.54 1, -53.09 22.54 1, -53.09 16.44 1, -78.11 16.44 1, -78.11 -16.85 1, -53.09 -16.85 1, -53.09 -24.14 1 SURFACES PLANE X 0 RECT 92.00 38.54 0 1 0 OBJECT .1 *PFIL1 BOUNDS -.2 ROTATE Y -18 SHIFT 232.8 0 -89.55 INTERFACE COAT TRANSMIT !! rotate and shift of object BAFFLE repeated here QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPFIL1 $DO 2@(OSPFIL1) WND?=100 !! values used for ASAP command WINDOW below !!---------------------------------------------------------------------------- !! MIRROR 3 !! earlier object M3_OBSTRUCTION deleted (as instructed by RAL) !! Now object M3 as defined by design description and by e-mail exchange. !! The programming uses some auxiliary edges, in order to have coordinates !! not only for the vertex but also for the physical mirror centre. SURFACE !! = optical for off-axis conics R=365.963; CC=-0.5095 OPTICAL X 0 (R) (CC) RECT 100 300 !! physical size limited with BOUNDS, see below PARAMETERIZE -X OBJECT 0.1 *M3 INTERFACE COAT SPREFM QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPM3 !! edge point created with general sag formula, this edge point !! occupies the offset position of M3, i.e. the physical mirror centre Z=146.72278 !! offset value as received by e-mail X=Z^2/R/(1+SQRT(1-(1+CC)*((Z/R)^2))) !! sag EDGES; POINTS (X) 0 (Z) 0 QPRINT EDGE 0.1; $GRAB 'CURVEDG' ESPM3 !! surface normal at point (X/Z) intersects the X-axis at XN !! (in local coordinate system with vertex at 0, no rotations, no shifts) XN=R+X*ABS(CC) !! from elementary ellipsoidal geometry) RAYS 0; CONSIDER ONLY 0 0.1 RAYSET X (XN); 0 0; SOURCE FOCUS (X) 0 (Z) GET !! get direction cosines A0 B0 C0 of normal on offset-point !!$IO OUTPUT 6 !!$IO VECTOR REWIND; WINDOW X 0 (XN) Z -2@(XN/2) !!PLOT FACETS 3 3 OVERLAY 'M3 IN LOCAL COORDINATE SYSTEM BEFORE RESHAPING BY BOUNDS' !!TRACE PLOT !! check surface normal !! align M3 such that the normal on the offset-point is parallel to X-axis, !! this alignment is necessary for an appropriate use of BOUNDS GROUP -1; ALIGN (A0) (B0) (C0) -1 0 0 (XN) 0 0 EDGES; RECT X -10 139/2 62/2; SWEEP DIR 50 1 0 0 !! edge for bounds SHIFT Y -19.5 OBJECT 0.1 BOUNDS -0.1 !! M3 now has its final shape EDGES; RECT X 0 139/2 62/2; SHIFT Y -19.5 !! create edge for SCATTER ... TOWARDS LASTEDGE EDG_M3 $DO 2@(OSPM3) WND?=139/2+30 !! Window value !! perform realignment of M3 to its orientation when created GROUP -1; ALIGN -1 0 0 (A0) (B0) (C0) (XN) 0 0 EDGE (EDG_M3); ALIGN -1 0 0 (A0) (B0) (C0) (XN) 0 0 !! also this edge has to be realigned !!RAYS 0; CONSIDER ONLY 0 0.1 !!$IO VECTOR REWIND; WINDOW X 0 (XN) Z -2@(XN/2) !!$IO OUTPUT 6 !!PLOT FACETS 3 3 OVERLAY 'M3 IN LOCAL COORDINATE SYSTEM AFTER RESHAPING BY BOUNDS' !!RAYSET X (XN); 0 0; SOURCE FOCUS (X) 0 (Z) !!TRACE PLOT !! check bounds and surface normal !!$IO OUTPUT CANCEL !! now rotations and shifts with data as reveived by e-mail CONSIDER ALL GROUP -1 !! final rotations and shifts for object M3, basic data received by e-mail ROTATE Y (-8.6834) 0 0 !! according to e-mail 29.04.02 SHIFT 123.6207094 0 -243.0658575 !! according to e-mail 29.04.02 RETURN EDGE (ESPM3) !! final rotations and shifts for offset point for M3 ROTATE Y (-8.6834) 0 0 !! according to e-mail 29.04.02 SHIFT 123.6207094 0 -243.0658575 !! according to e-mail 29.04.02 RETURN EDGE (EDG_M3) !! final rotations and shifts for edge M3 for SCATTER ... TOWARDS ROTATE Y (-8.6834) 0 0 !! according to e-mail 29.04.02 SHIFT 123.6207094 0 -243.0658575 !! according to e-mail 29.04.02 RETURN !!---------------------------------------------------------------------------- !! dummy surface FPOUT EDGES !! also created above as BOUNDS 0.10 for SIDE1MZ RECT Z 0 30.83 61.66 QPRINT EDGE 0.1; $GRAB 'CURVEDG' ESPFPOUT SURFACE PLANE Z 0 RECT 40 80 OBJECT; 0.1 'FPOUT' BOUNDS -.2 INTERFACE COAT TRANSMIT SHIFT Y -10.02 ROTATE Y ATAN[-31.5/55.3] SHIFT 198.95 1 -134.05 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPFPOUT $DO 2@(OSPFPOUT) WND?=80 !! Window value !!---------------------------------------------------------------------------- !! MIRROR 4 = Chopper EDGE RACETRACK X 0 4@16 LASTEDGE EDG_M4 SURFACE PLANE X 3 ELLIP 2@2 !! M4_HOLE TUBE X 3 2@2 0 2@2 !! for bounds of M4 PLANE X 0 ELLIP 45 48 1/3 !! M4_APERTURE 45 48 are chosen such that fractional hole 1/3 is compatible !! with data 15 16 of next plane PLANE X 0 ELLIP 15 16 !! M4 from design description OBJECT .4 0 .3 0 *M4_HOLE .2 *M4_APERTURE .1 *M4 BOUNDS .3 -.5 INTERFACE COAT SPREFM QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPM4 $DO 2@(OSPM4) WND?=48 !! Window value GROUP -3 $IF (SPM4C) EQ 1; SHIFT Z -0.5 !! introduceded by ASED ROTATE Y ASIN[0.308074] !! according to e-mail 29.04.02 SHIFT 316.125 0 -200.094 !! according to e-mail 29.04.02 CHOP=0; JIGG=0 !!---------------------------------------------------------------------------- !! MIRROR 5 EDGE RACETRACK X 0 161/2 85/2 1.000000 1.000000; SHIFT 0 19.5 -1.5 !! RACETRACK X 0 100.0000 42.50000 1.000000 1.000000 EDGE RACETRACK X 0 161/2 85/2 1.000000 1.000000; SHIFT 0 19.5 -1.5 LASTEDGE EDG_M5 !! = optical for object M5 from data in design description SURFACE BICONIC X 0 278.418 294.638 0 0 3 RECT 161/2 85/2 0 19.5 -1.5 PARAMETERIZE -X !! +Y,+Z wrong, +X,-Z bad, -Y medium OBJECT 0.1 *M5 BOUNDS -.2 INTERFACE COAT SPREFM ROTATE Y ASIN[0.261269] !! according to e-mail 29.04.02 SHIFT 119.783 0 -179.689 !! according to e-mail 29.04.02 !!---------------------------------------------------------------------------- !! MIRROR 6 EDGE RACETRACK X 0 23.00000 13.50000 1.000000 1.000000 LASTEDGE EDG_M6 SURFACE !! = optical for object M6 from data in design description BICONIC X 0 359.42 307.49 0 0 3 RECT 46/2 27/2 PARAMETERIZE -X OBJECT 0.1 *M6 BOUNDS -.2 INTERFACE COAT SPREFM ROTATE Y ASIN[0.162592] !! according to e-mail 29.04.02 SHIFT 296.151 0 -259.533 !! according to e-mail 29.04.02 !!---------------------------------------------------------------------------- !! MIRROR 7 EDGE RACETRACK X 0 59.00000 51.50000 1.000000 1.000000; SHIFT Z -1 LASTEDGE EDG_M7 !! this SHIFT is from the design description SURFACE !! = optical for object M7 from data in design description OPTICAL X 0 330.7000 RECT 118/2 101/2 0 0 -1 OBJECT .1 *M7 BOUNDS -.2 ROTATE Y ASIN[0.286481] !! according to e-mail 29.04.02 SHIFT 94.234 0 -279.481 !! according to e-mail 29.04.02 INTERFACE COAT SPREFM !!---------------------------------------------------------------------------- !! THERMAL FILTER 2 !! changed so that rays pass nearly perpendicularly EDGE RACETRACK Z 0 34.075 43.76 2@20; SHIFT X 2 ROTATE Y ACOS[-0.4998992] SURFACE PLANE Z 0 ELLIP 34.075 43.76 0 2 0 ROTATE Y ACOS[-0.4998992] OBJECT .1 *PFIL2 BOUNDS -0.2 INTERFACE COAT TRANSMIT SHIFT 191.748 0 -358.431 !!---------------------------------------------------------------------------- !! MIRROR 8 EDGE !! RECT X 0 29 30 ELLIPSE X 0 30 30 LASTEDGE EDG_M8 !! = optical for object M8 from data in design description EDGE RECT X 0 30 30 LASTEDGE EDG_M8 SURFACE OPTICAL X 0 286.6510 ELLIP 2@60/2 OBJECT .1 *M8 BOUNDS -.2 ROTATE Y ASIN[-0.0716828] !! according to e-mail 29.04.02 SHIFT 240.466 0 -397.634 !! according to e-mail 29.04.02 INTERFACE COAT SPREFM !!---------------------------------------------------------------------------- !! COLD STOP as transmitting disk, absorbing annular stop shifted to the end !! of branch housing, there (RXSSTP) (RYSSTP) are defined. EDGE !! ELLIP Z 0 20.068 23.285 ELLIP Z 0 (RXSSTP) (RYSSTP) LASTEDGE EDG_STOP_TRANS SURFACE PLANE Z 0 ELLIP (RXSSTP) (RYSSTP) OBJECT .1 *COLD_STOP_TRANS INTERFACE COAT TRANSMIT !! BOUNDS -.2 no longer used ROTATE Y ASIN[0.679971] !! according to e-mail 29.04.02 SHIFT 192.327 0 -448.460 !! according to e-mail 29.04.02 INTERFACE COAT TRANSMIT REDEFINE COLOR 2 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSPUP !!---------------------------------------------------------------------------- !! MIRROR 9 EDGE RECT X 0 2@56 LASTEDGE EDG_M9 SURFACE OPTICAL X 0 350.8510 RECT 56 56 OBJECT .1 *M9 BOUNDS -.2 ROTATE Y ASIN[-0.456474] !! according to e-mail 29.04.02 SHIFT 104.471 0 -544.281 !! according to e-mail 29.04.02 INTERFACE COAT SPREFM RAYS 0; RAYSET Z 0; 0 0; SOURCE DIR 0 0 1; PLACE OBJ 0.1 GET; XM9=X0; YM9=Y0; ZM9=Z0; RAYS 0 !!---------------------------------------------------------------------------- !! DETECTOR EDGE !! the detector extension is made somewhat larger than in the ESTEC file !! in order to catch aberrated rays at the rim of the 8x4' field SDETDY=41/2; SDETDZ=22/2 !! selected semiextension RECT X 0 (SDETDY) (SDETDZ) !! from SPIRE design description page 14 !! RECT X 0 19.1 9.55 !! from ESTEC file LASTEDGE EDG_DET SURFACE; OPTICAL X 0 100000 RECT (SDETDY) (SDETDZ) !! made with quasi zero curvature, but not exactly zero, !! then ASAP shows the centre in graphs ANGSDET=-0.124657 !! according to e-mail 29.04.02 OBJECT .1 *DETECTOR ROTATE Y ASIN[ANGSDET] SHIFT 421.976 0 -504.393 !! according to e-mail 29.04.02 QPRINT OBJECT 0.1; $GRAB 'OBJECT' OSDET $DO 2@(OSDET) WND?=(SDETDY>SDETDZ) !! Window value !! some commands follow which finally store data of the components on the optical path, especially !! AS? BS? CS? = direction cosines of the normals on the surfaces !! XS? YS? ZS? = XYZ-coordinates of the centres $DO (OSPFPIN) (OSDET) { RAYS 0; RAYSET X 0; 0 0; SOURCE DIR NOR OBJ ?; PLACE OBJ ?; GET XS?=X0; YS?=Y0; ZS?=Z0; AS?=A0; BS?=B0; CS?=C0 $IF (AS?) LT 0; AS?=-AS?; BS?=-BS?; CS?=-CS? } !! overwrite vertex coordinates of M3 with coordinates of physical centre $DO 2@(OSPM3) { RAYS 0; RAYSET X 0; 0 0; SOURCE DIR 1 0 0; PLACE EDG (ESPM3); GET XS?=X0; YS?=Y0; ZS?=Z0 } !! macro ANGBIS delivers the surface normal at offset-position of M3 XA=XM2; YA=0; ZA=0 !! use M2 for macro ANGBIS $DO 2@(OSPM3) XB=XS?; YB=YS?; ZB=ZS? $DO 2@(OSPM3+2) !! use M4 for macro ANGBIS XC=XS?; YC=YS?; ZC=ZS? ANGBIS $DO 2@(OSPM3) AS?=A; BS?=B; CS?=C !! surface normal for M3 at offset-position $IO OUTPUT 6; $ECHO NONE $SCR 6 SELECTED OBJECT NUMBERS WITHIN SPIRE OSPFPIN=\OSPFPIN\ OSPFIL1=\OSPFIL1\ OSPM3=\OSPM3\ OSPUP=\OSPUP\ OSDET=\OSDET\ OBJECT COORDINATES FOR SPIRE DIRECTION COSINES OF SURFACE NORMAL NUMBER X Y Z X Y Z M=OM1; N=OM2; A=1; B=0; C=0; $SCR 2 \M\ \XM1. \ \YM1.\ \ZM1. \ \A. \ \B. \ \C. \ MIRROR M1 \N\ \XM2. \ \YM2.\ \ZM2. \ \A. \ \B. \ \C. \ MIRROR M2 $DO (OSPFPIN) (OSDET) { N=?; X=XS?; Y=YS?; Z=ZS?; A=AS?; B=BS?; C=CS?; $SCR 1 \N\ \X. \ \Y. \ \Z. \ \A. \ \B. \ \C. \ } OSPIREE=OSDET !! last object number of SPIRE !! find coordinates of SPIRE pupil at cold stop RAYS 0; RAYSET Z 0; 0 0; SOURCE DIR 0 0 1; PLACE OBJ (OSPUP) GET; XSPUP=X0; YSPUP=Y0; ZSPUP=Z0; RAYS 0 !! find normal of SPIRE pupil at cold stop RAYS 0; RAYSET Z 0; 0 0; SOURCE DIR NOR OBJ (OSPUP) GET; ASPUP=A0; BSPUP=B0; CSPUP=C0; RAYS 0 !! find coordinates of SPIRE detector RAYS 0; RAYSET Z 0; 0 0; SOURCE DIR 0 0 1; PLACE OBJ (OSDET) GET; XSDET=X0; YSDET=Y0; ZSDET=Z0; RAYS 0 SYSTEM TO LASTEXEC *********************************************************************************** !! 5. Some raytraces !! These raytraces on model check are not commented as thoroughly as the commands !! on SPIRE, their intention is to create pictures accelerating the model check. CONSIDER ALL !! direction cosines found (by iteration) for SPIRE chief ray starting at M2. !! Iteration not done to ultimate accuracy. SRCOSB=0 SRCOSC=-.034457706316492323 $ECHO NONE !! find intersection of chief ray with system focal plane, i.e. object PFIL1 RAYS 0; CONSIDER ONLY 0 (OSPFIL1) RAYSET X (XM2); 0 0; SOURCE DIRECTION - (SRCOSB) (SRCOSC) TRACE; GET; XSYSS=X0; YSYSS=Y0; ZSYSS=Z0 !! ------------------------------------------------------------------------- !! SPIRE central beam, !! grid on secondary, source in system focus, trace backwards RAYS 0; CONSIDER ONLY 0 (OM1) (OM2) GRID ELLIPTIC X (XM2+SAG2) -4@(RPUP2) 2@11 (RNAR/RPUP2) SOURCE POSITION (XSYSS) (YSYSS) (ZSYSS) MOVE BY X (-DM2SYS+200) $IO VECTOR REWIND; WINDOW X Z PLOT FACETS 2 2 OVERLAY 'SPIRE FOCAL RAYS, BACKWARD TRACE' TRACE STATS PLOT CONSIDER ONLY (OM1) STATS DIR GET; SRCSA=-A0; SRCSB=-B0; SRCSC=-C0 SCHFZ=ASIN[SRCSC] !! =new direction cosines for chief ray sky--->M1 (--->SPIRE-center) !! Check with source direction used later on: !! chief ray of SPIRE photometer according to design description page 134 A=COS[10/60+59/3600]; B=0.0; C=-SIN[10/60+59/3600] $SCR 3 SRCSABC=\SRCSA. \ \SRCSB. \ \SRCSC. \ ANGLE=\SCHFZ. \ ABC=\A. \ \B. \ \C. \ SELECT ALL $IO !! list objects hit by SPIRE chief ray (starting from secondary) !! PLOT FACETS done with many facets for recognition of edges ARROWS OFF; RAYS 0; CONSIDER ALL !! additional object: M4 center hole has to be filled for trace of chief ray, !! this is done in macro M4CENTRE M4CENTRE AXIS LOCAL RAYSET X 0; 0 0 SOURCE FOCUS (-DM2SYS) 0 0 ALIGN -1 0 0 - (SRCOSB) (SRCOSC) 0 0 0 SHIFT (XM2) (YM2) (ZM2) MOVE BY X -20 CONSIDER ONLY SPIRE.? TITLE 'SPIRE CENTRAL RAY UP TO SPIRE FOCUS' PLTFCS !! macro for plot facets TRACE DIR PLOT CONSIDER ONLY (OSDET) GET; NSTPS=ABS(L0) !! ray has hit NSTPS surfaces up tp detector !! (without M1,M2), so: NSTPS=NSTPS+2 !! ray has hit NSTPS surfaces up tp detector $SCR 1 NSTPP=\NSTPP\ NSTPS=\NSTPS\ AXIS OFF $IO !! ------------------------------------------------------------------------- !! SPIRE center beam up to detector RAYS 0 CONSIDER ALL SYSTEM FROM LASTEXEC !! restore system without additional M4-center GRID ELLIP X 0 -4@(RPUP) 19 19 (DIAM1H*0.51/RPUP) SOURCE DIR - (SRCSB) (SRCSC) SHIFT X (XM1); MOVE BY X 1000 TITLE 'SPIRE FOCAL BEAM UP TO DETECTOR' PLTFCT !! macro for plot facets TRACE PLOT $IO !! ------------------------------------------------------------------------- !! SPIRE field of view, trace up to system focus, !! then to detector RAYS 0; CONSIDER ALL GRID ELLIP X 0 -4@(RPUP) 19 19 (DIAM1H*0.51/RPUP) !! field extension compatible with +-4 x +-2 arcmin FSY=4/60; FSZ=2/60 SOURCE DIRECTION -1 TAN[FSY] TAN[SCHFZ+FSZ], -1 TAN[FSY] TAN[SCHFZ], -1 TAN[FSY] TAN[SCHFZ-FSZ], -1 TAN[FSY/2] TAN[SCHFZ+FSZ], -1 TAN[FSY/2] TAN[SCHFZ], -1 TAN[FSY/2] TAN[SCHFZ-FSZ], -1 0 TAN[SCHFZ+FSZ], -1 0 TAN[SCHFZ], -1 0 TAN[SCHFZ-FSZ], -1 TAN[-FSY/2] TAN[SCHFZ+FSZ], -1 TAN[-FSY/2] TAN[SCHFZ], -1 TAN[-FSY/2] TAN[SCHFZ-FSZ], -1 TAN[-FSY] TAN[SCHFZ+FSZ], -1 TAN[-FSY] TAN[SCHFZ], -1 TAN[-FSY] TAN[SCHFZ-FSZ] SHIFT X (XM1); MOVE BY X 1000 GET 0.1; NSRC=J0 !! GET last ray: --> yields number of sources CONSIDER ONLY 0 (OM1) (OM2) (OSPFIL1) TRACE STEP 3 $ECHO NONE CONSIDER ONLY (OSPFIL1) STATS $DO 1 (NSRC) { SELECT ONLY SOURCE ? !! store coordinates found for GET; XSPI?=X0; YSPI?=Y0; ZSPI?=Z0 !! telescope system focal surface } SELECT ALL; CONSIDER ALL RAYS 0 GRID POLAR X 0 (DIAM1H*0.51) (RPUP) 0 360 9 6 SOURCE DIRECTION -1 TAN[FSY] TAN[SCHFZ+FSZ], -1 TAN[FSY] TAN[SCHFZ], -1 TAN[FSY] TAN[SCHFZ-FSZ], -1 TAN[FSY/2] TAN[SCHFZ+FSZ], -1 TAN[FSY/2] TAN[SCHFZ], -1 TAN[FSY/2] TAN[SCHFZ-FSZ], -1 0 TAN[SCHFZ+FSZ], -1 0 TAN[SCHFZ], -1 0 TAN[SCHFZ-FSZ], -1 TAN[-FSY/2] TAN[SCHFZ+FSZ], -1 TAN[-FSY/2] TAN[SCHFZ], -1 TAN[-FSY/2] TAN[SCHFZ-FSZ], -1 TAN[-FSY] TAN[SCHFZ+FSZ], -1 TAN[-FSY] TAN[SCHFZ], -1 TAN[-FSY] TAN[SCHFZ-FSZ] SHIFT X (XM1); MOVE BY X 1000 CONSIDER ONLY SPIRE.? TITLE 'SPIRE FIELD, GRID BEFORE M1' PLTFCS !! macro for plot facets CONSIDER EXCEPT (OHEXA):(OHEXE) TRACE STEP 3 TRACE PLOT CONSIDER ONLY (OSDET) $DO 1 (NSRC) { SELECT ONLY SOURCE ?; STATS POS GET; XSCD?=X0; YSCD?=Y0; ZSCD?=Z0 !! store coordinates in detector surface } SELECT ALL $IO !!--------------------------------------------------------------------------- !! spots on SPIRE objects SRCFRWD { RAYS 0; $IO OUTPUT CANCEL CONSIDER ALL SYSTEM FROM LASTEXEC NR=21 GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[FSY] TAN[SCHFZ+FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[FSY] TAN[SCHFZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[FSY] TAN[SCHFZ-FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[FSY/2] TAN[SCHFZ+FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[FSY/2] TAN[SCHFZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[FSY/2] TAN[SCHFZ-FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 0 TAN[SCHFZ+FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 0 TAN[SCHFZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 0 TAN[SCHFZ-FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[-FSY/2] TAN[SCHFZ+FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[-FSY/2] TAN[SCHFZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[-FSY/2] TAN[SCHFZ-FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[-FSY] TAN[SCHFZ+FSZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[-FSY] TAN[SCHFZ] GRID POLAR X 0 (DIAM1H/2) (RPUP) 0 360 (NR) 6 RANDOM 0.99 SOURCE DIRECTION -1 TAN[-FSY] TAN[SCHFZ-FSZ] RAYSET; SHIFT X (XM1); MOVE BY X 1000 $IO OUTPUT 6 } NSTPTR=2 $DO (OSPFPIN) (OSDET) { $IF (?) NE (OSPM4-2) AND (?) NE (OSPM4-1) THEN SRCFRWD NSTPTR=NSTPTR+1 SPTSSP ? 1 FORWARD_TRACE (NSTPTR) CONSIDER ALL $ENDIF } CONSIDER ONLY (OSDET) PATHS TOTAL 0.0001 $IO !! ------------------------------------------------------------------------- !! chief beam for SPIRE, SPIRE field from above RAYS 0; CONSIDER ALL !! additional object: M4 center hole has to be filled for trace of chief ray, !! this is done in macro M4CENTRE M4CENTRE $DO 1 (NSRC) { RAYSET X (XM2); 0 0 SOURCE FOCUS (XSPI?) (YSPI?) (ZSPI?) } MOVE BY X -20 TITLE 'SPIRE FIELD, CHIEF RAYS ON M2, UP TO DETECTOR' PLTFCT !! macro for plot facets TRACE PLOT COLOR 1 $IO !! ------------------------------------------------------------------------- !! ring grid on secondary, SPIRE field from above RAYS 0; CONSIDER ALL SYSTEM FROM LASTEXEC !! restore system without M4-center $DO 1 (NSRC) { !! RAYSET X (XM2); 0 0 GRID POLAR X (XM2+SAG2) (RPUP2-1) (RPUP2) 0 360 1 12 SOURCE FOCUS (XSPI?) (YSPI?) (ZSPI?) } TITLE 'SPIRE FIELD, RING GRID AT M2, UP TO DETECTOR' PLTFCT !! macro for plot facets CONSIDER EXCEPT (OM2):(ONARE) TRACE PLOT COLOR 1 $IO OUTPUT 6 $DO 1 (NSRC) { X=XSPI?; Y=YSPI?; Z=ZSPI?; N=?; $SCR 1 XYZ(sysfoc)\N\ =\X. \ \Y. \ \Z. \ } $DO 1 (NSRC) { X=XSCD?; Y=YSCD?; Z=ZSCD?; N=?; $SCR 1 XYZ(detector)\N\ =\X. \ \Y. \ \Z. \ } $IO !! ------------------------------------------------------------------------- !! ring grid on secondary, SPIRE field from above, !! find pupil rim, trace shown only near M4 and cold stop RAYS 0; CONSIDER ONLY 0 (OSPM4) (OSPM4+2) (OSSTOP) (OSPUP-1):(OSPUP) $DO 1 (NSRC) { !! RAYSET X (XM2); 0 0 GRID POLAR X (XM2+SAG2) (RPUP2-1) (RPUP2) 0 360 1 12 SOURCE FOCUS (XSPI?) (YSPI?) (ZSPI?) } $IO VECTOR REWIND; WINDOW X Z PLOT FACETS 5 5 OVERLAY 'SPIRE FOCAL BEAM WITH RING GRID NEAR PUPIL' CONSIDER EXCEPT (OM2):(ONARE) TRACE STEP (NSTPS-11) TRACE PLOT COLOR 1 STEP 7 $IO $SCR 1 NSTPS=\NSTPS \ CONSIDER ONLY (OSSTOP) (OSPUP) GROUP (OSSTOP) (OSPUP) ALIGN (ASPUP) (BSPUP) (CSPUP) 1 0 0 (XSPUP) (YSPUP) (ZSPUP) $IO VECTOR REWIND; WINDOW Y Z PLOT FACETS 5 5 OVERLAY 'RAYS FROM PUPIL RIM IMAGED ONTO COLD STOP' RAYSET; ALIGN (ASPUP) (BSPUP) (CSPUP) 1 0 0 (XSPUP) (YSPUP) (ZSPUP) SPOTS POS ATTR 1 'RAYS FROM PUPIL RIM IMAGED ONTO COLD STOP' GROUP (OSSTOP) (OSPUP) ALIGN 1 0 0 (ASPUP) (BSPUP) (CSPUP) (XSPUP) (YSPUP) (ZSPUP) $IO !! ------------------------------------------------------------------------- !! ring grid on inner hole of primary, SPIRE field !! RAYS 0; CONSIDER ALL GRID POLAR X (XM1+SAG1H) (DIAM1H/2+10) (DIAM1H/2+11) 0 360 1 12 !! somewhat larger than the inner hole of M1 SOURCE DIRECTION -1 TAN[FSY] TAN[SCHFZ+FSZ], -1 TAN[FSY] TAN[SCHFZ], -1 TAN[FSY] TAN[SCHFZ-FSZ], -1 TAN[FSY/2] TAN[SCHFZ+FSZ], -1 TAN[FSY/2] TAN[SCHFZ], -1 TAN[FSY/2] TAN[SCHFZ-FSZ], -1 0 TAN[SCHFZ+FSZ], -1 0 TAN[SCHFZ], -1 0 TAN[SCHFZ-FSZ], -1 TAN[-FSY/2] TAN[SCHFZ+FSZ], -1 TAN[-FSY/2] TAN[SCHFZ], -1 TAN[-FSY/2] TAN[SCHFZ-FSZ], -1 TAN[-FSY] TAN[SCHFZ+FSZ], -1 TAN[-FSY] TAN[SCHFZ], -1 TAN[-FSY] TAN[SCHFZ-FSZ] MOVE BY X 1000 TITLE 'RING GRID NEAR INNER HOLE OF PRIMARY' PLTFCT !! macro for plot facets TRACE PLOT STEP 7 COLOR 1 $IO !! ------------------------------------------------------------------------- !! backward trace within SPIRE from detector CONSIDER ALL RAYS 0 $DO 1 (NSRC) { GRID ELLIPTIC X (XM9) (YM9-56) (YM9+56) (ZM9-56) (ZM9+54) 2@11 SOURCE POSITION (XSCD?) (YSCD?) (ZSCD?) } MOVE TO X (XSDET-10) TITLE 'BACKWARD TRACE FROM SPIRE DETECTOR' PLTFCT !! macro for plot facets TRACE STATS PLOT $IO !! ------------------------------------------------------------------------- !! backward trace within SPIRE from detector, increased field SRCBCKW { $IO OUTPUT CANCEL CONSIDER ALL; RAYS 0 SYSTEM FROM LASTEXEC X=SDETDZ*SIN[ANGSDET] Z=SDETDZ*COS[ANGSDET] GRID ELLIPTIC X (XM9) (YM9-56) (YM9+56) (ZM9-56) (ZM9+54) 2@(NRAY) RANDOM 0.9 SOURCE FOCUS (XSDET+X) (-SDETDY) (ZSDET-Z), (XSDET+X) (-SDETDY/2) (ZSDET-Z), (XSDET+X) 0 (ZSDET-Z), (XSDET+X) (SDETDY/2) (ZSDET-Z), (XSDET+X) (SDETDY) (ZSDET-Z), (XSDET) (-SDETDY) (ZSDET), (XSDET) (-SDETDY/2) (ZSDET), (XSDET) 0 (ZSDET), (XSDET) (SDETDY/2) (ZSDET), (XSDET) (SDETDY) (ZSDET), (XSDET-X) (-SDETDY) (ZSDET+Z), (XSDET-X) (-SDETDY/2) (ZSDET+Z), (XSDET-X) 0 (ZSDET+Z), (XSDET-X) (SDETDY/2) (ZSDET+Z), (XSDET-X) (SDETDY) (ZSDET+Z) RAYSET MOVE TO X (XSDET-10) $IO OUTPUT 6 } NRAY=41 $DO 2@(OSDET) { SRCBCKW NSTPTR=1 CONSIDER ONLY 0 (OSPIREA):(OSPIREE) SPTSSP ? 0 BACKWARD_TRACE (NSTPTR) } NSTPTR=0 $DO (OSDET-1) (OSPFPIN) { $IF (?) NE (OSPM4-2) AND (?) NE (OSPM4-1) THEN NSTPTR=NSTPTR+1 SRCBCKW REVERSE CONSIDER ONLY 0 (OSPIREA):(OSPIREE) SPTSSP ? 1 BACKWARD_TRACE (NSTPTR) $ENDIF } !!!!!!! this comment line seems necessary (ASAP bug??) NSTPTR=NSTPTR+1 SRCBCKW REVERSE CONSIDER ALL $DO 2@(OM2) SPTSSP ? 1 BACKWARD_TRACE (NSTPTR) STATS NRAY=71 NSTPTR=NSTPTR+1 SRCBCKW REVERSE CONSIDER ALL $SCR 1 ...................WAIT........ TRACE LASTS SOME TIME ...................... $DO 2@(OM1) SPTSSP ? 1 BACKWARD_TRACE (NSTPTR) STATS PATHS TOTAL 0.0001 $IO END