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.
usrdef_nam.F90 in NEMO/branches/2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles/src/OCE/USR – NEMO

source: NEMO/branches/2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles/src/OCE/USR/usrdef_nam.F90 @ 11671

Last change on this file since 11671 was 11671, checked in by acc, 4 years ago

Branch 2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles. Final, non-substantive changes to complete this branch. These changes remove all REWIND statements on the old namelist fortran units (now character variables for internal files). These changes have been left until last since they are easily repeated via a script and it may be preferable to use the previous revision for merge purposes and reapply these last changes separately. This branch has been fully SETTE tested.

  • Property svn:keywords set to Id
File size: 4.8 KB
Line 
1MODULE usrdef_nam
2   !!======================================================================
3   !!                     ***  MODULE usrdef_nam   ***
4   !!
5   !!                     ===  GYRE configuration  ===
6   !!
7   !! User defined : set the domain characteristics of a user configuration
8   !!======================================================================
9   !! History :  4.0  ! 2016-03  (S. Flavoni, G. Madec)  Original code
10   !!----------------------------------------------------------------------
11
12   !!----------------------------------------------------------------------
13   !!   usr_def_nam   : read user defined namelist and set global domain size
14   !!   usr_def_hgr   : initialize the horizontal mesh
15   !!----------------------------------------------------------------------
16   USE dom_oce  , ONLY: nimpp, njmpp       ! ocean space and time domain
17   USE par_oce        ! ocean space and time domain
18   USE phycst         ! physical constants
19   !
20   USE in_out_manager ! I/O manager
21   USE lib_mpp        ! MPP library
22   
23   IMPLICIT NONE
24   PRIVATE
25
26   PUBLIC   usr_def_nam   ! called in nemogcm.F90 module
27
28   !                              !!* namusr_def namelist *!!
29   LOGICAL, PUBLIC ::   ln_bench   ! =T benchmark test with gyre: the gridsize is constant (no need to adjust timestep or viscosity)
30   INTEGER, PUBLIC ::   nn_GYRE    ! 1/nn_GYRE = the resolution chosen in degrees and thus defining the horizontal domain size
31
32   !!----------------------------------------------------------------------
33   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
34   !! $Id$
35   !! Software governed by the CeCILL license (see ./LICENSE)
36   !!----------------------------------------------------------------------
37CONTAINS
38
39   SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio )
40      !!----------------------------------------------------------------------
41      !!                     ***  ROUTINE dom_nam  ***
42      !!                   
43      !! ** Purpose :   read user defined namelist and define the domain size
44      !!
45      !! ** Method  :   read in namusr_def containing all the user specific namelist parameter
46      !!
47      !!                Here GYRE configuration
48      !!
49      !! ** input   : - namusr_def namelist found in namelist_cfg
50      !!----------------------------------------------------------------------
51      CHARACTER(len=*), INTENT(out) ::   cd_cfg          ! configuration name
52      INTEGER         , INTENT(out) ::   kk_cfg          ! configuration resolution
53      INTEGER         , INTENT(out) ::   kpi, kpj, kpk   ! global domain sizes
54      INTEGER         , INTENT(out) ::   kperio          ! lateral global domain b.c.
55      !
56      INTEGER ::   ios   ! Local integer
57      !!
58      NAMELIST/namusr_def/ nn_GYRE, ln_bench, jpkglo
59      !!----------------------------------------------------------------------
60      !
61      READ  ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 )
62902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namusr_def in configuration namelist' )
63      !
64      IF(lwm)   WRITE( numond, namusr_def )
65      !
66      cd_cfg = 'GYRE'               ! name & resolution (not used)
67#if defined key_agrif
68      IF (.NOT.Agrif_root()) nn_GYRE = Agrif_parent(nn_GYRE) * Agrif_irhox()
69#endif
70      kk_cfg = nn_GYRE
71      !
72      kpi = 30 * nn_GYRE + 2        ! Global Domain size
73      kpj = 20 * nn_GYRE + 2
74#if defined key_agrif
75      IF( .NOT. Agrif_Root() ) THEN
76         kpi  = nbcellsx + 2 + 2*nbghostcells
77         kpj  = nbcellsy + 2 + 2*nbghostcells
78      ENDIF
79#endif
80      kpk = jpkglo
81      !                             ! Set the lateral boundary condition of the global domain
82      kperio = 0                    ! GYRE configuration : closed domain
83      !
84      !                             ! control print
85      IF(lwp) THEN
86         WRITE(numout,*) '   '
87         WRITE(numout,*) 'usr_def_nam  : read the user defined namelist (namusr_def) in namelist_cfg'
88         WRITE(numout,*) '~~~~~~~~~~~ '
89         WRITE(numout,*) '   Namelist namusr_def : GYRE case'
90         WRITE(numout,*) '      GYRE used as Benchmark (=T)                      ln_bench  = ', ln_bench
91         WRITE(numout,*) '      inverse resolution & implied domain size         nn_GYRE   = ', nn_GYRE
92#if defined key_agrif
93         IF( Agrif_Root() ) THEN
94#endif
95         WRITE(numout,*) '         jpiglo = 30*nn_GYRE+2                            jpiglo = ', kpi
96         WRITE(numout,*) '         jpjglo = 20*nn_GYRE+2                            jpjglo = ', kpj
97#if defined key_agrif
98         ENDIF
99#endif
100         WRITE(numout,*) '      number of model levels                              jpkglo = ', kpk
101         WRITE(numout,*) '   '
102         WRITE(numout,*) '   Lateral b.c. of the global domain set to closed        jperio = ', kperio
103      ENDIF
104      !
105   END SUBROUTINE usr_def_nam
106
107   !!======================================================================
108END MODULE usrdef_nam
Note: See TracBrowser for help on using the repository browser.