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

Last change on this file since 1214 was 1184, checked in by lfita, 9 years ago

Adding:

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