Due to the lapse in federal government funding, NASA is not updating this website. We sincerely regret this inconvenience.
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
subroutine eqnox(X, GM, Y)
Definition: eqnox.f:2
subroutine pout(T, X, LUN)
Definition: pout.f:2
#define pi
Definition: vincenty.c:23
#define re
Definition: l1_czcs.c:695
double dmod(double a, double p)
Description:
Definition: nav.c:23