source: branches/dev_2802_OBStools/NEMOGCM/TOOLS/OBSTOOLS/src/in_out_manager.F90 @ 3000

Last change on this file since 3000 was 3000, checked in by djlea, 10 years ago

Updated obstools. Addition of headers to programs which explain what each utility does and how to run it. All the programs now build using the naketools utility.

File size: 8.8 KB
Line 
1MODULE in_out_manager   
2   !!======================================================================
3   !!                       ***  MODULE  in_out_manager  ***
4   !! Ocean physics:  vertical mixing coefficient compute from the tke
5   !!                 turbulent closure parameterization
6   !!=====================================================================
7   !! History :   1.0  !  2002-06  (G. Madec)   original code
8   !!             2.0  !  2006-07  (S. Masson)  iom, add ctl_stop, ctl_warn
9   !!             3.0  !  2008-06  (G. Madec)   add ctmp4 to ctmp10
10   !!             3.2  !  2009-08  (S. MAsson)  add new ctl_opn
11   !!             3.3  !  2010-10  (A. Coward)  add NetCDF4 usage
12   !!----------------------------------------------------------------------
13
14   !!----------------------------------------------------------------------
15   USE par_oce       ! ocean parameter
16!   USE lib_print     ! formated print library
17!   USE nc4interface  ! NetCDF4 interface
18
19   IMPLICIT NONE
20   PUBLIC
21
22   !!----------------------------------------------------------------------
23   !!                   namrun namelist parameters
24   !!----------------------------------------------------------------------
25   CHARACTER(lc) ::   cn_exp        = "exp0"      !: experiment name used for output filename
26   CHARACTER(lc) ::   cn_ocerst_in  = "restart"   !: suffix of ocean restart name (input)
27   CHARACTER(lc) ::   cn_ocerst_out = "restart"   !: suffix of ocean restart name (output)
28   LOGICAL       ::   ln_rstart     = .FALSE.     !: start from (F) rest or (T) a restart file
29   INTEGER       ::   nn_no         = 0           !: job number
30   INTEGER       ::   nn_rstctl     = 0           !: control of the time step (0, 1 or 2)
31   INTEGER       ::   nn_rstssh     = 0           !: hand made initilization of ssh or not (1/0)
32   INTEGER       ::   nn_it000      = 1           !: index of the first time step
33   INTEGER       ::   nn_itend      = 10          !: index of the last time step
34   INTEGER       ::   nn_date0      = 961115      !: initial calendar date aammjj
35   INTEGER       ::   nn_leapy      = 0           !: Leap year calendar flag (0/1 or 30)
36   INTEGER       ::   nn_istate     = 0           !: initial state output flag (0/1)
37   INTEGER       ::   nn_write      =   10        !: model standard output frequency
38   INTEGER       ::   nn_stock      =   10        !: restart file frequency
39   LOGICAL       ::   ln_dimgnnn    = .FALSE.     !: type of dimgout. (F): 1 file for all proc
40                                                       !:                  (T): 1 file per proc
41   LOGICAL       ::   ln_mskland    = .FALSE.     !: mask land points in NetCDF outputs (costly: + ~15%)
42   LOGICAL       ::   ln_clobber    = .FALSE.     !: clobber (overwrite) an existing file
43   INTEGER       ::   nn_chunksz    = 0           !: chunksize (bytes) for NetCDF file (works only with iom_nf90 routines)
44#if defined key_netcdf4
45   !!----------------------------------------------------------------------
46   !!                   namnc4 namelist parameters                         (key_netcdf4)
47   !!----------------------------------------------------------------------
48   ! The following four values determine the partitioning of the output fields
49   ! into netcdf4 chunks. They are unrelated to the nn_chunk_sz setting which is
50   ! for runtime optimisation. The individual netcdf4 chunks can be optionally
51   ! gzipped (recommended) leading to significant reductions in I/O volumes
52   !                                   !!!**  variables only used with iom_nf90 routines and key_netcdf4 **
53   INTEGER ::   nn_nchunks_i = 1        !: number of chunks required in the i-dimension
54   INTEGER ::   nn_nchunks_j = 1        !: number of chunks required in the j-dimension
55   INTEGER ::   nn_nchunks_k = 1        !: number of chunks required in the k-dimension
56   INTEGER ::   nn_nchunks_t = 1        !: number of chunks required in the t-dimension
57   LOGICAL ::   ln_nc4zip    = .TRUE.   !: netcdf4 usage: (T) chunk and compress output using the HDF5 sublayers of netcdf4
58   !                                    !                 (F) ignore chunking request and use the netcdf4 library
59   !                                    !                     to produce netcdf3-compatible files
60#endif
61!$AGRIF_DO_NOT_TREAT
62!   TYPE(snc4_ctl)     :: snc4set        !: netcdf4 chunking control structure (always needed for decision making)
63!$AGRIF_END_DO_NOT_TREAT
64
65
66   !! conversion of DOCTOR norm namelist name into model name
67   !! (this should disappear in a near futur)
68
69   CHARACTER(lc) ::   cexper                      !: experiment name used for output filename
70   INTEGER       ::   no                          !: job number
71   INTEGER       ::   nrstdt                      !: control of the time step (0, 1 or 2)
72   INTEGER       ::   nit000                      !: index of the first time step
73   INTEGER       ::   nitend                      !: index of the last time step
74   INTEGER       ::   ndate0                      !: initial calendar date aammjj
75   INTEGER       ::   nleapy                      !: Leap year calendar flag (0/1 or 30)
76   INTEGER       ::   ninist                      !: initial state output flag (0/1)
77   INTEGER       ::   nwrite                      !: model standard output frequency
78   INTEGER       ::   nstock                      !: restart file frequency
79
80   !!----------------------------------------------------------------------
81   !! was in restart but moved here because of the OFF line... better solution should be found...
82   !!----------------------------------------------------------------------
83   INTEGER ::   nitrst   !: time step at which restart file should be written
84
85   !!----------------------------------------------------------------------
86   !!                    output monitoring
87   !!----------------------------------------------------------------------
88   LOGICAL ::   ln_ctl     = .FALSE.   !: run control for debugging
89   INTEGER ::   nn_print     =    0    !: level of print (0 no print)
90   INTEGER ::   nn_ictls     =    0    !: Start i indice for the SUM control
91   INTEGER ::   nn_ictle     =    0    !: End   i indice for the SUM control
92   INTEGER ::   nn_jctls     =    0    !: Start j indice for the SUM control
93   INTEGER ::   nn_jctle     =    0    !: End   j indice for the SUM control
94   INTEGER ::   nn_isplt     =    1    !: number of processors following i
95   INTEGER ::   nn_jsplt     =    1    !: number of processors following j
96   INTEGER ::   nn_bench     =    0    !: benchmark parameter (0/1)
97   INTEGER ::   nn_bit_cmp   =    0    !: bit reproducibility  (0/1)
98
99   !                                         
100   INTEGER ::   nprint, nictls, nictle, njctls, njctle, isplt, jsplt, nbench    !: OLD namelist names
101
102   INTEGER ::   ijsplt     =    1      !: nb of local domain = nb of processors
103
104   !!----------------------------------------------------------------------
105   !!                        logical units
106   !!----------------------------------------------------------------------
107   INTEGER ::   numstp     =   -1      !: logical unit for time step
108   INTEGER ::   numout     =    6      !: logical unit for output print
109   INTEGER ::   numnam     =   -1      !: logical unit for namelist
110   INTEGER ::   numnam_ice =   -1      !: logical unit for ice namelist
111   INTEGER ::   numevo_ice =   -1      !: logical unit for ice variables (temp. evolution)
112   INTEGER ::   numsol     =   -1      !: logical unit for solver statistics
113
114   !!----------------------------------------------------------------------
115   !!                          Run control 
116   !!----------------------------------------------------------------------
117   INTEGER       ::   nstop = 0             !: error flag (=number of reason for a premature stop run)
118   INTEGER       ::   nwarn = 0             !: warning flag (=number of warning found during the run)
119   CHARACTER(lc) ::   ctmp1, ctmp2, ctmp3   !: temporary characters 1 to 3
120   CHARACTER(lc) ::   ctmp4, ctmp5, ctmp6   !: temporary characters 4 to 6
121   CHARACTER(lc) ::   ctmp7, ctmp8, ctmp9   !: temporary characters 7 to 9
122   CHARACTER(lc) ::   ctmp10                !: temporary character 10
123   CHARACTER(lc) ::   cform_err = "(/,' ===>>> : E R R O R',     /,'         ===========',/)"       !:
124   CHARACTER(lc) ::   cform_war = "(/,' ===>>> : W A R N I N G', /,'         ===============',/)"   !:
125   LOGICAL       ::   lwp      = .FALSE.    !: boolean : true on the 1st processor only
126   LOGICAL       ::   lsp_area = .TRUE.     !: to make a control print over a specific area
127
128   !!----------------------------------------------------------------------
129   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
130   !! $Id: in_out_manager.F90 2715 2011-03-30 15:58:35Z rblod $
131   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
132   !!=====================================================================
133END MODULE in_out_manager
Note: See TracBrowser for help on using the repository browser.