C **************************** PROGRAM PROFLS ****************@@**** C 00001**3 C NAME PROFLS 00002**3 C 00003**3 C TYPE PROGRAM 00004**3 C 00005**3 C PURPOSE TO PLOT GEOIDAL AND SEA SURFACE PROFILES 00006**3 C 00007**3 C I/O DEVICES ICR - CARD READER 00008**3 C MTIN - INPUT MAGNETIC TAPE LOGICAL UNIT 00009**3 C 00010**3 C CALLING ROUTINES PLOTS , FILTER , LOCS 00011**3 C 00012**3 DOUBLE PRECISION FDAY 00013**3 INTEGER BSUB , ESUB 00014**3 C 00015**3 DIMENSION COEF(3) , COVAR(3,3) 00016**3 DIMENSION ZLAT(2) , ZLON(2) 00017**3 DIMENSION BSUB(70) , ESUB(70) 00018**3 C 00019**3 C THE DIMENSION OF THE FOLLOWING VECTORS PERTAIN TO THE 00020**3 C MAXIMUN NUMBER OF POINT VALUES TO BE PLOTTED 00021**3 C 00022**3 DIMENSION GH(700) , GN(700) , GSH(700) , SEC(700) 00023**3 C 00024**3 COMMON /LIMITS/ TMIN,TMAX,ZLAT,ZLON 00025 COMMON /HMNMX / HMIN , HMAX 00026 DATA MTIN / 11 / , ICR / 5 / , IPRT / 6 / 00027**2 C 00028 C 00029**3 C INPUT PARAMETERS 00030**3 C 00031**3 C NFILE - NUMBER OF FILES TO PROCESS 00032**3 C HMIN - MINIMUM LIMIT OF HEIGHT VALUE TO BE PLOTTED 00033**3 C HMAX - MAXIMUM LIMIT OF HEIGHT VALUE TO BE PLOTTED 00034**3 C 00035**3 READ(ICR,200) NFILE , HMIN , HMAX 00036**3 200 FORMAT(I4,2F8.0) 00037**3 C 00038**3 TEMIN = HMIN 00039**3 TEMAX = HMAX 00040**3 DO 20 K = 1,NFILE 00041**2 C 00042**3 HMIN = TEMIN 00043**3 HMAX = TEMAX 00044**3 NSUB=1 00045 BSUB(1)=1 00046 ZLAT(1)=500. 00047 ZLAT(2)=-500. 00048 ZLON(1)=500. 00049 ZLON(2)=-500. 00050 TMIN=999999. 00051 TMAX=0. 00052 I=1 00053 1 READ(MTIN,100,END=99) IREV,IFILE,IREC,IFORM,LSMALT,LSIG,FDAY,LAT, 00054**2 # LONG,LTROP,LGEOID,LTIDE,LSEAH,IRES,LH,NERP,TM,(COEF(II),II=1,3)00055 # ,((COVAR(II,JJ),JJ=1,II),II=1,3),ITIDE,IBIAS,IBIASD,ISEAH,ISIG00056 100 FORMAT(3I5,I2,I9,I6,F12.0,2I8,6I6,I2,F12.0,9F10.0,5I6) 00057 IF(I.EQ.1)NOLD=IREC 00058 IF(I.EQ.1) WRITE(IPRT,102) IREV 00059**3 102 FORMAT(5X,'REV NUMBER = ',I5) 00060**3 15 SEC(I)=FDAY/1.D6 00061 XLAT =DFLOAT(LAT)/1.D4 00062**3 XLON =DFLOAT(LONG)/1.D4 00063**3 YLAT=DFLOAT(LAT)/1.D4 00064 YLON=DFLOAT(LONG)/1.D4 00065 GN(I)=DFLOAT(LGEOID)/1.D2 00066**3 GH(I)=DFLOAT(LSEAH)/1.D2 00067 GSH(I) = DFLOAT( ISEAH)/1.D2 00068**3 IF(SEC(I).LT.TMIN)TMIN=SEC(I) 00069 IF(SEC(I).GT.TMAX)TMAX=SEC(I) 00070 IF(XLAT .LT.ZLAT(1)) ZLAT(1)=XLAT 00071**3 IF(XLAT .GT.ZLAT(2)) ZLAT(2)=XLAT 00072**3 IF(XLON .LT.ZLON(1)) ZLON(1)=XLON 00073**3 IF(XLON .GT.ZLON(2)) ZLON(2)=XLON 00074**3 IF((IREC-NOLD).LT.10) GO TO 10 00075 ESUB(NSUB)=I-1 00076 NSUB=NSUB+1 00077 BSUB(NSUB)=I 00078 10 NOLD=IREC 00079 C 00080 C CHECK IF THE VALUES ARE WITHIN THE LIMITS 00081 C 00082 IF(GN(I).LT.HMIN .OR. GN(I).GT.HMAX) GO TO 17 00083 IF(GH(I).LT.HMIN .OR. GH(I).GT.HMAX) GO TO 17 00084 WRITE(IPRT,101) I,SEC(I),XLAT,XLON,GN(I),GH(I),GSH(I) 00085**3 101 FORMAT(' ',I5,2X,F10.3,2F10.4,3F10.3) 00086**3 I=I+1 00087 GO TO 1 00088 C 00089 C READ RECORDS UNTIL VALUES WITHIN THE LIMITS ARE FOUND 00090 C 00091 17 READ(MTIN,100,END=99) IREV,IFILE,IREC,IFORM,LSMALT,LSIG,FDAY,LAT, 00092**2 # LONG,LTROP,LGEOID,LTIDE,LSEAH,IRES,LH,NERP,TM,(COEF(II),II=1,3)00093 # ,((COVAR(II,JJ),JJ=1,II),II=1,3),ITIDE,IBIAS,IBIASD,ISEAH,ISIG00094 C 00095**3 GN(I)=DFLOAT(LGEOID)/1.D2 00096**3 GH(I)=DFLOAT(LSEAH)/1.D2 00097 GSH(I) = DFLOAT(ISEAH)/1.D2 00098**3 NOLD=IREC 00099 IF(GN(I).GE.HMIN .AND. GN(I).LE.HMAX .AND. 00100 # GH(I).GE.HMIN .AND. GH(I).LE.HMAX) GO TO 16 00101 WRITE(IPRT,103)IREC,GN(I),GH(I) 00102**2 103 FORMAT(' ','IREC',I4,'REJECTED',2F10.3) 00103 GO TO 17 00104 16 NOLD=IREC-11 00105 GO TO 15 00106 99 ESUB(NSUB)=I-1 00107 IF(NSUB.EQ.0) GO TO 98 00108 C 00109**3 C ADJUST THE DIMENSIONS OF THE SIZE OF THE PLOTS (IN HEIGHT) TO THE 00110**3 C MIN AND MAX HEIGHT FOUND IN THE DATA VECTORS TO BE PLOTTED 00111**3 C 00112**3 CALL LOCS (KMAX,KMIN,GH,1,ESUB(NSUB)) 00113**3 CALL LOCS (LMAX,LMIN,GN,1,ESUB(NSUB)) 00114**3 CALL LOCS (IMAX,IMIN,GSH,1,ESUB(NSUB)) 00115**3 C 00116**3 HTMIN = AMIN1 (GH(KMIN),GN(LMIN),GSH(IMIN)) 00117**3 HTMAX = AMAX1 (GH(KMAX),GN(LMAX),GSH(IMAX)) 00118**3 C 00119**3 IHMIN = INT(HTMIN-1) 00120**3 IHMAX = INT(HTMAX+1) 00121**3 C 00122**3 HMIN = FLOAT(IHMIN) 00123**3 HMAX = FLOAT(IHMAX) 00124**3 C 00125**3 C 00126**3 C PASS THE ADJUSTED SEA SURFACE HEIGHTS THROUGH LOW PASS FILTER 00127**3 C 00128**3 CALL FILTER(NSUB,BSUB,ESUB,GSH,GH) 00129**3 C 00130**3 C 00131**3 C PLOT PROFILES OF THE CURRENT PASS 00132**3 C 00133**3 CALL PLOTS (IREV,SEC,GH,GN,GSH,BSUB,ESUB,NSUB) 00134**2 GO TO 20 00135**3 98 WRITE(IPRT,104) 00136**2 104 FORMAT(' ','ALL DATA REJECTED FOR PLOTTING') 00137 20 CONTINUE 00138**3 97 STOP 00139 END 00140 SUBROUTINE PLOTS (IREV,SEC,GH,GN,GSH,BSUB,ESUB,NSUB) C 00142 C 00143**3 C NAME PLOTS 00144**3 C 00145**3 C PURPOSE TO PLOT GEOIDAL AND SEA SURFACE PROFILES AGAINST TIME00146**3 C 00147**3 C CALLING ROUTINES AREA , CHRPRT , NMBR , LOCATE , 00148**3 C DSHLNS , SETPLT , AXS2 , LNSPLT , ENDPLT 00149**3 C (STANDARD UNB PLOTTING PACKAGE ROUTINES) 00150**3 C 00151**3 C INPUT PARAMETERS IREV - REVOLUTION NUMBER (FOR TITLE ONLY) 00152**3 C SEC - ARRAY OF TIMES 00153**3 C (ELAPSED TIME FROM FIRST RECORD) 00154**3 C GH , GN , GSH - ARRAYS TO BE PLOTTED 00155**3 C BSUB , ESUB - ARRAYS CONTAINING SUBSCRIPTS 00156**3 C SYGNIFYING THE BEGINNING AND 00157**3 C END OF SEGMENTS WITHIN THE 00158**3 C PLOTTED PROFILES 00159**3 C NSUB - NUMBER OF SEGMENTS WITHIN THE PROFILE 00160**3 C 00161**3 C 00162 INTEGER ESUB , BSUB 00163**2 C 00164**3 DIMENSION XX(2) , YY(2) , ZLAT(2) , ZLON(2) , GAP(2) , GAP2(2) 00165**3 DIMENSION BSUB(70) , ESUB(70) 00166**3 DIMENSION SEC(700) , GN(700) , GSH(700) , GH(700) 00167**3 C 00168**3 C 00169**3 COMMON /LIMITS/ TMIN,TMAX,ZLAT,ZLON 00170 COMMON /HMNMX / HMIN , HMAX 00171 C 00172 C 00173 C CALCULATE WIDTH OF PLOT 00174 C 00175 IT=(TMAX-TMIN+50.)/100. 00176 IF(IT.EQ.0) IT = 1 00177**3 T=IT*100 00178 WIDTH=T/50. 00179 NDD=WIDTH 00180 CALL AREA(WIDTH+2.,17.33) 00181 C 00182 XMN = TMIN - 100.0 00183 YMN = HMIN - 10. 00184 XMX = TMIN + T 00185 YMX = HMAX + 10.0 00186 CALL SETPLT (XMN,YMN,XMX,YMX) 00187 C 00188 C PLOT MAXIMUM AND MINIMUM LATITUDE AND LONGITUDE 00189 C 00190 YNM1 = HMIN - 2.5 00191 YNM2 = HMIN - 3.5 00192 C 00193 CALL NMBR(TMIN,YNM1,ZLAT,'(''LATITUDE FROM '',F5.2,'' TO '',F5.2,'00194 &' DEGREES'')',0.,.1,2,1,1) 00195 C 00196 CALL NMBR(TMIN,YNM2,ZLON,'(''LONGITUDE FROM '',F6.2,'' TO '',F6.2,00197 &'' DEGREES'')',0.,.1,2,1,1) 00198 C 00199 C PLOT AXES 00200 C 00201 C TMX - INCREMENT IN THE TIME VALUE TO BE PLOTTED NEAR EACH TICK MARK 00202 C TMY - INCREMENT IN THE HEIGHT VALUE TO BE PLOTTED NEAR EACH TICK MARK00203 C 00204 TMX = 50. 00205 TMY = 5.0 00206 ND1 = (HMAX-HMIN+(TMY/2.))/TMY 00207**3 C 00208 CALL AXS2(TMIN,HMIN,TMIN+T,HMIN,'TIME INTERVAL IN SECONDS\',0., 00209 & TMX,-NDD) 00210 CALL AXS2(TMIN,HMIN,TMIN,HMAX,'METRES\',HMIN,TMY,ND1) 00211 C 00212 C PLOT TITLE 00213 C 00214 TEMP=(TMAX+TMIN)/2. 00215 YTL = HMAX + 5.5 00216 CALL NMBR(TEMP,YTL, IREV,'('' REV NUMBER '',I4)') 00217 C 00218 C PLOT IDENTIFICATION OF CURVES 00219 C 00220 XX(1)=TEMP 00221 XX(2)=TEMP+100. 00222 YY(1)=HMAX + 4.0 00223 YY(2)=HMAX + 4.0 00224 GAP(1)=.1 00225 GAP(2)=.1 00226 CALL DSHLNS(XX,YY,GAP,2,2) 00227 CALL LOCATE(X,Y) 00228 CALL CHRPRT(X,Y,' GH\') 00229 YY(1)=HMAX + 3.0 00230 YY(2)=HMAX + 3.0 00231 CALL DSHLNS(XX,YY,.5,1,2) 00232 CALL LOCATE(X,Y) 00233 CALL CHRPRT(X,Y,' GN\') 00234 GAP2(1) = 0.01 00235 GAP2(2) = 0.04 00236 YY(1) = HMAX + 2. 00237 YY(2) = HMAX + 2. 00238 CALL DSHLNS(XX,YY,GAP2,2,2) 00239 CALL LOCATE(X,Y) 00240 CALL CHRPRT(X,Y,' GSH\') 00241**2 C 00242 C PLOT EACH SEGMENT OF VALUES 00243**3 C 00244 DO 30 I=1,NSUB 00245 CALL LNSPLT(SEC,GN,ESUB(I),BSUB(I),1) 00246 CALL DSHLNS(SEC,GH,GAP,2,ESUB(I),BSUB(I),1) 00247 CALL DSHLNS(SEC,GSH,GAP2,2,ESUB(I),BSUB(I),1) 00248**3 30 CONTINUE 00249 CALL ENDPLT 00250 RETURN 00251 END 00252 SUBROUTINE FILTER(NSUB,BSUB,ESUB,GSH,GSHSM) C 00254**3 C NAME FILTER 00255**3 C 00256**3 C PURPOSE TO FILTER HIGH-FREQUENCY NOISE FROM SEA SURFACE 00257**3 C ALTIMETRY DATA USING A MOVING - AVERAGES TECHNIQUE 00258**3 C 00259**3 INTEGER BSUB , ESUB 00260**3 DIMENSION BSUB(70) , ESUB(70) 00261**3 DIMENSION GSH(700) , GSHSM(700) 00262**3 DIMENSION FLTR(11) 00263**3 C 00264**3 DATA FLTR/0.10,0.10,0.11,0.11,0.12,0.11,0.09,0.08,0.07,0.06,0.05/ 00265**3 C 00266**3 C 00267**3 C NPOINT - BAND-WIDTH OF FILTER 00268**3 C 00269**3 NPOINT = 11 00270**3 C 00271**3 DO 10 I = 1,NSUB 00272**3 I1 = BSUB(I) 00273**3 I2 = ESUB(I) 00274**3 IF((I2-I1).LT.NPOINT) GO TO 16 00275**3 I14 = I1 + 4 00276**3 I24 = I2 - 4 00277**3 DO 11 IB = I1,I14 00278**3 11 GSHSM(IB) = GSH(IB) 00279**3 C 00280**3 DO 12 IE = I24,I2 00281**3 12 GSHSM(IE) = GSH(IE) 00282**3 C 00283**3 N1 = I1 00284**3 14 CONTINUE 00285**3 N2 = N1 + 10 00286**3 IF(N2.GT.I2) GO TO 15 00287**3 SUM = 0.0 00288**3 J = 0 00289**3 DO 13 N = N1,N2 00290**3 J = J + 1 00291**3 13 SUM = SUM + FLTR(J)*GSH(N) 00292**3 GSHSM(N1+5) = SUM 00293**3 N1 = N1 + 1 00294**3 GO TO 14 00295**3 15 CONTINUE 00296**3 GO TO 10 00297**3 16 CONTINUE 00298**3 DO 17 IL = I1,I2 00299**3 17 GSHSM(IL) = GSH(IL) 00300**3 10 CONTINUE 00301**3 RETURN 00302**3 END 00303**3