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.
par_oce.F90 in branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC – NEMO

source: branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/par_oce.F90 @ 2208

Last change on this file since 2208 was 2208, checked in by rblod, 14 years ago

Put FCM NEMO code changes in DEV_r2191_3partymerge2010 branch

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 11.8 KB
Line 
1MODULE par_oce
2   !!======================================================================
3   !!                        ***  par_oce  ***
4   !! Ocean :   set the ocean parameters
5   !!======================================================================
6   !! History :
7   !!   4.0  !  91     (Imbard, Levy, Madec)  Original code
8   !!   9.0  !  04-01  (G. Madec, J.-M. Molines)  Free form and module
9   !!    "   !  05-11  (V. Garnier) Surface pressure gradient organization
10   !!----------------------------------------------------------------------
11   !!  OPA 9.0 , LOCEAN-IPSL (2005)
12   !! $Id$
13   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
14   !!----------------------------------------------------------------------
15   !! * Modules used
16   USE par_kind          ! kind parameters
17
18   IMPLICIT NONE
19   PUBLIC
20
21   !!----------------------------------------------------------------------
22   !!   Domain decomposition
23   !!----------------------------------------------------------------------
24   !! * if we dont use massively parallel computer (parameters jpni=jpnj=1)
25   !!      so jpiglo=jpi and jpjglo=jpj
26
27#if ! defined key_mpp_dyndist
28
29   INTEGER, PUBLIC, PARAMETER ::    &  !:
30# if ! defined key_nproci
31      jpni   = 1,                   &  !: number of processors following i
32      jpnj   = 1,                   &  !: number of processors following j
33      jpnij  = 1                       !: nb of local domain = nb of processors
34      !                                !  ( <= jpni x jpnj )
35# else
36      jpni   = key_nproci,          &  !: number of processors following i
37      jpnj   = key_nprocj,          &  !: number of processors following j
38#  if ! defined key_nprocij
39      jpnij  = key_nproci * key_nprocj !: nb of local domain = nb of processors
40      !                                !  ( <= jpni x jpnj )
41#  else
42      jpnij  = key_nprocij             !: nb of local domain = nb of processors
43      !                                !  ( <= jpni x jpnj )
44#  endif
45# endif
46#else
47   INTEGER, PUBLIC ::               &  !
48      jpni      ,                   &  !: number of processors following i
49      jpnj      ,                   &  !: number of processors following j
50      jpnij                            !: nb of local domain = nb of processors
51      !                                !  ( <= jpni x jpnj )
52#endif
53
54   INTEGER, PUBLIC, PARAMETER ::    &  !:
55      jpr2di = 0,                   &  !: number of columns for extra outer halo
56      jpr2dj = 0,                   &  !: number of rows    for extra outer halo
57      jpreci = 1,                   &  !: number of columns for overlap
58      jprecj = 1                       !: number of rows    for overlap
59
60   !! Ocean Domain sizes
61   !! ------------------
62   !!   data           domain   (jpidta,jpjdta)
63   !!   global or zoom domain   (jpiglo,jpjglo)
64   !!   local          domain   ( jpi  , jpj  )
65   
66#if   defined key_orca_r4
67   !!---------------------------------------------------------------------
68   !!   'key_orca_r4'   :                           global ocean : ORCA R4
69   !!---------------------------------------------------------------------
70#             include "par_ORCA_R4.h90"
71#elif defined key_orca_r2
72   !!---------------------------------------------------------------------
73   !!   'key_orca_r2'   :                           global ocean : ORCA R4
74   !!---------------------------------------------------------------------
75#             include "par_ORCA_R2.h90"
76#elif defined key_orca_r05
77   !!---------------------------------------------------------------------
78   !!   'key_orca_r05'  :                          global ocean : ORCA R05
79   !!---------------------------------------------------------------------
80#             include "par_ORCA_R05.h90"
81#elif defined key_orca_r025
82   !!---------------------------------------------------------------------
83   !!   'key_orca_r025' :                         global ocean : ORCA R025
84   !!---------------------------------------------------------------------
85#             include "par_ORCA_R025.h90"
86#elif defined key_eel_r2
87   !!---------------------------------------------------------------------
88   !!   'key_eel_r2'    :                                 channel : EEL R2
89   !!---------------------------------------------------------------------
90#             include "par_EEL_R2.h90"
91#elif defined key_eel_r5
92   !!---------------------------------------------------------------------
93   !!   'key_eel_r5'    :                                 channel : EEL R5
94   !!---------------------------------------------------------------------
95#             include "par_EEL_R5.h90"
96#elif defined key_eel_r6
97   !!---------------------------------------------------------------------
98   !!   'key_eel_r6'    :                                 channel : EEL R6
99   !!---------------------------------------------------------------------
100#             include "par_EEL_R6.h90"
101#elif defined key_gyre
102   !!---------------------------------------------------------------------
103   !!   'key_gyre'      :                        mid-latitude basin : GYRE
104   !!---------------------------------------------------------------------
105#             include "par_GYRE.h90"
106#elif defined key_pomme_r025
107   !!---------------------------------------------------------------------
108   !!   'key_pomme_r025':                        regional basin : POMME025
109   !!---------------------------------------------------------------------
110#             include "par_POMME_R025.h90"
111#else
112   !!---------------------------------------------------------------------
113   !!   default option  :                               small closed basin
114   !!---------------------------------------------------------------------
115   CHARACTER(len=16), PUBLIC, PARAMETER ::   &  !:
116      cp_cfg = "default"               !: name of the configuration
117   INTEGER, PARAMETER ::            &  !:
118      jp_cfg = 0  ,                 &  !: resolution of the configuration
119
120      ! data size                     !!! * size of all input files *
121      jpidta  = 10,                 &  !: 1st lateral dimension ( >= jpi )
122      jpjdta  = 12,                 &  !: 2nd    "         "    ( >= jpj )
123      jpkdta  = 31,                 &  !: number of levels      ( >= jpk )
124
125      ! global or zoom domain size    !!! * computational domain *
126      jpiglo  = jpidta,             &  !: 1st dimension of global domain --> i
127      jpjglo  = jpjdta,             &  !: 2nd    "                  "    --> j
128      jpk     = jpkdta,             &  !: number of vertical levels
129      ! zoom starting position
130      jpizoom =   1   ,             &  !: left bottom (i,j) indices of the zoom
131      jpjzoom =   1   ,             &  !: in data domain indices
132
133      ! Domain characteristics
134      jperio  =  0                     !: lateral cond. type (between 0 and 6)
135         !                             !  = 0 closed
136         !                             !  = 1 cyclic East-West
137         !                             !  = 2 equatorial symmetric
138         !                             !  = 3 North fold T-point pivot
139         !                             !  = 4 cyclic East-West AND North fold T-point pivot
140         !                             !  = 5 North fold F-point pivot
141         !                             !  = 6 cyclic East-West AND North fold F-point pivot
142
143      !!  Values set to pp_not_used indicates that this parameter is not used in THIS config.
144      !!  Values set to pp_to_be_computed  indicates that variables will be computed in domzgr
145      REAL(wp), PARAMETER ::   &  !:
146         pp_not_used       = 999999._wp , &  !:
147         pp_to_be_computed = 999999._wp      !:
148
149
150   !! Horizontal grid parameters for domhgr
151   !! =====================================
152
153   INTEGER, PUBLIC, PARAMETER   ::   &  !:
154      jphgr_msh = 0            !: type of horizontal mesh
155      !                        !  = 0 curvilinear coordinate on the sphere
156      !                        !      read in coordinate.nc file
157      !                        !  = 1 geographical mesh on the sphere
158      !                        !      with regular grid-spacing
159      !                        !  = 2 f-plane with regular grid-spacing
160      !                        !  = 3 beta-plane with regular grid-spacing
161      !                        !  = 4 Mercator grid with T/U point at the equator  with
162      !                        !      isotropic resolution (e1_deg)
163
164   REAL(wp) , PUBLIC, PARAMETER ::   &   !:
165      ppglam0  =    0.0_wp,   &  !: longitude of first raw and column T-point (jphgr_msh = 1)
166      ppgphi0  =  -35.0_wp,   &  !: latitude  of first raw and column T-point (jphgr_msh = 1)
167      !                          !  latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3)
168      ppe1_deg =    1.0_wp,   &  !: zonal      grid-spacing (degrees)
169      ppe2_deg =    0.5_wp,   &  !: meridional grid-spacing (degrees)
170      ppe1_m   = 5000.0_wp,   &  !: zonal      grid-spacing (degrees)
171      ppe2_m   = 5000.0_wp       !: meridional grid-spacing (degrees)
172
173   !! Vertical grid parameter for domzgr
174   !! ==================================
175
176   REAL(wp), PUBLIC, PARAMETER  ::   &  !:
177      &     ppsur = -4762.96143546300_wp ,  &  !: ORCA r4, r2 and r05 coefficients
178      &     ppa0  =   255.58049070440_wp ,  &  !: (default coefficients)
179      &     ppa1  =   245.58132232490_wp ,  &  !:
180      &     ppkth =    21.43336197938_wp ,  &  !:
181      &     ppacr =     3.00000000000_wp       !:
182
183   !!  If both ppa0 ppa1 and ppsur are specified to 0, then
184   !!  they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr
185
186   REAL(wp), PUBLIC, PARAMETER ::   &  !:
187      &     ppdzmin = 10._wp             ,  &  !: Minimum vertical spacing
188      &     pphmax  = 5000._wp                 !: Maximum depth
189
190   !!---------------------------------------------------------------------
191#endif
192
193   !!---------------------------------------------------------------------
194   !! Domain Matrix size
195   !!---------------------------------------------------------------------
196   INTEGER  &  !:
197#if !defined key_agrif
198      ,PARAMETER  &
199#endif
200    :: &
201      jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ,   &  !: first  dimension
202      jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ,   &  !: second dimension
203      jpim1 = jpi-1,                                             &  !: inner domain indices
204      jpjm1 = jpj-1,                                             &  !:   "            "
205      jpkm1 = jpk-1,                                             &  !:   "            "
206      jpij  = jpi*jpj                                               !:  jpi x jpj
207
208#if defined key_agrif
209   !!---------------------------------------------------------------------
210   !! Agrif variables
211   !!---------------------------------------------------------------------
212   INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1
213   INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells
214   INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells
215#endif
216   !!---------------------------------------------------------------------
217   !! Optimization/control flags
218   !!---------------------------------------------------------------------
219#if defined key_esopa
220   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .TRUE.   !: flag to activate the all options
221#else
222   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .FALSE.  !: flag to activate the all options
223#endif
224
225#if defined key_vectopt_memory
226   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .TRUE.   !: vector optimization flag
227#else
228   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .FALSE.  !: vector optimization flag
229#endif
230
231#if defined key_vectopt_loop
232   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .TRUE.   !: vector optimization flag
233#else
234   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .FALSE.  !: vector optimization flag
235#endif
236
237   !!======================================================================
238END MODULE par_oce
Note: See TracBrowser for help on using the repository browser.