source: TOOLS/MOZAIC/src/MOZAIC/declare.f90 @ 3326

Last change on this file since 3326 was 3326, checked in by omamce, 7 years ago

O.M. : Utility to generate interpolatio weights for OASIS-MCT

File size: 2.4 KB
Line 
1! -*- Mode: f90 -*-
2MODULE declare
3   !> All data types used in MOZAIC
4   USE defprec
5   USE data_types
6   USE poly_types
7   IMPLICIT NONE
8   !
9   SAVE
10   !
11   ! Useful variables for initialisation
12   REAL (kind=rl) :: zero=0.0e0_rl !< Use this to initialize data
13   REAL (kind=rl) :: zun=1.0e0_rl !< Use this to initialize data
14   !
15   REAL (kind=rl), PARAMETER, PUBLIC :: zeps   =EPSILON (1.0_rl) !< Default epsilon
16   REAL (kind=rl), PARAMETER, PUBLIC :: zeps_r4=EPSILON (1.0_r_4) !< Simple precision epsilon
17   !
18   REAL (kind=rl), PARAMETER, PUBLIC :: rpi = 3.1415926536_rl     !< You should recognize this one ...
19   REAL (kind=rl), PARAMETER, PUBLIC :: rad = 0.0174532925_rl     !< Conversion factor for degrees to radian
20   REAL (kind=rl), PARAMETER, PUBLIC :: dar = 57.2957795130823_rl !< Conversion factor for radian to degrees
21   !   REAL (kind=rl) :: dar = 180.0_rl / rpi
22   REAL (kind=rl), PARAMETER, PUBLIC :: r_earth = 6371229.0_rl !< Earth radius
23   !
24   INTEGER (kind=il), PUBLIC :: nout = 6 !< File number for messages
25   LOGICAL, PUBLIC :: l_d_alloc !< If TRUE, print message about array allocation
26   !
27   PUBLIC chk_allo
28   !
29CONTAINS
30   SUBROUTINE chk_allo (kerr, cname, lreset, crout)
31      !> Diagonose return code from allocate
32      INTEGER (kind=il), INTENT (in) :: kerr !< Error code from ALLOCATE
33      CHARACTER (len=*), INTENT (in) :: cname !< Brief description of the allocation
34      LOGICAL, INTENT (in), OPTIONAL :: lreset !< If true, reset error counter
35      CHARACTER (len=*), INTENT (in), OPTIONAL :: crout !< Calling routine name
36      INTEGER, SAVE :: icount !< Error counter
37      CHARACTER (len = 20), SAVE :: lcrout = 'unknown'
38      !
39      IF (PRESENT (lreset)) THEN
40         icount = 0
41      END IF
42      !
43      IF (PRESENT (crout)) THEN
44         lcrout = TRIM (crout)
45      ENDIF
46      !
47      icount = icount + 1
48      !
49      IF (kerr /= 0_il) THEN
50         WRITE (UNIT=nout, FMT=*) 'Erreur allocation memoire '
51         WRITE (UNIT=nout, FMT=*) 'Numero d''erreur : ', kerr
52         WRITE (UNIT=nout, FMT=*) 'Message : ', cname
53         WRITE (UNIT=nout, FMT=*) 'Allocation number : ', icount
54         WRITE (UNIT=nout, FMT=*) 'Routine : ', TRIM (lcrout)
55         STOP
56      ELSE
57         IF (l_d_alloc) THEN
58            WRITE (UNIT=nout, FMT='("Memory Allocation ", 1I3, ", variable : ", A, ", in routine : ", A)') &
59               & , icount, cname, TRIM (lcrout)
60         END IF
61      END IF
62      !
63   END SUBROUTINE chk_allo
64END MODULE declare
Note: See TracBrowser for help on using the repository browser.