Philippe 07/03/2019: IO bugfix: io_set_mnhversion must be called by all the processes
[MNH-git_open_source-lfs.git] / src / SURFEX / default_diag_surf_atm.F90
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
4 !SFX_LIC for details. version 1.
5 !     #########
6       SUBROUTINE DEFAULT_DIAG_SURF_ATM(K2M, OT2MMW, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, &
7                                        OCOEF, OSURF_VARS, OSURF_BUDGETC, ORESET_BUDGETC, &
8                                        OSELECT, OPROVAR_TO_DIAG, ODIAG_GRID, OFRAC, &
9                                        PDIAG_TSTEP, OSNOWDIMNC, ORESETCUMUL, CSELECT  )                                         
10 !     ########################################################################
11 !
12 !!****  *DEFAULT_DIAG_SURF_ATM* - routine to set default values for the choice of diagnostics
13 !!
14 !!    PURPOSE
15 !!    -------
16 !!
17 !!**  METHOD
18 !!    ------
19 !!
20 !!    EXTERNAL
21 !!    --------
22 !!
23 !!
24 !!    IMPLICIT ARGUMENTS
25 !!    ------------------
26 !!
27 !!    REFERENCE
28 !!    ---------
29 !!
30 !!
31 !!    AUTHOR
32 !!    ------
33 !!      V. Masson   *Meteo France*
34 !!
35 !!    MODIFICATIONS
36 !!    -------------
37 !!      Original    01/2004 
38 !!      Modified    01/2006 : sea flux parameterization.
39 !!      B. Decharme   2008    flag for mean grid diag
40 !!      B. Decharme   2009    flag for cumulative budget and to write selected diags
41 !-------------------------------------------------------------------------------
42 !
43 !*       0.    DECLARATIONS
44 !              ------------
45 !
46 USE MODD_SURF_PAR,   ONLY : XUNDEF
47 !
48 !
49 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
50 USE PARKIND1  ,ONLY : JPRB
51 !
52 IMPLICIT NONE
53 !
54 !*       0.1   Declarations of arguments
55 !              -------------------------
56 !
57 !
58 INTEGER,  INTENT(OUT) :: K2M           ! flag for operational 2m quantities
59 LOGICAL,  INTENT(OUT) :: OT2MMW        ! flag for modified weighting of 2m temperature
60 LOGICAL,  INTENT(OUT) :: OSURF_BUDGET  ! flag for surface budget
61 LOGICAL,  INTENT(OUT) :: O2M_MIN_ZS    ! flag for 2m quantities on min.  orography
62 LOGICAL,  INTENT(OUT) :: ORAD_BUDGET   ! flag for radiative budget
63 LOGICAL,  INTENT(OUT) :: OCOEF         ! flag for transfer coefficients
64 LOGICAL,  INTENT(OUT) :: OSURF_VARS    ! flag for surface variables
65 LOGICAL,  INTENT(OUT) :: OSURF_BUDGETC ! flag for cumulated surface budget
66 LOGICAL,  INTENT(OUT) :: ORESET_BUDGETC  ! flag for cumulated surface budget
67 LOGICAL,  INTENT(OUT) :: OSELECT       ! switch to control which fields are written
68 LOGICAL,  INTENT(OUT) :: OPROVAR_TO_DIAG    ! switch to write (or not) prognostic variable
69 LOGICAL,  INTENT(OUT) :: OSNOWDIMNC    ! if true create a snow layer dimension in nc files
70 LOGICAL,  INTENT(OUT) :: ORESETCUMUL   ! if true reset cumulated variables at each output timestep
71 LOGICAL,  INTENT(OUT) :: ODIAG_GRID    ! flag for mean grid diag
72 LOGICAL,  INTENT(OUT) :: OFRAC         ! flag for fractions of tiles
73 REAL,     INTENT(OUT) :: PDIAG_TSTEP   ! time-step for writing
74 CHARACTER(LEN=LEN_HREC), DIMENSION(200), INTENT(OUT), OPTIONAL :: CSELECT  
75 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 !
77 !*       0.2   Declarations of local variables
78 !              -------------------------------
79 !
80 !-------------------------------------------------------------------------------
81 !
82 IF (LHOOK) CALL DR_HOOK('DEFAULT_DIAG_SURF_ATM',0,ZHOOK_HANDLE)
83 !
84 K2M          = 0
85 OT2MMW       = .FALSE.
86 OSURF_BUDGET = .FALSE.
87 !
88 O2M_MIN_ZS   = .FALSE.
89 !
90 ORAD_BUDGET  = .FALSE.
91 !
92 OCOEF        = .FALSE.
93 OSURF_VARS   = .FALSE.
94 !
95 OSURF_BUDGETC     = .FALSE.
96 ORESET_BUDGETC    = .FALSE.
97 !
98 OSELECT            = .FALSE.
99 !
100 OPROVAR_TO_DIAG    = .FALSE.
101 !
102 OSNOWDIMNC = .FALSE.
103 ORESETCUMUL = .FALSE.
104 !
105 ODIAG_GRID   = .TRUE.
106 !
107 OFRAC        = .FALSE.
108 !
109 PDIAG_TSTEP  = XUNDEF
110 !
111 IF (PRESENT(CSELECT)) CSELECT(:) = '            '
112 IF (LHOOK) CALL DR_HOOK('DEFAULT_DIAG_SURF_ATM',1,ZHOOK_HANDLE)
113 !
114 !-------------------------------------------------------------------------------
115 !
116 END SUBROUTINE DEFAULT_DIAG_SURF_ATM