SURFEX v8.1
General documentation of Surfex
unpack_diag_patchn.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 unpack_diag_patch_n(IO, DEK, PK, KMASK, KSIZE, KNPATCH, KPATCH, &
7  PCPL_DRAIN, PCPL_RUNOFF, PCPL_EFLOOD, &
8  PCPL_PFLOOD, PCPL_IFLOOD, PCPL_ICEFLUX )
9 !##############################################
10 !
11 !!**** *UNPACK_DIAG_PATCH_n* - unpacks ISBA diagnostics
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 10/2004 by P. Le Moigne: Halstead coefficient
31 !! Modified 10/2005 by P. Le Moigne: Deallocation (EBA)
32 !! Modified 05/2008 by B. Decharme : Flooding scheme
33 !! Modified 01/2010 by B. Decharme : new diag
34 !! Modified 04-09 by A.L. Gibelin : Add carbon diagnostics
35 !! Modified 05-09 by A.L. Gibelin : Add carbon spinup
36 !! Modified 08/2012 by B. Decharme : optimization
37 !! Modified 06/2013 by B. Decharme : add lateral drainage flux diag for DIF
38 !! add tiotale sublimation flux
39 !! Modified 10/2014 by P. Samuelsson: MEB
40 !!
41 !!------------------------------------------------------------------
42 !
45 USE modd_isba_n, ONLY : isba_p_t
46 !
47 USE yomhook ,ONLY : lhook, dr_hook
48 USE parkind1 ,ONLY : jprb
49 !
50 IMPLICIT NONE
51 !
52 TYPE(isba_options_t), INTENT(INOUT) :: IO
53 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEK
54 TYPE(isba_p_t), INTENT(INOUT) :: PK
55 !
56 INTEGER, INTENT(IN) :: KSIZE, KPATCH, KNPATCH
57 INTEGER, DIMENSION(:), INTENT(IN) :: KMASK
58 !
59 !Coupling variable
60 REAL, DIMENSION(:,:), INTENT(OUT) :: PCPL_DRAIN
61 REAL, DIMENSION(:,:), INTENT(OUT) :: PCPL_RUNOFF
62 REAL, DIMENSION(:,:), INTENT(OUT) :: PCPL_EFLOOD
63 REAL, DIMENSION(:,:), INTENT(OUT) :: PCPL_PFLOOD
64 REAL, DIMENSION(:,:), INTENT(OUT) :: PCPL_IFLOOD
65 REAL, DIMENSION(:,:), INTENT(OUT) :: PCPL_ICEFLUX
66 !
67 INTEGER :: JI, IMASK, JSW
68 REAL(KIND=JPRB) :: ZHOOK_HANDLE
69 !
70 !------------------------------------------------------------------------
71 IF (lhook) CALL dr_hook('UNPACK_DIAG_PATCH_N',0,zhook_handle)
72 !
73 IF (knpatch==1) THEN
74  !
75  IF (io%LCPL_RRM) THEN
76  pcpl_drain(:,kpatch) = dek%XDRAIN (:)
77  pcpl_runoff(:,kpatch) = dek%XRUNOFF(:)
78  END IF
79  !
80  IF (io%LFLOOD) THEN
81  pcpl_eflood(:,kpatch) = dek%XLE_FLOOD(:) / pk%XLVTT(:) + dek%XLEI_FLOOD(:) / pk%XLSTT(:)
82  pcpl_pflood(:,kpatch) = dek%XPFLOOD(:)
83  pcpl_iflood(:,kpatch) = dek%XIFLOOD(:)
84  END IF
85  !
86  IF(io%LCPL_RRM.AND.io%LGLACIER)THEN
87  pcpl_iceflux(:,kpatch) = dek%XICEFLUX(:)
88  ENDIF
89  !
90 ELSE
91  !
92  IF (io%LCPL_RRM) THEN
93  DO ji=1,ksize
94  imask = kmask(ji)
95  pcpl_drain(imask,kpatch) = dek%XDRAIN (ji)
96  pcpl_runoff(imask,kpatch) = dek%XRUNOFF (ji)
97  END DO
98  END IF
99  !
100  IF (io%LFLOOD) THEN
101  DO ji=1,ksize
102  imask = kmask(ji)
103  pcpl_eflood(imask,kpatch) = dek%XLE_FLOOD(ji) / pk%XLVTT(ji) + dek%XLEI_FLOOD(ji) / pk%XLSTT(ji)
104  pcpl_pflood(imask,kpatch) = dek%XPFLOOD(ji)
105  pcpl_iflood(imask,kpatch) = dek%XIFLOOD(ji)
106  END DO
107  END IF
108  !
109  IF(io%LCPL_RRM.AND.io%LGLACIER)THEN
110  DO ji=1,ksize
111  imask = kmask(ji)
112  pcpl_iceflux(imask,kpatch) = dek%XICEFLUX(ji)
113  END DO
114  ENDIF
115  !
116 ENDIF
117 !
118 !------------------------------------------------------------------------
119 !
120 IF (lhook) CALL dr_hook('UNPACK_DIAG_PATCH_N',1,zhook_handle)
121 !------------------------------------------------------------------------
122 !
123 END SUBROUTINE unpack_diag_patch_n
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine unpack_diag_patch_n(IO, DEK, PK, KMASK, KSIZE, KNPATCH, KPATCH, PCPL_DRAIN, PCPL_RUNOFF, PCPL_EFLOOD, PCPL_PFLOOD, PCPL_IFLOOD, PCPL_ICEFLUX)