source: lmdz_wrf/trunk/tools/module_generic.F90 @ 1030

Last change on this file since 1030 was 764, checked in by lfita, 9 years ago

Adding `lonlatfrac' for the 'lonlat' kind with fractions, due to the assumption that target grid-point can recieve more than one input value

File size: 2.3 KB
Line 
1MODULE module_generic
2! Module with generic functions
3
4  CONTAINS
5
6  INTEGER FUNCTION Index1DArrayR(array1D, d1, val)
7! Function to provide the first index of a given value inside a 1D real array
8
9    IMPLICIT NONE
10
11    INTEGER, PARAMETER                                   :: r_k = KIND(1.d0)
12    INTEGER, INTENT(in)                                  :: d1
13    REAL(r_k), INTENT(in)                                :: val
14    REAL(r_k), DIMENSION(d1), INTENT(in)                 :: array1D
15
16! Local
17    INTEGER                                              :: i
18    CHARACTER(LEN=50)                                    :: fname
19
20    fname = 'Index1DArrayR'
21
22    Index1DArrayR = -1
23
24    DO i=1,d1
25      IF (array1d(i) == val) THEN
26        Index1DArrayR = i
27        EXIT
28      END IF
29    END DO
30
31  END FUNCTION Index1DArrayR
32
33  FUNCTION Index2DArrayR(array2D, d1, d2, val)
34! Function to provide the first index of a given value inside a 2D real array
35
36    IMPLICIT NONE
37
38    INTEGER, PARAMETER                                   :: r_k = KIND(1.d0)
39    INTEGER, INTENT(in)                                  :: d1, d2
40    REAL(r_k), INTENT(in)                                :: val
41    REAL(r_k), DIMENSION(d1,d2), INTENT(in)              :: array2D
42    INTEGER, DIMENSION(2)                                :: Index2DArrayR
43
44! Local
45    INTEGER                                              :: i, j
46    CHARACTER(LEN=50)                                    :: fname
47
48    fname = 'Index2DArrayR'
49
50    Index2DArrayR = -1
51
52    DO i=1,d1
53      DO j=1,d2
54        IF (array2d(i,j) == val) THEN
55          Index2DArrayR(1) = i
56          Index2DArrayR(2) = j
57          EXIT
58        END IF
59      END DO
60    END DO
61
62  END FUNCTION Index2DArrayR
63
64  CHARACTER(LEN=50) FUNCTION ErrWarnMsg(msg)
65! Function to print error/warning message
66
67    IMPLICIT NONE
68
69    CHARACTER(LEN=3), INTENT(in)                         :: msg
70! Local
71    CHARACTER(LEN=50)                                    :: fname
72
73    fname = 'ErrWarnMsg'
74
75    IF (msg == 'err') THEN
76      ErrWarnMsg = 'ERROR -- error -- ERROR -- error'
77    ELSE IF (msg == 'wrn') THEN
78      ErrWarnMsg = 'WARNING -- warning -- WARNING -- warning'
79    ELSE
80      PRINT *,'ERROR -- error -- ERROR -- error'
81      PRINT *,'  ' // TRIM(fname) // ": '" // TRIM(msg) // "' does not exist!!"
82      STOP
83    END IF
84  END FUNCTION ErrWarnMsg
85
86END MODULE module_generic
Note: See TracBrowser for help on using the repository browser.