SURFEX v8.1
General documentation of Surfex
diag_naturen.F90
Go to the documentation of this file.
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 diag_nature_n (DLO, DL, DLC, ID, HNATURE, &
7  HPROGRAM, DUP, DUPC, KMASK )
8 ! ###############################################################################
9 !
10 !!**** *DIAG_NATURE_n * - Chooses the surface schemes for diagnostics over
11 !! natural continental parts
12 !!
13 !! PURPOSE
14 !! -------
15 !
16 !!** METHOD
17 !! ------
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !!
23 !! AUTHOR
24 !! ------
25 !! V. Masson
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! Original 01/2004
30 !! Modified 01/2006 : sea flux parameterization.
31 !! Modified 08/2009 : new diag
32 ! B. decharme 04/2013 : Add EVAP and SUBL diag
33 ! P. Le Moigne 03/2015 : add diagnostics IDEAL case
34 !!------------------------------------------------------------------
35 !
36 USE mode_diag
37 !
40 USE modd_surfex_n, ONLY : isba_diag_t
41 !
42 USE modd_surf_par, ONLY : xundef
43 !
44 USE yomhook ,ONLY : lhook, dr_hook
45 USE parkind1 ,ONLY : jprb
46 !
47 IMPLICIT NONE
48 !
49 !* 0.1 declarations of arguments
50 !
51 TYPE(diag_options_t), INTENT(INOUT) :: DLO
52 TYPE(diag_t), INTENT(INOUT) :: DL
53 TYPE(diag_t), INTENT(INOUT) :: DLC
54 TYPE(isba_diag_t), INTENT(INOUT) :: ID
55 !
56  CHARACTER(LEN=*), INTENT(IN) :: HNATURE
57  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
58 !
59 TYPE(diag_t), INTENT(INOUT) :: DUP
60 TYPE(diag_t), INTENT(INOUT) :: DUPC
61 !
62 INTEGER, DIMENSION(:), INTENT(IN) :: KMASK
63 !
64 !* 0.2 declarations of local variables
65 !
66 INTEGER :: ISIZE, JJ
67 REAL(KIND=JPRB) :: ZHOOK_HANDLE
68 !-------------------------------------------------------------------------------------
69 !
70 IF (lhook) CALL dr_hook('DIAG_NATURE_N',0,zhook_handle)
71 IF (hnature=='ISBA ' .OR. hnature=='TSZ0 ' ) THEN
72  !
73  CALL diag_cumul(id%O, id%D, id%DC, hprogram, dup, dupc, kmask)
74  !
75  isize = SIZE(kmask)
76  !
77  IF (id%O%LSURF_BUDGET.AND.id%DE%LSURF_EVAP_BUDGET) THEN
78  DO jj=1,isize
79  dup%XEVAP (kmask(jj)) = id%D%XEVAP (jj)
80  dup%XSUBL (kmask(jj)) = id%D%XSUBL (jj)
81  ENDDO
82  ENDIF
83  !
84 ELSE IF (hnature=='FLUX ') THEN
85  CALL diag_evap(dlo, dl, dlc, hprogram, dup, dupc, kmask)
86 ELSE IF (hnature=='NONE ') THEN
87  CALL init_bud(id%O, dup, dupc, xundef)
88 END IF
89 IF (lhook) CALL dr_hook('DIAG_NATURE_N',1,zhook_handle)
90 !
91 !-------------------------------------------------------------------------------------
92 !
93 END SUBROUTINE diag_nature_n
subroutine init_bud(DGO, DA, DAC, PVAL)
Definition: mode_diag.F90:185
subroutine diag_nature_n(DLO, DL, DLC, ID, HNATURE, HPROGRAM, DUP, DUPC, KMASK)
Definition: diag_naturen.F90:8
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine diag_evap(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK)
Definition: mode_diag.F90:288
logical lhook
Definition: yomhook.F90:15
subroutine diag_cumul(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK)
Definition: mode_diag.F90:320