1
C @(#)elmor.for 19.1 (ES0-DMD) 02/25/03 13:29:43
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 Massachusetss Ave, Cambridge,
20
C Corresponding 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
SUBROUTINE ELMRF(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,
32
C.PURPOSE: Moffat o Gauss sigma fisso - piano orizzontale
38
PARAMETER (NIND=4*NST+3)
40
INTEGER IVX(1), IVY(1)
56
INTEGER INK, INK1, NCD
59
REAL VTN, VFZ, VFF, VFU, VG
66
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),VFF(NIND),
84
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
86
FK(I) = 1./(VP(4*I+3)**2)
100
EPES = DIX*DIX+DIY*DIY
104
CO = -VP(N1)*EP*2.*FK(L)
108
EP2 = EPE**(-BETA-1.)
109
CO = VP(N1)*BETA*EP2*2*FK(L)
121
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
123
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
135
RMT(I,I) = RMT(I,I)*(1+FS**2)
139
CALL LISIB(RMT,VC,NIN,NCD,SIG)
146
VP(INK) = VC(INK1)*VPES(J)+VP(INK)
147
IF(ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
157
EEE = ((VP(N+1)-IVX(I))**2 + (VP(N+2)-IVY(I))**2)/
160
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
162
VG = VG+VP(N)*(1+EEE)**(-BETA)
165
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
176
SUBROUTINE ELMRFV(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,
179
C.PURPOSE: Moffat o Gauss sigma fisso - piano fisso
185
PARAMETER (NIND=4*NST+3)
187
INTEGER IVX(1), IVY(1)
203
INTEGER INK, INK1, NCD
206
REAL VTN, VFZ, VFF, VFU, VG
210
INTEGER I, J, K, L, N
213
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),VFF(NIND),
231
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
233
FK(I) = 1./(VP(4*I+3)**2)
245
DIX = IVX(K)-VP(N1+1)
246
DIY = IVY(K)-VP(N1+2)
247
EPES = DIX*DIX+DIY*DIY
251
CO = -VP(N1)*EP*2.*FK(L)
255
EP2 = EPE**(-BETA-1.)
256
CO = VP(N1)*BETA*EP2*2*FK(L)
262
VTN(N+3) = CO*EPES/VP(N1+3)
269
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
271
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
283
RMT(I,I) = RMT(I,I)*(1+FS**2)
287
CALL LISIB(RMT,VC,NIN,NCD,SIG)
294
VP(INK) = VC(INK1)*VPES(J)+VP(INK)
295
IF(ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
305
EEE = ((VP(N+1)-IVX(I))**2 + (VP(N+2)-IVY(I))**2)/
308
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
310
VG = VG+VP(N)*(1+EEE)**(-BETA)
313
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
324
SUBROUTINE ELMRR(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,
327
C.PURPOSE: Moffat o Gauss sigma fisso - piano orizzontale
333
PARAMETER (NIND=4*NST+3)
335
INTEGER IVX(1), IVY(1)
351
INTEGER INK, INK1, NCD
354
REAL VTN, VFZ, VFF, VFU, VG
358
INTEGER I, J, K, L, N
361
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),VFF(NIND),
379
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
381
FK(I) = 1./(VP(4*I+3)**2)
393
DIX = IVX(K)-VP(N1+1)
394
DIY = IVY(K)-VP(N1+2)
395
EPES = DIX*DIX+DIY*DIY
399
CO = -VP(N1)*EP*2.*FK(L)
403
EP2 = EPE**(-BETA-1.)
404
CO = VP(N1)*BETA*EP2*2*FK(L)
416
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
418
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
430
RMT(I,I) = RMT(I,I)*(1+FS**2)
434
CALL LISIB(RMT,VC,NIN,NCD,SIG)
437
VP(THREE) = VC(1)*VPES(3)+VP(THREE)
442
VP(INK) = VC(INK1)*VPES(J)+VP(INK)
443
IF(ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
453
EEE = ((VP(N+1)-IVX(I))**2 + (VP(N+2)-IVY(I))**2)/
456
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
458
VG = VG+VP(N)*(1+EEE)**(-BETA)
461
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
472
SUBROUTINE ELMRRV(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,
475
C MOFFAT O GAUSS SIGMA VAR. - PIANO ORIZZONTALE
482
PARAMETER (NIND=NST*4+3)
484
INTEGER IVX(1), IVY(1)
500
INTEGER INK, INK1, NCD
503
REAL VTN, VFZ, VFF, VFU, VG
507
INTEGER I, J, K, L, N
510
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),VFF(NIND),
526
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
528
FK(I) = 1./(VP(4*I+3)**2)
539
DIX = IVX(K)-VP(N1+1)
540
DIY = IVY(K)-VP(N1+2)
541
EPES = DIX*DIX+DIY*DIY
544
CO = -VP(N1)*EP*2.*FK(L)
548
EP2 = EPE**(-BETA-1.)
549
CO = VP(N1)*BETA*EP2*2*FK(L)
555
VTN(N+3) = CO*EPES/VP(N1+3)
562
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
564
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
576
RMT(I,I) = RMT(I,I)*(1+FS**2)
580
CALL LISIB(RMT,VC,NIN,NCD,SIG)
582
VP(THREE) = VC(1)*VPES(3)+VP(THREE)
587
VP(INK) = VC(INK1)*VPES(J)+VP(INK)
588
IF (ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
598
EEE = ((VP(N+1)-IVX(I))**2+(VP(N+2)-IVY(I))**2)/
601
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
603
VG = VG+VP(N)*(1+EEE)**(-BETA)
606
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
616
SUBROUTINE ELMRPF(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,SIG)
618
C.PURPOSE: Moffat o Gauss sigma fisso - piano orizzontale - posiz. fissa
624
PARAMETER (NIND=4*NST+3)
626
INTEGER IVX(1), IVY(1)
644
REAL VTN, VFZ, VFF, VFU, VG
648
INTEGER I, J, K, L, N
651
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),
665
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
667
FK(I) = 1./(VP(4*I+3)**2)
676
DIX = IVX(K)-VP(N1+1)
677
DIY = IVY(K)-VP(N1+2)
678
EPES = DIX*DIX+DIY*DIY
690
VC(I) = VC(I)+VZ(K)*VTP
692
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
704
CALL LISIB(RMT,VC,NIN,NCD,SIG)
715
EEE = ((VP(N+1)-IVX(I))**2+(VP(N+2)-IVY(I))**2)/
718
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
720
VG = VG+VP(N)*(1+EEE)**(-BETA)
723
SQM=SQM+(VZ(I)-VG)**2*WEI(I)
732
SUBROUTINE ELMRPV(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,
735
C.PURPOSE: Moffat o Gauss sigma fisso - piano orizzontale - posiz. fissa
741
PARAMETER (NIND=4*NST+3)
743
INTEGER IVX(1), IVY(1)
759
INTEGER INK, INK1, NCD
762
REAL VTN, VFZ, VFF, VFU, VG
766
INTEGER I, J, K, L, N
769
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),VFF(NIND),
787
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
789
FK(I) = 1./(VP(4*I+3)**2)
801
DIX = IVX(K)-VP(N1+1)
802
DIY = IVY(K)-VP(N1+2)
803
EPES = DIX*DIX+DIY*DIY
807
CO = -VP(N1)*EP*2.*FK(L)
811
EP2 = EPE**(-BETA-1.)
812
CO = VP(N1)*BETA*EP2*2*FK(L)
816
VTN(N+1) = CO*EPES/VP(N1+3)
823
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
825
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
837
RMT(I,I) = RMT(I,I)*(1+FS**2)
841
CALL LISIB(RMT,VC,NIN,NCD,SIG)
844
VP(THREE) = VC(1)*VPES(3)+VP(THREE)
849
VP(INK) = VC(INK1)*VPES(J)+VP(INK)
850
IF(ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
860
EEE = ((VP(N+1)-IVX(I))**2 + (VP(N+2)-IVY(I))**2)/
863
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
865
VG = VG+VP(N)*(1+EEE)**(-BETA)
868
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
879
SUBROUTINE ELMRV(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,SIG)
881
C.PURPOSE: Moffat o Gauss sigma var. - piano inclinato
887
PARAMETER (NIND=4*NST+3)
889
INTEGER IVX(1), IVY(1)
898
INTEGER LG, THREE, TWO
908
REAL VTN, VFZ, VFF, VFU, VG
912
INTEGER I, J, K, L, N
915
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),
932
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
934
FK(I) = 1./(VP(4*I+3)**2)
942
VPI = VP(1)*IVX(K)+VP(TWO)*IVY(K)+VP(THREE)
946
DIX = IVX(K)-VP(N1+1)
947
DIY = IVY(K)-VP(N1+2)
948
EPES = DIX*DIX+DIY*DIY
951
CO = -VP(N1)*EP*2.*FK(L)
955
EP2 = EPE**(-BETA-1.)
956
CO = VP(N1)*BETA*EP2*2*FK(L)
961
VTN(N1+3) = CO*EPES/VP(N1+3)
968
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
970
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
982
RMT(I,I) = RMT(I,I)*(1+FS**2)
986
CALL LISIB(RMT,VC,NIN,NCD,SIG)
989
VP(I) = VC(I)*VPES(I)+VP(I)
995
VP(INK) = VC(INK)*VPES(J)+VP(INK)
996
IF(ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
1003
VG = VP(1)*IVX(I)+VP(TWO)*IVY(I)+VP(THREE)
1006
EEE = ((VP(N+1)-IVX(I))**2+(VP(N+2)-IVY(I))**2)/
1008
IF (BETA.LE.0.) THEN
1009
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
1011
VG = VG+VP(N)*(1+EEE)**(-BETA)
1014
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
1024
SUBROUTINE ELMRH(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,SIG)
1026
C.PURPOSE: Moffat o Gauss sigma fisso - piano fisso - posiz. fissa
1032
PARAMETER (NIND=4*NST+3)
1034
INTEGER IVX(1), IVY(1)
1052
REAL VTN, VFZ, VFF, VFU, VG
1056
INTEGER I, J, K, L, N
1059
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),
1060
2 VFF(NIND),VC(NIND)
1072
IF (BETA.LE.0.) THEN
1073
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
1075
FK(I) = 1./(VP(4*I+3)**2)
1083
DIX = IVX(K)-VP(N1+1)
1084
DIY = IVY(K)-VP(N1+2)
1085
EPES = DIX*DIX+DIY*DIY
1087
EP = EXP(EPES*FK(L))
1097
VC(I) = VC(I)+VZ(K)*VTP
1099
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
1111
CALL LISIB(RMT,VC,NIN,NCD,SIG)
1122
EEE = ((VP(N+1)-IVX(I))**2+(VP(N+2)-IVY(I))**2)/
1124
IF (BETA.LE.0.) THEN
1125
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
1127
VG = VG+VP(N)*(1+EEE)**(-BETA)
1130
SQM = SQM+(VZ(I)-VG)**2*WEI(I)
1139
SUBROUTINE ELMRX(IVX,IVY,VZ,NP,VP,FS,VPES,NC,BETA,SQM,LG,WEI,
1142
C.PURPOSE: Moffat o Gauss sigma fisso - piano orizzontale
1148
PARAMETER (NIND=4*NST+3)
1150
INTEGER IVX(1), IVY(1)
1159
INTEGER LG, THREE, TWO
1166
INTEGER INK, INK1, NCD
1169
REAL VTN, VFZ, VFF, VFU, VG
1173
INTEGER I, J, K, L, N
1176
COMMON /SUFR/RMT(NIND,NIND),VTN(NIND),VFZ(NIND),VFF(NIND),
1179
C *** start the code
1195
FK(I) = -4*ALOG(2.)/(VP(4*I+3)**2)
1197
FK(I) = 1./(VP(4*I+3)**2)
1206
VPI = VP(1)*IVX(K)+VP(TWO)*IVY(K)+VP(THREE)
1211
DIX = IVX(K)-VP(N1+1)
1212
DIY = IVY(K)-VP(N1+2)
1213
EPES = DIX*DIX+DIY*DIY
1216
EP = EXP(EPES*FK(L))
1217
CO = -VP(N1)*EP*2.*FK(L)
1221
EP2 = EPE**(-BETA-1.)
1222
CO = VP(N1)*BETA*EP2*2*FK(L)
1234
VC(I) = VC(I)+(VZ(K)-VFU)*VTP
1236
RMT(I,J) = RMT(I,J)+VTN(J)*VTP
1248
RMT(I,I) = RMT(I,I)*(1+FS**2)
1252
CALL LISIB(RMT,VC,NIN,NCD,SIG)
1256
VP(I) = VC(I)*VPES(I)+VP(I)
1262
VP(INK) = VC(INK1)*VPES(J)+VP(INK)
1263
IF(ABS(VP(INK)).GT.1000..AND.J.NE.4) NCD=-1
1270
VG = VP(1)*IVX(I)+VP(TWO)*IVY(I)+VP(THREE)
1273
EEE = ((VP(N+1)-IVX(I))**2 + (VP(N+2)-IVY(I))**2)/
1276
VG = VG+VP(N)*EXP(-EEE*4*ALOG(2.))
1278
VG = VG+VP(N)*(1+EEE)**(-BETA)
1281
SQM = SQM+(VZ(I)-VG)**2*WEI(I)