OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
pout.f
Go to the documentation of this file.
1  SUBROUTINE pout(T,X,LUN)
2 C VERSION OF 4/13/87
3 C PURPOSE
4 C PRINTOUT ROUTINE FOR TRAJECTORY PROGRAM
5 C INPUT
6 C T = CURRENT TIME (SEC)
7 C X = 6-D CARTESIAN COORD X,Y,Z,XD,YD,ZD (KM,KM/SEC)
8 C SEE ROUTINES ASAP AND DER FOR EXPLANATION OF COMMON BLOCK
9 C VARIABLES
10 C OUTPUT
11 C NONE
12 C CALL SUBROUTINES
13 C EQNOX
14 C REFERENCES
15 C JPL EM 312/87-153, 20 APRIL 1987
16 C ANALYSIS
17 C J. H. KWOK - JPL
18 C PROGRAMMER
19 C J. H. KWOK - JPL
20 C PROGRAM MODIFICATIONS
21 C NONE
22 C COMMENTS
23 C NONE
24 C
25 C MODIFICATION HISTORY
26 C Changed TIME common block name to TIMECMN, to eliminate linker
27 C linker warnings. B. A. Franz, GSC, November 14, 1997.
28 C
29 
30  IMPLICIT DOUBLE PRECISION (a-h,o-z)
31  dimension x(6)
32  dimension y(18)
33  common/option/l,m,ires,isun,imoon,iephem,idrag,idens,isrp,iorb
34  1 ,iprint,inode,iplot
35  common/timecmn/ti,tf,tr
36  common/pltcon/ge,re,rate,pm,aj2,ellip,ratm
37  common/count/node,nrev
38  common/case/icase
39  DATA hts,dth,rtd,pi,tpi,one/3.6d3,24.d0,57.29577951308232d0,
40  1 3.141592653589793d0,6.283185307179586d0,1.d0/
41  DATA small/1.d-3/
42  thour=(t-ti)/hts
43  dday=thour/dth
44  iday=idint(dday)
45  hour=thour-iday*dth
46  CALL eqnox(x,ge,y)
47  ha=dmod(pm+(t-tr)*rate,tpi)
48  enode=dmod(y(9)-ha+tpi,tpi)
49  along=datan2(x(2),x(1))-ha
50  along=dmod(along+tpi+tpi,tpi)
51  alat=dasin(x(3)/y(16))
52  argl=dmod(y(14)-y(9)+tpi,tpi)
53  ealt=y(16)-dsqrt(re**2*(one-ellip**2)/(one-(ellip*dcos(alat))**2))
54  palt=y(1)*(one-y(7))-re
55  alt=y(16)-re
56 C
57 C *** DOUBLE CHECK APSIS CROSSING, THIS IS NEEDED IN CASE SOME
58 C *** PERTURBATION ON NEARLY CIRCULAR ORBIT IS CHANGING MEAN ANOMALY
59 C *** BACKWARDS
60 C
61  IF (iprint.EQ.1) THEN
62  IF (icase.EQ.3.OR.icase.EQ.4) THEN
63  IF (dabs(y(11)).LT.small.OR.dabs(y(11)-tpi).LT.small) icase=3
64  IF (dabs(y(11)-pi).LT.small) icase=4
65  ENDIF
66  ENDIF
67  IF (iprint.EQ.1.OR.inode.EQ.1) THEN
68 C
69 C *** CHANGE ICASE IF FIRST PRINT OUT IS A NODAL OR APSIS CROSSING
70 C
71  IF (node.EQ.0.AND.(dabs(argl).LT.small.OR.dabs(argl-tpi).LT.small)
72  1) icase=1
73  IF (node.EQ.0.AND.dabs(argl-pi).LT.small) icase=2
74  IF (nrev.EQ.0.AND.(dabs(y(11)).LT.small.OR.dabs(y(11)-tpi).LT.smal
75  1l)) icase=3
76  IF (nrev.EQ.0.AND.dabs(y(11)-pi).LT.small) icase=4
77  ENDIF
78  IF (iprint.EQ.1.OR.inode.EQ.1) THEN
79  IF (icase.EQ.0) GO TO 105
80  GO TO (101,102,103,104) icase
81  101 node=node+1
82  WRITE(*,1001)node
83  GO TO 105
84  102 WRITE(*,1002)node
85  GO TO 105
86  103 nrev=nrev+1
87  WRITE(*,1003)nrev
88  GO TO 105
89  104 WRITE(*,1004)nrev
90  105 CONTINUE
91  ENDIF
92 C
93 C *** START UNIT CONVERSION
94 C
95  y(6)=y(6)*rtd
96  DO 10 i=8,15
97  10 y(i)=y(i)*rtd
98  y(18)=y(18)/hts
99  argl=argl*rtd
100  ha=ha*rtd
101  enode=enode*rtd
102  along=along*rtd
103  alat=alat*rtd
104 c WRITE(*,1000)IDAY,HOUR
105 c WRITE(*,2000)X
106  WRITE(lun,2001)iday,hour,x
107 c WRITE(*,3000)(Y(I),I=1,6)
108 c WRITE(*,4000)(Y(I),I=7,15),ARGL
109 c WRITE(*,5000)(Y(I),I=16,17),ENODE,ALONG,ALAT,HA,ALT,EALT,PALT
110 c 1 ,Y(18)
111  IF (iplot.EQ.1) THEN
112  WRITE(8,9000)icase,node,nrev,dday,thour,y(1)
113  1 ,(y(i),i=7,11),along,alat,enode,ealt,palt,alt
114  icase=0
115  ENDIF
116  1001 FORMAT(/5x,'PRINTING INFORMATION AT ASCENDING NODE # ',i5)
117  1002 FORMAT(/5x,'PRINTING INFORMATION AT DESCENDING NODE #',i5)
118  1003 FORMAT(/5x,'PRINTING INFORMATION AT PERIAPSIS OF REV #',i5)
119  1004 FORMAT(/5x,'PRINTING INFORMATION AT APOAPSIS OF REV # ',i5)
120  1000 FORMAT(/5x,i5,' DAYS',f12.6,' HOURS FROM EPOCH')
121  2001 FORMAT(i3,f11.7,3f11.4,3f11.7)
122  2000 FORMAT(1p,5x,'CARTESIAN COORD X, Y, Z, XD, YD, ZD',/,6d22.14)
123  3000 FORMAT(1p,5x,'EQUINOCTIAL ELEMENTS A, H, K, P, Q, MEAN LONG',/
124  1,6d22.14)
125  4000 FORMAT(1p,5x,'CLASSICAL ELEMENTS E, I, NODE, W, MA, TA, EA, TRUE L
126  1ONG, ECC LONG, ARG OF LAT',/,5d22.14/5d22.14)
127  5000 FORMAT(1p,5x,'OTHER PARAMETERS R, V, ENODE, LONG, LAT, HOUR ANGLE/
128  1 ALT, ELLIPSOIDAL ALT, PERIAPSIS ALT, PERIOD',/,6d22.14/6d22.14)
129  9000 FORMAT(3i5,2f12.6,f14.5,f12.8,7f12.5,3f14.5)
130  RETURN
131  END
#define re
Definition: l1_czcs_hdf.c:701
subroutine eqnox(X, GM, Y)
Definition: eqnox.f:2
#define pi
Definition: vincenty.c:23
subroutine pout(T, X, LUN)
Definition: pout.f:2