1
C @(#)tsabnd.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 series analysis, BAND/TIME
35
C.PURPOSE Evaluate suitable frequency band for time analysis
38
C.VERSION 0.0 June 1992
42
C-----------------------------------------------------------------------------
45
INCLUDE 'MID_REL_INCL:TSA_DEF.INC'
46
INCLUDE 'MID_INCLUDE:ST_DEF.INC'
48
CHARACTER*60 INAME ! NAME OF INPUT TABLE
49
INTEGER MAXOBS ! MAXIMUM NUMBER OF SCANNED OBSERV.
51
REAL*8 START,STEP ! OUTPUT FREQUENCY GRID
54
INTEGER IACTS,KUN,KNUL
55
INTEGER TID,IWORK,ITIME
56
INTEGER NCOL,ICOL,NROW,IROW,ISOR
64
INCLUDE 'MID_REL_INCL:TSA_DAT.INC'
65
INCLUDE 'MID_INCLUDE:ST_DAT.INC'
70
CALL STSPRO ('tsabnd')
71
CALL STKRDC ('IN_A', 1,1,60,IACTS,INAME ,KUN,KNUL,ISTAT)
72
CALL STKRDI ('MAXOBS', 1, 1,IACTS,MAXOBS,KUN,KNUL,ISTAT)
76
CALL TBTOPN (INAME,F_I_MODE,TID,ISTAT)
77
CALL TBIGET (TID,NCOL,NROW,ISOR,ICOL,IROW,ISTAT)
78
CALL TBLSER (TID,'TIME',ITIME,ISTAT)
80
CALL STETER(3,'Column :TIME not found')
82
CALL TBFGET (TID,ITIME,FORM,LFIELD,TTYP,ISTAT)
83
CALL TBDGET (TID,ISTORE,ISTAT)
84
IF (ISTORE.NE.F_TRANS) THEN
85
TEXT='Input table '//INAME//' stored not transposed'
88
IF (TTYP.NE.D_R8_FORMAT) THEN
89
CALL STETER(2,'Column :TIME must be in DOUBLE PRECISION')
91
CALL TBCMAP (TID,ITIME,PTIME,ISTAT)
95
CALL STFCRE('ZZMIDWORK',D_R8_FORMAT,F_X_MODE,F_IMA_TYPE,
97
CALL STFMAP(IWORK,F_X_MODE,1,NROW,IACTS,PWORK,ISTAT)
99
C Evaluate frequency band
101
CALL TIMBAND(MADRID(PTIME),MADRID(PWORK),NROW,MAXOBS,
104
C Return keyword values
106
CALL STKWRD('STARTTSA', START, 1,1,KUN,ISTAT)
107
CALL STKWRD('STEPTSA', STEP, 1,1,KUN,ISTAT)
108
CALL STKWRI('NSTEPS',NSTEPS,1,1,KUN,ISTAT)
110
$ 'Keywords STARTTSA,STEPTSA and NSTEPS are set now.'
121
SUBROUTINE TIMBAND(TIM,DEL,NOBS,MAXOBS,START,STEP,NSTEPS)
122
INCLUDE 'MID_REL_INCL:TSA_DEF.INC'
123
INTEGER NOBS,NSTEPS,MAXOBS
124
DOUBLE PRECISION TIM(NOBS),DEL(NOBS)
127
INTEGER NOBS1,IOBS,MAXSTEPS
128
REAL*8 FINISH,STEPS,SIZE
130
INCLUDE 'MID_REL_INCL:TSA_CONST.INC'
133
IF (MAXOBS.EQ.0) MAXOBS=NOBS
134
NOBS1=MIN(NOBS-1,MAXOBS)
136
CALL STETER(10,'Too few observations or MAXOBS too small')
140
DEL(IOBS)=TIM(IOBS+1)-TIM(IOBS)
141
IF (DEL(IOBS).LT.ZERO) THEN
142
CALL STETER(14,':TIME must be sorted in ascending order')
147
STEP=TIM(NOBS)-TIM(1)
148
IF (STEP.LE.ZERO) THEN
149
CALL STETER(11,'Input table has wrong :TIME numbers')
153
SIZE=LOG(ONE*NOBS*ONE)
154
IOBS=NOBS1*(ONE/(6.+0.3*SIZE)+0.05)+1
156
IF (FINISH.LE.ZERO) THEN
158
$ 'Too finely spaced observations: bin them coarsly')
160
FINISH=HALF/FINISH*(DEL(NOBS1/2)/FINISH)**(0.6)
164
CALL STTPUT(' RESULTS OF FREQUENCY BAND EVALUATION:',ISTAT)
165
WRITE(TEXT,'(2(A,1PE10.1))') 'Max. Frequency: ',FINISH,
166
$ ' Resolution: ',STEP
167
CALL STTPUT(TEXT,ISTAT)
168
WRITE(TEXT,'(A,1PE10.1)') 'No. of points: ',STEPS
169
CALL STTPUT(TEXT,ISTAT)
170
IF (STEPS.GT.MAXSTEPS) THEN
172
TEXT='*** DANGER *** Data span too long interval'//
173
$ ' for good sampling of periodogrammes.'
174
CALL STTPUT(TEXT,ISTAT)
175
TEXT='Analysing data split into shorter'//
176
$ 'intervals and taking'//
177
$ ' average of periodogrammes '//
178
$ 'will help by reducing resolution.'
179
CALL STTPUT(TEXT,ISTAT)