1
C===========================================================================
2
C Copyright (C) 1995,2004 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===========================================================================
28
C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
30
C.COPYRIGHT: Copyright (c) 1987,2004 European Southern Observatory,
33
C.VERSION: 1.0 ESO-FORTRAN Conversion, AA 18:13 - 21 DEC 1987
35
C.LANGUAGE: F77+ESOext
45
C Execute the commands
46
C FIT/IMA [iter[,chisq[,relax]]] image[,error] [FZname]
47
C FIT/IMA [iter[,chisq[,relax]]] GCURSOR [FZname]
48
C FIT/IMA [iter[,chisq[,relax]]] CURSOR [FZname] - NOT YET IMPLEM.
50
C FIT/TAB [iter[,chisq[,relax]]] table dep[,err] ind.vars [FZname]
58
C P1 - P8 contain input parameters
62
C Use fit interface routines
67
C-----------------------------------------------------------
70
C ... define parameters
74
INTEGER IVAR(8),FIX(20),KUN,KNUL, NP
75
INTEGER ISTAT, I, II, IAV, NIND, NPAR
76
INTEGER NFUN,NDAT,N,J,IDVAR,NL,NACT,NAMLEN,MM,IVAL
80
DOUBLE PRECISION PAR(20),ERR(20),DVAL
82
CHARACTER*80 FNAME,NAME,FILE,MASK,LINE1
83
CHARACTER IAC*1,AUX*30,AUX1*30
84
CHARACTER LINE2*80,TYPE*4,LINE*80
86
CHARACTER*80 HEAD,OUT,HEADER
90
INCLUDE 'MID_INCLUDE:FITI.INC/NOLIST'
91
INCLUDE 'MID_INCLUDE:FITC.INC/NOLIST'
93
DOUBLE PRECISION OURSTART(FZINDMAX),OURSTEP(FZINDMAX)
96
DATA MSG/'ERR:FITIMAGxxxx'/
97
DATA HEAD/' Parameter Initial Guess Actual Value Error'
102
CALL STSPRO('FITIMAG')
104
CALL STKRDC('P2',1,1,NAMLEN,I,LINE3,KUN,KNUL,ISTAT)
105
II = INDEX(LINE3,',')
113
CALL STKRDC('P3',1,1,NAMLEN,II,LINE1,KUN,KNUL,ISTAT)
114
IF (LINE1(1:1).EQ.':' .OR. LINE1(1:1).EQ.'#') THEN
116
CALL STKRDC('P4',1,1,80,IAV,LINE2,KUN,KNUL,ISTAT)
117
CALL STKRDC('P5',1,1,NAMLEN,IAV,NAME,KUN,KNUL,ISTAT)
122
IF (NAME(1:1).EQ.'?') THEN
123
CALL STKRDC('FITNAME',1,1,NAMLEN,IAV,NAME,KUN,KNUL,ISTAT)
125
CALL STKWRC('FITNAME',1,NAME,1,NAMLEN,KUN,ISTAT)
127
CALL STKRDR('INPUTR',1,9,IAV,FZMETPAR(2),KUN,KNUL,ISTAT)
128
CALL STKRDC('FITCHAR',1,21,4,IAV,PPRINT,KUN,KNUL,ISTAT)
129
CALL GENCNV(PPRINT,2,1,IVAL,FZMETPAR(1),DVAL,MM)
133
C ... fit for image - start, step from image => fit-function
136
CALL FTIMAG(FILE,MASK,ISTAT)
138
CALL FTTABL(FILE,LINE1,LINE2,ISTAT)
141
C FTINIT overwrites FZSTART, FZSTEP - so save them
143
DO 100, I = 1,FZINDMAX
144
OURSTART(I) = FZSTART(I)
145
OURSTEP(I) = FZSTEP(I)
147
CALL FTINIT(NAME,ISTAT)
148
DO 200, I = 1,FZINDMAX
149
FZSTART(I) = OURSTART(I)
150
FZSTEP(I) = OURSTEP(I)
153
CALL FTDODO(NINT(FZMETPAR(2)),FZMETPAR(4),FZMETPAR(3),VAL1,
154
+ VAL2,NACT,CHISQ,ISTAT)
156
C ... read parameters
158
CALL FTINFO(FILE,TYPE,IDVAR,NIND,NFUN,NDAT,ISTAT)
159
LINE = ' No. of data points '
160
WRITE (LINE(25:32),9030) NDAT
161
CALL STTPUT(LINE,ISTAT)
163
CALL STTPUT(' ',ISTAT)
164
IF (TYPE.EQ.'TBL ') THEN
165
LINE = ' Dependent variable '
166
WRITE (LINE(25:28),9000) IDVAR
167
CALL STTPUT(LINE,ISTAT)
169
LINE = ' No. of ind. variables '
170
WRITE (LINE(25:28),9000) NIND
171
CALL STTPUT(LINE,ISTAT)
173
C ... read fit variables
176
CALL FTRDIN(NIND,IVAR,N,ISTAT)
177
IF (TYPE.EQ.'BDF ') THEN
178
LINE = ' variable .... is axis ....'
180
IF (TYPE.EQ.'TBL ') THEN
181
LINE = ' variable .... is column ....'
182
ELSE ! DO NOT PRINT IVAR
187
WRITE (LINE(11:14),9000) I
188
WRITE (LINE(26:29),9000) IVAR(I)
189
CALL STTPUT(LINE,ISTAT)
195
CALL STTPUT(' ',ISTAT)
196
LINE = ' No. of functions '
197
WRITE (LINE(25:28),9000) NFUN
198
CALL STTPUT(LINE,ISTAT)
201
CALL STTPUT(' ',ISTAT)
202
CALL FTRDFN(I,LINE,ISTAT)
204
CALL STTPUT(LINE(1:II),ISTAT)
205
CALL STTPUT(HEAD,ISTAT)
206
CALL FTRDPR(I,FNAME,NPAR,PAR,ERR,FIX,ISTAT)
213
AUX1 = AUX(1:NL)//'='
214
II = INDEX(LINE,AUX1(1:NL+1))
219
II = INDEX(AUX,' ') - 1
222
WRITE (OUT,9010) FZPTOKEN(NP),AUX1(1:16),PAR(J),
224
CALL STTPUT(OUT,ISTAT)
231
CALL STTPUT(' ',ISTAT)
232
CALL STTPUT(' Red. Chisq Act. Nr. F. Eval.',ISTAT)
233
WRITE (HEADER,9020) FZCCHIS,FZNITER
234
CALL STTPUT(HEADER,ISTAT)
235
CALL STTPUT(' ',ISTAT)
236
CALL FTEXIT(NAME,ISTAT)
238
WRITE (MSG(13:16),9000) ISTAT
239
C CALL TDERRR(ISTAT,MSG,STATUS)
243
9010 FORMAT (1X,A,2X,A,1X,E14.6,1X,E14.6)
244
9020 FORMAT (3X,1PE12.4,12X,I6)