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
|