NCEPLIBS-w3emc
2.9.3
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
w3fi83
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
src
w3fi83.f
Generated by
1.8.17