SURFEX v8.1
General documentation of Surfex
write_diag_tebn.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 write_diag_teb_n (DTCO, HSELECT, U, TM, GDM, GRM, HPROGRAM,HWRITE)
7 ! ###############################################################################
8 !
9 !!**** *WRITE_DIAG_TEB_n * - diagnostics for TEB
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!** METHOD
15 !! ------
16 !!
17 !! REFERENCE
18 !! ---------
19 !!
20 !!
21 !! AUTHOR
22 !! ------
23 !! V. Masson
24 !!
25 !! MODIFICATIONS
26 !! -------------
27 !! Original 01/2004
28 !!------------------------------------------------------------------
29 !
30 !
31 !
33 USE modd_surf_atm_n, ONLY : surf_atm_t
34 USE modd_surfex_n, ONLY : teb_model_t
37 !
38 USE modd_surf_par, ONLY : xundef
39 !
40 USE modi_write_diag_seb_teb_n
41 USE modi_write_diag_misc_teb_n
42 USE modi_write_diag_pgd_teb_n
43 USE modi_write_diag_pgd_grdn_n
44 !
45 USE yomhook ,ONLY : lhook, dr_hook
46 USE parkind1 ,ONLY : jprb
47 !
48 IMPLICIT NONE
49 !
50 !* 0.1 declarations of arguments
51 !
52 !
53 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
54  CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSELECT
55 TYPE(surf_atm_t), INTENT(INOUT) :: U
56 TYPE(teb_model_t), INTENT(INOUT) :: TM
57 TYPE(teb_garden_model_t), INTENT(INOUT) :: GDM
58 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: GRM
59 !
60  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
61  CHARACTER(LEN=3), INTENT(IN) :: HWRITE ! 'PGD' : only physiographic fields are written
62 ! ! 'ALL' : all fields are written
63 !
64 !* 0.2 declarations of local variables
65 !
66 INTEGER :: JP
67 REAL(KIND=JPRB) :: ZHOOK_HANDLE
68 !-------------------------------------------------------------------------------------
69 !
70 IF (lhook) CALL dr_hook('WRITE_DIAG_TEB_N',0,zhook_handle)
71 IF (hwrite/='PGD') THEN
72 !
73  IF (tm%TD%O%XDIAG_TSTEP==xundef .OR. &
74  abs(nint(tm%TOP%TTIME%TIME/tm%TD%O%XDIAG_TSTEP)*tm%TD%O%XDIAG_TSTEP-tm%TOP%TTIME%TIME)<1.e-3 ) THEN
75  CALL write_diag_seb_teb_n(dtco, hselect, u, tm%CHT, tm%TD%O, tm%TD%D, tm%TD%DUT, hprogram)
76  DO jp=1,tm%TOP%NTEB_PATCH
77  CALL write_diag_misc_teb_n(dtco, hselect, u, tm%TD%NDMTC%AL(jp), tm%TD%NDMT%AL(jp), tm%TD%MTO, &
78  gdm%VD%ND%AL(jp), gdm%VD%NDE%AL(jp), gdm%VD%NDEC%AL(jp), &
79  grm%VD%ND%AL(jp), grm%VD%NDE%AL(jp), grm%VD%NDEC%AL(jp), &
80  tm%NT%AL(jp), tm%TOP, hprogram,jp)
81  END DO
82  END IF
83 !
84 ENDIF
85 !
86 IF (tm%TD%O%LPGD) THEN
87  IF (tm%TD%O%XDIAG_TSTEP==xundef .OR. &
88  abs(nint(tm%TOP%TTIME%TIME/tm%TD%O%XDIAG_TSTEP)*tm%TD%O%XDIAG_TSTEP-tm%TOP%TTIME%TIME)<1.e-3 ) THEN
89  IF (ASSOCIATED(tm%NT%AL(1)%XBLD)) THEN
90  CALL write_diag_pgd_teb_n(dtco, hselect, u, tm%NB%AL(1), tm%BOP, tm%NT%AL(1), tm%TOP, tm%TPN, hprogram)
91  IF (tm%TOP%LGARDEN) &
92  CALL write_diag_pgd_grdn_n(dtco, hselect, u, tm%TD%MTO%LSURF_DIAG_ALBEDO, &
93  gdm%S, gdm%P, gdm%NPE%AL(1), gdm%O, hprogram)
94  ENDIF
95  END IF
96 END IF
97 IF (lhook) CALL dr_hook('WRITE_DIAG_TEB_N',1,zhook_handle)
98 !
99 !-------------------------------------------------------------------------------------
100 !
101 END SUBROUTINE write_diag_teb_n
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine write_diag_pgd_teb_n(DTCO, HSELECT, U, B, BOP, T, TOP,
subroutine write_diag_seb_teb_n(DTCO, HSELECT, U, CHT, DGO, D, DU
logical lhook
Definition: yomhook.F90:15
subroutine write_diag_pgd_grdn_n(DTCO, HSELECT, U, OSURF_DIAG_ALB
subroutine write_diag_teb_n(DTCO, HSELECT, U, TM, GDM, GRM, HPROGRAM, HWRITE)
subroutine write_diag_misc_teb_n(DTCO, HSELECT, U, DMTC, DMT, DMT