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 @ 1310

Last change on this file since 1310 was 1310, checked in by smasson, 15 years ago

set origin of outputs calendar, continue changeset:1309, see ticket:335

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 21.7 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, rdt, zjulian )
124         zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment
125         IF(lwp)WRITE(numout,*)
126         IF(lwp)WRITE(numout,*) 'Date 0 used :', nit000, ' YEAR ', nyear,   &
127            &                    ' MONTH ', nmonth, ' DAY ', nday, 'Julian day : ', zjulian
128         IF(lwp)WRITE(numout,*) ' indexes of zoom = ', iimi, iima, ijmi, ijma,   &
129                                 ' limit storage in depth = ', ipk
130
131         ! WRITE root name in date.file for use by postpro
132         CALL dia_nam( clhstnam, nwrite,' ' )
133         CALL ctlopn( inum, 'date.file', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, 1 )
134         WRITE(inum,*) clhstnam
135         CLOSE(inum)
136         
137         ! Define the T grid FILE ( nid_T )
138         
139         CALL dia_nam( clhstnam, nwrite, 'grid_T' )
140         IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam    ! filename
141         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit
142            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       &
143            &          0, zjulian, zdt, nh_T, nid_T, domain_id=nidom )
144         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept
145            &           "m", ipk, gdept_0, nz_T )
146         !                                                            ! Index of ocean points
147         CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndex_T , ndim_T  )      ! volume
148         CALL wheneq( jpi*jpj    , tmask, 1, 1., ndex_hT, ndim_hT )      ! surface
149
150
151         ! Declare all the output fields as NETCDF variables
152
153         !                                                                                      !!! nid_T : 3D
154         CALL histdef( nid_T, "votemper", "Temperature"                        , "C"      ,   &  ! tn
155            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
156         CALL histdef( nid_T, "vosaline", "Salinity"                           , "PSU"    ,   &  ! sn
157            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
158         !                                                                                      !!! nid_T : 2D
159         CALL histdef( nid_T, "sosstsst", "Sea Surface temperature"            , "C"      ,   &  ! sst
160            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
161         CALL histdef( nid_T, "sosaline", "Sea Surface Salinity"               , "PSU"    ,   &  ! sss
162            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
163         CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux"              , "Kg/m2/s",   &  ! emp
164            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
165!!       CALL histdef( nid_T, "sorunoff", "Runoffs"                            , "Kg/m2/s",   &  ! runoffs
166!!          &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
167         CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux"  , "kg/m2/s",   &  ! emps
168            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
169         CALL histdef( nid_T, "sosalflx", "Surface Salt Flux"                  , "Kg/m2/s",   &  ! emps * sn
170            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
171         CALL histdef( nid_T, "sohefldo", "Net Downward Heat Flux"             , "W/m2"   ,   &  ! qsr + qns
172            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
173         CALL histdef( nid_T, "soshfldo", "Shortwave Radiation"                , "W/m2"   ,   &  ! qsr
174            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
175         CALL histdef( nid_T, "somxl010", "Mixed Layer Depth 0.01"             , "m"      ,   &  ! hmlp
176            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
177#if defined key_zdfkpp
178         CALL histdef( nid_T, "sokppekd", "Ekman depth                     "   , "m"      ,   &  ! sokppekd
179            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
180         CALL histdef( nid_T, "sokppbld", "Boundary Layer Depth            "   , "m"      ,   &  ! sokppbld
181            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
182#endif
183         CALL histdef( nid_T, "somxlavt", "AVT : bottom of the mixed layer    ", "m"      ,   &  ! avt_mxl
184            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
185         CALL histdef( nid_T, "somixhgt", "Turbocline Depth"                   , "m"      ,   &  ! hmld
186            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
187         CALL histdef( nid_T, "soicecov", "Ice Fraction"                          , "[0,1]"  ,   &  ! fr_i
188            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
189         IF( ln_ssr ) THEN
190            CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping"         , "W/m2"   ,   &  ! qrp
191               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
192            CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping"        , "Kg/m2/s",   &  ! erp
193               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
194            CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping"         , "Kg/m2/s",   &  ! erp * sn
195               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
196         ENDIF
197         clmx ="l_max(only(x))"    ! max index on a period
198         CALL histdef( nid_T, "sobowlin", "Bowl Index"                         , "W-point",   &  ! bowl INDEX
199            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clmx, zsto, zout )
200         !                                                                                      !!! nid_U : 3D
201         CALL histdef( nid_T, "vozocrtx", "Zonal Current"                      , "m/s"    ,   &  ! un
202            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
203#if defined key_diaeiv
204         CALL histdef( nid_T, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv
205            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
206#endif
207         !                                                                                      !!! nid_U : 2D
208         CALL histdef( nid_T, "sozotaux", "Wind Stress along i-axis"           , "N/m2"   ,   &  ! utau
209            &          jpi, jpj, nh_T, 1  , 1, 1  , - 99, 32, clop, zsto, zout )
210
211         !                                                                                      !!! nid_V : 3D
212         CALL histdef( nid_T, "vomecrty", "Meridional Current"                 , "m/s"    ,   &  ! vn
213            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
214#if defined key_diaeiv
215         CALL histdef( nid_T, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv
216            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
217#endif
218         !                                                                                      !!! nid_V : 2D
219         CALL histdef( nid_T, "sometauy", "Wind Stress along j-axis"           , "N/m2"   ,   &  ! vtau
220            &          jpi, jpj, nh_T, 1  , 1, 1  , - 99, 32, clop, zsto, zout )
221#if defined key_zdftke
222         CALL histdef( nid_T, "votlsdis", " Dissipation Turbulent Lenght Scale", "m"      ,   &  ! e_dis
223            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
224         CALL histdef( nid_T, "votlsmix", " Mixing Turbulent Lenght Scale"     , "m"      ,   &  ! e_mix
225            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
226         CALL histdef( nid_T, "votlspdl", " Prandl Number",                      "-"       ,   &  ! e_pdl
227            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
228         CALL histdef( nid_T, "votlsric", " Local Richardson Number",            "-"       ,   &  ! e_ric
229            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
230         CALL histdef( nid_T, "votkeend", "TKE: Turbulent kinetic energy"       , "m2/s"   ,   &  ! TKE
231            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
232         CALL histdef( nid_T, "sotkehlc", "TKE: Langmuir Circulation depth"     , "m"      ,   &  ! hlc
233            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout )
234#endif
235#if defined key_zdfkpp
236         CALL histdef( nid_T, "vokpprig", " Gradient Richardson Number"        ,  "-"      ,   &  ! rig
237            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
238         CALL histdef( nid_T, "vokpprib", " Bulk Richardson Number    "        ,  "-"      ,   &   ! rib
239            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
240         CALL histdef( nid_T, "vokppbsf", " Buoyancy forcing          "        , "N/m2"    ,   &  ! sokppbsf
241            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
242         CALL histdef( nid_T, "vokppmol", "Moning Obukhov length scale     "   , "m"       ,   &  ! sokppmol
243            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
244#endif
245         !
246         CALL histdef( nid_T, "voeosbn2", "Brunt-Vaisala Frequency"             , "m2/s2"  ,   &  ! rn2
247            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
248         CALL histdef( nid_T, "votkeavt", "Vertical Eddy Diffusivity"          , "m2/s"   ,   &  ! avt
249            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
250         CALL histdef( nid_T, "votkeevd", "Enhanced Vertical Diffusivity",       "m2/s"   ,   &  ! avt_evd
251            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
252         CALL histdef( nid_T, "votkeavm", "Vertical Eddy Viscosity",             "m2/s"   ,   &  ! avmu
253            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
254         !
255         CALL histdef( nid_T, "votkeevm", "Enhanced Vertical Viscosity",         "m2/s"   ,   &  ! avmu_evd
256            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
257         IF( lk_zdfddm ) THEN
258            CALL histdef( nid_T,"voddmavs","Salt Vertical Eddy Diffusivity"    , "m2/s"   ,   &  ! avs
259               &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout )
260         ENDIF
261
262         CALL histend( nid_T )
263
264         IF(lwp) WRITE(numout,*)
265         IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization'
266         IF(ll_print) CALL FLUSH(numout )
267
268      ENDIF
269
270      ! 2. Start writing data
271      ! ---------------------
272
273      ! ndex(1) est utilise ssi l'avant dernier argument est diffferent de
274      ! la taille du tableau en sortie. Dans ce cas , l'avant dernier argument
275      ! donne le nombre d'elements, et ndex la liste des indices a sortir
276
277      IF( lwp .AND. MOD( kt, nwrite ) == 0 ) THEN
278         WRITE(numout,*) 'dia_wri : write model outputs in NetCDF files at ', kt, 'time-step'
279         WRITE(numout,*) '~~~~~~ '
280      ENDIF
281
282      ! Write fields on T grid
283      CALL histwrite( nid_T, "votemper", it, tn            , ndim_T , ndex_T  )   ! temperature
284      CALL histwrite( nid_T, "vosaline", it, sn            , ndim_T , ndex_T  )   ! salinity
285      CALL histwrite( nid_T, "sosstsst", it, tn(:,:,1)     , ndim_hT, ndex_hT )   ! sea surface temperature
286      CALL histwrite( nid_T, "sosaline", it, sn(:,:,1)     , ndim_hT, ndex_hT )   ! sea surface salinity
287      CALL histwrite( nid_T, "sowaflup", it, emp           , ndim_hT, ndex_hT )   ! upward water flux
288!!    CALL histwrite( nid_T, "sorunoff", it, runoff        , ndim_hT, ndex_hT )   ! runoff
289      CALL histwrite( nid_T, "sowaflcd", it, emps          , ndim_hT, ndex_hT )   ! c/d water flux
290      zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1)
291      CALL histwrite( nid_T, "sosalflx", it, zw2d          , ndim_hT, ndex_hT )   ! c/d salt flux
292      CALL histwrite( nid_T, "sohefldo", it, qsr + qns     , ndim_hT, ndex_hT )   ! total heat flux
293      CALL histwrite( nid_T, "soshfldo", it, qsr           , ndim_hT, ndex_hT )   ! solar heat flux
294      CALL histwrite( nid_T, "somxl010", it, hmlp          , ndim_hT, ndex_hT )   ! mixed layer depth
295#if defined key_zdfkpp
296      CALL histwrite( nid_T, "sokppekd", it, ekdp          , ndim_hT, ndex_hT )   ! Ekman depht
297      CALL histwrite( nid_T, "sokppbld", it, hkpp          , ndim_hT, ndex_hT )   ! boundary layer depth
298#endif 
299      ! store the vertical eddy diffusivity coef. at the bottom of the mixed layer
300      DO jj = 1, jpj
301         DO ji = 1, jpi
302            ik = nmln(ji,jj)
303            zw2d(ji,jj) = avt(ji,jj,ik) * tmask(ji,jj,1)
304         END DO
305      END DO
306      CALL histwrite( nid_T, "somxlavt", it, zw2d          , ndim_hT, ndex_hT )   ! Kz at bottom of mixed layer
307      CALL histwrite( nid_T, "somixhgt", it, hmld          , ndim_hT, ndex_hT )   ! turbocline depth
308      CALL histwrite( nid_T, "soicecov", it, fr_i          , ndim_hT, ndex_hT )   ! ice fraction
309      IF( ln_ssr ) THEN
310         CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping
311         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping
312         zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1)
313         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping
314      ENDIF
315      zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1)
316      CALL histwrite( nid_T, "sobowlin", it, zw2d          , ndim_hT, ndex_hT )   ! ???
317      CALL histwrite( nid_T, "vozocrtx", it, un            , ndim_T , ndex_T )    ! i-current
318      CALL histwrite( nid_T, "sozotaux", it, utau          , ndim_hT, ndex_hT )   ! i-wind stress
319      CALL histwrite( nid_T, "vomecrty", it, vn            , ndim_T , ndex_T  )   ! j-current
320      CALL histwrite( nid_T, "sometauy", it, vtau          , ndim_hT, ndex_hT )   ! j-wind stress
321#if defined key_zdftke
322      CALL histwrite( nid_T, "votlsdis", it, e_dis         , ndim_T , ndex_T )    ! Diss. Turb. lenght scale
323      CALL histwrite( nid_T, "votlsmix", it, e_mix         , ndim_T , ndex_T )    ! Mixing Turb. lenght scale
324      CALL histwrite( nid_T, "votlspdl", it, e_pdl         , ndim_T , ndex_T )    ! Prandl number
325      CALL histwrite( nid_T, "votlsric", it, e_ric         , ndim_T , ndex_T )    ! local Richardson number
326      CALL histwrite( nid_T, "votkeend", it, en            , ndim_T , ndex_T )    ! TKE
327      CALL histwrite( nid_T, "sotkehlc", it, hlc           , ndim_hT, ndex_hT )   ! TKE Langmuir Circulation depth
328#endif
329#if defined key_zdfkpp
330      CALL histwrite( nid_T, "vokpprig", it, rig           , ndim_T , ndex_T )    ! gradient Richardson number
331      CALL histwrite( nid_T, "vokpprib", it, rib           , ndim_T , ndex_T )    ! bulk Richardson number
332      CALL histwrite( nid_T, "vokppbsf", it, buof          , ndim_T , ndex_T )    ! buoyancy forcing
333      CALL histwrite( nid_T, "vokppmol", it, mols          , ndim_T , ndex_T )    ! Moning-Obukov length scale
334#endif
335      CALL histwrite( nid_T, "voeosbn2", it, rn2           , ndim_T , ndex_T )    ! Brunt-Vaisala Frequency
336      CALL histwrite( nid_T, "votkeavt", it, avt           , ndim_T , ndex_T )    ! T vert. eddy diff. coef.
337      CALL histwrite( nid_T, "votkeevd", it, avt_evd       , ndim_T , ndex_T )    ! T enhan. vert. eddy diff. coef.
338      CALL histwrite( nid_T, "votkeavm", it, avmu          , ndim_T , ndex_T )    ! T vert. eddy visc. coef.
339      CALL histwrite( nid_T, "votkeevm", it, avmu_evd      , ndim_T , ndex_T )    ! T enhan. vert. eddy visc. coef.
340      IF( lk_zdfddm ) THEN
341         CALL histwrite( nid_T, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T )    ! S vert. eddy diff. coef.
342      ENDIF
343
344      ! 3. Synchronise and close all files
345      ! ---------------------------------------
346      IF( MOD( kt, nwrite ) == 0 .OR. kindic < 0 )   CALL histsync( nid_T )
347
348      !  Create an output files (output.abort.nc) if S < 0 or u > 20 m/s
349      IF( kindic < 0 )   CALL dia_wri_state( 'output.abort' )
350
351      IF( kt == nitend .OR. kindic < 0 )   CALL histclo( nid_T )
352      !
353   END SUBROUTINE dia_wri_c1d
354
355#else
356   !!----------------------------------------------------------------------
357   !!   Default key                                     NO 1D Configuration
358   !!----------------------------------------------------------------------
359CONTAINS
360   SUBROUTINE dia_wri_c1d ( kt, kindic )      ! dummy routine
361      WRITE(*,*) 'dia_wri_c1d: You should not have seen this print! error?', kt, kindic
362   END SUBROUTINE dia_wri_c1d
363#endif
364
365   !!======================================================================
366END MODULE diawri_c1d
Note: See TracBrowser for help on using the repository browser.