NCEPLIBS-w3emc  2.11.0
w3fi83.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Restore delta packed data to original.
3 C> @author Bill Cavanaugh @date 1993-08-18
4 
5 C> Restore delta packed data to original values
6 C> restore from boustrephedonic alignment.
7 C>
8 C> Program history log:
9 C> - Bill Cavanaugh 1993-07-14
10 C> - John Satckpole 1993-07-22 Additions to fix scaling.
11 C> - Bill Cavanaugh 1994-01-27 Added reversal of even numbered rows
12 C> (boustrophedonic processing) to restore
13 C> data to original sequence.
14 C> - Bill Cavanaugh 1994-03-02 Corrected reversal of even numbered rows.
15 C> - Mark Iredell 1995-10-31 Removed saves and prints.
16 C>
17 C> @param[inout] DATA
18 C> - [in] Second order differences.
19 C> - [out] Expanded original data values.
20 C> @param[in] NPTS Number of points in array.
21 C> @param[in] FVAL1 Original first entry in array.
22 C> @param[in] FDIFF1 Original first first-difference.
23 C> @param[in] ISCAL2 Power-of-two exponent for unscaling.
24 C> @param[in] ISC10 Power-of-ten exponent for unscaling.
25 C> @param[in] KPDS Array of information for pds.
26 C> @param[in] KGDS Array of information for gds.
27 C>
28 C> @note Subprogram can be called from a multiprocessing environment.
29 C>
30 C> @author Bill Cavanaugh @date 1993-08-18
31  SUBROUTINE w3fi83 (DATA,NPTS,FVAL1,FDIFF1,ISCAL2,
32  * ISC10,KPDS,KGDS)
33 C
34  REAL FVAL1,FDIFF1
35  REAL DATA(*),BOUST(200)
36  INTEGER NPTS,NROW,NCOL,KPDS(*),KGDS(*),ISC10
37 C ---------------------------------------
38 C
39 C REMOVE DECIMAL UN-SCALING INTRODUCED DURING UNPACKING
40 C
41  dscal = 10.0 ** isc10
42  IF (dscal.EQ.0.0) THEN
43  DO 50 i=1,npts
44  DATA(i) = 1.0
45  50 CONTINUE
46  ELSE IF (dscal.EQ.1.0) THEN
47  ELSE
48  DO 51 i=1,npts
49  DATA(i) = DATA(i) * dscal
50  51 CONTINUE
51  END IF
52 C
53  DATA(1) = fval1
54  DATA(2) = fdiff1
55  DO 200 j = 3,2,-1
56  DO 100 k = j, npts
57  DATA(k) = DATA(k) + DATA(k-1)
58  100 CONTINUE
59  200 CONTINUE
60 C
61 C NOW REMOVE THE BINARY SCALING FROM THE RECONSTRUCTED FIELD
62 C AND THE DECIMAL SCALING TOO
63 C
64  IF (dscal.EQ.0) THEN
65  scale = 0.0
66  ELSE
67  scale =(2.0**iscal2)/dscal
68  END IF
69  DO 300 i=1,npts
70  DATA(i) = DATA(i) * scale
71  300 CONTINUE
72 C ==========================================================
73  IF (iand(kpds(4),128).NE.0) THEN
74  nrow = kgds(3)
75  ncol = kgds(2)
76 C
77 C DATA LAID OUT BOUSTROPHEDONIC STYLE
78 C
79 C
80 C PRINT*, ' REVERSE BOUSTROPHEDON'
81  DO 210 i = 2, nrow, 2
82 C
83 C REVERSE THE EVEN NUMBERED ROWS
84 C
85  DO 201 j = 1, ncol
86  npos = i * ncol - j + 1
87  boust(j) = DATA(npos)
88  201 CONTINUE
89  DO 202 j = 1, ncol
90  npos = ncol * (i-1) + j
91  DATA(npos) = boust(j)
92  202 CONTINUE
93  210 CONTINUE
94 C
95 C
96  END IF
97 C =================================================================
98  RETURN
99  END
subroutine w3fi83(DATA, NPTS, FVAL1, FDIFF1, ISCAL2, ISC10, KPDS, KGDS)
Restore delta packed data to original values restore from boustrephedonic alignment.
Definition: w3fi83.f:33