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.
in_out_manager.F90 in branches/2012/dev_r3452_UKMO9_RESTART/NEMOGCM/NEMO/OPA_SRC/IOM – NEMO

source: branches/2012/dev_r3452_UKMO9_RESTART/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90 @ 3594

Last change on this file since 3594 was 3594, checked in by rfurner, 11 years ago

code not tested through SETTEE, builds and runs, but has not been thoroughly tested, so will not be included in 2012 merge, however submitted back to keep record of work done for 2013 developments

  • Property svn:keywords set to Id
File size: 9.4 KB
Line 
1MODULE in_out_manager   
2   !!======================================================================
3   !!                       ***  MODULE  in_out_manager  ***
4   !! I/O manager utilities : Defines run parameters together with logical units
5   !!=====================================================================
6   !! History :   1.0  !  2002-06  (G. Madec)   original code
7   !!             2.0  !  2006-07  (S. Masson)  iom, add ctl_stop, ctl_warn
8   !!             3.0  !  2008-06  (G. Madec)   add ctmp4 to ctmp10
9   !!             3.2  !  2009-08  (S. MAsson)  add new ctl_opn
10   !!             3.3  !  2010-10  (A. Coward)  add NetCDF4 usage
11   !!----------------------------------------------------------------------
12
13   !!----------------------------------------------------------------------
14   USE par_oce       ! ocean parameter
15   USE lib_print     ! formated print library
16   USE nc4interface  ! NetCDF4 interface
17
18   IMPLICIT NONE
19   PUBLIC
20
21   !!----------------------------------------------------------------------
22   !!                   namrun namelist parameters
23   !!----------------------------------------------------------------------
24   CHARACTER(lc) ::   cn_exp        = "exp0"      !: experiment name used for output filename
25   CHARACTER(lc) ::   cn_ocerst_in  = "restart"   !: suffix of ocean restart name (input)
26   CHARACTER(lc) ::   cn_ocerst_out = "restart"   !: suffix of ocean restart name (output)
27   LOGICAL       ::   ln_rstart     = .FALSE.     !: start from (F) rest or (T) a restart file
28   INTEGER       ::   nn_no         = 0           !: job number
29   INTEGER       ::   nn_rstctl     = 0           !: control of the time step (0, 1 or 2)
30   INTEGER       ::   nn_rstssh     = 0           !: hand made initilization of ssh or not (1/0)
31   INTEGER       ::   nn_it000      = 1           !: index of the first time step
32   INTEGER       ::   nn_itend      = 10          !: index of the last time step
33   INTEGER       ::   nn_date0      = 961115      !: initial calendar date aammjj
34   INTEGER       ::   nn_leapy      = 0           !: Leap year calendar flag (0/1 or 30)
35   INTEGER       ::   nn_istate     = 0           !: initial state output flag (0/1)
36   INTEGER       ::   nn_write      =   10        !: model standard output frequency
37   INTEGER, PARAMETER            :: jp_stocks = 15   !: maximum number of restarts
38   INTEGER, DIMENSION(jp_stocks) :: nn_stock = 0     !: restart dump times
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
79   !!----------------------------------------------------------------------
80   !! was in restart but moved here because of the OFF line... better solution should be found...
81   !!----------------------------------------------------------------------
82   INTEGER ::   nitrst   !: time step at which restart file should be written
83   INTEGER ::   nrst     !: index of next restart dump
84
85   !!----------------------------------------------------------------------
86   !!                    output monitoring
87   !!----------------------------------------------------------------------
88   LOGICAL ::   ln_ctl     = .FALSE.   !: run control for debugging
89   INTEGER ::   nn_timing    =    0    !: run control for timing
90   INTEGER ::   nn_print     =    0    !: level of print (0 no print)
91   INTEGER ::   nn_ictls     =    0    !: Start i indice for the SUM control
92   INTEGER ::   nn_ictle     =    0    !: End   i indice for the SUM control
93   INTEGER ::   nn_jctls     =    0    !: Start j indice for the SUM control
94   INTEGER ::   nn_jctle     =    0    !: End   j indice for the SUM control
95   INTEGER ::   nn_isplt     =    1    !: number of processors following i
96   INTEGER ::   nn_jsplt     =    1    !: number of processors following j
97   INTEGER ::   nn_bench     =    0    !: benchmark parameter (0/1)
98   INTEGER ::   nn_bit_cmp   =    0    !: bit reproducibility  (0/1)
99
100   !                                         
101   INTEGER ::   nprint, nictls, nictle, njctls, njctle, isplt, jsplt, nbench    !: OLD namelist names
102
103   INTEGER ::   ijsplt     =    1      !: nb of local domain = nb of processors
104
105   !!----------------------------------------------------------------------
106   !!                        logical units
107   !!----------------------------------------------------------------------
108   INTEGER ::   numstp      =   -1      !: logical unit for time step
109   INTEGER ::   numtime     =   -1      !: logical unit for timing
110   INTEGER ::   numout      =    6      !: logical unit for output print
111   INTEGER ::   numnam      =   -1      !: logical unit for namelist
112   INTEGER ::   numnam_ice  =   -1      !: logical unit for ice namelist
113   INTEGER ::   numevo_ice  =   -1      !: logical unit for ice variables (temp. evolution)
114   INTEGER ::   numsol      =   -1      !: logical unit for solver statistics
115   INTEGER ::   numdct_in   =   -1      !: logical unit for transports computing
116   INTEGER ::   numdct_vol  =   -1      !: logical unit for voulume transports output
117   INTEGER ::   numdct_heat =   -1      !: logical unit for heat    transports output
118   INTEGER ::   numdct_salt =   -1      !: logical unit for salt    transports output
119   INTEGER ::   numfl      =   -1      !: logical unit for floats ascii output
120   INTEGER ::   numflo     =   -1      !: logical unit for floats ascii output
121
122   !!----------------------------------------------------------------------
123   !!                          Run control 
124   !!----------------------------------------------------------------------
125   INTEGER       ::   nstop = 0             !: error flag (=number of reason for a premature stop run)
126   INTEGER       ::   nwarn = 0             !: warning flag (=number of warning found during the run)
127   CHARACTER(lc) ::   ctmp1, ctmp2, ctmp3   !: temporary characters 1 to 3
128   CHARACTER(lc) ::   ctmp4, ctmp5, ctmp6   !: temporary characters 4 to 6
129   CHARACTER(lc) ::   ctmp7, ctmp8, ctmp9   !: temporary characters 7 to 9
130   CHARACTER(lc) ::   ctmp10                !: temporary character 10
131   CHARACTER(lc) ::   cform_err = "(/,' ===>>> : E R R O R',     /,'         ===========',/)"       !:
132   CHARACTER(lc) ::   cform_war = "(/,' ===>>> : W A R N I N G', /,'         ===============',/)"   !:
133   LOGICAL       ::   lwp      = .FALSE.    !: boolean : true on the 1st processor only
134   LOGICAL       ::   lsp_area = .TRUE.     !: to make a control print over a specific area
135
136   !!----------------------------------------------------------------------
137   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
138   !! $Id$
139   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
140   !!=====================================================================
141END MODULE in_out_manager
Note: See TracBrowser for help on using the repository browser.