7 hprogram,hinit, oland_use, &
10 pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
11 pemis,ptsrad,ptsurf, &
12 kyear, kmonth,kday, ptime, &
13 hatmfile,hatmfiletype, &
71 USE modd_dst_surf, ONLY : ndstmde, ndst_mdebeg, lvarsig_dst, lrgfix_dst
72 USE modd_slt_surf, ONLY : nsltmde, nslt_mdebeg, lvarsig_slt, lrgfix_slt
75 USE modd_data_cover, ONLY : lclim_lai, xdata_lai_all_years, xdata_lai, &
76 neco2_start_year, neco2_end_year
82 USE modd_surfex_mpi, ONLY : xtime_init_sea, xtime_init_water, xtime_init_nature, xtime_init_town, &
84 USE modd_surfex_omp, ONLY : nindx2sfx, nwork, nwork2, xwork, xwork2, xwork3, &
85 nwork_full, nwork2_full, xwork_full, xwork2_full, &
90 USE modi_init_io_surf_n
92 USE modi_default_ch_surf_atm
93 USE modi_default_diag_surf_atm
94 USE modi_read_default_surf_atm_n
95 USE modi_read_surf_atm_conf_n
96 USE modi_read_surf_atm_date
97 USE modi_read_nam_prep_surf_n
99 USE modi_get_sizes_parallel
101 USE modi_get_size_full_n
102 USE modi_read_cover_n
105 USE modi_read_sso_canopy_n
106 USE modi_read_dummy_n
108 USE modi_read_gridtype
109 USE modi_end_io_surf_n
110 USE modi_prep_ctrl_surf_atm
112 USE modi_average_tsurf
113 USE modi_init_chemical_n
114 USE modi_ch_init_depconst
115 USE modi_ch_init_emission_n
116 USE modi_ch_init_snap_n
117 USE modi_open_namelist
118 USE modi_close_namelist
120 USE modi_alloc_diag_surf_atm_n
122 USE modi_ini_data_cover
123 USE modi_init_inland_water_n
124 USE modi_init_nature_n
127 USE modi_read_arrange_cover
128 USE modi_read_cover_garden
129 USE modi_read_eco2_irrig
130 USE modi_read_lclim_lai
131 USE modi_read_lecoclimap
132 USE modi_surf_version
134 USE modi_set_surfex_filein
136 USE modi_init_cpl_gcm_n
138 USE yomhook
,ONLY : lhook, dr_hook
139 USE parkind1
,ONLY : jprb
159 TYPE(surfex_t),
INTENT(INOUT) :: ysc
161 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
162 CHARACTER(LEN=3),
INTENT(IN) :: hinit
163 LOGICAL,
INTENT(IN) :: oland_use
164 INTEGER,
INTENT(IN) :: ki
165 INTEGER,
INTENT(IN) :: ksv
166 INTEGER,
INTENT(IN) :: ksw
167 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN) :: hsv
168 REAL,
DIMENSION(KI),
INTENT(IN) :: pco2
169 REAL,
DIMENSION(KI),
INTENT(IN) :: prhoa
170 REAL,
DIMENSION(KI),
INTENT(IN) :: pzenith
171 REAL,
DIMENSION(KI),
INTENT(IN) :: pazim
172 REAL,
DIMENSION(KSW),
INTENT(IN) :: psw_bands
173 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: pdir_alb
174 REAL,
DIMENSION(KI,KSW),
INTENT(OUT) :: psca_alb
175 REAL,
DIMENSION(KI),
INTENT(OUT) :: pemis
176 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsrad
177 REAL,
DIMENSION(KI),
INTENT(OUT) :: ptsurf
179 INTEGER,
INTENT(IN) :: kyear
180 INTEGER,
INTENT(IN) :: kmonth
181 INTEGER,
INTENT(IN) :: kday
182 REAL,
INTENT(IN) :: ptime
185 CHARACTER(LEN=28),
INTENT(IN) :: hatmfile
186 CHARACTER(LEN=6),
INTENT(IN) :: hatmfiletype
187 CHARACTER(LEN=2),
INTENT(IN) :: htest
192 CHARACTER(LEN=3) :: yread
199 INTEGER :: iversion, ibugfix
201 INTEGER,
DIMENSION(:),
ALLOCATABLE :: isize_omp
205 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zfrac_tile
206 REAL,
DIMENSION(KI,KSW,NTILESFC) :: zdir_alb_tile
207 REAL,
DIMENSION(KI,KSW,NTILESFC) :: zsca_alb_tile
208 REAL,
DIMENSION(KI,NTILESFC) :: zemis_tile
209 REAL,
DIMENSION(KI,NTILESFC) :: ztsrad_tile
210 REAL,
DIMENSION(KI,NTILESFC) :: ztsurf_tile
211 REAL,
DIMENSION(KI) :: zzenith
212 REAL,
DIMENSION(KI) :: zazim
213 REAL,
DIMENSION(KI) :: ztsun
215 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_zenith
216 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_azim
217 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_co2
218 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_rhoa
219 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zp_dir_alb
220 REAL,
DIMENSION(:,:),
ALLOCATABLE :: zp_sca_alb
221 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_emis
222 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_tsrad
223 REAL,
DIMENSION(:),
ALLOCATABLE :: zp_tsurf
227 REAL(KIND=JPRB) :: zhook_handle
230 IF (lhook) CALL dr_hook(
'INIT_SURF_ATM_N',0,zhook_handle)
235 IF (htest/=
'OK')
THEN
236 CALL
abor1_sfx(
'INIT_SURF_ATMN: FATAL ERROR DURING ARGUMENT TRANSFER')
254 CALL
default_sso(ysc%USS%CROUGH,ysc%USS%XFRACZ0,ysc%USS%XCOEFBE)
257 ysc%DGU%LRAD_BUDGET, &
258 ysc%DGU%LCOEF,ysc%DGU%LSURF_VARS,ysc%DGU%LSURF_BUDGETC, &
259 ysc%DGU%LRESET_BUDGETC,ysc%DGU%LSELECT, ysc%DGU%LPROVAR_TO_DIAG, &
260 ysc%DGU%LDIAG_GRID, ysc%DGU%LFRAC, ysc%DGU%XDIAG_TSTEP )
277 IF(xco2uncpl/=xundef)
THEN
278 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
279 WRITE(iluout,*)
'!!! !!!'
280 WRITE(iluout,*)
'!!! WARNING WARNING !!!'
281 WRITE(iluout,*)
'!!! !!!'
282 WRITE(iluout,*)
'!!! Decoupling between CO2 for photosynthesis !!!'
283 WRITE(iluout,*)
'!!! and atmospheric CO2 activated !!!'
284 WRITE(iluout,*)
'!!! In NAM_SURF_ATM XCO2UNCPL =',xco2uncpl,
' !!!'
285 WRITE(iluout,*)
'!!! !!!'
286 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
293 ysc%U%TTIME%TDATE%YEAR = nundef
294 ysc%U%TTIME%TDATE%MONTH= nundef
295 ysc%U%TTIME%TDATE%DAY = nundef
296 ysc%U%TTIME%TIME = xundef
300 CALL
prep_ctrl_surf_atm(ysc%DGU%N2M,ysc%DGU%LSURF_BUDGET,ysc%DGU%L2M_MIN_ZS,ysc%DGU%LRAD_BUDGET,&
301 ysc%DGU%LCOEF,ysc%DGU%LSURF_VARS, &
302 ysc%DGU%LSURF_BUDGETC,ysc%DGU%LRESET_BUDGETC,lnowrite_texfile,ysc%DGU%LSELECT,iluout,&
303 ysc%DGU%LPROVAR_TO_DIAG)
307 hprogram,hinit,iluout,hatmfile,hatmfiletype,kyear,kmonth,kday,ptime,ysc%U%TTIME)
311 hprogram,
'FULL ',
'SURF ',
'READ ')
313 hprogram,
'DTCUR',ysc%U%TTIME,iresp)
328 hprogram,
'FULL ',
'SURF ',
'READ ')
331 hprogram,
'VERSION',iversion,iresp)
333 hprogram,
'BUG',ibugfix,iresp)
335 IF (iversion>7 .OR. iversion==7 .AND.ibugfix>=2)
THEN
337 hprogram,
'STORAGETYPE',yread,iresp)
342 hprogram,
'SEA ',ysc%U%CSEA ,iresp)
344 hprogram,
'WATER ',ysc%U%CWATER ,iresp)
346 hprogram,
'NATURE',ysc%U%CNATURE,iresp)
348 hprogram,
'TOWN ',ysc%U%CTOWN ,iresp)
351 hprogram,
'DIM_FULL ',ysc%U%NDIM_FULL, iresp)
352 IF (hinit==
'PRE')
THEN
353 nindx2sfx = ysc%U%NDIM_FULL
354 nsize = ysc%U%NDIM_FULL
357 IF (
ALLOCATED(nmask_full))
DEALLOCATE(nmask_full)
360 hprogram,
'FULL ',
'SURF ',
'READ ')
361 ALLOCATE(nwork(ysc%U%NDIM_FULL))
362 ALLOCATE(xwork(ysc%U%NDIM_FULL))
363 ALLOCATE(nwork2(ysc%U%NDIM_FULL,10))
364 ALLOCATE(xwork2(ysc%U%NDIM_FULL,10))
365 ALLOCATE(xwork3(ysc%U%NDIM_FULL,10,10))
366 IF (nrank==npio)
THEN
367 ALLOCATE(nwork_full(ysc%U%NDIM_FULL))
368 ALLOCATE(xwork_full(ysc%U%NDIM_FULL))
369 ALLOCATE(nwork2_full(ysc%U%NDIM_FULL,10))
370 ALLOCATE(xwork2_full(ysc%U%NDIM_FULL,10))
372 ALLOCATE(nwork_full(0))
373 ALLOCATE(xwork_full(0))
374 ALLOCATE(nwork2_full(0,0))
375 ALLOCATE(xwork2_full(0,0))
379 hprogram,
'DIM_SEA ',ysc%U%NDIM_SEA, iresp)
381 hprogram,
'DIM_NATURE',ysc%U%NDIM_NATURE,iresp)
383 hprogram,
'DIM_WATER ',ysc%U%NDIM_WATER, iresp)
385 hprogram,
'DIM_TOWN ',ysc%U%NDIM_TOWN, iresp)
387 hprogram,ysc%U%LECOCLIMAP)
389 hprogram,ysc%U%LWATER_TO_NATURE,ysc%U%LTOWN_TO_ROCK)
391 hprogram,ysc%U%LGARDEN)
396 IF (.NOT. lclim_lai .AND. ysc%U%TTIME%TDATE%YEAR >= neco2_start_year &
397 .AND. ysc%U%TTIME%TDATE%YEAR <= neco2_end_year ) ysc%DTCO%NYEAR=ysc%U%TTIME%TDATE%YEAR
409 hprogram,ysc%U%NDIM_FULL,ysc%U%NSIZE_FULL)
418 ALLOCATE(ysc%UG%XLAT (ysc%U%NSIZE_FULL))
419 ALLOCATE(ysc%UG%XLON (ysc%U%NSIZE_FULL))
420 ALLOCATE(ysc%UG%XMESH_SIZE (ysc%U%NSIZE_FULL))
421 ALLOCATE(ysc%USS%XZ0EFFJPDIR(ysc%U%NSIZE_FULL))
423 hprogram,ysc%UG%CGRID,ysc%UG%XGRID_PAR,ysc%UG%XLAT,ysc%UG%XLON,ysc%UG%XMESH_SIZE,iresp,ysc%USS%XZ0EFFJPDIR)
424 ysc%UG%NGRID_PAR=
SIZE(ysc%UG%XGRID_PAR)
428 lzenith = all(pzenith /= xundef)
429 IF (.NOT. lzenith)
THEN
433 ALLOCATE(isize_omp(0:nblocktot-1))
435 nblocktot,ki,0,isize_omp)
436 CALL
sunpos(isize_omp,kyear, kmonth, kday, ptime, ysc%UG%XLON, ysc%UG%XLAT, ztsun, zzenith, zazim)
437 DEALLOCATE(isize_omp)
441 IF (hprogram/=
'AROME '.AND.nrank==npio)
THEN
443 IF (.NOT.
ASSOCIATED(ysc%UG%XGRID_FULL_PAR))
THEN
445 hprogram,ysc%UG%CGRID,ysc%UG%NGRID_PAR,ysc%U%NDIM_FULL,.false.,hdir=
'A')
446 ALLOCATE(ysc%UG%XGRID_FULL_PAR(ysc%UG%NGRID_PAR))
448 hprogram,ysc%UG%CGRID,ysc%UG%NGRID_PAR,ysc%U%NDIM_FULL,.true.,&
449 ysc%UG%XGRID_FULL_PAR,iresp,hdir=
'A')
457 ysc%CHU%CCH_NAMES, ysc%CHU%CAER_NAMES )
462 hprogram,
'CH_EMIS',ysc%CHU%LCH_EMIS,iresp)
464 IF (ysc%CHU%LCH_EMIS)
THEN
466 IF ( iversion<7 .OR. iversion==7 .AND. ibugfix<3 )
THEN
467 ysc%CHU%CCH_EMIS=
'AGGR'
470 hprogram,
'CH_EMIS_OPT',ysc%CHU%CCH_EMIS,iresp)
473 IF (ysc%SV%NBEQ > 0)
THEN
475 CALL
open_namelist(hprogram,ich,hfile=ysc%CHU%CCHEM_SURF_FILE)
477 IF (ysc%CHU%LCH_SURF_EMIS)
THEN
478 IF (ysc%CHU%CCH_EMIS==
'AGGR')
THEN
480 ysc%CHE, ysc%CHU, ysc%SV, &
481 hprogram,ysc%U%NSIZE_FULL,ich,prhoa)
485 hprogram,ysc%U%NSIZE_FULL,hinit,ich,prhoa)
496 IF (ysc%SV%NBEQ .GT. 0)
THEN
497 CALL
open_namelist(hprogram,ich,hfile=ysc%CHU%CCHEM_SURF_FILE)
499 IF (hinit==
'ALL') CALL
ch_init_depconst(ich,iluout,ysc%SV%CSV(ysc%SV%NSV_CHSBEG:ysc%SV%NSV_CHSEND))
513 ALLOCATE(ysc%USS%XZ0EFFIP(ysc%U%NSIZE_FULL))
514 ALLOCATE(ysc%USS%XZ0EFFIM(ysc%U%NSIZE_FULL))
515 ALLOCATE(ysc%USS%XZ0EFFJP(ysc%U%NSIZE_FULL))
516 ALLOCATE(ysc%USS%XZ0EFFJM(ysc%U%NSIZE_FULL))
517 ALLOCATE(ysc%USS%XZ0REL (ysc%U%NSIZE_FULL))
519 CALL
subscale_z0eff(ysc%USS%XAOSIP,ysc%USS%XAOSIM,ysc%USS%XAOSJP,ysc%USS%XAOSJM, &
520 ysc%USS%XHO2IP,ysc%USS%XHO2IM,ysc%USS%XHO2JP,ysc%USS%XHO2JM,0., &
521 ysc%USS%XZ0EFFIP,ysc%USS%XZ0EFFIM,ysc%USS%XZ0EFFJP,ysc%USS%XZ0EFFJM, &
543 hprogram,
'FULL ',
'SURF ',
'READ ')
573 ysc%U%NSIZE_NATURE = count(ysc%U%XNATURE(:) > 0.0)
574 ysc%U%NSIZE_TOWN = count(ysc%U%XTOWN(:) > 0.0)
575 ysc%U%NSIZE_WATER = count(ysc%U%XWATER(:) > 0.0)
576 ysc%U%NSIZE_SEA = count(ysc%U%XSEA(:) > 0.0)
578 ALLOCATE(ysc%U%NR_NATURE (ysc%U%NSIZE_NATURE))
579 ALLOCATE(ysc%U%NR_TOWN (ysc%U%NSIZE_TOWN ))
580 ALLOCATE(ysc%U%NR_WATER (ysc%U%NSIZE_WATER ))
581 ALLOCATE(ysc%U%NR_SEA (ysc%U%NSIZE_SEA ))
583 IF (ysc%U%NSIZE_SEA >0)CALL
get_1d_mask( ysc%U%NSIZE_SEA, ysc%U%NSIZE_FULL, ysc%U%XSEA , ysc%U%NR_SEA )
584 IF (ysc%U%NSIZE_WATER >0)CALL
get_1d_mask( ysc%U%NSIZE_WATER, ysc%U%NSIZE_FULL, ysc%U%XWATER , ysc%U%NR_WATER )
585 IF (ysc%U%NSIZE_TOWN >0)CALL
get_1d_mask( ysc%U%NSIZE_TOWN, ysc%U%NSIZE_FULL, ysc%U%XTOWN , ysc%U%NR_TOWN )
586 IF (ysc%U%NSIZE_NATURE>0)CALL
get_1d_mask( ysc%U%NSIZE_NATURE, ysc%U%NSIZE_FULL, ysc%U%XNATURE, ysc%U%NR_NATURE)
592 ALLOCATE(zfrac_tile(ysc%U%NSIZE_FULL,ntilesfc))
599 zdir_alb_tile = xundef
600 zsca_alb_tile = xundef
613 zfrac_tile(:,jtile) = ysc%U%XSEA(:)
619 IF (ysc%U%NDIM_SEA>0) &
620 CALL
init_sea_n(ysc%DTCO, ysc%DGU, ysc%UG, ysc%U, &
622 hprogram,hinit,ysc%U%NSIZE_SEA,ksv,ksw, &
623 hsv,zp_co2,zp_rhoa, &
624 zp_zenith,zp_azim,psw_bands,zp_dir_alb,zp_sca_alb, &
625 zp_emis,zp_tsrad,zp_tsurf, &
626 kyear,kmonth,kday,ptime, hatmfile,hatmfiletype, &
633 xtime_init_sea = xtime_init_sea + (mpi_wtime() - xtime0)*100./max(1,ysc%U%NSIZE_SEA)
642 zfrac_tile(:,jtile) = ysc%U%XWATER(:)
648 IF (ysc%U%NDIM_WATER>0) &
650 ysc%U, ysc%WM, ysc%FM, ysc%DGL, &
651 hprogram,hinit,ysc%U%NSIZE_WATER,ksv,ksw, &
652 hsv,zp_co2,zp_rhoa, &
653 zp_zenith,zp_azim,psw_bands,zp_dir_alb,zp_sca_alb, &
654 zp_emis,zp_tsrad,zp_tsurf, &
655 kyear,kmonth,kday,ptime, hatmfile,hatmfiletype, &
661 xtime_init_water = xtime_init_water + (mpi_wtime() - xtime0)*100./max(1,ysc%U%NSIZE_WATER)
670 zfrac_tile(:,jtile) = ysc%U%XNATURE(:)
676 IF (ysc%U%NDIM_NATURE>0) &
677 CALL
init_nature_n(ysc%DTCO, ysc%DGU, ysc%UG, ysc%U, ysc%IM, &
678 ysc%DTZ, ysc%DGL, ysc%DST, ysc%SLT, ysc%SV, &
679 hprogram,hinit,oland_use,ysc%U%NSIZE_NATURE,ksv,ksw, &
680 hsv,zp_co2,zp_rhoa, &
681 zp_zenith,zp_azim,psw_bands,zp_dir_alb,zp_sca_alb, &
682 zp_emis,zp_tsrad,zp_tsurf, &
683 kyear,kmonth,kday,ptime, hatmfile,hatmfiletype, &
690 xtime_init_nature = xtime_init_nature + (mpi_wtime() - xtime0)*100./max(1,ysc%U%NSIZE_NATURE)
698 zfrac_tile(:,jtile) = ysc%U%XTOWN(:)
704 IF (ysc%U%NDIM_TOWN>0) &
705 CALL
init_town_n(ysc%DTCO, ysc%DGU, ysc%UG, ysc%U, &
706 ysc%IM%CHI, ysc%IM%DTI, ysc%IM%I, &
707 ysc%TM, ysc%GDM, ysc%GRM, ysc%DGL, ysc%DST, ysc%SLT, &
708 hprogram,hinit,ysc%U%NSIZE_TOWN,ksv,ksw, &
709 hsv,zp_co2,zp_rhoa, &
710 zp_zenith,zp_azim,psw_bands,zp_dir_alb,zp_sca_alb, &
711 zp_emis,zp_tsrad,zp_tsurf, &
712 kyear,kmonth,kday,ptime, hatmfile,hatmfiletype, &
719 xtime_init_town = xtime_init_town + (mpi_wtime() - xtime0)*100./max(1,ysc%U%NSIZE_TOWN)
726 IF (
SIZE(pdir_alb)>0) &
728 zdir_alb_tile, zsca_alb_tile, zemis_tile, ztsrad_tile, &
729 pdir_alb, psca_alb, pemis, ptsrad )
731 IF (
SIZE(ptsurf)>0) &
734 DEALLOCATE(zfrac_tile)
738 IF (lhook) CALL dr_hook(
'INIT_SURF_ATM_N',1,zhook_handle)
743 INTEGER,
INTENT(IN) :: ksize
744 INTEGER,
INTENT(IN),
DIMENSION(:) :: kmask
746 REAL(KIND=JPRB) :: zhook_handle
750 IF (lhook) CALL dr_hook(
'PACK_SURF_INIT_ARG',0,zhook_handle)
751 ALLOCATE(zp_co2(ksize))
752 ALLOCATE(zp_rhoa(ksize))
753 ALLOCATE(zp_zenith(ksize))
754 ALLOCATE(zp_azim(ksize))
759 ALLOCATE(zp_dir_alb(ksize,iswb))
760 ALLOCATE(zp_sca_alb(ksize,iswb))
761 ALLOCATE(zp_emis(ksize))
762 ALLOCATE(zp_tsrad(ksize))
763 ALLOCATE(zp_tsurf(ksize))
779 zp_co2(jj) = pco2(kmask(jj))
781 zp_rhoa(jj) = prhoa(kmask(jj))
782 IF (
SIZE(pzenith)>0)
THEN
784 zp_zenith(jj) = pzenith(kmask(jj))
786 zp_zenith(jj) = zzenith(kmask(jj))
789 IF (
SIZE(pazim )>0)
THEN
791 zp_azim(jj) = pazim(kmask(jj))
793 zp_azim(jj) = zazim(kmask(jj))
797 IF (lhook) CALL dr_hook(
'PACK_SURF_INIT_ARG',1,zhook_handle)
803 INTEGER,
INTENT(IN) :: ktile, ksize
805 INTEGER,
INTENT(IN),
DIMENSION(:) :: kmask
808 REAL(KIND=JPRB) :: zhook_handle
811 IF (lhook) CALL dr_hook(
'UNPACK_SURF_INIT_ARG',0,zhook_handle)
813 IF (
SIZE(ztsrad_tile)>0) &
814 ztsrad_tile(kmask(jj),ktile) = zp_tsrad(jj)
815 IF (
SIZE(zdir_alb_tile)>0) &
816 zdir_alb_tile(kmask(jj),:,ktile)= zp_dir_alb(jj,:)
817 IF (
SIZE(zsca_alb_tile)>0) &
818 zsca_alb_tile(kmask(jj),:,ktile)= zp_sca_alb(jj,:)
819 IF (
SIZE(zemis_tile)>0) &
820 zemis_tile(kmask(jj),ktile) = zp_emis(jj)
821 IF (
SIZE(ztsurf_tile)>0) &
822 ztsurf_tile(kmask(jj),ktile) = zp_tsurf(jj)
827 DEALLOCATE(zp_zenith )
829 DEALLOCATE(zp_dir_alb)
830 DEALLOCATE(zp_sca_alb)
832 DEALLOCATE(zp_tsrad )
833 DEALLOCATE(zp_tsurf )
834 IF (lhook) CALL dr_hook(
'UNPACK_SURF_INIT_ARG',1,zhook_handle)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine read_grid(HPROGRAM, HGRID, PGRID_PAR, PLAT, PLON, PMESH_SIZE, KRESP, PDIR)
subroutine default_diag_surf_atm(K2M, OT2MMW, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, OCOEF, OSURF_VARS, OSURF_BUDGETC, ORESET_BUDGETC, OSELECT, OPROVAR_TO_DIAG, ODIAG_GRID, OFRAC, PDIAG_TSTEP, CSELECT)
subroutine read_gridtype(HPROGRAM, HGRID, KGRID_PAR, KLU, OREAD, PGRID_PAR, KRESP, HDIR)
subroutine average_tsurf(PFRAC_TILE, PTSURF_TILE, PTSURF)
subroutine read_cover_garden(HPROGRAM, OGARDEN, HDIR)
subroutine get_sizes_parallel(DTCO, DGU, UG, U, KPROC, KSIZE, KPROCMIN, KSIZE_TASK, OSHADOWS)
subroutine read_surf_atm_date(HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMFILETYPE, KYEAR, KMONTH, KDAY, PTIME, TPTIME)
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine read_sso_n(U, USS, HPROGRAM)
subroutine read_sso_canopy_n(DTCO, SSCP, U, HPROGRAM, HINIT)
subroutine read_cover_n(DTCO, U, HPROGRAM)
subroutine ch_init_depconst(KCH, KLUOUT, HSV)
subroutine read_eco2_irrig(DTCO, HPROGRAM)
subroutine abor1_sfx(YTEXT)
subroutine read_surf_atm_conf_n(CHU, DGU, USS, HPROGRAM)
subroutine alloc_diag_surf_atm_n(DGU, U, HPROGRAM, KSW)
subroutine prep_ctrl_surf_atm(K2M, OSURF_BUDGET, O2M_MIN_ZS, ORAD_BUDGET, OCOEF, OSURF_VARS, OSURF_BUDGETC, ORESET_BUDGETC, ONOWRITE_TEXFILE, OSELECT, KLUOUT, OPROVAR_TO_DIAG)
subroutine default_ch_surf_atm(HCHEM_SURF_FILE, OSURF_EMIS)
subroutine init_surf_atm_n(YSC, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine ch_init_snap_n(CHN, SV, HPROGRAM, KLU, HINIT, KCH, PRHOA)
subroutine default_sso(HROUGH, PFRACZ0, PCOEFBE)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine init_inland_water_n(DTCO, DGU, UG, U, WM, FM, DGL, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine average_rad(PFRAC_TILE, PDIR_ALB_TILE, PSCA_ALB_TILE, PEMIS_TILE, PTRAD_TILE, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD)
subroutine init_cpl_gcm_n(U, HPROGRAM, HINIT)
subroutine end_io_surf_n(HPROGRAM)
subroutine init_town_n(DTCO, DGU, UG, U, CHI, DTI, I, TM, GDM, GRM, DGL, DST, SLT, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine ch_init_emission_n(CHE, CHU, SV, HPROGRAM, KLU, KCH, PRHOA)
subroutine read_arrange_cover(HPROGRAM, OWATER_TO_NATURE, OTOWN_TO_ROCK, HDIR)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine get_1d_mask(KSIZE, KFRAC, PFRAC, KMASK)
subroutine sunpos(KSIZE_OMP, KYEAR, KMONTH, KDAY, PTIME, PLON, PLAT, PTSUN, PZENITH, PAZIMSOL)
subroutine read_default_surf_atm_n(CHU, DGU, USS, HPROGRAM)
subroutine read_dummy_n(DUU, U, HPROGRAM)
subroutine get_size_full_n(U, HPROGRAM, KDIM_FULL, KSIZE_FULL)
subroutine pack_surf_init_arg(KSIZE, KMASK)
subroutine unpack_surf_init_arg(KTILE, KSIZE, KMASK)
subroutine read_lclim_lai(HPROGRAM, OCLIM_LAI)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine read_nam_prep_surf_n(HPROGRAM)
subroutine ini_data_cover(DTCO, U)
subroutine init_nature_n(DTCO, DGU, UG, U, IM, DTZ, DGL, DST, SLT, SV, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine init_sea_n(DTCO, DGU, UG, U, SM, DGL, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine init_chemical_n(KLUOUT, KSV, HSV, YSV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES)
subroutine read_lecoclimap(HPROGRAM, OECOCLIMAP)