SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
writesurf_teb_gardenn.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 writesurf_teb_garden_n (DGU, U, GDM, &
7  hprogram,hpatch)
8 ! #####################################
9 !
10 !!**** *WRITESURF_TEB_GARDEN_n* - writes ISBA prognostic fields
11 !!
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! V. Masson *Meteo France*
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 01/2003
37 !! P. LeMoigne 12/2004 : correct dimensionning if more than 10 layers in
38 !! the soil (diffusion version)
39 !! B. Decharme 2008 : Floodplains
40 !! B. Decharme 01/2009 : Optional Arpege deep soil temperature write
41 !! B. Decharme 09/2012 : suppress NWG_LAYER (parallelization problems)
42 !-------------------------------------------------------------------------------
43 !
44 !* 0. DECLARATIONS
45 ! ------------
46 
47 !
48 !
49 !
50 !
52 USE modd_surf_atm_n, ONLY : surf_atm_t
54 !
55 USE modd_surf_par, ONLY : nundef
56 !
58 USE modi_writesurf_gr_snow
59 USE modd_dst_surf
60 !
61 USE yomhook ,ONLY : lhook, dr_hook
62 USE parkind1 ,ONLY : jprb
63 !
64 IMPLICIT NONE
65 !
66 !* 0.1 Declarations of arguments
67 ! -------------------------
68 !
69 !
70 !
71 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
72 TYPE(surf_atm_t), INTENT(INOUT) :: u
73 TYPE(teb_garden_model_t), INTENT(INOUT) :: gdm
74 !
75  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling
76  CHARACTER(LEN=3), INTENT(IN) :: hpatch ! current teb patch
77 !
78 !* 0.2 Declarations of local variables
79 ! -------------------------------
80 !
81 INTEGER :: iresp ! IRESP : return-code if a problem appears
82  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
83  CHARACTER(LEN=100):: ycomment ! Comment string
84  CHARACTER(LEN=14) :: yform ! Writing format
85  CHARACTER(LEN=4 ) :: ylvl
86 !
87 INTEGER :: jlayer ! loop counter on soil layers
88 !
89 REAL, DIMENSION(:),ALLOCATABLE :: zwork ! 2D array to write data in file
90 !
91 INTEGER :: jnbiomass
92 REAL(KIND=JPRB) :: zhook_handle
93 !
94 !------------------------------------------------------------------------------
95 !
96 !* 2. Prognostic fields:
97 ! -----------------
98 !
99 IF (lhook) CALL dr_hook('WRITESURF_TEB_GARDEN_N',0,zhook_handle)
100 ALLOCATE(zwork(SIZE(gdm%TGD%CUR%XTG,1)))
101 !* soil temperatures
102 !
103 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
104  WRITE(ylvl,'(I2)') jlayer
105  yrecfm=hpatch//'GD_TG'//adjustl(ylvl(:len_trim(ylvl)))
106  yrecfm=adjustl(yrecfm)
107  yform='(A11,I1.1,A4)'
108  IF (jlayer >= 10) yform='(A11,I2.2,A4)'
109  WRITE(ycomment,fmt=yform) 'X_Y_GD_TG',jlayer,' (K)'
110  zwork=gdm%TGD%CUR%XTG(:,jlayer)
111  CALL write_surf(dgu, u, &
112  hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
113 END DO
114 !
115 !
116 !* soil liquid water content
117 !
118 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
119  WRITE(ylvl,'(I2)') jlayer
120  yrecfm=hpatch//'GD_WG'//adjustl(ylvl(:len_trim(ylvl)))
121  yrecfm=adjustl(yrecfm)
122  yform='(A11,I1.1,A8)'
123  IF (jlayer >= 10) yform='(A11,I2.2,A8)'
124  WRITE(ycomment,fmt=yform) 'X_Y_GD_WG',jlayer,' (m3/m3)'
125  zwork=gdm%TGD%CUR%XWG(:,jlayer)
126  CALL write_surf(dgu, u, &
127  hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
128 END DO
129 !
130 !
131 !* soil ice water content
132 !
133 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
134  WRITE(ylvl,'(I2)') jlayer
135  yrecfm=hpatch//'GD_WGI'//adjustl(ylvl(:len_trim(ylvl)))
136  yrecfm=adjustl(yrecfm)
137  yform='(A11,I1.1,A8)'
138  IF (jlayer >= 10) yform='(A11,I2.2,A8)'
139  WRITE(ycomment,yform) 'X_Y_GD_WGI',jlayer,' (m3/m3)'
140  zwork=gdm%TGD%CUR%XWGI(:,jlayer)
141  CALL write_surf(dgu, u, &
142  hprogram,yrecfm,zwork,iresp,hcomment=ycomment)
143 END DO
144 !
145 DEALLOCATE(zwork)
146 !
147 !* water intercepted on leaves
148 !
149 yrecfm=hpatch//'GD_WR'
150 yrecfm=adjustl(yrecfm)
151 ycomment='X_Y_GD_WR (kg/m2)'
152  CALL write_surf(dgu, u, &
153  hprogram,yrecfm,gdm%TGD%CUR%XWR(:),iresp,hcomment=ycomment)
154 !
155 !* Leaf Area Index
156 !
157 IF (gdm%TVG%CPHOTO/='NON' .AND. gdm%TVG%CPHOTO/='AGS' .AND. gdm%TVG%CPHOTO/='AST') THEN
158  yrecfm=hpatch//'GD_LAI'
159  yrecfm=adjustl(yrecfm)
160  ycomment='X_Y_GD_LAI (m2/m2)'
161  CALL write_surf(dgu, u, &
162  hprogram,yrecfm,gdm%TGDPE%CUR%XLAI(:),iresp,hcomment=ycomment)
163 END IF
164 !
165 IF (gdm%TVG%CPHOTO=='NIT') THEN
166  !
167  DO jnbiomass=1,gdm%TVG%NNBIOMASS
168  WRITE(ylvl,'(I1)') jnbiomass
169  yrecfm=hpatch//'GD_BIOMA'//adjustl(ylvl(:len_trim(ylvl)))
170  yrecfm=adjustl(yrecfm)
171  yform='(A11,I1.1,A8)'
172  WRITE(ycomment,fmt=yform) 'X_Y_BIOMASS',jnbiomass,' (kg/m2)'
173  CALL write_surf(dgu, u, &
174  hprogram,yrecfm,gdm%TGD%CUR%XBIOMASS(:,jnbiomass),iresp,hcomment=ycomment)
175  END DO
176  !
177  !
178  DO jnbiomass=2,gdm%TVG%NNBIOMASS
179  WRITE(ylvl,'(I1)') jnbiomass
180  yrecfm=hpatch//'GD_RESPI'//adjustl(ylvl(:len_trim(ylvl)))
181  yrecfm=adjustl(yrecfm)
182  yform='(A16,I1.1,A10)'
183  WRITE(ycomment,fmt=yform) 'X_Y_RESP_BIOMASS',jnbiomass,' (kg/m2/s)'
184  CALL write_surf(dgu, u, &
185  hprogram,yrecfm,gdm%TGD%CUR%XRESP_BIOMASS(:,jnbiomass),iresp,hcomment=ycomment)
186  END DO
187  !
188 END IF
189 !
190 !* aerodynamical resistance
191 !
192 yrecfm=hpatch//'GD_RES'
193 yrecfm=adjustl(yrecfm)
194 ycomment='X_Y_GD_RESA (s/m)'
195  CALL write_surf(dgu, u, &
196  hprogram,yrecfm,gdm%TGD%CUR%XRESA(:),iresp,hcomment=ycomment)
197 !
198 !* snow mantel
199 !
200 yrecfm='GD'
201  CALL writesurf_gr_snow(dgu, u, &
202  hprogram,yrecfm,hpatch,gdm%TGD%CUR%TSNOW)
203 IF (lhook) CALL dr_hook('WRITESURF_TEB_GARDEN_N',1,zhook_handle)
204 !
205 !-------------------------------------------------------------------------------
206 !
207 END SUBROUTINE writesurf_teb_garden_n
subroutine writesurf_gr_snow(DGU, U, HPROGRAM, HSURFTYPE, HPREFIX, TPSNOW)
subroutine writesurf_teb_garden_n(DGU, U, GDM, HPROGRAM, HPATCH)