SURFEX v8.1
General documentation of Surfex
writesurf_isban.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_isba_n (HSELECT, OSNOWDIMNC, CHI, NDST, &
7  IO, S, NP, NPE, KI, HPROGRAM, OLAND_USE)
8 ! #####################################
9 !
10 !!**** *WRITESURF_ISBA_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 !! A.L. Gibelin 03/09 : modifications for CENTURY model
42 !! A.L. Gibelin 04/2009 : BIOMASS and RESP_BIOMASS arrays
43 !! A.L. Gibelin 06/2009 : Soil carbon variables for CNT option
44 !! B. Decharme 07/2011 : land_use semi-prognostic variables
45 !! B. Decharme 09/2012 : suppress NWG_LAYER (parallelization problems)
46 !! B. Decharme 09/2012 : write some key for prep_read_external
47 !! B. Decharme 04/2013 : Only 2 temperature layer in ISBA-FR
48 !! P. Samuelsson 10/2014: MEB
49 !!
50 !-------------------------------------------------------------------------------
51 !
52 !* 0. DECLARATIONS
53 ! ------------
54 !
55 USE modd_surfex_mpi, ONLY : nrank
56 !
59 !
60 USE modd_ch_isba_n, ONLY : ch_isba_t
61 USE modd_dst_n, ONLY : dst_np_t
62 !
65 !
66 USE modd_surf_par, ONLY : nundef
67 !
68 USE modd_assim, ONLY : lassim, cassim, cassim_isba, nie, nens, &
69  xaddtimecorr, lens_gen, nvar
70 !
71 USE modd_dst_surf
72 !
73 USE modi_write_field_1d_patch
75 USE modi_writesurf_gr_snow
76 USE modi_allocate_gr_snow
77 USE modi_dealloc_gr_snow
78 !
79 USE yomhook ,ONLY : lhook, dr_hook
80 USE parkind1 ,ONLY : jprb
81 !
82 IMPLICIT NONE
83 !
84 !* 0.1 Declarations of arguments
85 ! -------------------------
86 !
87  CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSELECT
88 LOGICAL, INTENT(IN) :: OSNOWDIMNC
89 !
90 TYPE(ch_isba_t), INTENT(INOUT) :: CHI
91 TYPE(dst_np_t), INTENT(INOUT) :: NDST
92 !
93 TYPE(isba_options_t), INTENT(INOUT) :: IO
94 TYPE(isba_s_t), INTENT(INOUT) :: S
95 TYPE(isba_np_t), INTENT(INOUT) :: NP
96 TYPE(isba_npe_t), INTENT(INOUT) :: NPE
97 INTEGER, INTENT(IN) :: KI
98 !
99  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling
100 LOGICAL, INTENT(IN) :: OLAND_USE !
101 !
102 !* 0.2 Declarations of local variables
103 ! -------------------------------
104 !
105 INTEGER :: IRESP ! IRESP : return-code if a problem appears
106  CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
107  CHARACTER(LEN=4 ) :: YLVL
108  CHARACTER(LEN=3 ) :: YVAR
109  CHARACTER(LEN=100):: YCOMMENT ! Comment string
110  CHARACTER(LEN=25) :: YFORM ! Writing format
111  CHARACTER(LEN=2) :: YPAT
112 !
113 INTEGER :: JJ, JL, JP, JNB, JNL, JNS, JNLV ! loop counter on levels
114 INTEGER :: IWORK ! Work integer
115 INTEGER :: JSV
116 INTEGER :: ISIZE_LMEB_PATCH
117 INTEGER :: JVAR
118 !
119 REAL(KIND=JPRB) :: ZHOOK_HANDLE
120 !
121 !------------------------------------------------------------------------------
122 !
123 !* 2. Prognostic fields:
124 ! -----------------
125 !
126 IF (lhook) CALL dr_hook('WRITESURF_ISBA_N',0,zhook_handle)
127 !
128 !* soil temperatures
129 !
130 IF(io%LTEMP_ARP)THEN
131  iwork=io%NTEMPLAYER_ARP
132 ELSEIF(io%CISBA=='DIF')THEN
133  iwork=io%NGROUND_LAYER
134 ELSE
135  iwork=2 !Only 2 temperature layer in ISBA-FR
136 ENDIF
137 !
138 DO jl=1,iwork
139  WRITE(ylvl,'(I4)') jl
140  yrecfm='TG'//adjustl(ylvl(:len_trim(ylvl)))
141  yform='(A6,I1.1,A4)'
142  IF (jl >= 10) yform='(A6,I2.2,A4)'
143  WRITE(ycomment,fmt=yform) 'X_Y_TG',jl,' (K)'
144  DO jp = 1,io%NPATCH
145  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
146  np%AL(jp)%NR_P,npe%AL(jp)%XTG(:,jl),ki,s%XWORK_WR)
147  ENDDO
148 END DO
149 !
150 !* soil liquid water contents
151 !
152 DO jl=1,io%NGROUND_LAYER
153  WRITE(ylvl,'(I4)') jl
154  yrecfm='WG'//adjustl(ylvl(:len_trim(ylvl)))
155  yform='(A6,I1.1,A8)'
156  IF (jl >= 10) yform='(A6,I2.2,A8)'
157  WRITE(ycomment,fmt=yform) 'X_Y_WG',jl,' (m3/m3)'
158  DO jp = 1,io%NPATCH
159  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
160  np%AL(jp)%NR_P,npe%AL(jp)%XWG(:,jl),ki,s%XWORK_WR)
161  ENDDO
162 END DO
163 !
164 !* soil ice water contents
165 !
166 IF(io%CISBA=='DIF')THEN
167  iwork=io%NGROUND_LAYER
168 ELSE
169  iwork=2 !Only 2 soil ice layer in ISBA-FR
170 ENDIF
171 !
172 DO jl=1,iwork
173  WRITE(ylvl,'(I4)') jl
174  yrecfm='WGI'//adjustl(ylvl(:len_trim(ylvl)))
175  yform='(A7,I1.1,A8)'
176  IF (jl >= 10) yform='(A7,I2.2,A8)'
177  WRITE(ycomment,yform) 'X_Y_WGI',jl,' (m3/m3)'
178  DO jp = 1,io%NPATCH
179  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
180  np%AL(jp)%NR_P,npe%AL(jp)%XWGI(:,jl),ki,s%XWORK_WR)
181  ENDDO
182 END DO
183 !
184 !* water intercepted on leaves
185 !
186 yrecfm='WR'
187 ycomment='X_Y_WR (kg/m2)'
188 DO jp = 1,io%NPATCH
189  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
190  np%AL(jp)%NR_P,npe%AL(jp)%XWR(:),ki,s%XWORK_WR)
191 ENDDO
192 !
193 !* Glacier ice storage
194 !
195 yrecfm = 'GLACIER'
196 ycomment='LGLACIER key for external prep'
197  CALL write_surf(hselect,hprogram,yrecfm,io%LGLACIER,iresp,hcomment=ycomment)
198 !
199 IF(io%LGLACIER)THEN
200  yrecfm='ICE_STO'
201  ycomment='X_Y_ICE_STO (kg/m2)'
202  DO jp = 1,io%NPATCH
203  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
204  np%AL(jp)%NR_P,npe%AL(jp)%XICE_STO(:),ki,s%XWORK_WR)
205  ENDDO
206 ENDIF
207 !
208 !* Leaf Area Index
209 !
210 IF (io%CPHOTO/='NON' .AND. io%CPHOTO/='AST') THEN
211  !
212  yrecfm='LAI'
213  !
214  ycomment='X_Y_LAI (m2/m2)'
215  DO jp = 1,io%NPATCH
216  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
217  np%AL(jp)%NR_P,npe%AL(jp)%XLAI(:),ki,s%XWORK_WR)
218  ENDDO
219  !
220 END IF
221 !
222 IF ( trim(cassim_isba)=="ENKF" .AND. (lassim .OR. nie/=0) ) THEN
223  DO jvar = 1,nvar
224  IF ( xaddtimecorr(jvar)>0. ) THEN
225  WRITE(yvar,'(I3)') jvar
226  ycomment = 'Red_Noise_Enkf'
227  yrecfm='RD_NS'//adjustl(yvar(:len_trim(yvar)))
228  DO jp = 1,io%NPATCH
229  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
230  np%AL(jp)%NR_P,np%AL(jp)%XRED_NOISE(:,jvar),ki,s%XWORK_WR)
231  ENDDO
232  ENDIF
233  ENDDO
234 ENDIF
235 !
236 !* snow mantel
237 !
238 DO jp = 1,io%NPATCH
239  CALL writesurf_gr_snow(osnowdimnc, hselect, hprogram, 'VEG', ' ', ki, &
240  np%AL(jp)%NR_P, jp, npe%AL(jp)%TSNOW, s%XWSN_WR, s%XRHO_WR, &
241  s%XHEA_WR, s%XAGE_WR, s%XSG1_WR, s%XSG2_WR, s%XHIS_WR, s%XALB_WR)
242 ENDDO
243 !
244 !* key and/or field usefull to make an external prep
245 !
246 IF(io%CISBA=='DIF')THEN
247 !
248  yrecfm = 'SOC'
249  ycomment='SOC key for external prep'
250  CALL write_surf(hselect,hprogram,yrecfm,io%LSOC,iresp,hcomment=ycomment)
251 !
252 ELSE
253 !
254  yrecfm = 'TEMPARP'
255  ycomment='LTEMP_ARP key for external prep'
256  CALL write_surf(hselect,hprogram,yrecfm,io%LTEMP_ARP,iresp,hcomment=ycomment)
257 !
258  IF(io%LTEMP_ARP)THEN
259  yrecfm = 'NTEMPLARP'
260  ycomment='NTEMPLAYER_ARP for external prep'
261  CALL write_surf(hselect,hprogram,yrecfm,io%NTEMPLAYER_ARP,iresp,hcomment=ycomment)
262  ENDIF
263 !
264 ENDIF
265 !
266 !-------------------------------------------------------------------------------
267 !
268 !* 3. MEB Prognostic or Semi-prognostic variables
269 ! -------------------------------------------
270 !
271 !
272 isize_lmeb_patch=count(io%LMEB_PATCH(:))
273 !
274 IF (isize_lmeb_patch>0) THEN
275 !
276 !* water intercepted on canopy vegetation leaves
277 !
278  yrecfm='WRL'
279  ycomment='X_Y_WRL (kg/m2)'
280  DO jp = 1,io%NPATCH
281  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
282  np%AL(jp)%NR_P,npe%AL(jp)%XWRL(:),ki,s%XWORK_WR)
283  ENDDO
284 !
285 !* ice on litter
286 !
287  yrecfm='WRLI'
288  ycomment='X_Y_WRLI (kg/m2)'
289  DO jp = 1,io%NPATCH
290  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
291  np%AL(jp)%NR_P,npe%AL(jp)%XWRLI(:),ki,s%XWORK_WR)
292  ENDDO
293 !
294 !* snow intercepted on canopy vegetation leaves
295 !
296  yrecfm='WRVN'
297  ycomment='X_Y_WRVN (kg/m2)'
298  DO jp = 1,io%NPATCH
299  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
300  np%AL(jp)%NR_P,npe%AL(jp)%XWRVN(:),ki,s%XWORK_WR)
301  ENDDO
302 
303 !
304 !* canopy vegetation temperature
305 !
306  yrecfm='TV'
307  ycomment='X_Y_TV (K)'
308  DO jp = 1,io%NPATCH
309  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
310  np%AL(jp)%NR_P,npe%AL(jp)%XTV(:),ki,s%XWORK_WR)
311  ENDDO
312 !
313 !* litter temperature
314 !
315  yrecfm='TL'
316  ycomment='X_Y_TL (K)'
317  DO jp = 1,io%NPATCH
318  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
319  np%AL(jp)%NR_P,npe%AL(jp)%XTL(:),ki,s%XWORK_WR)
320  ENDDO
321 !
322 !* vegetation canopy air temperature
323 !
324  yrecfm='TC'
325  ycomment='X_Y_TC (K)'
326  DO jp = 1,io%NPATCH
327  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
328  np%AL(jp)%NR_P,npe%AL(jp)%XTC(:),ki,s%XWORK_WR)
329  ENDDO
330 !
331 !* vegetation canopy air specific humidity
332 !
333  yrecfm='QC'
334  ycomment='X_Y_QC (kg/kg)'
335  DO jp = 1,io%NPATCH
336  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
337  np%AL(jp)%NR_P,npe%AL(jp)%XQC(:),ki,s%XWORK_WR)
338  ENDDO
339 !
340 ENDIF
341 !
342 !-------------------------------------------------------------------------------
343 !
344 !* 4. Semi-prognostic variables
345 ! -------------------------
346 !
347 !
348 !* Fraction for each patch
349 !
350 yrecfm='PATCH'
351 ycomment='fraction for each patch (-)'
352 DO jp = 1,io%NPATCH
353  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
354  np%AL(jp)%NR_P,np%AL(jp)%XPATCH(:),ki,s%XWORK_WR)
355 ENDDO
356 !
357 !* patch averaged radiative temperature (K)
358 !
359 yrecfm='TSRAD_NAT'
360 ycomment='X_TSRAD_NAT (K)'
361  CALL write_surf(hselect,hprogram,yrecfm,s%XTSRAD_NAT(:),iresp,hcomment=ycomment)
362 !
363 !* aerodynamical resistance
364 !
365 yrecfm='RESA'
366 ycomment='X_Y_RESA (s/m)'
367 DO jp = 1,io%NPATCH
368  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
369  np%AL(jp)%NR_P,npe%AL(jp)%XRESA(:),ki,s%XWORK_WR)
370 ENDDO
371 !
372 !* Land use variables
373 !
374 IF(oland_use .OR. lwrite_extern)THEN
375 !
376  DO jl=1,io%NGROUND_LAYER
377  WRITE(ylvl,'(I4)') jl
378  yform='(A6,I1.1,A8)'
379  IF (jl >= 10) yform='(A6,I2.2,A8)'
380  IF (oland_use) THEN
381  yrecfm='OLD_DG'//adjustl(ylvl(:len_trim(ylvl)))
382  WRITE(ycomment,fmt=yform) 'X_Y_OLD_DG',jl,' (m)'
383  ELSE
384  yrecfm='DG'//adjustl(ylvl(:len_trim(ylvl)))
385  WRITE(ycomment,fmt=yform) 'X_Y_DG',jl,' (m)'
386  ENDIF
387  DO jp = 1,io%NPATCH
388  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
389  np%AL(jp)%NR_P,np%AL(jp)%XDG(:,jl),ki,s%XWORK_WR)
390  ENDDO
391  END DO
392 !
393 ENDIF
394 !
395 !* ISBA-AGS variables
396 !
397 IF (io%CPHOTO/='NON') THEN
398  yrecfm='AN'
399  ycomment='X_Y_AN (kgCO2/kgair m/s)'
400  DO jp = 1,io%NPATCH
401  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
402  np%AL(jp)%NR_P,npe%AL(jp)%XAN(:),ki,s%XWORK_WR)
403  ENDDO
404 !
405  yrecfm='ANDAY'
406  ycomment='X_Y_ANDAY (kgCO2/m2/day)'
407  DO jp = 1,io%NPATCH
408  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
409  np%AL(jp)%NR_P,npe%AL(jp)%XANDAY(:),ki,s%XWORK_WR)
410  ENDDO
411 !
412  yrecfm='ANFM'
413  ycomment='X_Y_ANFM (kgCO2/kgair m/s)'
414  DO jp = 1,io%NPATCH
415  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
416  np%AL(jp)%NR_P,npe%AL(jp)%XANFM(:),ki,s%XWORK_WR)
417  ENDDO
418 !
419  yrecfm='LE_AGS'
420  ycomment='X_Y_LE_AGS (W/m2)'
421  DO jp = 1,io%NPATCH
422  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
423  np%AL(jp)%NR_P,npe%AL(jp)%XLE(:),ki,s%XWORK_WR)
424  ENDDO
425 END IF
426 !
427 !
428 IF (io%CPHOTO=='NIT' .OR. io%CPHOTO=='NCB') THEN
429  !
430  DO jnb=1,io%NNBIOMASS
431  WRITE(ylvl,'(I1)') jnb
432  yrecfm='BIOMA'//adjustl(ylvl(:len_trim(ylvl)))
433  yform='(A11,I1.1,A10)'
434  WRITE(ycomment,fmt=yform) 'X_Y_BIOMASS',jnb,' (kgDM/m2)'
435  DO jp = 1,io%NPATCH
436  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
437  np%AL(jp)%NR_P,npe%AL(jp)%XBIOMASS(:,jnb),ki,s%XWORK_WR)
438  ENDDO
439  END DO
440  !
441  !
442  DO jnb=2,io%NNBIOMASS
443  WRITE(ylvl,'(I1)') jnb
444  yrecfm='RESPI'//adjustl(ylvl(:len_trim(ylvl)))
445  yform='(A16,I1.1,A10)'
446  WRITE(ycomment,fmt=yform) 'X_Y_RESP_BIOMASS',jnb,' (kg/m2/s)'
447  DO jp = 1,io%NPATCH
448  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
449  np%AL(jp)%NR_P,npe%AL(jp)%XRESP_BIOMASS(:,jnb),ki,s%XWORK_WR)
450  ENDDO
451  END DO
452  !
453 END IF
454 !
455 !* Soil carbon
456 !
457 yrecfm = 'RESPSL'
458 ycomment=yrecfm
459  CALL write_surf(hselect,hprogram,yrecfm,io%CRESPSL,iresp,hcomment=ycomment)
460 !
461 yrecfm='NLITTER'
462 ycomment=yrecfm
463  CALL write_surf(hselect,hprogram,yrecfm,io%NNLITTER,iresp,hcomment=ycomment)
464 !
465 yrecfm='NLITTLEVS'
466 ycomment=yrecfm
467  CALL write_surf(hselect,hprogram,yrecfm,io%NNLITTLEVS,iresp,hcomment=ycomment)
468 !
469 yrecfm='NSOILCARB'
470 ycomment=yrecfm
471  CALL write_surf(hselect,hprogram,yrecfm,io%NNSOILCARB,iresp,hcomment=ycomment)
472 !
473 IF(io%LSPINUPCARBS.OR.io%LSPINUPCARBW)THEN
474  yrecfm='NBYEARSOLD'
475  ycomment='yrs'
476  CALL write_surf(hselect,hprogram,yrecfm,io%NNBYEARSOLD,iresp,hcomment=ycomment)
477 ENDIF
478 !
479 IF (io%CRESPSL=='CNT') THEN
480  !
481  DO jnl=1,io%NNLITTER
482  DO jnlv=1,io%NNLITTLEVS
483  WRITE(ylvl,'(I1,A1,I1)') jnl,'_',jnlv
484  yrecfm='LITTER'//adjustl(ylvl(:len_trim(ylvl)))
485  yform='(A10,I1.1,A1,I1.1,A8)'
486  WRITE(ycomment,fmt=yform) 'X_Y_LITTER',jnl,' ',jnlv,' (gC/m2)'
487  DO jp = 1,io%NPATCH
488  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
489  np%AL(jp)%NR_P,npe%AL(jp)%XLITTER(:,jnl,jnlv),ki,s%XWORK_WR)
490  ENDDO
491  END DO
492  END DO
493 
494  DO jns=1,io%NNSOILCARB
495  WRITE(ylvl,'(I4)') jns
496  yrecfm='SOILCARB'//adjustl(ylvl(:len_trim(ylvl)))
497  yform='(A8,I1.1,A8)'
498  WRITE(ycomment,fmt=yform) 'X_Y_SOILCARB',jns,' (gC/m2)'
499  DO jp = 1,io%NPATCH
500  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
501  np%AL(jp)%NR_P,npe%AL(jp)%XSOILCARB(:,jns),ki,s%XWORK_WR)
502  ENDDO
503  END DO
504 !
505  DO jnlv=1,io%NNLITTLEVS
506  WRITE(ylvl,'(I4)') jnlv
507  yrecfm='LIGN_STR'//adjustl(ylvl(:len_trim(ylvl)))
508  yform='(A12,I1.1,A8)'
509  WRITE(ycomment,fmt=yform) 'X_Y_LIGNIN_STRUC',jnlv,' (-)'
510  DO jp = 1,io%NPATCH
511  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
512  np%AL(jp)%NR_P,npe%AL(jp)%XLIGNIN_STRUC(:,jnlv),ki,s%XWORK_WR)
513  ENDDO
514  END DO
515 !
516 ENDIF
517 !
518 !
519 IF (chi%SVI%NDSTEQ > 0)THEN
520  DO jsv = 1,ndstmde ! for all dust modes
521  WRITE(yrecfm,'(A6,I3.3)')'F_DSTM',jsv
522  ycomment='X_Y_'//yrecfm//' (kg/m2)'
523  DO jp = 1,io%NPATCH
524  CALL write_field_1d_patch(hselect,hprogram,yrecfm,ycomment,jp,&
525  np%AL(jp)%NR_P,ndst%AL(jp)%XSFDSTM(:,jsv),ki,s%XWORK_WR)
526  ENDDO
527  END DO
528 ENDIF
529 !
530 !-------------------------------------------------------------------------------
531 
532 !* 5. Time
533 ! ----
534 !
535 yrecfm='DTCUR'
536 ycomment='s'
537  CALL write_surf(hselect,hprogram,yrecfm,s%TTIME,iresp,hcomment=ycomment)
538 !
539 IF (lhook) CALL dr_hook('WRITESURF_ISBA_N',1,zhook_handle)
540 !
541 !-------------------------------------------------------------------------------
542 !
543 END SUBROUTINE writesurf_isba_n
static const char * trim(const char *name, int *n)
Definition: drhook.c:2383
subroutine write_field_1d_patch(HSELECT, HPROGRAM, HRECFM, HCOMMENT, KP, KMASK, PFIELD_IN, KSIZE, PWORK_WR)
integer, parameter jprb
Definition: parkind1.F90:32
integer, parameter nundef
logical lhook
Definition: yomhook.F90:15
subroutine writesurf_gr_snow(OSNOWDIMNC, HSELECT, HPROGRAM, HSURF
subroutine writesurf_isba_n(HSELECT, OSNOWDIMNC, CHI, NDST, IO, S, NP, NPE, KI, HPROGRAM, OLAND_U
static int count
Definition: memory_hook.c:21