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/tests/ICE_ADV2D/MY_SRC – NEMO

source: NEMO/branches/2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles/tests/ICE_ADV2D/MY_SRC/usrdef_nam.F90 @ 11671

Last change on this file since 11671 was 11671, checked in by acc, 5 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.

File size: 5.7 KB
Line 
1MODULE usrdef_nam
2   !!======================================================================
3   !!                       ***  MODULE  usrdef_nam  ***
4   !!
5   !!                      ===  ICE_ADV2D configuration  ===
6   !!
7   !! User defined : set the domain characteristics of a user configuration
8   !!======================================================================
9   !! History :  NEMO ! 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            ! i- & j-indices of the local 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   USE timing         ! Timing
23   
24   IMPLICIT NONE
25   PRIVATE
26
27   PUBLIC   usr_def_nam   ! called by nemogcm.F90
28
29   !                               !!* namusr_def namelist *!!
30   REAL(wp), PUBLIC ::   rn_dx      ! resolution in meters defining the horizontal domain size
31   REAL(wp), PUBLIC ::   rn_dy      ! resolution in meters defining the horizontal domain size
32   REAL(wp), PUBLIC ::   rn_ppgphi0 ! reference latitude for beta-plane
33   LOGICAL , PUBLIC ::   ln_corio   ! set coriolis at 0 (ln_corio=F) or not
34
35   !!----------------------------------------------------------------------
36   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
37   !! $Id: usrdef_nam.F90 10161 2018-10-01 09:48:55Z clem $
38   !! Software governed by the CeCILL license (see ./LICENSE)
39   !!----------------------------------------------------------------------
40CONTAINS
41
42   SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio )
43      !!----------------------------------------------------------------------
44      !!                     ***  ROUTINE dom_nam  ***
45      !!                   
46      !! ** Purpose :   read user defined namelist and define the domain size
47      !!
48      !! ** Method  :   read in namusr_def containing all the user specific namelist parameter
49      !!
50      !!                Here ICE_ADV2D configuration
51      !!
52      !! ** input   : - namusr_def namelist found in namelist_cfg
53      !!----------------------------------------------------------------------
54      CHARACTER(len=*)              , INTENT(out) ::   cd_cfg          ! configuration name
55      INTEGER                       , INTENT(out) ::   kk_cfg          ! configuration resolution
56      INTEGER                       , INTENT(out) ::   kpi, kpj, kpk   ! global domain sizes
57      INTEGER                       , INTENT(out) ::   kperio          ! lateral global domain b.c.
58      !
59      INTEGER ::   ios       ! Local integer
60      REAL(wp)::   zlx, zly  ! Local scalars
61      !!
62      NAMELIST/namusr_def/ rn_dx, rn_dy, ln_corio, rn_ppgphi0
63      !!----------------------------------------------------------------------
64      !
65      READ  ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 )
66902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namusr_def in configuration namelist' )
67      !
68      IF(lwm)   WRITE( numond, namusr_def )
69      !
70#if defined key_agrif 
71      ! Domain parameters are taken from parent:
72      IF( .NOT. Agrif_Root() ) THEN
73         rn_dx = Agrif_Parent(rn_dx)/Agrif_Rhox()
74         rn_dy = Agrif_Parent(rn_dy)/Agrif_Rhoy()
75         rn_ppgphi0 = Agrif_Parent(rn_ppgphi0)
76      ENDIF
77#endif
78      !
79      IF(lwm)   WRITE( numond, namusr_def )
80      !
81      cd_cfg = 'ICE_ADV2D'           ! name & resolution (not used)
82      kk_cfg = NINT( rn_dx )
83      !
84      IF( Agrif_Root() ) THEN        ! Global Domain size:  ICE_AGRIF domain is  300 km x 300 Km x 10 m
85         kpi = NINT( 300.e3 / rn_dx ) - 1
86         kpj = NINT( 300.e3 / rn_dy ) - 1
87      ELSE
88         kpi = nbcellsx + 2 + 2*nbghostcells
89         kpj = nbcellsy + 2 + 2*nbghostcells
90      ENDIF
91      kpk = 1
92      !
93!!      zlx = (kpi-2)*rn_dx*1.e-3
94!!      zly = (kpj-2)*rn_dy*1.e-3
95      zlx = kpi*rn_dx*1.e-3
96      zly = kpj*rn_dy*1.e-3
97      !
98      IF( Agrif_Root() ) THEN   ;   kperio = 7     ! ICE_AGRIF configuration : bi-periodic basin
99      ELSE                      ;   kperio = 0     ! closed periodicity for the zoom
100      ENDIF
101      !                             ! control print
102      IF(lwp) THEN
103         WRITE(numout,*) '   '
104         WRITE(numout,*) 'usr_def_nam  : read the user defined namelist (namusr_def) in namelist_cfg'
105         WRITE(numout,*) '~~~~~~~~~~~ '
106         WRITE(numout,*) '   Namelist namusr_def : ICE_ADV2D test case'
107         WRITE(numout,*) '      horizontal resolution                    rn_dx  = ', rn_dx, ' meters'
108         WRITE(numout,*) '      horizontal resolution                    rn_dy  = ', rn_dy, ' meters'
109         WRITE(numout,*) '      ICE_ADV2D domain = 300 km x 300Km x 1 grid-point '
110         WRITE(numout,*) '         LX [km]: ', zlx
111         WRITE(numout,*) '         LY [km]: ', zly
112         WRITE(numout,*) '         resulting global domain size :        jpiglo = ', kpi
113         WRITE(numout,*) '                                               jpjglo = ', kpj
114         WRITE(numout,*) '                                               jpkglo = ', kpk
115         WRITE(numout,*) '         Coriolis:', ln_corio
116         WRITE(numout,*) '   '
117         WRITE(numout,*) '   Lateral boundary condition of the global domain'
118         WRITE(numout,*) '      ICE_ADV2D : bi-periodic basin            jperio = ', kperio
119      ENDIF
120      !
121   END SUBROUTINE usr_def_nam
122
123   !!======================================================================
124END MODULE usrdef_nam
Note: See TracBrowser for help on using the repository browser.