1
C @(#)tsaint.for 19.1 (ESO-DMD) 02/25/03 13:33:25
2
C===========================================================================
3
C Copyright (C) 1995 European Southern Observatory (ESO)
5
C This program is free software; you can redistribute it and/or
6
C modify it under the terms of the GNU General Public License as
7
C published by the Free Software Foundation; either version 2 of
8
C the License, or (at your option) any later version.
10
C This program is distributed in the hope that it will be useful,
11
C but WITHOUT ANY WARRANTY; without even the implied warranty of
12
C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
C GNU General Public License for more details.
15
C You should have received a copy of the GNU General Public
16
C License along with this program; if not, write to the Free
17
C Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
20
C Correspondence concerning ESO-MIDAS should be addressed as follows:
21
C Internet e-mail: midas@eso.org
22
C Postal address: European Southern Observatory
23
C Data Management Division
24
C Karl-Schwarzschild-Strasse 2
25
C D 85748 Garching bei Muenchen
27
C===========================================================================
29
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
30
C.COPYRIGHT (c) 1992 European Southern Observatory & Copernicus Astron. Center
32
C.AUTHOR Alex Schwarzenberg-Czerny, Copernicus Astron. Center, Warsaw
33
C.KEYWORD MIDAS, time analysis, INTERPOL/TIME
36
C.PURPOSE Interpolate an unevensampled series using its covariance function
37
C Reference: ApJ 385, 404
40
C.VERSION 0.0 June 1992
44
C-----------------------------------------------------------------------------
47
INCLUDE 'MID_REL_INCL:TSA_DEF.INC'
48
INCLUDE 'MID_INCLUDE:ST_DEF.INC'
50
CHARACTER*60 INAME1 ! NAME OF 1ST OBSERVATION TABLE
51
CHARACTER*60 INAME2 ! NAME OF 2ND (OUTPUT) TABLE
52
CHARACTER*3 CFUNC ! TYPE OF ACF
53
DOUBLE PRECISION PARM(12) ! PARAMETERS OF ACF
54
DOUBLE PRECISION ACFLIN,ACFPOL,ACFPOW,ACFEXP,
56
EXTERNAL ACFLIN,ACFPOL,ACFPOW,ACFEXP,
58
DOUBLE PRECISION TSADELUR0,TSADELUR1,TSADELUR2,TSADELUR3,
59
$ TSADELUR4,TSADELUR5,TSADELUR6,TSADELUR7,
61
EXTERNAL TSADELUR0,TSADELUR1,TSADELUR2,TSADELUR3,
62
$ TSADELUR4,TSADELUR5,TSADELUR6,TSADELUR7,
65
INTEGER NOBS1, NOBS2, ISIZE, ASIZE
66
INTEGER MODE, IACTS, KUN, KNUL
67
INTEGER TID1, TID2, ITIME, IDAT, IVAR
68
INTEGER NCOL, ICOL, NROW, ISOR
69
INTEGER LFIELD,TTYP, DTYP, VTYP
70
INTEGER ICOBS, INU, ICT
72
INTEGER*8 POBS1T,POBS1D,POBS1V
73
INTEGER*8 POBS2T,POBS2D,POBS2V
74
INTEGER*8 PCOBS,PNU,PCT
76
DOUBLE PRECISION AVER,VAR
80
INCLUDE 'MID_REL_INCL:TSA_DAT.INC'
81
INCLUDE 'MID_INCLUDE:ST_DAT.INC'
86
CALL STSPRO ('tsaint')
87
CALL STKRDC ('IN_A', 1,1,60,IACTS,INAME1,KUN,KNUL,ISTAT)
88
CALL STKRDC ('OUT_A', 1,1,60,IACTS,INAME2,KUN,KNUL,ISTAT)
89
CALL STKRDC ('CFUNC', 1,1, 3,IACTS,CFUNC, KUN,KNUL,ISTAT)
90
CALL STKRDD ('INPUTD', 1,12,IACTS,PARM, KUN,KNUL,ISTAT)
94
CALL TBTOPN (INAME1,F_I_MODE,TID1,ISTAT)
95
CALL TBIGET (TID1,NCOL,NOBS1,ISOR,ICOL,NROW,ISTAT)
96
CALL TBLSER (TID1,'TIME' ,ITIME,ISTAT)
98
CALL STETER(5,'Column :TIME not found in 1st table')
100
CALL TBLSER (TID1,'VALUE',IDAT ,ISTAT)
102
CALL STETER(6,'Column :VALUE not found in 1st table')
104
CALL TBLSER (TID1,'VAR' ,IVAR, ISTAT)
106
CALL STETER(7,'Column :VAR not found in 1st table')
108
CALL TBFGET (TID1,ITIME,FORM,LFIELD,TTYP,ISTAT)
109
CALL TBFGET (TID1,IDAT, FORM,LFIELD,DTYP,ISTAT)
110
CALL TBFGET (TID1,IVAR, FORM,LFIELD,VTYP,ISTAT)
111
CALL TBDGET (TID1,ISTORE,ISTAT)
112
IF (ISTORE.NE.F_TRANS) THEN
113
TEXT='Input table '//INAME1//' stored not transposed'
116
IF (TTYP.NE.D_R8_FORMAT.OR.DTYP.NE.D_R8_FORMAT.OR.
117
$ VTYP.NE.D_R8_FORMAT) THEN
119
$ 'Column(s) in 1st table must be in DOUBLE PRECISION')
121
CALL TBCMAP (TID1,ITIME,POBS1T,ISTAT)
122
CALL TBCMAP (TID1,IDAT, POBS1D,ISTAT)
123
CALL TBCMAP (TID1,IVAR, POBS1V,ISTAT)
125
C Map input/output table
127
CALL TBTOPN (INAME2,F_IO_MODE,TID2,ISTAT)
128
CALL TBIGET (TID2,NCOL,NOBS2,ISOR,ICOL,NROW,ISTAT)
129
CALL TBLSER (TID2,'TIME' ,ITIME,ISTAT)
131
CALL STETER(8,'Column :TIME not found in 2nd table')
133
CALL TBLSER (TID2,'VALUE',IDAT ,ISTAT)
135
CALL STETER(9,'Column :VALUE not found in 2nd table')
137
CALL TBLSER (TID2,'VAR' ,IVAR, ISTAT)
139
CALL STETER(10,'Column :VAR not found in 2nd table')
141
CALL TBFGET (TID2,ITIME,FORM,LFIELD,TTYP,ISTAT)
142
CALL TBFGET (TID2,IDAT, FORM,LFIELD,DTYP,ISTAT)
143
CALL TBFGET (TID2,IVAR, FORM,LFIELD,VTYP,ISTAT)
144
CALL TBDGET (TID2,ISTORE,ISTAT)
145
IF (ISTORE.NE.F_TRANS) THEN
146
TEXT='Input table '//INAME2//' stored not transposed'
149
IF (TTYP.NE.D_R8_FORMAT.OR.DTYP.NE.D_R8_FORMAT.OR.
150
$ VTYP.NE.D_R8_FORMAT) THEN
152
$ 'Column(s) in 2nd table must be in DOUBLE PRECISION')
154
CALL TBCMAP (TID2,ITIME,POBS2T,ISTAT)
155
CALL TBCMAP (TID2,IDAT, POBS2D,ISTAT)
156
CALL TBCMAP (TID2,IVAR, POBS2V,ISTAT)
158
C Create and map work tables COBS,NU,CT
160
ISIZE=(NOBS1+1)*(NOBS1+1)
161
CALL STFCRE('ZZMIDAWORK',D_R8_FORMAT,F_X_MODE,F_IMA_TYPE,
163
CALL STFMAP(ICOBS,F_X_MODE,1,ISIZE,ASIZE,PCOBS,ISTAT)
165
CALL STFCRE('ZZMIDBWORK',D_R8_FORMAT,F_X_MODE,F_IMA_TYPE,
167
CALL STFMAP(INU, F_X_MODE,1,ISIZE,ASIZE,PNU,ISTAT)
169
CALL STFCRE('ZZMIDCWORK',D_R8_FORMAT,F_X_MODE,F_IMA_TYPE,
171
CALL STFMAP(ICT, F_X_MODE,1,ISIZE,ASIZE,PCT,ISTAT)
173
C Interpolate using covariance function
176
IF (LLE(CFUNC,'LIN').AND.LGE(CFUNC,'LIN')) THEN
178
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
179
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
180
$ ACFLIN,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
181
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
182
ELSEIF (LLE(CFUNC,'POL').AND.LGE(CFUNC,'POL')) THEN
184
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
185
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
186
$ ACFPOL,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
187
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
188
ELSEIF (LLE(CFUNC,'POW').AND.LGE(CFUNC,'POW')) THEN
190
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
191
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
192
$ ACFPOW,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
193
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
194
ELSEIF (LLE(CFUNC,'EXP').AND.LGE(CFUNC,'EXP')) THEN
196
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
197
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
198
$ ACFEXP,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
199
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
200
ELSEIF (LLE(CFUNC,'LOG').AND.LGE(CFUNC,'LOG')) THEN
202
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
203
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
204
$ ACFLOG,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
205
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
206
ELSEIF (LLE(CFUNC,'IPO').AND.LGE(CFUNC,'IPO')) THEN
208
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
209
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
210
$ ACFIPO,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
211
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
212
ELSEIF (LLE(CFUNC,'UR0').AND.LGE(CFUNC,'UR0')) THEN
214
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
215
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
216
$ TSADELUR0,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
217
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
218
ELSEIF (LLE(CFUNC,'UR1').AND.LGE(CFUNC,'UR1')) THEN
220
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
221
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
222
$ TSADELUR1,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
223
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
224
ELSEIF (LLE(CFUNC,'UR2').AND.LGE(CFUNC,'UR2')) THEN
226
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
227
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
228
$ TSADELUR2,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
229
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
230
ELSEIF (LLE(CFUNC,'UR3').AND.LGE(CFUNC,'UR3')) THEN
232
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
233
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
234
$ TSADELUR3,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
235
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
236
ELSEIF (LLE(CFUNC,'UR4').AND.LGE(CFUNC,'UR4')) THEN
238
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
239
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
240
$ TSADELUR4,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
241
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
242
ELSEIF (LLE(CFUNC,'UR5').AND.LGE(CFUNC,'UR5')) THEN
244
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
245
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
246
$ TSADELUR5,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
247
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
248
ELSEIF (LLE(CFUNC,'UR6').AND.LGE(CFUNC,'UR6')) THEN
250
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
251
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
252
$ TSADELUR6,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
253
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
254
ELSEIF (LLE(CFUNC,'UR7').AND.LGE(CFUNC,'UR7')) THEN
256
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
257
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
258
$ TSADELUR7,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
259
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
260
ELSEIF (LLE(CFUNC,'UR8').AND.LGE(CFUNC,'UR8')) THEN
262
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
263
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
264
$ TSADELUR8,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
265
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
266
ELSEIF (LLE(CFUNC,'UR9').AND.LGE(CFUNC,'UR9')) THEN
268
$ MADRID(POBS1T),MADRID(POBS1D),MADRID(POBS1V),
269
$ MADRID(POBS2T),MADRID(POBS2D),MADRID(POBS2V),
270
$ TSADELUR9,PARM,NOBS1,NOBS2,MODE,AVER,VAR,
271
$ MADRID(PCOBS),MADRID(PNU),MADRID(PCT))
273
CALL STETER(5,'Wrong name for ACF type')
276
CALL TBIPUT (TID2,NCOL,NOBS2,ISTAT)
280
CALL DSCUPT(TID2,TID2,' ',ISTAT)