SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
write_surf_atmn.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_surf_atm_n (YSC, &
7  hprogram,hwrite,oland_use)
8 ! ####################################
9 !
10 !!**** *WRITE_SURF_ATM_n* - routine to write surface variables
11 !! in their respective files or in file
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 !! Modified 06/2007, P.LeMoigne: do not write pgd fields in
38 !! historical files
39 !! Modified 03/2009, B.Decharme: keys for arrange cover
40 !! Modified 04/2009, B.Decharme: write precipitation forcing into the restart file for ARPEGE/ALADIN run
41 ! Modified 06/2009, B.Decharme: flag to desactivate writing of horizontal grid
42 ! Modified 08/2009, B.Decharme: BUDGETC for all tiles
43 ! Modified 07/2011, B.Decharme: delete write pgd fields
44 ! Modified 07/2011, B.Decharme: land_use key for writing semi-prognostic variables
45 ! Modified 05/2012, B.Decharme: supress LPROVAR_TO_DIAG to write prognostic fields if user want
46 ! Modified 05/2013, B.Decharme: WRITESURF_PRECIP becomes WRITESURF_CPL_GCM
47 !-------------------------------------------------------------------------------
48 !
49 !* 0. DECLARATIONS
50 ! ------------
51 !
52 !
53 USE modd_surfex_n, ONLY : surfex_t
54 !
55 USE modd_surf_conf, ONLY : cprogname
56 USE modd_surf_par, ONLY : nversion, nbugfix
57 USE modd_write_surf_atm, ONLY : lnowrite_canopy
58 !
59 USE modi_init_io_surf_n
61 USE modi_write_sea_n
62 USE modi_write_inland_water_n
63 USE modi_write_nature_n
64 USE modi_write_town_n
65 USE modi_end_io_surf_n
66 USE modi_write_grid
67 !
68 USE modi_writesurf_atm_conf_n
69 USE modi_writesurf_sso_canopy_n
70 USE modi_writesurf_cpl_gcm_n
71 !
72 USE yomhook ,ONLY : lhook, dr_hook
73 USE parkind1 ,ONLY : jprb
74 !
75 IMPLICIT NONE
76 !
77 !* 0.1 Declarations of arguments
78 ! -------------------------
79 !
80 !
81 TYPE(surfex_t), INTENT(INOUT) :: ysc
82 !
83  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
84  CHARACTER(LEN=3), INTENT(IN) :: hwrite ! 'PREP' : does not write SBL XUNDEF fields
85 ! ! 'ALL' : all fields are written
86 LOGICAL, INTENT(IN) :: oland_use !
87 !
88 !* 0.2 Declarations of local variables
89 ! -------------------------------
90 !
91  CHARACTER(LEN=100) :: ycomment
92 INTEGER :: iresp
93 LOGICAL :: lsave_select
94 REAL(KIND=JPRB) :: zhook_handle
95 !-------------------------------------------------------------------------------
96 !
97 IF (lhook) CALL dr_hook('WRITE_SURF_ATM_N',0,zhook_handle)
98  cprogname = hprogram
99 !
100 !* 1. Configuration and cover fields:
101 ! ------------------------------
102 !
103 !
104 ! Initialisation for IO
105 !
106  CALL init_io_surf_n(ysc%DTCO, ysc%DGU, ysc%U, &
107  hprogram,'FULL ','SURF ','WRITE')
108 !
109 lsave_select=ysc%DGU%LSELECT
110 ysc%DGU%LSELECT =.false.
111 !
112 ycomment='(-)'
113  CALL write_surf(ysc%DGU, ysc%U, &
114  hprogram,'VERSION',nversion,iresp,ycomment)
115  CALL write_surf(ysc%DGU, ysc%U, &
116  hprogram,'BUG ',nbugfix ,iresp,ycomment)
117  CALL write_surf(ysc%DGU, ysc%U, &
118  hprogram,'STORAGETYPE',hwrite,iresp,ycomment)
119  CALL write_surf(ysc%DGU, ysc%U, &
120  hprogram,'DIM_FULL ',ysc%U%NDIM_FULL,iresp,hcomment=ycomment)
121 !
122 ycomment='s'
123  CALL write_surf(ysc%DGU, ysc%U, &
124  hprogram,'DTCUR',ysc%U%TTIME,iresp,ycomment)
125 !
126 ysc%DGU%LSELECT=lsave_select
127 !
128  CALL write_grid(ysc%DGU, ysc%U, &
129  hprogram,ysc%UG%CGRID,ysc%UG%XGRID_PAR,ysc%UG%XLAT,ysc%UG%XLON,ysc%UG%XMESH_SIZE,iresp)
130 !
131  CALL writesurf_atm_conf_n(ysc%CHU, ysc%DGU, ysc%USS, &
132  hprogram)
133 !
134 IF (hwrite/='PRE') CALL writesurf_sso_canopy_n(ysc%DGU, ysc%U, &
135  ysc%SSCP, &
136  hprogram,(ysc%USS%CROUGH=='BE04' .AND. .NOT. lnowrite_canopy))
137 !
138  CALL writesurf_cpl_gcm_n(ysc%DGU, &
139  ysc%U, &
140  hprogram)
141 !
142 ycomment='flag for accumulated variables'
143  CALL write_surf(ysc%DGU, ysc%U, &
144  hprogram,'BUDC',ysc%DGU%LSURF_BUDGETC,iresp,hcomment=ycomment)
145 !
146 IF (ysc%DGU%LSURF_BUDGETC) THEN
147  ycomment='time of beginning of accumulation'
148  CALL write_surf(ysc%DGU, ysc%U, &
149  hprogram,'TBUDC',ysc%DGU%TIME_BUDGETC,iresp,hcomment=ycomment)
150 END IF
151 !
152 ! End of IO
153 !
154  CALL end_io_surf_n(hprogram)
155 !
156 !* 3. Sea
157 ! ---
158 !
159 IF (ysc%U%NDIM_SEA>0) CALL write_sea_n(ysc%DTCO, ysc%DGU, ysc%U, ysc%SM, &
160  hprogram,hwrite)
161 !
162 !
163 !* 4. Inland water
164 ! ------------
165 !
166 IF (ysc%U%NDIM_WATER>0) CALL write_inland_water_n(ysc%DTCO, ysc%DGU, ysc%U, ysc%WM, ysc%FM, &
167  hprogram,hwrite)
168 !
169 !
170 !* 5. Vegetation scheme
171 ! -----------------
172 !
173 IF (ysc%U%NDIM_NATURE>0) CALL write_nature_n(ysc%DTCO, ysc%DGU, ysc%U, ysc%IM, ysc%DST, &
174  hprogram,hwrite,oland_use)
175 !
176 !
177 !* 6. Urban scheme
178 ! ------------
179 !
180 IF (ysc%U%NDIM_TOWN>0) CALL write_town_n(ysc%DTCO, ysc%DGU, ysc%U, ysc%TM, ysc%GDM, ysc%GRM, &
181  hprogram,hwrite)
182 !
183 IF (lhook) CALL dr_hook('WRITE_SURF_ATM_N',1,zhook_handle)
184 !
185 !-------------------------------------------------------------------------------
186 !
187 END SUBROUTINE write_surf_atm_n
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine write_inland_water_n(DTCO, DGU, U, WM, FM, HPROGRAM, HWRITE)
subroutine write_grid(DGU, U, HPROGRAM, HGRID, PGRID_PAR, PLAT, PLON, PMESH_SIZE, KRESP, PDIR, HDIR)
Definition: write_grid.F90:6
subroutine writesurf_sso_canopy_n(DGU, U, SSCP, HPROGRAM, OWRITE)
subroutine writesurf_cpl_gcm_n(DGU, U, HPROGRAM)
subroutine write_nature_n(DTCO, DGU, U, IM, DST, HPROGRAM, HWRITE, OLAND_USE)
subroutine write_town_n(DTCO, DGU, U, TM, GDM, GRM, HPROGRAM, HWRITE)
Definition: write_townn.F90:6
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:6
subroutine write_surf_atm_n(YSC, HPROGRAM, HWRITE, OLAND_USE)
subroutine write_sea_n(DTCO, DGU, U, SM, HPROGRAM, HWRITE)
Definition: write_sean.F90:6
subroutine writesurf_atm_conf_n(CHU, DGU, USS, HPROGRAM)