SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
coupl_topd.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 ! #####################
7  SUBROUTINE coupl_topd (DGEI, DGMI, IG, I, UG, U, &
8  hprogram,hstep,ki,kstep)
9 ! #####################
10 !
11 !!**** *COUPL_TOPD*
12 !!
13 !! PURPOSE
14 !! -------
15 !
16 !
17 !
18 !
19 !!** METHOD
20 !! ------
21 !
22 !! EXTERNAL
23 !! --------
24 !!
25 !! none
26 !!
27 !! IMPLICIT ARGUMENTS
28 !! ------------------
29 !!
30 !!
31 !!
32 !!
33 !!
34 !! REFERENCE
35 !! ---------
36 !!
37 !!
38 !!
39 !! AUTHOR
40 !! ------
41 !!
42 !! K. Chancibault * LTHE / Meteo-France *
43 !!
44 !! MODIFICATIONS
45 !! -------------
46 !!
47 !! Original 15/10/2003
48 !! 09/2007 : New organisation of exfiltration, computation of saturated
49 !! area, routing.
50 !! Soil ice content taken into account
51 !! 09/2013 : Modifications to be able to run with ISBA-DF and more than 1
52 !! patch
53 !! 03/2014: Modif BV : New organisation for first time step (displacement
54 !! from init_coupl_topd)
55 !! 07/2015: Modif BV : modification of recharge computation
56 !-------------------------------------------------------------------------------
57 !
58 !* 0. DECLARATIONS
59 ! ------------
60 !
61 !
62 !
65 USE modd_isba_grid_n, ONLY : isba_grid_t
66 USE modd_isba_n, ONLY : isba_t
68 USE modd_surf_atm_n, ONLY : surf_atm_t
69 !
70 USE modd_topd_par, ONLY : nunit
71 USE modd_topodyn, ONLY : nncat, nmesht, nnmc, xmpara, xdmaxt
72 USE modd_coupling_topd, ONLY : xwg_full, xdtopi, xkac_pre, xdtopt, xwtopt, xwstopt, xas_nature,&
73  xka_pre, nmaskt, xwsupsat,&
74  xrunoff_top, xatop, xwfctopi, nnpix,&
75  xfrac_d2, xfrac_d3, xwstopi, xdmaxfc, xwfctopt, xwgi_full,&
76  nfreq_maps_asat, xavg_runoffcm,&
77  xavg_draincm, lbudget_topd
78  !
79 
80 USE modd_csts, ONLY : xrholw, xrholi
81 USE modd_surf_par, ONLY : xundef, nundef
82 USE modd_isba_par, ONLY : xwgmin
83 
84 USE modd_dummy_exp_profile,ONLY :xf_param, xc_depth_ratio
85 !
86 USE modi_get_luout
89 USE modi_isba_to_topd
90 USE modi_recharge_surf_topd
91 USE modi_topodyn_lat
92 USE modi_sat_area_frac
93 USE modi_topd_to_isba
94 USE modi_diag_isba_to_rout
95 USE modi_isba_to_topdsat
96 USE modi_routing
97 USE modi_open_file
98 USE modi_write_file_isbamap
99 USE modi_close_file
100 USE modi_dg_dfto3l
101 USE modi_avg_patch_wg
102 USE modi_dispatch_wg
103 USE modi_topd_to_df
104 USE modi_init_budget_coupl_rout
105 USE modi_control_water_budget_topd
106 !
107 USE yomhook ,ONLY : lhook, dr_hook
108 USE parkind1 ,ONLY : jprb
109 !
110 IMPLICIT NONE
111 !
112 !* 0.1 declarations of arguments
113 !
114 !
115 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
116 TYPE(diag_misc_isba_t), INTENT(INOUT) :: dgmi
117 TYPE(isba_grid_t), INTENT(INOUT) :: ig
118 TYPE(isba_t), INTENT(INOUT) :: i
119 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
120 TYPE(surf_atm_t), INTENT(INOUT) :: u
121 !
122  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
123  CHARACTER(LEN=*), INTENT(IN) :: hstep ! atmospheric loop index
124 INTEGER, INTENT(IN) :: ki ! Grid dimensions
125 INTEGER, INTENT(IN) :: kstep ! current time step
126 !
127 !* 0.2 declarations of local variables
128 !
129 REAL, DIMENSION(NNCAT,NMESHT) :: zrt ! recharge on TOP-LAT grid (m)
130 REAL, DIMENSION(NNCAT,NMESHT) :: zdeft ! local deficits on TOPODYN grid (m)
131 REAL, DIMENSION(NNCAT,NMESHT) :: zri_wgit ! water changing of phase on TOPMODEL grid
132 REAL, DIMENSION(NNCAT,NMESHT) :: zrunoff_topd ! Runoff on the Topodyn grid (m3/s)
133 REAL, DIMENSION(NNCAT,NMESHT) :: zdrain_topd ! Drainage from Isba on Topodyn grid (m3/s)
134 REAL, DIMENSION(NNCAT,NMESHT) :: zkappa ! topographic index
135 REAL, DIMENSION(NNCAT) :: zkappac ! critical topographic index
136 REAL, DIMENSION(KI) :: zri ! recharge on ISBA grid (m)
137 REAL, DIMENSION(KI) :: zri_wgi ! water changing of phase on ISBA grid
138 REAL, DIMENSION(KI) :: zwm,zwim ! Water content on SurfEx grid after the previous topodyn time step
139 REAL, DIMENSION(KI) :: z_wstopi, z_wfctopi
140 REAL, DIMENSION(KI) :: zrunoffc_full ! Cumulated runoff from isba on the full domain (kg/m2)
141 REAL, DIMENSION(KI) :: zrunoffc_fullm ! Cumulated runoff from isba on the full domain (kg/m2) at t-dt
142 REAL, DIMENSION(KI) :: zrunoff_isba ! Runoff from Isba (kg/m2)
143 REAL, DIMENSION(KI) :: zdrainc_full ! Cumulated drainage from Isba on the full domain (kg/m2)
144 REAL, DIMENSION(KI) :: zdrainc_fullm ! Cumulated drainage from Isba on the full domain (kg/m2) at t-dt
145 REAL, DIMENSION(KI) :: zdrain_isba ! Drainage from Isba (m3/s)
146 REAL, DIMENSION(KI) :: zdg_full
147 REAL, DIMENSION(KI) :: zwg2_full, zwg3_full, zdg2_full, zdg3_full
148 REAL, DIMENSION(KI) :: zwgi_full
149 REAL, DIMENSION(KI) :: zas ! Saturated area fraction for each Isba meshes
150 REAL, DIMENSION(NNCAT) :: z_dw1,z_dw2 ! Wsat-Wfc to actualise M in fonction of WI
151 REAL :: zavg_mesh_size, zwsatmax
152 LOGICAL, DIMENSION(NNCAT) :: gtopd ! logical variable = true if topodyn_lat runs
153 INTEGER :: jj, ji, jlayer, jpatch ! loop control
154 INTEGER :: iluout ! unit number of listing file
155 INTEGER :: iact_ground_layer, idepth !number of active ground layers
156 !
157 REAL, DIMENSION(U%NSIZE_NATURE,3) :: zwg_3l,zwgi_3l,zdg_3l
158  REAL, DIMENSION(U%NSIZE_NATURE) :: zmesh_size, zwsat
159 REAL, DIMENSION(U%NSIZE_NATURE,I%NGROUND_LAYER,I%NPATCH) :: zwg_tmp
160 REAL, DIMENSION(KI) :: zf_param_full
161 REAL, DIMENSION(NNCAT,NMESHT) :: zf_paramt
162 !
163 ! Taking several patches into account
164 INTEGER, DIMENSION(U%NSIZE_NATURE) :: inb_active_patch
165 REAL, DIMENSION(U%NSIZE_NATURE):: zsumfrd2, zsumfrd3
166 REAL, DIMENSION(U%NSIZE_NATURE,3) :: zwg_ctl
167  !
168 REAL(KIND=JPRB) :: zhook_handle
169 !-------------------------------------------------------------------------------
170 IF (lhook) CALL dr_hook('COUPL_TOPD',0,zhook_handle)
171 !
172  CALL get_luout(hprogram,iluout)
173 !
174 !
175 !* 0. Initialization:
176 ! ---------------
177 zwsatmax=maxval(xwstopi,mask=xwstopi/=xundef)
178 i%XWG(:,:,:) = max(i%XWG(:,:,:),xwgmin)
179 zwg_tmp(:,:,:) = i%XWG(:,:,:)
180 IF (.NOT.ALLOCATED(xwsupsat)) ALLOCATE(xwsupsat(ki))
181 !
182 DO jj=1,u%NSIZE_NATURE
183  inb_active_patch(jj)=count(i%XPATCH(jj,:)/=0.)
184 ENDDO
185 ! ---------------
186 IF (i%CISBA=='DIF') THEN
187  CALL dg_dfto3l(i, &
188  SIZE(i%XWG,1),zdg_3l)
189  zwg_3l(:,2)=dgmi%XFRD2_TWG(:)
190  zwg_3l(:,3)=dgmi%XFRD3_TWG(:)
191  zwgi_3l(:,2)=dgmi%XFRD2_TWGI(:)
192  zwgi_3l(:,3)=dgmi%XFRD3_TWGI(:)
193 
194 ELSEIF (i%CISBA=='3-L') THEN
195  CALL avg_patch_wg(i, &
196  SIZE(i%XWG,1),zwg_3l,zwgi_3l,zdg_3l)
197 ENDIF
198 !
199 zwm(1:ki) = xwg_full(1:ki)
200 zwim(1:ki) = xwgi_full(1:ki)
201 !
202 !* 1. ISBA => TOPODYN
203 ! ---------------
204 !* 1.1 Computation of the useful depth and water for lateral transfers
205 ! -----------------------------------
206 !
207 
208  CALL unpack_same_rank(u%NR_NATURE,zdg_3l(:,2),zdg2_full)
209  CALL unpack_same_rank(u%NR_NATURE,zdg_3l(:,3),zdg3_full)
210 WHERE ( zdg2_full/=xundef )
211  zdg_full = xfrac_d2*zdg2_full + xfrac_d3*(zdg3_full-zdg2_full)
212 ELSEWHERE
213  zdg_full = xundef
214 END WHERE
215 !
216  CALL unpack_same_rank(u%NR_NATURE,zwg_3l(:,2),zwg2_full)
217  CALL unpack_same_rank(u%NR_NATURE,zwg_3l(:,3),zwg3_full)
218 !
219 WHERE ( zdg_full/=xundef .AND. zdg_full/=0. )
220  xwg_full = xfrac_d2*(zdg2_full/zdg_full)*zwg2_full + xfrac_d3*((zdg3_full-zdg2_full)/zdg_full)*zwg3_full
221 ELSEWHERE
222  xwg_full = xundef
223 END WHERE
224 !
225 IF (kstep==1) THEN
226  IF (lbudget_topd) CALL init_budget_coupl_rout(dgei, dgmi, ig, i, u, &
227  ki)
228  CALL isba_to_topd(xwg_full,xwtopt)
229  WHERE (xwtopt == xundef) xwtopt = 0.0
230 ENDIF
231 !
232 !ludo prise en compte glace (pas de glace dans 3e couche)
233  CALL unpack_same_rank(u%NR_NATURE,zwgi_3l(:,2),zwgi_full)
234 WHERE ( zwgi_full/=xundef .AND. xfrac_d2>0 .AND. zdg_full/=0. )
235  xwgi_full = xfrac_d2*(zdg2_full/zdg_full)*zwgi_full
236 ELSEWHERE
237  xwgi_full = xundef
238 END WHERE
239 !
240 WHERE ( (xdtopi/=xundef).AND.(xwgi_full/=xundef).AND.(zwim/=xundef))
241  zri_wgi = ( (xwgi_full - zwim) ) * xdtopi!old code
242 ELSEWHERE
243  zri_wgi = 0.0
244 END WHERE
245 !CALL UNPACK_SAME_RANK(U%NR_NATURE,DGEI%XAVG_DWGI(:),ZRI_WGI)
246 !
247 WHERE ( xdtopi==xundef )
248  zri_wgi = 0.0
249 END WHERE
250 !
251  CALL isba_to_topd(zri_wgi,zri_wgit)
252 !
253 !!!!!!!!!!!!!!!!!
254 !Determination of Wsat, Wfc, Dmax
255 !!!!!!!!!!!!!!!
256 !test reservoir top=eau+glace -> pas de modif Wsat et Wfc
257  z_wstopi = xwstopi
258  z_wfctopi = xwfctopi
259 WHERE ( xwgi_full/=0. .AND.xwgi_full/=xundef .AND. xwstopi/=0. )
260  z_wstopi = xwstopi - xwgi_full
261  z_wfctopi = xwfctopi * z_wstopi / xwstopi
262 END WHERE
263 !ludo calcul en fct teneur glace
264 !
265  CALL isba_to_topd(z_wstopi,xwstopt)
266  CALL isba_to_topd(z_wfctopi,xwfctopt)
267 !
268 !ludo test empeche erreur num chgt phase
269 WHERE ( abs(xwstopt-xwtopt) < 0.0000000001 ) xwstopt = xwtopt
270 !
271 WHERE ( xwtopt>xwstopt ) xwtopt = xwstopt
272 !
273 WHERE ( xwfctopt/= xundef .AND. xwstopt/=xundef .AND. xdtopt/=xundef)&
274  xdmaxfc = (xwstopt - xwfctopt) * xdtopt ! (m)
275 xdmaxt=xdmaxfc
276 !WHERE ( XDMAXT >=XUNDEF ) XDMAXT=(MAXVAL(Z_WSTOPI)-MAXVAL(Z_WFCTOPI))*MAXVAL(ZDG2_FULL)
277 
278 !
279 !actualisation M
280 IF( i%CKSAT=='EXP' .OR. i%CKSAT=='SGH' ) THEN
281  !ludo test
282  xf_param(:) = i%XF_PARAM(:)
283  CALL unpack_same_rank(u%NR_NATURE,xf_param(:),zf_param_full)
284  CALL isba_to_topd(zf_param_full,zf_paramt)
285  !
286  !passage de f a M (M=Wsat-Wfc/f)
287  !ludo test ksat exp
288  WHERE( zf_paramt/=xundef .AND. zf_paramt/=0. ) zf_paramt = (xwstopt-xwfctopt)/zf_paramt
289  !
290  DO jj=1,nncat
291  xmpara(jj) = sum(zf_paramt(jj,:),mask=zf_paramt(jj,:)/=xundef) / nnmc(jj)
292  ENDDO
293  !
294 ELSE
295  !
296  DO jj=1,nncat
297  xmpara(jj) = sum( xdmaxfc(jj,:),mask=xdmaxfc(jj,:)/=xundef ) / nnmc(jj) / 4.
298  ENDDO
299  !
300 ENDIF
301 !
302 !!!!!!!!!!!!!!!
303 !* 1.2 Water recharge
304 ! ---------------
305 ! Topodyn uses :
306 ! - a water recharge = water added since last time step to compute hydrological similarity indexes
307 ! - the total water content to compute a deficit
308 !
309 ! This recharge is computed without regarding the changing of phase of water
310 ! and the lateral transfers are performed regarding wsat et Wfc of last time step
311 !
312 WHERE ( (xdtopi/=xundef).AND.(xwg_full/=xundef).AND.(zwm/=xundef))
313  zri = ( (xwg_full - zwm) ) * xdtopi+ zri_wgi
314 ELSEWHERE
315  zri = 0.0
316 ENDWHERE
317 !
318 ! The water recharge on ISBA grid is computed on TOPMODEL grid
319  CALL recharge_surf_topd(zri,zrt,ki)
320 !
321 !* 2. Lateral distribution
322 ! --------------------
323 !* 2.1 Computation of local deficits on TOPODYN grid
324 ! ----------------------------------------
325 !
326  CALL topodyn_lat(zrt(:,:),zdeft(:,:),zkappa(:,:),zkappac(:),gtopd)
327 !
328 !* 2.2 Computation of contributive area on ISBA grid
329 ! ----------------------------------------
330 !
331  CALL sat_area_frac(zdeft,zas,gtopd)
332 !
333  CALL pack_same_rank(u%NR_NATURE,zas,xas_nature)
334 !
335 !* 3. Deficit (m) -> water storage (m3/m3) and changing of phase
336 ! ------------------------------------
337 !
338 DO jj=1,nncat
339  WHERE ( xdtopt(jj,:)/=xundef .AND. xdtopt(jj,:)/=0. )
340  xwtopt(jj,:) = xwstopt(jj,:) - ( zdeft(jj,:) / xdtopt(jj,:) )
341  !changing phase
342  xwtopt(jj,:) = xwtopt(jj,:) - zri_wgit(jj,:)
343  END WHERE
344 ENDDO
345 WHERE (xwtopt > xwstopt ) xwtopt = xwstopt
346 !
347 !* 4. TOPODYN => ISBA
348 ! ---------------
349 !* 4.1 Calculation of water storage on ISBA grid
350 ! -----------------------------------------
351 !
352  CALL topd_to_isba(i, ug, u, &
353  ki,kstep,gtopd)!=modif of XWG_FULL from XWTOPT
354  CALL pack_same_rank(u%NR_NATURE, (1-xfrac_d2)*zwg2_full + xfrac_d2*xwg_full, zwg_3l(:,2))
355  CALL pack_same_rank(u%NR_NATURE, (1-xfrac_d3)*zwg3_full + xfrac_d3*xwg_full, zwg_3l(:,3))
356 !
357 !* 4.2 Budget correction
358 ! -----------------------------------------
359 !
360  CALL pack_same_rank(u%NR_NATURE,ug%XMESH_SIZE,zmesh_size)
361  zavg_mesh_size = sum(zmesh_size(:),mask=zmesh_size(:)/=xundef) / count(zmesh_size(:)/=xundef)
362 !
363 IF (i%CISBA=='DIF') THEN
364  CALL topd_to_df(i, &
365  SIZE(zwg_3l,1),zwg_3l)
366 ELSEIF (i%CISBA=='3-L') THEN
367  CALL dispatch_wg(i, &
368  SIZE(zwg_3l,1),zwg_3l,zwgi_3l,zdg_3l)
369 ENDIF
370 !
371 WHERE(i%XWG(:,:,:)>zwsatmax.AND.i%XWG(:,:,:)/=xundef)
372  i%XWG(:,:,:)=zwsatmax
373 ENDWHERE
374 WHERE(i%XWG(:,:,:)<xwgmin)
375  i%XWG(:,:,:)=xwgmin
376 ENDWHERE
377 !
378 iact_ground_layer=3
379 
380 IF (i%CISBA=='DIF') THEN
381 
382 DO jlayer=2,i%NGROUND_LAYER
383  IF (all(i%XWG(:,jlayer,:)==xundef))THEN
384  iact_ground_layer=jlayer-1
385  !WRITE(ILUOUT,*) 'IACT_GROUND_LAYER=',IACT_GROUND_LAYER
386  EXIT
387  ENDIF
388 ENDDO
389 !
390 ENDIF
391 !
392  CALL pack_same_rank(u%NR_NATURE,z_wstopi,zwsat)
393  CALL control_water_budget_topd(i, u, &
394  zwg_tmp(:,2,:), i%XWG(:,2,:),i%XDG(:,2,:),&
395  zmesh_size,zavg_mesh_size,zwsat(:))
396 DO jlayer = 3,iact_ground_layer
397  CALL control_water_budget_topd(i, u, &
398  zwg_tmp(:,jlayer,:), i%XWG(:,jlayer,:),&
399  i%XDG(:,jlayer,:)-i%XDG(:,jlayer-1,:),&
400  zmesh_size,zavg_mesh_size,zwsat(:))
401 ENDDO
402 !
403 WHERE(i%XWG(:,:,:)>zwsatmax.AND.i%XWG(:,:,:)/=xundef)
404  i%XWG(:,:,:)=zwsatmax
405 ENDWHERE
406 WHERE(i%XWG(:,:,:)<xwgmin)
407  i%XWG(:,:,:)=xwgmin
408 ENDWHERE
409 !
410 !* 5.0 Total discharge
411 ! ---------------
412 !
413 !* 5.1 Total water for runoff on TOPODYN grid
414 ! ---------------------------------------
415 !
416 !In XAVG_RUNOFFC, the paches have been averaged
417  CALL unpack_same_rank(u%NR_NATURE,dgei%XAVG_RUNOFFC,zrunoffc_full)
418  CALL unpack_same_rank(u%NR_NATURE,xavg_runoffcm,zrunoffc_fullm)
419 !
420  CALL diag_isba_to_rout(ug, &
421  zrunoffc_full,zrunoffc_fullm,zrunoff_isba)
422 !
423 xavg_runoffcm(:) = dgei%XAVG_RUNOFFC(:)
424 !
425 WHERE (zrunoff_isba==xundef) zrunoff_isba = 0.
426 !
427 zrunoff_topd(:,:) = 0
428 !
429  CALL isba_to_topdsat(xka_pre,xkac_pre,ki,zrunoff_isba,zrunoff_topd)
430 !
431 !
432 !* 5.2 Total water for drainage on TOPODYN grid
433 ! ----------------------------------------
434 !In XAVG_DRAINC, the paches have been average
435  CALL unpack_same_rank(u%NR_NATURE,dgei%XAVG_DRAINC*xatop,zdrainc_full)
436  CALL unpack_same_rank(u%NR_NATURE,xavg_draincm*xatop,zdrainc_fullm)
437 !
438  CALL diag_isba_to_rout(ug, &
439  zdrainc_full,zdrainc_fullm,zdrain_isba)
440 !
441 WHERE (zdrain_isba==xundef) zdrain_isba=0.
442 !
443 xavg_draincm(:) = dgei%XAVG_DRAINC(:)
444 !
445 zdrain_topd(:,:) = 0.0
446 !
447  CALL isba_to_topd(zdrain_isba,zdrain_topd)
448 !
449 DO jj=1,nncat
450  DO ji=1,nnmc(jj)
451  IF (nmaskt(jj,ji)/=nundef) &
452  zdrain_topd(jj,ji) = zdrain_topd(jj,ji) / nnpix(nmaskt(jj,ji))
453  ENDDO
454 ENDDO
455 !
456 !* 6 Routing (runoff + drainage + exfiltration)
457 !
458  CALL routing(zrunoff_topd,zdrain_topd,kstep)
459 !
460 xka_pre(:,:) = zkappa(:,:)
461 xkac_pre(:) = zkappac(:)
462 !
463 !* 7.0 Writing results in map files
464 ! ----------------------------
465 !
466 IF (nfreq_maps_asat/=0.AND.mod(kstep,nfreq_maps_asat)==0) THEN
467  CALL open_file('ASCII ',nunit,hfile='carte_surfcont'//hstep,hform='FORMATTED',haction='WRITE')
468  CALL write_file_isbamap(ug, &
469  nunit,zas,ki)
470  CALL close_file('ASCII ',nunit)
471 ENDIF
472 !
473 IF (lhook) CALL dr_hook('COUPL_TOPD',1,zhook_handle)
474 !
475 !
476 END SUBROUTINE coupl_topd
subroutine dg_dfto3l(I, KI, PDG)
Definition: dg_dfto3l.F90:7
subroutine topd_to_isba(I, UG, U, KI, KSTEP, GTOPD)
Definition: topd_to_isba.F90:7
subroutine routing(PRO, PDR, KSTEP)
Definition: routing.F90:7
subroutine recharge_surf_topd(PHI, PHT, KI)
subroutine dispatch_wg(I, KI, PWG, PWGI, PDG)
Definition: dispatch_wg.F90:7
subroutine write_file_isbamap(UG, KUNIT, PVAR, KI)
subroutine sat_area_frac(PDEF, PAS, GTOPD)
subroutine coupl_topd(DGEI, DGMI, IG, I, UG, U, HPROGRAM, HSTEP, KI, KSTEP)
Definition: coupl_topd.F90:7
subroutine avg_patch_wg(I, KI, PWG, PWGI, PDG)
Definition: avg_patch_wg.F90:7
subroutine topd_to_df(I, KI, PWG)
Definition: topd_to_df.F90:7
subroutine topodyn_lat(PRW, PDEF, PKAPPA, PKAPPAC, GTOPD)
Definition: topodyn_lat.F90:7
subroutine close_file(HPROGRAM, KUNIT)
Definition: close_file.F90:6
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine control_water_budget_topd(I, U, PWGM, PWG, PDG, PMESH_SIZE, PAVG_MESH_SIZE, PWSAT)
subroutine isba_to_topdsat(PKAPPA, PKAPPAC, KI, PRO_I, PRO_T)
subroutine diag_isba_to_rout(UG, PVARC, PVARCP, PVARROUT)
subroutine isba_to_topd(PVARI, PVART)
Definition: isba_to_topd.F90:7
subroutine init_budget_coupl_rout(DGEI, DGMI, IG, I, U, KNI)
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file.F90:6