source: CPL/oasis3/trunk/src/mod/oasis3/src/rmaxim.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.4 KB
Line 
1      FUNCTION rmaxim (pa, kmsk, kna, kind, kflag)
2C****
3C               ******************************
4C               * OASIS FUNCTION  -  LEVEL T *
5C               * --------------     ------- *
6C               ******************************
7C
8C**** *rmaxim*  - Search function
9C
10C     Purpose:
11C     -------
12C     Search the maximum of the elements of a real array subject
13C     or not to a mask condition
14C
15C**   Interface:
16C     ---------
17C       *zz =*  *rmaxim (pa, kmsk, kna, kind, kflag)*
18C
19C     Input:
20C     -----
21C                pa     : array to be searched (real 1D)
22C                kmsk   : mask array (integer 1D)
23C                kna    : array dimension (integer)
24C                kflag  : type of search (integer)
25C                         0 --> Global  1 --> Land  2 --> Sea
26C
27C     Output:
28C     ------
29C                kind   : point index of maximum
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.1       L. Terray      96/09/25  created
48C       2.2       L. Terray      97/02/12  modified: printing bug on 
49C                                          variable kind corrected
50C
51C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52C
53C* ---------------------------- Include files ---------------------------
54C
55      USE mod_kinds_oasis
56      USE mod_unit
57C
58C* ---------------------------- Argument declarations -------------------
59C
60      REAL (kind=ip_realwp_p) rmaxim, pa(kna)
61      INTEGER (kind=ip_intwp_p) kmsk(kna)
62C
63C* ---------------------------- Poema verses ----------------------------
64C
65C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
66C
67C*    1. Find the maximum 
68C        ----------------
69C
70      itemp = 0
71      ztemp = 0.0
72      IF (kna .LT. 1) GO TO 110
73 130  itemp = itemp + 1
74      IF (itemp .GT. kna) THEN
75          CALL prtout
76     $        ('WARNING!!! initial search exceeds array size
77     $        kna  = ', kna, 2)
78          GO TO 140
79      ENDIF
80      IF (kflag .EQ. 0) THEN
81          ztemp = pa(itemp)
82          GO TO 140
83        ELSE IF (kflag .EQ. 1) THEN
84          IF (kmsk(itemp) .EQ. 1) THEN
85              ztemp = pa(itemp)
86              GO TO 140
87          ENDIF
88        ELSE IF (kflag .EQ. 2) THEN
89          IF (kmsk(itemp) .EQ. 0) THEN
90              ztemp = pa(itemp)
91              GO TO 140
92          ENDIF
93      ENDIF
94      GO TO 130
95 140  CONTINUE
96C* Assign index to initial point
97      kind = itemp
98C* Start looping on all other points
99      IF (kna .LT. 2) GO TO 110
100        IF (kflag .EQ. 1) THEN
101          DO 120 ja = itemp+1, kna
102            IF (pa(ja) .GT. ztemp .AND. kmsk(ja) .EQ. 1) THEN
103                ztemp = pa(ja)
104                kind = ja
105            ENDIF
106 120      CONTINUE
107        ELSE IF (kflag .EQ. 2) THEN
108          DO 125 ja = itemp+1, kna
109            IF (pa(ja) .GT. ztemp .AND. kmsk(ja) .EQ. 0) THEN
110                ztemp = pa(ja)
111                kind = ja
112            ENDIF
113 125      CONTINUE
114        ELSE IF (kflag .EQ. 0) THEN
115          DO 127 ja = itemp+1, kna
116            IF (pa(ja) .GT. ztemp) THEN
117                ztemp = pa(ja)
118                kind = ja
119            ENDIF
120 127      CONTINUE
121        ENDIF
122 110  CONTINUE
123      rmaxim = ztemp
124C
125C
126C*    2. End of routine
127C        --------------
128C
129      RETURN
130      END
Note: See TracBrowser for help on using the repository browser.