File: mkframe.F

package info (click to toggle)
emoslib 000380%2Bdfsg-3
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 47,712 kB
  • ctags: 11,551
  • sloc: fortran: 89,643; ansic: 24,200; makefile: 370; sh: 355
file content (113 lines) | stat: -rwxr-xr-x 2,547 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
C Copyright 1981-2007 ECMWF
C 
C Licensed under the GNU Lesser General Public License which
C incorporates the terms and conditions of version 3 of the GNU
C General Public License.
C See LICENSE and gpl-3.0.txt for details.
C

      SUBROUTINE MKFRAME(KWE,KNS,ZSEC4,ZMISS,KFRAME)
C
C---->
C**** MKFRAME
C
C     Purpose
C     -------
C
C     Remove points from inside a frame boundary.
C
C
C     Interface
C     ---------
C
C     CALL  MKFRAME(KWE,KNS,ZSEC4,ZMISS,KFRAME)
C
C     Input
C     -----
C
C     KWE    - Number of points west-east in input field.
C     KNS    - Number of points north-south in input field.
C     ZSEC4  - GRIBEX section 4 values in the field.
C     ZMISS  - Value to be used as the missing data value..
C     KFRAME - Number of points across the frame.
C
C
C     Output
C     ------
C
C     ZSEC4  - GRIBEX section 4 values with the points inside the frame
C              replaced by missing data values.
C
C
C     Method
C     ------
C
C     The field and frame are rectangular.
C
C
C     Externals
C     ---------
C
C     INTLOG  - Log error message.
C     INTLOGR - Log error message.
C
C
C     Author
C     ------
C
C     J.D.Chambers     ECMWF     May 1999.
C
C----<
C
      IMPLICIT NONE
C
C     Subroutine arguments
C
      INTEGER KWE,KNS, KFRAME
      REAL ZSEC4(*), ZMISS
C
C     Local variables
C
      INTEGER TOP, BOTTOM, LEFT, RIGHT, LOOPO, LOOPI, NEXT
C
#include "parim.h"
#include "jparams.h"
C
C ------------------------------------------------------------------
C*    Section 1.   Initialise
C ------------------------------------------------------------------
C
  100 CONTINUE
C
      IF( KFRAME.LT.1 ) GOTO 900
C
      TOP    = KFRAME + 1
      BOTTOM = KNS - KFRAME
      LEFT   = KFRAME + 1
      RIGHT  = KWE - KFRAME
C
      IF( NDBG.GT.0 ) THEN
        CALL INTLOG(JP_DEBUG,'MKFRAME: KFRAME = ', KFRAME)
        CALL INTLOG(JP_DEBUG,'MKFRAME: TOP = ', TOP)
        CALL INTLOG(JP_DEBUG,'MKFRAME: BOTTOM = ', BOTTOM)
        CALL INTLOG(JP_DEBUG,'MKFRAME: LEFT = ', LEFT)
        CALL INTLOG(JP_DEBUG,'MKFRAME: RIGHT = ', RIGHT)
        CALL INTLOGR(JP_DEBUG,'MKFRAME: ZMISS = ', ZMISS)
      ENDIF
C
      DO LOOPO = TOP, BOTTOM
        NEXT = (LOOPO-1)*KWE + (LEFT-1)
        DO LOOPI = LEFT, RIGHT
          NEXT = NEXT + 1
          ZSEC4(NEXT) = ZMISS
        ENDDO
      ENDDO
C
C ------------------------------------------------------------------
C*    Section 9.   Closedown.
C ------------------------------------------------------------------
C
  900 CONTINUE
C
      RETURN
      END