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

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

O.M. : add SVN keywords in files

  • Property svn:keywords set to Date Revision HeadURL Author Id Log
File size: 2.6 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   CHARACTER (LEN=128) :: SVN_Author   = "$Author$"
28   CHARACTER (LEN=128) :: SVN_Date     = "$Date$"
29   CHARACTER (LEN=128) :: SVN_Revision = "$Revision$"
30   !
31   PUBLIC chk_allo
32   !
33CONTAINS
34   SUBROUTINE chk_allo (kerr, cname, lreset, crout)
35      !> Diagonose return code from allocate
36      INTEGER (kind=il), INTENT (in) :: kerr !< Error code from ALLOCATE
37      CHARACTER (len=*), INTENT (in) :: cname !< Brief description of the allocation
38      LOGICAL, INTENT (in), OPTIONAL :: lreset !< If true, reset error counter
39      CHARACTER (len=*), INTENT (in), OPTIONAL :: crout !< Calling routine name
40      INTEGER, SAVE :: icount !< Error counter
41      CHARACTER (len = 20), SAVE :: lcrout = 'unknown'
42      !
43      IF (PRESENT (lreset)) THEN
44         icount = 0
45      END IF
46      !
47      IF (PRESENT (crout)) THEN
48         lcrout = TRIM (crout)
49      ENDIF
50      !
51      icount = icount + 1
52      !
53      IF (kerr /= 0_il) THEN
54         WRITE (UNIT=nout, FMT=*) 'Erreur allocation memoire '
55         WRITE (UNIT=nout, FMT=*) 'Numero d''erreur : ', kerr
56         WRITE (UNIT=nout, FMT=*) 'Message : ', cname
57         WRITE (UNIT=nout, FMT=*) 'Allocation number : ', icount
58         WRITE (UNIT=nout, FMT=*) 'Routine : ', TRIM (lcrout)
59         STOP
60      ELSE
61         IF (l_d_alloc) THEN
62            WRITE (UNIT=nout, FMT='("Memory Allocation ", 1I3, ", variable : ", A, ", in routine : ", A)') &
63               & , icount, cname, TRIM (lcrout)
64         END IF
65      END IF
66      !
67   END SUBROUTINE chk_allo
68END MODULE declare
Note: See TracBrowser for help on using the repository browser.