SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_output_oln.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_output_ol_n (YSC)
7 ! ######################
8 !
9 !!**** *INIT_OUTPUT_OL* Keep in memory the netcdf ID of the output files
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!
15 !!** IMPLICIT ARGUMENTS
16 !! ------------------
17 !! None
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !! AUTHOR
23 !! ------
24 !! F. Habets *Meteo France*
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! modified 05/04 by P. LeMoigne *Meteo France*
29 !! modified 06/10 by S. Faroux *Meteo France*
30 !!=================================================================
31 !
32 !* 0. DECLARATIONS
33 ! ------------
34 !
35 USE modd_surfex_n, ONLY : surfex_t
36 !
37 USE modd_ol_fileid, ONLY : xvar_to_fileout, &
38  xid, xout, &
39  xvar_surf, xid_surf, &
40  xvar_nature, xid_nature, &
41  xvar_sea, xid_sea, &
42  xvar_water, xid_water, &
43  xvar_town, xid_town
45 !
46 USE modd_surfex_mpi, ONLY : nrank, npio
47 !
48 USE modi_init_outfn_flake_n
49 USE modi_init_outfn_isba_n
50 USE modi_init_outfn_sea_n
51 USE modi_init_outfn_surf_atm_n
52 USE modi_init_outfn_teb_n
53 USE modi_init_outfn_water_n
54 !
55 USE modd_surfex_mpi, ONLY : wlog_mpi
56 !
57 USE yomhook ,ONLY : lhook, dr_hook
58 USE parkind1 ,ONLY : jprb
59 !
60 IMPLICIT NONE
61 !
62 !
63 TYPE(surfex_t), INTENT(INOUT) :: ysc
64 !
65 !
66 INTEGER :: iret
67 INTEGER :: iluout
68 REAL(KIND=JPRB) :: zhook_handle
69 !------------------------------------------------------------------------------
70 IF (lhook) CALL dr_hook('INIT_OUTPUT_OL_N',0,zhook_handle)
71 !
72 iluout = 0
73 !
74 IF (nrank==npio) THEN
75  !
76  IF (.NOT. ldefined_surf_atm) THEN
77  CALL init_outfn_surf_atm_n(ysc%CHE, ysc%CHN, ysc%CHU, ysc%DGU, ysc%UG, ysc%U, ysc%SV, &
78  "NC ",iluout)
79  CALL allocate_fill_var(xvar_surf, xid_surf)
80  ldefined_surf_atm=.true.
81  ENDIF
82  !
83  IF (.NOT. ldefined_nature .AND. ysc%U%NDIM_NATURE>0) THEN
84  IF (ysc%U%CNATURE=='ISBA '.OR.ysc%U%CNATURE=='TSZ0 ') THEN
85  CALL init_outfn_isba_n(ysc%IM%CHI, ysc%IM%DGEI, ysc%IM%DGI, ysc%IM%DGMI, &
86  ysc%DGU, ysc%IM%GB, ysc%IM%ICP, ysc%IM%I, ysc%UG, ysc%U, &
87  "NC ",iluout)
88  CALL allocate_fill_var(xvar_nature, xid_nature)
89  ENDIF
90  ldefined_nature=.true.
91  ENDIF
92  !
93  IF (.NOT. ldefined_sea .AND. ysc%U%NDIM_SEA>0) THEN
94  IF (ysc%U%CSEA=='SEAFLX') THEN
95  CALL init_outfn_sea_n(ysc%SM%CHS, ysc%SM%DGO, ysc%SM%DGS, ysc%SM%DGSI, &
96  ysc%DGU, ysc%SM%O, ysc%SM%S, ysc%SM%SSB, ysc%UG, ysc%U, &
97  "NC ",iluout)
98  CALL allocate_fill_var(xvar_sea, xid_sea)
99  ENDIF
100  ldefined_sea=.true.
101  ENDIF
102  !
103  IF (.NOT. ldefined_water .AND. ysc%U%NDIM_WATER>0) THEN
104  IF (ysc%U%CWATER=='WATFLX') CALL init_outfn_water_n(ysc%WM%CHW, ysc%DGU, ysc%WM%DGW, &
105  ysc%UG, ysc%U, ysc%WM%W, ysc%WM%WSB, &
106  "NC ",iluout)
107  IF (ysc%U%CWATER=='FLAKE ') CALL init_outfn_flake_n(ysc%WM%CHW, ysc%FM%DGF, ysc%DGU, &
108  ysc%FM%F, ysc%FM%FSB, ysc%UG, ysc%U, &
109  "NC ",iluout)
110  IF (ysc%U%CWATER=='WATFLX' .OR. ysc%U%CWATER=='FLAKE') CALL allocate_fill_var(xvar_water, xid_water)
111  ldefined_water=.true.
112  ENDIF
113  !
114  IF (.NOT. ldefined_town .AND. ysc%U%NDIM_TOWN>0) THEN
115  IF (ysc%U%CTOWN=='TEB ') THEN
116  CALL init_outfn_teb_n(ysc%TM%BOP, ysc%TM%CHT, ysc%TM%DGMTO, ysc%DGU, ysc%TM%DGT, ysc%TM%DGUT, &
117  ysc%UG, ysc%U, ysc%TM%TCP, ysc%GDM%TGD, ysc%GDM%TGDO, ysc%GRM%TGR, &
118  ysc%GRM%TGRO, ysc%TM%T, ysc%TM%TOP, ysc%GDM%TVG, &
119  "NC ",iluout)
120  CALL allocate_fill_var(xvar_town, xid_town)
121  ENDIF
122  ldefined_town=.true.
123  ENDIF
124  !
125 ENDIF
126 !
127 !------------------------------------------------------------------------------
128 IF (lhook) CALL dr_hook('INIT_OUTPUT_OL_N',1,zhook_handle)
129  CONTAINS
130 !------------------------------------------------------------------------------
131 SUBROUTINE allocate_fill_var(HVAR, NVAR)
132 
133  CHARACTER(LEN=20),DIMENSION(:), POINTER :: hvar
134 INTEGER*4, DIMENSION(:), POINTER :: nvar
135 REAL(KIND=JPRB) :: zhook_handle
136 
137 IF (lhook) CALL dr_hook('ALLOCATE_FILL_VAR',0,zhook_handle)
138 ALLOCATE(hvar(xout))
139 ALLOCATE(nvar(xout))
140 hvar(:)=xvar_to_fileout(1:xout)
141 nvar(:)=xid(1:xout)
142 IF (lhook) CALL dr_hook('ALLOCATE_FILL_VAR',1,zhook_handle)
143 
144 END SUBROUTINE allocate_fill_var
145 !------------------------------------------------------------------------------
146 !
147 END SUBROUTINE init_output_ol_n
subroutine init_output_ol_n(YSC)
subroutine init_outfn_sea_n(CHS, DGO, DGS, DGSI, DGU, O, S, SSB, UG, U, HPROGRAM, KLUOUT)
subroutine init_outfn_flake_n(CHW, DGF, DGU, F, FSB, UG, U, HPROGRAM, KLUOUT)
subroutine init_outfn_isba_n(CHI, DGEI, DGI, DGMI, DGU, GB, ICP, I, UG, U, HPROGRAM, KLUOUT)
subroutine allocate_fill_var(HVAR, NVAR)
subroutine init_outfn_water_n(CHW, DGU, DGW, UG, U, W, WSB, HPROGRAM, KLUOUT)
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)
subroutine init_outfn_surf_atm_n(CHE, CHN, CHU, DGU, UG, U, SV, HPROGRAM, KLUOUT)
subroutine init_outfn_teb_n(BOP, CHT, DGMTO, DGU, DGT, DGUT, UG, U, TCP, TGD, TGDO, TGR, TGRO, T, TOP, TVG, HPROGRAM, KLUOUT)