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_r2106_LOCEAN2010/NEMO/OPA_SRC – NEMO

source: branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/par_oce.F90 @ 2200

Last change on this file since 2200 was 2104, checked in by cetlod, 14 years ago

update DEV_r2006_merge_TRA_TRC according to review

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