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/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/OPA_SRC/IOM – NEMO

source: branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90 @ 4780

Last change on this file since 4780 was 4780, checked in by edblockley, 10 years ago

Second commit in UKMO11 development branch.

This change allows the user to replace the nn_stock frequency-based restart dump writing functionality with a list-based version (nn_stocklist).
This is conterolled using the logical ln_rst_list which defaults to false.
At present the list is hard-wired to have maximum 10 entries but this could be modified if required.

Ed

  • Property svn:keywords set to Id
File size: 10.1 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   !
23   !!----------------------------------------------------------------------
24   !!                   namrun namelist parameters
25   !!----------------------------------------------------------------------
26   CHARACTER(lc) ::   cn_exp           !: experiment name used for output filename
27   CHARACTER(lc) ::   cn_ocerst_in     !: suffix of ocean restart name (input)
28   CHARACTER(lc) ::   cn_ocerst_indir  !: restart input directory
29   CHARACTER(lc) ::   cn_ocerst_out    !: suffix of ocean restart name (output)
30   CHARACTER(lc) ::   cn_ocerst_outdir !: restart output directory
31   LOGICAL       ::   ln_rstart        !: start from (F) rest or (T) a restart file
32   LOGICAL       ::   ln_rst_list      !: output restarts at list of times (T) or by frequency (F)
33   INTEGER       ::   nn_no            !: job number
34   INTEGER       ::   nn_rstctl        !: control of the time step (0, 1 or 2)
35   INTEGER       ::   nn_rstssh   = 0  !: hand made initilization of ssh or not (1/0)
36   INTEGER       ::   nn_it000         !: index of the first time step
37   INTEGER       ::   nn_itend         !: index of the last time step
38   INTEGER       ::   nn_date0         !: initial calendar date aammjj
39   INTEGER       ::   nn_leapy         !: Leap year calendar flag (0/1 or 30)
40   INTEGER       ::   nn_istate        !: initial state output flag (0/1)
41   INTEGER       ::   nn_write         !: model standard output frequency
42   INTEGER       ::   nn_stock         !: restart file frequency
43   INTEGER, DIMENSION(10) :: nn_stocklist  !: restart dump times
44   LOGICAL       ::   ln_dimgnnn       !: type of dimgout. (F): 1 file for all proc
45                                                       !:                  (T): 1 file per proc
46   LOGICAL       ::   ln_mskland       !: mask land points in NetCDF outputs (costly: + ~15%)
47   LOGICAL       ::   ln_clobber       !: clobber (overwrite) an existing file
48   INTEGER       ::   nn_chunksz       !: chunksize (bytes) for NetCDF file (works only with iom_nf90 routines)
49#if defined key_netcdf4
50   !!----------------------------------------------------------------------
51   !!                   namnc4 namelist parameters                         (key_netcdf4)
52   !!----------------------------------------------------------------------
53   ! The following four values determine the partitioning of the output fields
54   ! into netcdf4 chunks. They are unrelated to the nn_chunk_sz setting which is
55   ! for runtime optimisation. The individual netcdf4 chunks can be optionally
56   ! gzipped (recommended) leading to significant reductions in I/O volumes
57   !                         !!!**  variables only used with iom_nf90 routines and key_netcdf4 **
58   INTEGER ::   nn_nchunks_i   !: number of chunks required in the i-dimension
59   INTEGER ::   nn_nchunks_j   !: number of chunks required in the j-dimension
60   INTEGER ::   nn_nchunks_k   !: number of chunks required in the k-dimension
61   INTEGER ::   nn_nchunks_t   !: number of chunks required in the t-dimension
62   LOGICAL ::   ln_nc4zip      !: netcdf4 usage: (T) chunk and compress output using the HDF5 sublayers of netcdf4
63   !                           !                 (F) ignore chunking request and use the netcdf4 library
64   !                           !                     to produce netcdf3-compatible files
65#endif
66!$AGRIF_DO_NOT_TREAT
67   TYPE(snc4_ctl)     :: snc4set        !: netcdf4 chunking control structure (always needed for decision making)
68!$AGRIF_END_DO_NOT_TREAT
69
70
71   !! conversion of DOCTOR norm namelist name into model name
72   !! (this should disappear in a near futur)
73
74   CHARACTER(lc) ::   cexper                      !: experiment name used for output filename
75   INTEGER       ::   no                          !: job number
76   INTEGER       ::   nrstdt                      !: control of the time step (0, 1 or 2)
77   INTEGER       ::   nit000                      !: index of the first time step
78   INTEGER       ::   nitend                      !: index of the last time step
79   INTEGER       ::   ndate0                      !: initial calendar date aammjj
80   INTEGER       ::   nleapy                      !: Leap year calendar flag (0/1 or 30)
81   INTEGER       ::   ninist                      !: initial state output flag (0/1)
82   INTEGER       ::   nwrite                      !: model standard output frequency
83   INTEGER       ::   nstock                      !: restart file frequency
84   INTEGER, DIMENSION(10) :: nstocklist           !: restart dump times
85
86   !!----------------------------------------------------------------------
87   !! was in restart but moved here because of the OFF line... better solution should be found...
88   !!----------------------------------------------------------------------
89   INTEGER ::   nitrst                !: time step at which restart file should be written
90   LOGICAL ::   lrst_oce              !: logical to control the oce restart write
91   INTEGER ::   numror, numrow        !: logical unit for cean restart (read and write)
92   INTEGER ::   nrst_lst              !: number of restart to output next
93
94   !!----------------------------------------------------------------------
95   !!                    output monitoring
96   !!----------------------------------------------------------------------
97   LOGICAL ::   ln_ctl       !: run control for debugging
98   INTEGER ::   nn_timing    !: run control for timing
99   INTEGER ::   nn_print     !: level of print (0 no print)
100   INTEGER ::   nn_ictls     !: Start i indice for the SUM control
101   INTEGER ::   nn_ictle     !: End   i indice for the SUM control
102   INTEGER ::   nn_jctls     !: Start j indice for the SUM control
103   INTEGER ::   nn_jctle     !: End   j indice for the SUM control
104   INTEGER ::   nn_isplt     !: number of processors following i
105   INTEGER ::   nn_jsplt     !: number of processors following j
106   INTEGER ::   nn_bench     !: benchmark parameter (0/1)
107   INTEGER ::   nn_bit_cmp   =    0    !: bit reproducibility  (0/1)
108
109   !                                         
110   INTEGER ::   nprint, nictls, nictle, njctls, njctle, isplt, jsplt, nbench    !: OLD namelist names
111
112   INTEGER ::   ijsplt     =    1      !: nb of local domain = nb of processors
113
114   !!----------------------------------------------------------------------
115   !!                        logical units
116   !!----------------------------------------------------------------------
117   INTEGER ::   numstp          =   -1      !: logical unit for time step
118   INTEGER ::   numtime         =   -1      !: logical unit for timing
119   INTEGER ::   numout          =    6      !: logical unit for output print
120   INTEGER ::   numnam_ref      =   -1      !: logical unit for reference namelist
121   INTEGER ::   numnam_cfg      =   -1      !: logical unit for configuration specific namelist
122   INTEGER ::   numond          =    7      !: logical unit for Output Namelist Dynamics
123   INTEGER ::   numnam_ice_ref  =   -1      !: logical unit for ice reference namelist
124   INTEGER ::   numnam_ice_cfg  =   -1      !: logical unit for ice reference namelist
125   INTEGER ::   numoni          =    8      !: logical unit for Output Namelist Ice
126   INTEGER ::   numevo_ice      =   -1      !: logical unit for ice variables (temp. evolution)
127   INTEGER ::   numsol          =   -1      !: logical unit for solver statistics
128   INTEGER ::   numdct_in       =   -1      !: logical unit for transports computing
129   INTEGER ::   numdct_vol      =   -1      !: logical unit for voulume transports output
130   INTEGER ::   numdct_heat     =   -1      !: logical unit for heat    transports output
131   INTEGER ::   numdct_salt     =   -1      !: logical unit for salt    transports output
132   INTEGER ::   numfl           =   -1      !: logical unit for floats ascii output
133   INTEGER ::   numflo          =   -1      !: logical unit for floats ascii output
134
135   !!----------------------------------------------------------------------
136   !!                          Run control 
137   !!----------------------------------------------------------------------
138   INTEGER       ::   nstop = 0             !: error flag (=number of reason for a premature stop run)
139   INTEGER       ::   nwarn = 0             !: warning flag (=number of warning found during the run)
140   CHARACTER(lc) ::   ctmp1, ctmp2, ctmp3   !: temporary characters 1 to 3
141   CHARACTER(lc) ::   ctmp4, ctmp5, ctmp6   !: temporary characters 4 to 6
142   CHARACTER(lc) ::   ctmp7, ctmp8, ctmp9   !: temporary characters 7 to 9
143   CHARACTER(lc) ::   ctmp10                !: temporary character 10
144   CHARACTER(lc) ::   cform_err = "(/,' ===>>> : E R R O R',     /,'         ===========',/)"       !:
145   CHARACTER(lc) ::   cform_war = "(/,' ===>>> : W A R N I N G', /,'         ===============',/)"   !:
146   LOGICAL       ::   lwm      = .FALSE.    !: boolean : true on the 1st processor only (always)
147   LOGICAL       ::   lwp      = .FALSE.    !: boolean : true on the 1st processor only .OR. ln_ctl
148   LOGICAL       ::   lsp_area = .TRUE.     !: to make a control print over a specific area
149
150   !!----------------------------------------------------------------------
151   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
152   !! $Id$
153   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
154   !!=====================================================================
155END MODULE in_out_manager
Note: See TracBrowser for help on using the repository browser.