SURFEX v8.1
General documentation of Surfex
init_outfn_watern.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 init_outfn_water_n (WM, UG, U, HSELECT, HPROGRAM, KLUOUT)
7 ! ###############################
8 !
9 !!**** *INIT_OUTFN_WATER_n* - create output files and defines variables
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! P. LeMoigne *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 04-04 P. LeMoigne
35 !! modified 06-13 B. Decharme : Delete LPROVAR_TO_DIAG here
36 !! Add diag (Evap, Subl)
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
43 !
45 USE modd_surf_atm_n, ONLY : surf_atm_t
46 !
48 !
50 !
51 USE modi_get_dim_full_n
52 USE modi_ol_define_dim
53 USE modi_get_date_ol
54 USE modi_create_file
55 USE modi_def_var_netcdf
56 USE modi_ol_write_coord
57 USE modi_ol_write_proj
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 USE modi_get_dim_full_n
63 !
64 USE netcdf
65 !
66 IMPLICIT NONE
67 !
68 TYPE(watflux_model_t), INTENT(IN) :: WM
69 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
70 TYPE(surf_atm_t), INTENT(INOUT) :: U
71 !
72  CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSELECT
73 !
74  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM
75 INTEGER, INTENT(IN) :: KLUOUT
76 !
77 !* 0.2 Declarations of local variables
78 ! -------------------------------
79 !
80  CHARACTER(LEN=100), DIMENSION(:), POINTER :: YNAME_DIM
81  CHARACTER(LEN=100), DIMENSION(1) :: YATT_TITLE, YATT
82  CHARACTER(LEN=40),DIMENSION(1) :: YDATE
83  CHARACTER(LEN=13),DIMENSION(1) :: YUNIT1, YUNIT2
84  CHARACTER(LEN=100) :: YCOMMENT
85  CHARACTER(LEN=50) :: YFILE
86  CHARACTER(LEN=12) :: YRECFM
87  CHARACTER(LEN=2) :: YLVLV
88 !
89 INTEGER, DIMENSION(:), POINTER :: IDIMS, IDDIM
90 INTEGER :: INI
91 INTEGER :: IDIM1
92 INTEGER :: IFILE_ID
93 INTEGER :: JFILE, JRET
94 !
95 REAL,DIMENSION(:), POINTER :: ZX, ZY
96 REAL,DIMENSION(:), POINTER :: ZLAT,ZLON
97 !
98 REAL(KIND=JPRB) :: ZHOOK_HANDLE
99 !
100 !-------------------------------------------------------------------------------
101 
102 ! 1. Compute output lenght dimension
103 !-----------------------------------
104 IF (lhook) CALL dr_hook('INIT_OUTFN_WATER_N',0,zhook_handle)
105  CALL get_dim_full_n(u%NDIM_FULL, ini)
106 !
107  CALL ol_define_dim(ug, u%NSIZE_FULL,hprogram, kluout, ini, idim1, yunit1, yunit2, &
108  zx, zy, idims, iddim, yname_dim,plat=zlat,plon=zlon)
109  CALL get_date_ol(wm%W%TTIME,xtstep_output,ydate(1))
110 !
111 ! 4. Create output file for fluxes values
112 !----------------------------------------------------------
113 !
114 yatt_title(1)='units'
115 !
116 yfile='WATFLUX_DIAGNOSTICS.OUT.nc'
117  CALL create_file(yfile,idims,yname_dim,ifile_id,iddim)
118 jret=nf90_redef(ifile_id)
119 !
120  CALL ol_write_proj(hselect,ifile_id,ug)
121 !
122 DO jfile = 1,SIZE(xnetcdf_filename_out)
123  IF (trim(yfile)==trim(xnetcdf_filename_out(jfile))) THEN
124  xnetcdf_fileid_out(jfile) = ifile_id
125  EXIT
126  ENDIF
127 ENDDO
128 !
129  CALL ol_write_coord(hselect,yfile,ifile_id,iddim,yatt_title,yname_dim,&
130  yunit1,yunit2,idim1,ydate,zx,zy,zlon,zlat)
131 !
132 IF (wm%DWO%LSURF_BUDGETC) THEN
133  !
134  yfile='WATFLUX_DIAG_CUMUL.OUT.nc'
135  CALL create_file(yfile,idims,yname_dim,ifile_id,iddim)
136  jret=nf90_redef(ifile_id)
137  !
138  CALL ol_write_proj(hselect,ifile_id,ug)
139  !
140  DO jfile = 1,SIZE(xnetcdf_filename_out)
141  IF (trim(yfile)==trim(xnetcdf_filename_out(jfile))) THEN
142  xnetcdf_fileid_out(jfile) = ifile_id
143  EXIT
144  ENDIF
145  ENDDO
146  !
147  CALL ol_write_coord(hselect,yfile,ifile_id,iddim,yatt_title,yname_dim,&
148  yunit1,yunit2,idim1,ydate,zx,zy,zlon,zlat)
149  !
150 ENDIF
151 !
152 yfile='WATFLUX_PROGNOSTIC.OUT.nc'
153  CALL create_file(yfile,idims,yname_dim,ifile_id,iddim)
154 jret=nf90_redef(ifile_id)
155 !
156  CALL ol_write_proj(hselect,ifile_id,ug)
157 !
158 DO jfile = 1,SIZE(xnetcdf_filename_out)
159  IF (trim(yfile)==trim(xnetcdf_filename_out(jfile))) THEN
160  xnetcdf_fileid_out(jfile) = ifile_id
161  EXIT
162  ENDIF
163 ENDDO
164 !
165  CALL ol_write_coord(hselect,yfile,ifile_id,iddim,yatt_title,yname_dim,&
166  yunit1,yunit2,idim1,ydate,zx,zy,zlon,zlat)
167 !
168 IF (ASSOCIATED(zx)) DEALLOCATE(zx,zy)
169 DEALLOCATE(zlon,zlat)
170 !
171 IF (lhook) CALL dr_hook('INIT_OUTFN_WATER_N',1,zhook_handle)
172 !
173 END SUBROUTINE init_outfn_water_n
subroutine get_date_ol(TPTIME, PTSTEP, HDATE)
Definition: get_date_ol.F90:7
subroutine get_dim_full_n(KDIM_FULL_IN, KDIM_FULL_OUT)
character(len=200), dimension(25) xnetcdf_filename_out
subroutine init_outfn_water_n(WM, UG, U, HSELECT, HPROGRAM, KLUOUT)
subroutine ol_write_proj(HSELECT, KFILE_ID, UG)
subroutine ol_define_dim(UG, KSIZE_FULL, HPROGRAM, KLUOUT, KNI, KDIM1, HUNIT1, HUNIT2, PX, PY, KDIMS, KDDIM, HNAME_DIM, KNPATCH, KNSNLAYER, PLAT, PLON)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine create_file(HFILE, KDIMS, HNAM_DIM, KFILE_ID, KDIM_ID)
Definition: create_file.F90:7
logical lhook
Definition: yomhook.F90:15
integer, dimension(25) xnetcdf_fileid_out
subroutine ol_write_coord(HSELECT, HFILE, KFILE_ID, KDDIM, HATT_TITLE, HNAME_DIM, HUNIT1, HUNIT2, KDIM1, HDATE, PX, PY, PLON, PLAT)