New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
diawri_c1d.F90 in trunk/NEMO/C1D_SRC – NEMO

source: trunk/NEMO/C1D_SRC/diawri_c1d.F90 @ 1300

Last change on this file since 1300 was 1221, checked in by ctlod, 16 years ago

correct compilation errors when using key_c1d cpp key, see ticket: #274

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 21.6 KB
Line 
1MODULE diawri_c1d
2   !!======================================================================
3   !!                     ***  MODULE  diawri_c1d  ***
4   !! Ocean diagnostics :  write ocean output files
5   !!=====================================================================
6   !! History :   2.0  !  2004-10  (C. Ethe)  1D Configuration
7   !!             3.0  !  2008-04  (G. Madec)  adaptation to SBC
8   !!----------------------------------------------------------------------
9#if defined key_c1d
10   !!----------------------------------------------------------------------
11   !!   'key_c1d'                                          1D Configuration
12   !!---------------------------------------------------------------------- 
13   !!   dia_wri_c1d       : create the standart NetCDF output files
14   !!----------------------------------------------------------------------
15   USE oce             ! ocean dynamics and tracers
16   USE dom_oce         ! ocean space and time domain
17   USE zdf_oce         ! ocean vertical physics
18   USE sbc_oce         ! surface boundary condition: ocean
19   USE sbc_ice         ! surface boundary condition: ice
20   USE sbcmod          ! surface Boundary Codition
21   USE sbcssr          ! surface boundary condition: restauring to SSS and or SST
22   USE zdftke          ! TKE vertical mixing
23   USE zdfkpp          ! KPP vertical mixing
24   USE sol_oce         ! solver variables
25   USE ice_oce         ! ice variables
26   USE phycst          ! physical constants
27   USE zdfmxl          ! mixed layer
28   USE daymod          ! calendar
29   USE dianam          ! build name of file (routine)
30   USE diawri
31   USE zdfddm          ! vertical  physics: double diffusion
32   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
33   USE in_out_manager  ! I/O manager
34   USE ioipsl
35
36   IMPLICIT NONE
37   PRIVATE
38
39   PUBLIC dia_wri_c1d                 ! routines called by step.F90
40
41   INTEGER ::   nid_T, nz_T, nh_T, ndim_T, ndim_hT, ndex(1)   ! grid_T file
42   INTEGER, DIMENSION(jpi*jpj)     ::   ndex_hT
43   INTEGER, DIMENSION(jpi*jpj*jpk) ::   ndex_T
44
45   !! * Substitutions
46#  include "zdfddm_substitute.h90"
47   !!----------------------------------------------------------------------
48   !! NEMO/C1D 3.0 , LOCEAN-IPSL  (2008)
49   !! $Id$
50   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
51   !!----------------------------------------------------------------------
52
53CONTAINS
54
55   SUBROUTINE dia_wri_c1d( kt, kindic )
56      !!---------------------------------------------------------------------
57      !!                  ***  ROUTINE dia_wri_c1d  ***
58      !!                   
59      !! ** Purpose :   Standard output of opa: dynamics and tracer fields
60      !!      NETCDF format is used by default
61      !!
62      !! ** Method  :   At the beginning of the first time step (nit000),
63      !!      define all the NETCDF files and fields
64      !!      At each time step call histdef to compute the mean if ncessary
65      !!      Each nwrite time step, output the instantaneous or mean fields
66      !!      IF kindic <0, output of fields before the model interruption.
67      !!      IF kindic =0, time step loop
68      !!      IF kindic >0, output of fields before the time step loop
69      !!----------------------------------------------------------------------
70      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index
71      INTEGER, INTENT( in ) ::   kindic  !
72      !!
73      LOGICAL ::   ll_print = .FALSE.                ! =T print and flush numout
74      CHARACTER (len=40) ::   clhstnam, clop, clmx   ! temporary names
75      INTEGER ::   inum = 11                         ! temporary logical unit
76      INTEGER ::   ji, jj, ik                        ! dummy loop indices
77      INTEGER ::   iimi, iima, ipk, it, ijmi, ijma   ! temporary integers
78      REAL(wp) ::   zsto, zout, zmax, zjulian, zdt   ! temporary scalars
79      REAL(wp), DIMENSION(jpi,jpj) ::   zw2d         ! temporary workspace
80      !!----------------------------------------------------------------------
81     
82      ! 0. Initialisation
83      ! -----------------
84     
85      ! local variable for debugging
86      ll_print = .FALSE.
87      ll_print = ll_print .AND. lwp
88
89      ! Define frequency of output and means
90      zdt = rdt
91      IF( nacc == 1 ) zdt = rdtmin
92#if defined key_diainstant
93      zsto = nwrite * zdt
94      clop = "inst(x)"           ! no use of the mask value (require less cpu time)
95      !!! clop="inst(only(x))"   ! put 1.e+20 on land (very expensive!!)
96#else
97      zsto=zdt
98      clop="ave(x)"              ! no use of the mask value (require less cpu time)
99      !!! clop="ave(only(x))"    ! put 1.e+20 on land (very expensive!!)
100#endif
101      zout = nwrite * zdt
102      zmax = ( nitend - nit000 + 1 ) * zdt
103
104      ! Define indices of the horizontal output zoom and vertical limit storage
105      iimi = 1      ;      iima = jpi
106      ijmi = 1      ;      ijma = jpj
107      ipk = jpk
108
109      ! define time axis
110      it = kt - nit000 + 1
111
112
113      ! 1. Define NETCDF files and fields at beginning of first time step
114      ! -----------------------------------------------------------------
115
116      IF(ll_print) WRITE(numout,*) 'dia_wri_c1d kt = ', kt, ' kindic ', kindic
117
118      IF( kt == nit000 ) THEN
119
120         ! Define the NETCDF files (one per grid)
121         
122         ! Compute julian date from starting date of the run
123         CALL ymds2ju( nyear, nmonth, nday, 0.e0, zjulian )
124         IF(lwp)WRITE(numout,*)
125         IF(lwp)WRITE(numout,*) 'Date 0 used :', nit000, ' YEAR ', nyear,   &
126            &                    ' MONTH ', nmonth, ' DAY ', nday, 'Julian day : ', zjulian
127         IF(lwp)WRITE(numout,*) ' indexes of zoom = ', iimi, iima, ijmi, ijma,   &
128                                 ' limit storage in depth = ', ipk
129
130         ! WRITE root name in date.file for use by postpro
131         CALL dia_nam( clhstnam, nwrite,' ' )
132         CALL ctlopn( inum, 'date.file', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, 1 )
133         WRITE(inum,*) clhstnam
134         CLOSE(inum)
135         
136         ! Define the T grid FILE ( nid_T )
137         
138         CALL dia_nam( clhstnam, nwrite, 'grid_T' )
139         IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam    ! filename
140         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit
141            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       &
142            &          0, zjulian, zdt, nh_T, nid_T, domain_id=nidom )
143         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept
144            &           "m", ipk, gdept_0, nz_T )
145         !                                                            ! Index of ocean points
146         CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndex_T , ndim_T  )      ! volume
147         CALL wheneq( jpi*jpj    , tmask, 1, 1., ndex_hT, ndim_hT )      ! surface
148
149
150         ! Declare all the output fields as NETCDF variables
151
152         !                                                                                      !!! nid_T : 3D
153         CALL histdef( nid_T, "votemper", "Temperature"                        , "C"      ,   &  ! tn
154            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
155         CALL histdef( nid_T, "vosaline", "Salinity"                           , "PSU"    ,   &  ! sn
156            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
157         !                                                                                      !!! nid_T : 2D
158         CALL histdef( nid_T, "sosstsst", "Sea Surface temperature"            , "C"      ,   &  ! sst
159            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
160         CALL histdef( nid_T, "sosaline", "Sea Surface Salinity"               , "PSU"    ,   &  ! sss
161            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
162         CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux"              , "Kg/m2/s",   &  ! emp
163            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
164!!       CALL histdef( nid_T, "sorunoff", "Runoffs"                            , "Kg/m2/s",   &  ! runoffs
165!!          &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
166         CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux"  , "kg/m2/s",   &  ! emps
167            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
168         CALL histdef( nid_T, "sosalflx", "Surface Salt Flux"                  , "Kg/m2/s",   &  ! emps * sn
169            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
170         CALL histdef( nid_T, "sohefldo", "Net Downward Heat Flux"             , "W/m2"   ,   &  ! qsr + qns
171            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
172         CALL histdef( nid_T, "soshfldo", "Shortwave Radiation"                , "W/m2"   ,   &  ! qsr
173            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
174         CALL histdef( nid_T, "somxl010", "Mixed Layer Depth 0.01"             , "m"      ,   &  ! hmlp
175            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
176#if defined key_zdfkpp
177         CALL histdef( nid_T, "sokppekd", "Ekman depth                     "   , "m"      ,   &  ! sokppekd
178            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
179         CALL histdef( nid_T, "sokppbld", "Boundary Layer Depth            "   , "m"      ,   &  ! sokppbld
180            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
181#endif
182         CALL histdef( nid_T, "somxlavt", "AVT : bottom of the mixed layer    ", "m"      ,   &  ! avt_mxl
183            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
184         CALL histdef( nid_T, "somixhgt", "Turbocline Depth"                   , "m"      ,   &  ! hmld
185            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
186         CALL histdef( nid_T, "soicecov", "Ice Fraction"                          , "[0,1]"  ,   &  ! fr_i
187            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
188         IF( ln_ssr ) THEN
189            CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping"         , "W/m2"   ,   &  ! qrp
190               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
191            CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping"        , "Kg/m2/s",   &  ! erp
192               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
193            CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping"         , "Kg/m2/s",   &  ! erp * sn
194               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
195         ENDIF
196         clmx ="l_max(only(x))"    ! max index on a period
197         CALL histdef( nid_T, "sobowlin", "Bowl Index"                         , "W-point",   &  ! bowl INDEX
198            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clmx, zsto, zout )
199         !                                                                                      !!! nid_U : 3D
200         CALL histdef( nid_T, "vozocrtx", "Zonal Current"                      , "m/s"    ,   &  ! un
201            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
202#if defined key_diaeiv
203         CALL histdef( nid_T, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv
204            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
205#endif
206         !                                                                                      !!! nid_U : 2D
207         CALL histdef( nid_T, "sozotaux", "Wind Stress along i-axis"           , "N/m2"   ,   &  ! utau
208            &          jpi, jpj, nh_T, 1  , 1, 1  , - 99, 32, clop, zsto, zout )
209
210         !                                                                                      !!! nid_V : 3D
211         CALL histdef( nid_T, "vomecrty", "Meridional Current"                 , "m/s"    ,   &  ! vn
212            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
213#if defined key_diaeiv
214         CALL histdef( nid_T, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv
215            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
216#endif
217         !                                                                                      !!! nid_V : 2D
218         CALL histdef( nid_T, "sometauy", "Wind Stress along j-axis"           , "N/m2"   ,   &  ! vtau
219            &          jpi, jpj, nh_T, 1  , 1, 1  , - 99, 32, clop, zsto, zout )
220#if defined key_zdftke
221         CALL histdef( nid_T, "votlsdis", " Dissipation Turbulent Lenght Scale", "m"      ,   &  ! e_dis
222            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
223         CALL histdef( nid_T, "votlsmix", " Mixing Turbulent Lenght Scale"     , "m"      ,   &  ! e_mix
224            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
225         CALL histdef( nid_T, "votlspdl", " Prandl Number",                      "-"       ,   &  ! e_pdl
226            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
227         CALL histdef( nid_T, "votlsric", " Local Richardson Number",            "-"       ,   &  ! e_ric
228            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
229         CALL histdef( nid_T, "votkeend", "TKE: Turbulent kinetic energy"       , "m2/s"   ,   &  ! TKE
230            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
231         CALL histdef( nid_T, "sotkehlc", "TKE: Langmuir Circulation depth"     , "m"      ,   &  ! hlc
232            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
233#endif
234#if defined key_zdfkpp
235         CALL histdef( nid_T, "vokpprig", " Gradient Richardson Number"        ,  "-"      ,   &  ! rig
236            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
237         CALL histdef( nid_T, "vokpprib", " Bulk Richardson Number    "        ,  "-"      ,   &   ! rib
238            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
239         CALL histdef( nid_T, "vokppbsf", " Buoyancy forcing          "        , "N/m2"    ,   &  ! sokppbsf
240            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
241         CALL histdef( nid_T, "vokppmol", "Moning Obukhov length scale     "   , "m"       ,   &  ! sokppmol
242            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
243#endif
244         !
245         CALL histdef( nid_T, "voeosbn2", "Brunt-Vaisala Frequency"             , "m2/s2"  ,   &  ! rn2
246            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
247         CALL histdef( nid_T, "votkeavt", "Vertical Eddy Diffusivity"          , "m2/s"   ,   &  ! avt
248            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
249         CALL histdef( nid_T, "votkeevd", "Enhanced Vertical Diffusivity",       "m2/s"   ,   &  ! avt_evd
250            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
251         CALL histdef( nid_T, "votkeavm", "Vertical Eddy Viscosity",             "m2/s"   ,   &  ! avmu
252            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
253         !
254         CALL histdef( nid_T, "votkeevm", "Enhanced Vertical Viscosity",         "m2/s"   ,   &  ! avmu_evd
255            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
256         IF( lk_zdfddm ) THEN
257            CALL histdef( nid_T,"voddmavs","Salt Vertical Eddy Diffusivity"    , "m2/s"   ,   &  ! avs
258               &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
259         ENDIF
260
261         CALL histend( nid_T )
262
263         IF(lwp) WRITE(numout,*)
264         IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization'
265         IF(ll_print) CALL FLUSH(numout )
266
267      ENDIF
268
269      ! 2. Start writing data
270      ! ---------------------
271
272      ! ndex(1) est utilise ssi l'avant dernier argument est diffferent de
273      ! la taille du tableau en sortie. Dans ce cas , l'avant dernier argument
274      ! donne le nombre d'elements, et ndex la liste des indices a sortir
275
276      IF( lwp .AND. MOD( kt, nwrite ) == 0 ) THEN
277         WRITE(numout,*) 'dia_wri : write model outputs in NetCDF files at ', kt, 'time-step'
278         WRITE(numout,*) '~~~~~~ '
279      ENDIF
280
281      ! Write fields on T grid
282      CALL histwrite( nid_T, "votemper", it, tn            , ndim_T , ndex_T  )   ! temperature
283      CALL histwrite( nid_T, "vosaline", it, sn            , ndim_T , ndex_T  )   ! salinity
284      CALL histwrite( nid_T, "sosstsst", it, tn(:,:,1)     , ndim_hT, ndex_hT )   ! sea surface temperature
285      CALL histwrite( nid_T, "sosaline", it, sn(:,:,1)     , ndim_hT, ndex_hT )   ! sea surface salinity
286      CALL histwrite( nid_T, "sowaflup", it, emp           , ndim_hT, ndex_hT )   ! upward water flux
287!!    CALL histwrite( nid_T, "sorunoff", it, runoff        , ndim_hT, ndex_hT )   ! runoff
288      CALL histwrite( nid_T, "sowaflcd", it, emps          , ndim_hT, ndex_hT )   ! c/d water flux
289      zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1)
290      CALL histwrite( nid_T, "sosalflx", it, zw2d          , ndim_hT, ndex_hT )   ! c/d salt flux
291      CALL histwrite( nid_T, "sohefldo", it, qsr + qns     , ndim_hT, ndex_hT )   ! total heat flux
292      CALL histwrite( nid_T, "soshfldo", it, qsr           , ndim_hT, ndex_hT )   ! solar heat flux
293      CALL histwrite( nid_T, "somxl010", it, hmlp          , ndim_hT, ndex_hT )   ! mixed layer depth
294#if defined key_zdfkpp
295      CALL histwrite( nid_T, "sokppekd", it, ekdp          , ndim_hT, ndex_hT )   ! Ekman depht
296      CALL histwrite( nid_T, "sokppbld", it, hkpp          , ndim_hT, ndex_hT )   ! boundary layer depth
297#endif 
298      ! store the vertical eddy diffusivity coef. at the bottom of the mixed layer
299      DO jj = 1, jpj
300         DO ji = 1, jpi
301            ik = nmln(ji,jj)
302            zw2d(ji,jj) = avt(ji,jj,ik) * tmask(ji,jj,1)
303         END DO
304      END DO
305      CALL histwrite( nid_T, "somxlavt", it, zw2d          , ndim_hT, ndex_hT )   ! Kz at bottom of mixed layer
306      CALL histwrite( nid_T, "somixhgt", it, hmld          , ndim_hT, ndex_hT )   ! turbocline depth
307      CALL histwrite( nid_T, "soicecov", it, fr_i          , ndim_hT, ndex_hT )   ! ice fraction
308      IF( ln_ssr ) THEN
309         CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping
310         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping
311         zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1)
312         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping
313      ENDIF
314      zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1)
315      CALL histwrite( nid_T, "sobowlin", it, zw2d          , ndim_hT, ndex_hT )   ! ???
316      CALL histwrite( nid_T, "vozocrtx", it, un            , ndim_T , ndex_T )    ! i-current
317      CALL histwrite( nid_T, "sozotaux", it, utau          , ndim_hT, ndex_hT )   ! i-wind stress
318      CALL histwrite( nid_T, "vomecrty", it, vn            , ndim_T , ndex_T  )   ! j-current
319      CALL histwrite( nid_T, "sometauy", it, vtau          , ndim_hT, ndex_hT )   ! j-wind stress
320#if defined key_zdftke
321      CALL histwrite( nid_T, "votlsdis", it, e_dis         , ndim_T , ndex_T )    ! Diss. Turb. lenght scale
322      CALL histwrite( nid_T, "votlsmix", it, e_mix         , ndim_T , ndex_T )    ! Mixing Turb. lenght scale
323      CALL histwrite( nid_T, "votlspdl", it, e_pdl         , ndim_T , ndex_T )    ! Prandl number
324      CALL histwrite( nid_T, "votlsric", it, e_ric         , ndim_T , ndex_T )    ! local Richardson number
325      CALL histwrite( nid_T, "votkeend", it, en            , ndim_T , ndex_T )    ! TKE
326      CALL histwrite( nid_T, "sotkehlc", it, hlc           , ndim_hT, ndex_hT )   ! TKE Langmuir Circulation depth
327#endif
328#if defined key_zdfkpp
329      CALL histwrite( nid_T, "vokpprig", it, rig           , ndim_T , ndex_T )    ! gradient Richardson number
330      CALL histwrite( nid_T, "vokpprib", it, rib           , ndim_T , ndex_T )    ! bulk Richardson number
331      CALL histwrite( nid_T, "vokppbsf", it, buof          , ndim_T , ndex_T )    ! buoyancy forcing
332      CALL histwrite( nid_T, "vokppmol", it, mols          , ndim_T , ndex_T )    ! Moning-Obukov length scale
333#endif
334      CALL histwrite( nid_T, "voeosbn2", it, rn2           , ndim_T , ndex_T )    ! Brunt-Vaisala Frequency
335      CALL histwrite( nid_T, "votkeavt", it, avt           , ndim_T , ndex_T )    ! T vert. eddy diff. coef.
336      CALL histwrite( nid_T, "votkeevd", it, avt_evd       , ndim_T , ndex_T )    ! T enhan. vert. eddy diff. coef.
337      CALL histwrite( nid_T, "votkeavm", it, avmu          , ndim_T , ndex_T )    ! T vert. eddy visc. coef.
338      CALL histwrite( nid_T, "votkeevm", it, avmu_evd      , ndim_T , ndex_T )    ! T enhan. vert. eddy visc. coef.
339      IF( lk_zdfddm ) THEN
340         CALL histwrite( nid_T, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T )    ! S vert. eddy diff. coef.
341      ENDIF
342
343      ! 3. Synchronise and close all files
344      ! ---------------------------------------
345      IF( MOD( kt, nwrite ) == 0 .OR. kindic < 0 )   CALL histsync( nid_T )
346
347      !  Create an output files (output.abort.nc) if S < 0 or u > 20 m/s
348      IF( kindic < 0 )   CALL dia_wri_state( 'output.abort' )
349
350      IF( kt == nitend .OR. kindic < 0 )   CALL histclo( nid_T )
351      !
352   END SUBROUTINE dia_wri_c1d
353
354#else
355   !!----------------------------------------------------------------------
356   !!   Default key                                     NO 1D Configuration
357   !!----------------------------------------------------------------------
358CONTAINS
359   SUBROUTINE dia_wri_c1d ( kt, kindic )      ! dummy routine
360      WRITE(*,*) 'dia_wri_c1d: You should not have seen this print! error?', kt, kindic
361   END SUBROUTINE dia_wri_c1d
362#endif
363
364   !!======================================================================
365END MODULE diawri_c1d
Note: See TracBrowser for help on using the repository browser.