1
C===========================================================================
2
C Copyright (C) 1995-2010 European Southern Observatory (ESO)
4
C This program is free software; you can redistribute it and/or
5
C modify it under the terms of the GNU General Public License as
6
C published by the Free Software Foundation; either version 2 of
7
C the License, or (at your option) any later version.
9
C This program is distributed in the hope that it will be useful,
10
C but WITHOUT ANY WARRANTY; without even the implied warranty of
11
C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
C GNU General Public License for more details.
14
C You should have received a copy of the GNU General Public
15
C License along with this program; if not, write to the Free
16
C Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
19
C Correspondence concerning ESO-MIDAS should be addressed as follows:
20
C Internet e-mail: midas@eso.org
21
C Postal address: European Southern Observatory
22
C Data Management Division
23
C Karl-Schwarzschild-Strasse 2
24
C D 85748 Garching bei Muenchen
26
C===========================================================================
29
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
30
C.IDENTIFICATION: program ATREF
31
C.PURPOSE: Compensation for atmospheric refraction effects by modification
32
C of the nominal "OPTOPUS" starplate (X,Y) coordinate values.
33
C.AUTHOR: A. Gemmo Padova Department of Astronomy
34
C.VERSION: 860414 G. Lund, P. Angebault Version n.10 for HP machine.
35
C 910412 A. Gemmo Version running in MIDAS env.
36
C 910603 A. Gemmo Version for OPTOPUS context.
37
C 910906 A. Gemmo Modified to use TBLSER routine.
40
C-------------------------------------------------------------------------------
58
INTEGER NACINP,NARINP,NSINP
59
INTEGER OUTTYP,OUTCOL(10),COLNUM(10)
62
INTEGER I1,I2,I3,I4,I5,I6,I7,I8,I9,J
65
INTEGER INTD,ITST,ITEN,ID,IE,ID1,IE1
67
INTEGER IEXPTI,IRANGE,ILAM1,ILAM2
68
INTEGER ISTSTH,ISTSTM,ISTENH,ISTENM
69
INTEGER IUTSTH,IUTSTM,IUTENH,IUTENM
75
DOUBLE PRECISION X(NROUT),Y(NROUT),Z(NROUT)
77
DOUBLE PRECISION CRA,CDEC,CRARAD,CDECRA
79
DOUBLE PRECISION ST1(12),ST2(12)
80
DOUBLE PRECISION SSLOT,ESLOT,ST,SST
81
DOUBLE PRECISION AHS,AHE
82
DOUBLE PRECISION TESS,TESE
83
DOUBLE PRECISION ERINT,SERR
84
DOUBLE PRECISION AH(NROUT),COZ(NROUT),ZZ(NROUT),ERR(NROUT)
85
DOUBLE PRECISION ZIN(3),ZOS(3)
86
DOUBLE PRECISION OBLAT,ZIPHI,TAPHI,A(3),BET(3),ABET(3),SIG
87
DOUBLE PRECISION ZIO,AHIO,SS,TIME,TTIME,BETA2
88
DOUBLE PRECISION EXPTI,EXPTI1,SEXPT,SEX,EXPST,EXPEN
89
DOUBLE PRECISION STSTH,STENH,STSTM,STENM,D,EXSTUT,EXENUT
90
DOUBLE PRECISION UTSTH,UTENH,UTSTM,UTENM
91
DOUBLE PRECISION EXST,EXEN,ZOST,ZOEN,ZIST,ZIEN
92
DOUBLE PRECISION ABETST,ABETEN,TEST,BETST,BETEN,RANGE
93
DOUBLE PRECISION LAMBD1,LAMBD2,LA1(22),LA2(22)
94
DOUBLE PRECISION CHINT,CHINA,FRAC,CHERR,CORRX,CORRY
95
DOUBLE PRECISION DX(NROUT),DY(NROUT),XO(NROUT),YO(NROUT)
96
DOUBLE PRECISION STD,STF,WAVL
97
DOUBLE PRECISION YEAR,MONTH,DAY,EPP
101
CHARACTER*80 STRING(20)
104
CHARACTER*16 LABEL(NCPAR),OUTLAB
105
CHARACTER*16 UNIT(NCPAR),OUTUNI
107
CHARACTER*16 FORMC16,FORMC1,FORMR8,FORMI4
108
CHARACTER*16 IDENT(NROUT)
109
CHARACTER*1 TYPE(NROUT)
110
CHARACTER*1 CHECK(NROUT)
116
INCLUDE 'MID_INCLUDE:ST_DEF.INC'
118
INCLUDE 'MID_INCLUDE:ST_DAT.INC'
122
DATA LABEL/'X ','Y ','Z '/
123
DATA UNIT /'MICRONS ','MICRONS ','MICRONS '/
131
DATA PI/3.14159265358979D0/
133
C *** sidereal time data
135
DATA ST1/3.46,5.19,6.51,7.93,9.36,11.29,
136
2 13.32,14.44,17.69,19.83,22.17,25.12/
137
DATA ST2/10.27,12.92,15.05,17.39,19.63,21.76,24.0,
138
2 26.14,27.66,28.88,30.1,31.83/
140
C *** wavelength data
142
DATA LA1/3800.,4000.,4200.,4400.,4600.,4800.,5000.,
143
2 5200.,5400.,5600.,5800.,6000.,6200.,6400.,
144
3 6600.,6800.,7000.,7200.,7400.,7600.,7800.,
146
DATA LA2/1.23,1.02,.83,.69,.58,.49,.4,.33,.26,.19,.14,
147
2 .09,.05,.02,-.02,-.06,-.1,-.125,-.15,-.175,-.195,-.21/
153
C *** get the input table and the output table
155
CALL STKRDC('INPUTFI',1,1,60,IAC,INPFIL,KUN,KNUL,ISTAT)
156
CALL STKRDC('OUTPUTF',1,1,60,IAC,OUTFIL,KUN,KNUL,ISTAT)
158
C *** open input table
160
CALL TBTOPN(INPFIL,F_I_MODE,TIDINP,ISTAT)
162
C *** get information about input table
164
CALL TBIGET(TIDINP,NCOL,NRINP,NSINP,NACINP,NARINP,ISTAT)
166
C *** create the output table
168
CALL TBTINI(OUTFIL,0,F_O_MODE,NCOUT,NROUT,TIDOUT,ISTAT)
170
OUTTYP = D_C_FORMAT !initialize ident column
174
CALL TBCINI(TIDOUT,OUTTYP,16,OUTFOR,OUTUNI,
175
2 OUTLAB,OUTCOL(1),ISTAT)
177
OUTTYP = D_C_FORMAT !initialize type column
181
CALL TBCINI(TIDOUT,OUTTYP,1,OUTFOR,OUTUNI,
182
2 OUTLAB,OUTCOL(2),ISTAT)
185
OUTTYP = D_R8_FORMAT !initialize x y z columns
189
CALL TBCINI(TIDOUT,OUTTYP,1,OUTFOR,OUTUNI,
190
2 OUTLAB,OUTCOL(2+I1),ISTAT)
193
OUTTYP = D_I4_FORMAT !initialize number column
197
CALL TBCINI(TIDOUT,OUTTYP,1,OUTFOR,OUTUNI,
198
2 OUTLAB,OUTCOL(6),ISTAT)
200
C *** read center coordinates
202
CALL STKRDD('PLATEC1',1,1,IAV,CRA,KUN,KNUL,ISTAT)
203
CALL STKRDD('PLATEC1',2,1,IAV,CDEC,KUN,KNUL,ISTAT)
207
IF(CDEC.LT.-89.9)THEN
209
922 FORMAT('*** FATAL: DEC of center can`t be lower than -89.9 deg
211
CALL STETER(9,STRING(2))
212
ELSE IF(CDEC.GT.30.0)THEN
214
923 FORMAT('*** FATAL: DEC of center can`t be higher than +30.0 de
216
CALL STETER(9,STRING(2))
219
C *** convert CRA and CDEC to radians
221
CRARAD = CRA*1.5D1*(PI/1.8D2)
222
CDECRA = CDEC*(PI/1.8D2)
224
C *** read year, month and day of the observation
226
CALL STKRDD('DATE',1,1,IAV,YEAR,KUN,KNUL,ISTAT)
227
CALL STKRDD('DATE',2,1,IAV,MONTH,KUN,KNUL,ISTAT)
228
CALL STKRDD('DATE',3,1,IAV,DAY,KUN,KNUL,ISTAT)
230
IF(YEAR.NE.0..AND.MONTH.EQ.0..AND.DAY.EQ.0.)THEN
232
CALL DAYMON(EPP,YEAR,MONTH,DAY)
233
ELSE IF(YEAR.NE.0..AND.MONTH.EQ.0..AND.DAY.NE.0.)THEN
235
2 '*** FATAL: MONTH can`t be 0 if date not in decimals of year!')
236
ELSE IF(YEAR.NE.0..AND.MONTH.NE.0..AND.DAY.EQ.0.)THEN
238
2 '*** FATAL: DAY can`t be 0 if date not in decimals of year!')
241
C *** determination of hours of darkness (ST)
243
DATE = MONTH+DAY/30.42
247
STD = ST1(IMONTH)+(24.+ST1(IMON1)-ST1(IMONTH))*(DATE-IMONTH)
248
STF = ST2(IMONTH)+(24.+ST2(IMON1)-ST2(IMONTH))*(DATE-IMONTH)
249
ELSE IF(IMONTH.NE.12)THEN
251
STD = ST1(IMONTH)+(ST1(IMON1)-ST1(IMONTH))*(DATE-IMONTH)
252
STF = ST2(IMONTH)+(ST2(IMON1)-ST2(IMONTH))*(DATE-IMONTH)
254
IF(STD.GT.24.)STD=STD-24.
255
IF(STF.GT.24.)STF=STF-24.
258
CALL STTPUT(STRING(3),ISTAT)
259
WRITE(STRING(3),222)STD,STF
260
CALL STTPUT(STRING(3),ISTAT)
261
CALL STDWRD(TIDOUT,'NIGHT_BEG',STD,1,1,DUN,STAT)
262
CALL STDWRD(TIDOUT,'NIGHT_END',STF,1,1,DUN,STAT)
264
C *** read earliest and latest ST at which the exposure could begin and end
266
CALL STKRDD('STSLOT',1,1,IAV,SSLOT,KUN,KNUL,ISTAT)
267
CALL STKRDD('STSLOT',2,1,IAV,ESLOT,KUN,KNUL,ISTAT)
269
C *** read exposure time
271
CALL STKRDD('EXPTIME',1,1,IAV,EXPTI,KUN,KNUL,ISTAT)
274
IF(SS.LT.0.)SS=SS+24.
277
IF((EXPTI1).GE.SS)CALL STETER
278
1 (9,'*** FATAL: Exposure time can`t be > or = st_slot!')
282
AHS = 15.*(SSLOT-CRA)
285
ELSE IF(AHS.LT.-180.)THEN
289
AHE = 15.*(ESLOT-CRA)
292
ELSE IF(AHE.LT.-180.)THEN
299
WRITE(STRING(4),944)AHS
300
944 FORMAT('*** FATAL: START hour angle can`t be >+/-70 deg, and y
301
2ours is: ',F6.2,' deg')
302
CALL STETER(9,STRING(4))
305
WRITE(STRING(4),945)AHE
306
945 FORMAT('*** FATAL: END hour angle can`t be >+/-70 deg, and you
307
2rs is: ',F6.2,' deg')
308
CALL STETER(9,STRING(4))
311
WRITE(STRING(4),946)AHS
312
946 FORMAT('START hour angle is: ',F6.2,' deg, hence approaching t
313
2elesc. limit = +/-70 deg')
314
CALL STTPUT(STRING(4),ISTAT)
317
WRITE(STRING(4),947)AHE
318
947 FORMAT('END hour angle is: ',F6.2,' deg, hence approaching tel
319
2esc. limit = +/-70 deg')
320
CALL STTPUT(STRING(4),ISTAT)
328
AH(I2) = (AHS+(AHE-AHS)*(I2-1)/99.)*(PI/1.8D2)
329
COZ(I2)= -.4886*DSIN(CDECRA)+(.8725*DCOS(CDECRA)*DCOS(AH(I2)))
330
ZZ(I2) = DACOS(COZ(I2))
331
ERR(I2)= 43.97*(DTAN(ZZ(I2)+.004363)-TAN(ZZ(I2)))
332
ERINT = ERINT+ERR(I2)
335
C *** read ASTFLAG and ST values
337
CALL STKRDC('ASTFLAG',1,1,1,IAV,ASTFLA,KUN,KNUL,ISTAT)
338
CALL STKRDD('SIDTIME',1,1,IAV,ST,KUN,KNUL,ISTAT)
340
222 FORMAT(1X,' Darkness will begin at ST: ',F5.2,' and end at ST: ',
343
553 FORMAT(1X,' Sidereal time for observation: ',F6.2)
345
555 FORMAT(1X,' Optimal observing time: ',F6.2)
346
556 FORMAT(1X,' Optimized observational hour angle in degrees: ',F6.2)
347
557 FORMAT(1X,' Corresponding distance from the zenith: ',F6.2)
348
558 FORMAT(1X,' Maximum necessary correction (in arcsecs): ',F6.2)
349
559 FORMAT(1X,' Direction of correction vectors on starplate: ',F7.2)
350
560 FORMAT(1X,' (i.e. Perpendicular to the projection of the horizon')
351
561 FORMAT(1X,' on the starplate at the above determined hour angle)')
354
671 FORMAT(1X,' Chosen length of observation: ',I3,' minutes')
355
672 FORMAT(1X,' Approx. optimal obs. slot (ST): ',I2,'h ',
356
2 I2,'m to ',I2,'h ',I2,'m')
357
673 FORMAT(1X,' Corresponding obser. slot (UT): ',I2,'h ',
358
2 I2,'m to ',I2,'h ',I2,'m')
359
674 FORMAT(1X,' Corresp. range of corr. vectors: From',I5,
361
675 FORMAT(1X,' WARNING!!! The needed correction vector varies')
362
676 FORMAT(1X,' STRONGLY in DIRECTION during your exposure ...')
363
677 FORMAT(1X,' i.e. by approximately ',I3,' degrees. ')
364
678 FORMAT(1X,' BE CAREFUL TO RESPECT THE OPTIMAL OBSERVATION TIME')
365
679 FORMAT(1X,' SLOT GIVEN ABOVE, WHEN OBSERVING AT THE TELESCOPE')
371
777 FORMAT(1X,' Wavelength range for optimisation: ',I4,' to ',
373
778 FORMAT(1X,' Optimal correction at wavelength: ',I4,' Angstroms'
375
779 FORMAT(1X,' Chromatic correction needed in X: ',F5.0,
377
780 FORMAT(1X,' Chromatic correction needed in Y: ',F5.0,
380
CALL STTPUT(STRING(6),ISTAT)
381
IF(ASTFLA.EQ.'N'.OR.ASTFLA.EQ.'n')THEN
382
IF(ST.GE.SSLOT.AND.ST.LE.ESLOT)THEN
384
IF(SST.LT.0.)SST=SST+24.
385
ITIME = INT((SST/SS)*99.+1.)
388
CALL STTPUT(STRING(5),ISTAT)
389
WRITE(STRING(5),553)ST
390
CALL STTPUT(STRING(5),ISTAT)
391
CALL STDWRD(TIDOUT,'OPT_SID_TIME',ST,1,1,DUN,STAT)
393
CALL STETER(9,'*** FATAL: Opt_st must be inside st_slot !!')
395
ELSE IF(ASTFLA.EQ.'Y'.OR.ASTFLA.EQ.'y')THEN
398
C *** Calculation of the "optimal" observing time, for which the integral
399
C *** differential error will be the same for both of the intervals, i.e.
400
C *** from earliest start to "opt. time", and from "opt. time" to latest
406
SERR = SERR+(2.*ERR(I3))
407
IF(SERR.LE.ERINT)THEN
409
ELSE IF(SERR.GT.ERINT)THEN
417
445 TIME = SSLOT+IO*((SS)/99.)
419
IF(TIME.GE.24.)TTIME = TIME-24.
422
IF(SST.LT.0.)SST=SST+24.
425
CALL STTPUT(STRING(5),ISTAT)
426
WRITE(STRING(5),555)TTIME
427
CALL STTPUT(STRING(5),ISTAT)
428
WRITE(STRING(5),5551)
429
CALL STTPUT(STRING(5),ISTAT)
431
CALL STDWRD(TIDOUT,'OPT_SID_TIME',TTIME,1,1,DUN,STAT)
434
C *** According to "optimised" time (related to 'IO'), determine the
435
C *** corresponding hour angle, zenith distance, maximum differential
436
C *** error (at plate edge), and correction direction - given by the
437
C *** perpendicular (away from the zenith) of the projection of the
438
C *** horizon onto the starplate.
441
ZIN(2) = DSIN(ZZ(IO))
442
ZIN(3) = DSIN(ZZ(NROUT))
444
ZOS(2) = DCOS(ZZ(IO))
445
ZOS(3) = DCOS(ZZ(NROUT))
447
OBLAT = -29.25*PI/1.8D2
456
IF(ZIN(I4).EQ.0.)THEN
458
ELSE IF(ZIN(I4).NE.0.)THEN
459
ABET(I4) = (.4886+DSIN(CDECRA)*ZOS(I4))/
460
2 (DCOS(CDECRA)*ZIN(I4))
462
IF(A(I4).LT.0.)SIG=-1.
463
BET(I4) = SIG*DACOS(ABET(I4))
467
ZIO = ZZ(IO)/(PI/1.8D2)
468
AHIO = AH(IO)/(PI/1.8D2)
469
BETA2 = BET(2)/(PI/1.8D2)
471
WRITE(STRING(5),556)AHIO
472
CALL STTPUT(STRING(5),ISTAT)
473
CALL STDWRD(TIDOUT,'HOUR_ANGLE',AHIO,1,1,DUN,STAT)
474
WRITE(STRING(5),557)ZIO
475
CALL STTPUT(STRING(5),ISTAT)
476
CALL STDWRD(TIDOUT,'ZENITH_DIST',ZIO,1,1,DUN,STAT)
477
WRITE(STRING(5),558)ERR(IO)
478
CALL STTPUT(STRING(5),ISTAT)
479
CALL STDWRD(TIDOUT,'MAX_CORR',ERR(IO),1,1,DUN,STAT)
480
WRITE(STRING(5),559)BETA2
481
CALL STTPUT(STRING(5),ISTAT)
482
CALL STDWRD(TIDOUT,'CORR_VECT_DIR',BETA2,1,1,DUN,STAT)
484
CALL STTPUT(STRING(5),ISTAT)
486
CALL STTPUT(STRING(5),ISTAT)
488
C *** determine the approximate optimal observation slot, in ST and UT,
489
C *** according to the expected exposure length at the telescope.
494
IF(EXPST.LE.0.)EXPST = EXPST+24.
496
IF(EXPEN.GT.24.)EXPEN = EXPEN-24.
499
STSTM = INT(60.*(EXPST-STSTH))
500
STENM = INT(60.*(EXPEN-STENH))
501
D = ((MONTH-1.)*30.42)+DAY-264.
504
EXSTUT=EXPST-0.06575*D+4.7156
505
EXENUT=EXPEN-0.06575*D+4.7156
506
IF(EXSTUT.LE.0.)EXSTUT=EXSTUT+24.
507
IF(EXENUT.LE.0.)EXENUT=EXENUT+24.
510
UTSTM = INT(60.*(EXSTUT-UTSTH))
511
UTENM = INT(60.*(EXENUT-UTENH))
513
C *** calculation of corresponding range of correction vector angles
516
IF(EXST.LE.0.)EXST=EXST+24.
518
IF(EXEN.GT.24.)EXEN=EXEN-24.
519
ITST = INT((EXST/SS)*99.)+1.
520
ITEN = INT((EXEN/SS)*99.)+1.
521
ZOST = DCOS(ZZ(ITST))
522
ZOEN = DCOS(ZZ(ITEN))
523
ZIST = DSIN(ZZ(ITST))
524
ZIEN = DSIN(ZZ(ITEN))
525
ABETST= (.4886+DSIN(CDECRA)*ZOST)/(DCOS(CDECRA)*ZIST)
526
ABETEN= (.4886+DSIN(CDECRA)*ZOEN)/(DCOS(CDECRA)*ZIEN)
529
IF(TEST.LT.0.)SIG=-1.
530
BETST = (SIG/(PI/1.8D2))*DACOS(ABETST)
533
IF(TEST.LT.0.)SIG=-1.
534
BETEN = (SIG/(PI/1.8D2))*DACOS(ABETEN)
535
RANGE = DABS(BETEN-BETST)
537
C *** print out the results
539
WRITE(STRING(6),6661)
540
CALL STTPUT(STRING(6),ISTAT)
542
WRITE(STRING(6),671)IEXPTI
543
CALL STTPUT(STRING(6),ISTAT)
544
CALL STDWRD(TIDOUT,'EXPTIME',EXPTI,1,1,DUN,STAT)
549
WRITE(STRING(6),672)ISTSTH,ISTSTM,ISTENH,ISTENM
550
CALL STTPUT(STRING(6),ISTAT)
551
CALL STDWRD(TIDOUT,'STSLOT',EXPST,1,1,DUN,STAT)
552
CALL STDWRD(TIDOUT,'STSLOT',EXPEN,2,1,DUN,STAT)
557
WRITE(STRING(6),673)IUTSTH,IUTSTM,IUTENH,IUTENM
558
CALL STTPUT(STRING(6),ISTAT)
559
CALL STDWRD(TIDOUT,'UTSLOT',EXSTUT,1,1,DUN,STAT)
560
CALL STDWRD(TIDOUT,'UTSLOT',EXENUT,2,1,DUN,STAT)
563
WRITE(STRING(6),674)IBETST,IBETEN
564
CALL STDWRD(TIDOUT,'RANGE_CORR_VECT',BETST,1,1,DUN,STAT)
565
CALL STDWRD(TIDOUT,'RANGE_CORR_VECT',BETEN,2,1,DUN,STAT)
566
WRITE(STRING(6),6662)
567
CALL STTPUT(STRING(6),ISTAT)
571
CALL STTPUT(STRING(6),ISTAT)
573
CALL STTPUT(STRING(6),ISTAT)
575
WRITE(STRING(6),677)IRANGE
576
CALL STTPUT(STRING(6),ISTAT)
578
CALL STTPUT(STRING(6),ISTAT)
580
CALL STTPUT(STRING(6),ISTAT)
581
WRITE(STRING(6),6664)
582
CALL STTPUT(STRING(6),ISTAT)
585
C *** calculation of the optimal wavelength for correction of the chromatic
586
C *** dependancy of differential refraction
588
CALL STKRDD('LAMBDA',1,1,IAV,LAMBD1,KUN,KNUL,ISTAT)
589
CALL STKRDD('LAMBDA',2,1,IAV,LAMBD2,KUN,KNUL,ISTAT)
593
WRITE(STRING(7),777)ILAM1,ILAM2
594
CALL STTPUT(STRING(7),ISTAT)
595
CALL STDWRD(TIDOUT,'LAMBDA',LAMBD1,1,1,DUN,STAT)
596
CALL STDWRD(TIDOUT,'LAMBDA',LAMBD2,2,1,DUN,STAT)
597
IF(LAMBD1.LT.3800.)LAMBD1=3800.
598
IF(LAMBD2.GT.8000.)LAMBD2=8000.
599
ID = INT((LAMBD1-3800.)*21./4200.+1.)
600
IE = INT((LAMBD2-3800.)*21./4200.+1.)
605
CHINT = 0.5*(LA2(ID)+LA2(IE))
609
CHINT = CHINT+LA2(I5)
613
CHINA = CHINA+2.*LA2(I6)
615
IF(TEST.GE.CHINT)GOTO 1613
619
FRAC = (CHINT+LA2(I6)+LA2(J)-TEST)/(LA2(I6)+LA2(J))
620
CHERR = LA2(J)+FRAC*(LA2(I6)-LA2(J))
621
IWAVL = INT(LA1(J)+FRAC*200.)
624
C *** calculate the corresponding correction of guidestar coordinates
625
C *** needed to compensate for the shift at the optimised wavelength
627
CORRX = 140.06*CHERR*DSIN(BET(2))*DTAN(ZZ(IO))
628
CORRY = 140.06*CHERR*DCOS(BET(2))*DTAN(ZZ(IO))
630
WRITE(STRING(7),778)IWAVL
631
CALL STTPUT(STRING(7),ISTAT)
632
CALL STDWRD(TIDOUT,'OPT_WAVEL',WAVL,1,1,DUN,STAT)
633
WRITE(STRING(7),779)CORRX
634
CALL STTPUT(STRING(7),ISTAT)
635
CALL STDWRD(TIDOUT,'CORR_X',CORRX,1,1,DUN,STAT)
636
WRITE(STRING(7),780)CORRY
637
CALL STTPUT(STRING(7),ISTAT)
638
CALL STDWRD(TIDOUT,'CORR_Y',CORRY,1,1,DUN,STAT)
640
C *** read input table elements
642
CALL TBLSER(TIDINP,'IDENT',COLNUM(1),ISTAT)
643
CALL TBLSER(TIDINP,'TYPE',COLNUM(2),ISTAT)
644
CALL TBLSER(TIDINP,'CHECK',COLNUM(3),ISTAT)
645
CALL TBLSER(TIDINP,'X',COLNUM(4),ISTAT)
646
CALL TBLSER(TIDINP,'Y',COLNUM(5),ISTAT)
647
CALL TBLSER(TIDINP,'Z',COLNUM(6),ISTAT)
650
CALL TBERDC(TIDINP,I7,COLNUM(1),CTEST,KNUL,ISTAT)
651
CALL FT_EOS(CTEST,16,IDENT(I7),ISTAT)
652
CALL TBERDC(TIDINP,I7,COLNUM(2),CTEST,KNUL,ISTAT)
653
TYPE(I7) = CTEST(1:1)
654
CALL TBERDC(TIDINP,I7,COLNUM(3),CTEST,KNUL,ISTAT)
655
CHECK(I7) = CTEST(1:1)
656
CALL TBERDD(TIDINP,I7,COLNUM(4),X(I7),KNUL,ISTAT)
657
CALL TBERDD(TIDINP,I7,COLNUM(5),Y(I7),KNUL,ISTAT)
658
CALL TBERDD(TIDINP,I7,COLNUM(6),Z(I7),KNUL,ISTAT)
661
C *** application of the corrections to the input file:
662
C *** (1) add the differential corrections to all the coordinates;
663
C *** (2) add the chromatic corrections to the guidestar coordinates.
666
DX(I8) = -1.111D-3*ERR(IO)*(DSIN(BET(2))**2)*
667
2 (X(I8)+Y(I8)/DTAN(BET(2)))
668
DY(I8) = -1.111D-3*ERR(IO)*(DCOS(BET(2))**2)*
669
2 (Y(I8)+X(I8)*DTAN(BET(2)))
670
XO(I8) = X(I8)+DX(I8)
671
YO(I8) = Y(I8)+DY(I8)
673
IF(TYPE(I8).NE.'O')THEN
674
DX(I8) = DX(I8)+CORRX
675
DY(I8) = DY(I8)+CORRY
676
XO(I8) = XO(I8)+CORRX
677
YO(I8) = YO(I8)+CORRY
681
C *** fill in the output table
684
CALL TBEWRC(TIDOUT,I9,OUTCOL(1),IDENT(I9),ISTAT)
685
CALL TBEWRC(TIDOUT,I9,OUTCOL(2),TYPE(I9),ISTAT)
686
CALL TBEWRD(TIDOUT,I9,OUTCOL(3),XO(I9),ISTAT)
687
CALL TBEWRD(TIDOUT,I9,OUTCOL(4),YO(I9),ISTAT)
688
CALL TBEWRD(TIDOUT,I9,OUTCOL(5),Z(I9),ISTAT)
689
CALL TBEWRI(TIDOUT,I9,OUTCOL(6),I9,ISTAT)
692
C *** initialize row selection flag
694
CALL TBSINI(TIDOUT,ISTAT)
696
C *** close the table
698
CALL TBTCLO(TIDOUT,ISTAT)
704
C-------------------------------------------------------------------------------
705
SUBROUTINE DAYMON(EPP,YEAR,MONTH,DAY)
706
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
707
C.PURPOSE: Calculate year, month and day from epoch.
708
C.AUTHOR: Alessandra Gemmo Padova Department of Astronomy
709
C.VERSION: 910906 AG Creation
710
C.------------------------------------------------------------------------------
715
DOUBLE PRECISION YEAR,MONTH,DAY
716
DOUBLE PRECISION DAY1
717
DOUBLE PRECISION EPP,NDAYS
718
DOUBLE PRECISION RES0,RES1
728
C *** determine month and day
730
RES0 = DMOD(YEAR,4.0D0)
731
RES1 = DMOD(YEAR,4.0D2)
732
IF(RES0.EQ.0..AND.RES1.NE.0.)NDAYS = 366.
734
DAY1 = (EPP - YEAR)*NDAYS
736
IF(DAY1.GT.0..AND.DAY1.LE.31.)THEN
739
ELSE IF(DAY1.GT.31..AND.DAY1.LE.59.)THEN
742
ELSE IF(DAY1.GT.59..AND.DAY1.LE.90.)THEN
745
ELSE IF(DAY1.GT.90..AND.DAY1.LE.120.)THEN
748
ELSE IF(DAY1.GT.120..AND.DAY1.LE.151.)THEN
751
ELSE IF(DAY1.GT.151..AND.DAY1.LE.181.)THEN
754
ELSE IF(DAY1.GT.181..AND.DAY1.LE.212.)THEN
757
ELSE IF(DAY1.GT.212..AND.DAY1.LE.243.)THEN
760
ELSE IF(DAY1.GT.243..AND.DAY1.LE.273.)THEN
763
ELSE IF(DAY1.GT.273..AND.DAY1.LE.304.)THEN
766
ELSE IF(DAY1.GT.304..AND.DAY1.LE.334.)THEN
769
ELSE IF(DAY1.GT.334..AND.DAY1.LE.366.)THEN
776
C-------------------------------------------------------------------------------