source: CPL/oasis3/trunk/src/mod/oasis3/src/revmsk.f @ 1677

Last change on this file since 1677 was 1677, checked in by aclsce, 12 years ago

Imported oasis3 (tag ipslcm5a) from cvs server to svn server (igcmg project).

File size: 3.7 KB
Line 
1      SUBROUTINE revmsk (kfild ,kxlon ,kylat, cdxord, cdyord)
2      USE mod_kinds_oasis
3C****
4C               *****************************
5C               * OASIS ROUTINE  -  LEVEL 3 *
6C               * -------------     ------- *
7C               *****************************
8C
9C**** *revmsk* - Ordering routine
10C
11C     Purpose:
12C     -------
13C     Reorder integer field according to cdxord and cdyord information
14C
15C**   Interface:
16C     ---------
17C       *CALL*  *revmsk (kfild ,kxlon ,kylat, cdxord, cdyord)*
18C
19C     Input:
20C     -----
21C                kfild : field to be reordered (integer 2D)
22C                kxlon : number of longitudes
23C                kylat : number of latitudes
24C                cdxord : longitude ordering
25C                cdyord : latitude ordering
26C
27C     Output:
28C     ------
29C                kfild : field reordered (integer 2D)
30C
31C     Workspace:
32C     ---------
33C     None
34C
35C     Externals:
36C     ---------
37C     None
38C
39C     Reference:
40C     ---------
41C     See OASIS manual (1995)
42C
43C     History:
44C     -------
45C       Version   Programmer     Date      Description
46C       -------   ----------     ----      ----------- 
47C       2.0       L. Terray      95/10/10  created
48C       2.3       S. Valcke      99/04/30  added: printing levels
49C
50C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51C
52C* ---------------------------- Include files ---------------------------
53C
54      USE mod_unit
55      USE mod_printing
56C
57C* ---------------------------- Argument declarations -------------------
58C
59      INTEGER (kind=ip_intwp_p) kfild(kxlon,kylat)
60      CHARACTER*8 cdxord, cdyord
61C
62C* ---------------------------- Local declarations ----------------------
63C
64      LOGICAL llxord, llyord
65C
66C* ---------------------------- Poema verses ----------------------------
67C
68C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
69C
70C*    1. Initialization
71C        --------------
72C
73      IF (nlogprt .GE. 2) THEN
74          WRITE (UNIT = nulou,FMT = *) ' '
75          WRITE (UNIT = nulou,FMT = *) ' '
76          WRITE (UNIT = nulou,FMT = *) 
77     $    '           ROUTINE revmsk     Level 3'
78          WRITE (UNIT = nulou,FMT = *) 
79     $    '           **************     *******'
80          WRITE (UNIT = nulou,FMT = *) ' '
81          WRITE (UNIT = nulou,FMT = *) 
82     $    ' Reorder mask field North ---> South '
83          WRITE (UNIT = nulou,FMT = *) 
84     $    '      and from Greenwhich ---> West '
85          WRITE (UNIT = nulou,FMT = *) 
86     $    ' if necessary for glored analysis'
87          WRITE (UNIT = nulou,FMT = *) ' '
88          WRITE (UNIT = nulou,FMT = *) ' '
89      ENDIF
90      llxord = cdxord .EQ. 'SUDNOR'
91      llyord = cdyord .EQ. 'WSTEST'
92C
93C
94C*    2. Reorder field 
95C        -------------
96C* South-North buisness
97C
98      IF ( .NOT. llxord) THEN
99          ijmed = kylat/2 
100          DO 210 jj = 1, ijmed
101            DO 220 ji = 1, kxlon
102              ifild = kfild(ji,kylat + 1 - jj)
103              kfild(ji,kylat + 1 - jj) = kfild(ji,jj)
104              kfild(ji,jj) = ifild
105 220        CONTINUE
106 210      CONTINUE
107      ENDIF
108C
109C* East-West one
110C
111      IF ( .NOT. llyord) THEN
112          iimed = kxlon/2 
113          DO 230 jj = 1, kylat
114            DO 240 ji = 1, iimed
115              ifild = kfild(kxlon + 1 - ji,jj)
116              kfild(kxlon + 1 - ji,jj) = kfild(ji,jj)
117              kfild(ji,jj) = ifild
118 240        CONTINUE
119 230      CONTINUE
120      ENDIF
121C
122C
123C*    3. End of routine
124C        --------------
125C
126      IF (nlogprt .GE. 2) THEN
127          WRITE (UNIT = nulou,FMT = *) ' '
128          WRITE (UNIT = nulou,FMT = *) 
129     $    '          --------- End of routine revmsk ---------'
130          CALL FLUSH (nulou)
131      ENDIF
132      RETURN
133      END
Note: See TracBrowser for help on using the repository browser.