source: trunk/NEMOGCM/NEMO/OPA_SRC/par_oce.F90

Last change on this file was 40, checked in by smasson, 12 years ago

add trop025, trop075 and narc025 configurations

File size: 13.9 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   INTEGER, PUBLIC            ::   jpni         !: number of processors following i
20   INTEGER, PUBLIC            ::   jpnj         !: number of processors following j
21   INTEGER, PUBLIC            ::   jpnij        !: nb of local domain = nb of processors ( <= jpni x jpnj )
22   INTEGER, PUBLIC, PARAMETER ::   jpr2di = 0   !: number of columns for extra outer halo
23   INTEGER, PUBLIC, PARAMETER ::   jpr2dj = 0   !: number of rows    for extra outer halo
24   INTEGER, PUBLIC, PARAMETER ::   jpreci = 1   !: number of columns for overlap
25   INTEGER, PUBLIC, PARAMETER ::   jprecj = 1   !: number of rows    for overlap
26
27   !! Ocean Domain sizes
28   !! ------------------
29   !!   data           domain   (jpidta,jpjdta)
30   !!   global or zoom domain   (jpiglo,jpjglo)
31   !!   local          domain   ( jpi  , jpj  )
32   
33#if   defined key_orca_r4
34   !!---------------------------------------------------------------------
35   !!   'key_orca_r4'   :                           global ocean : ORCA R4
36   !!---------------------------------------------------------------------
37#             include "par_ORCA_R4.h90"
38#elif defined key_orca_r2
39   !!---------------------------------------------------------------------
40   !!   'key_orca_r2'   :                           global ocean : ORCA R4
41   !!---------------------------------------------------------------------
42#             include "par_ORCA_R2.h90"
43#elif defined key_orca_r1
44   !!---------------------------------------------------------------------
45   !!   'key_orca_r1'   :                           global ocean : ORCA R1
46   !!---------------------------------------------------------------------
47#             include "par_ORCA_R1.h90"
48#elif defined key_orca_r05
49   !!---------------------------------------------------------------------
50   !!   'key_orca_r05'  :                          global ocean : ORCA R05
51   !!---------------------------------------------------------------------
52#             include "par_ORCA_R05.h90"
53#elif defined key_orca_r025
54   !!---------------------------------------------------------------------
55   !!   'key_orca_r025' :                         global ocean : ORCA R025
56   !!---------------------------------------------------------------------
57#             include "par_ORCA_R025.h90"
58#elif defined key_eel_r2
59   !!---------------------------------------------------------------------
60   !!   'key_eel_r2'    :                                 channel : EEL R2
61   !!---------------------------------------------------------------------
62#             include "par_EEL_R2.h90"
63#elif defined key_eel_r5
64   !!---------------------------------------------------------------------
65   !!   'key_eel_r5'    :                                 channel : EEL R5
66   !!---------------------------------------------------------------------
67#             include "par_EEL_R5.h90"
68#elif defined key_eel_r6
69   !!---------------------------------------------------------------------
70   !!   'key_eel_r6'    :                                 channel : EEL R6
71   !!---------------------------------------------------------------------
72#             include "par_EEL_R6.h90"
73#elif defined key_gyre
74   !!---------------------------------------------------------------------
75   !!   'key_gyre'      :                        mid-latitude basin : GYRE
76   !!---------------------------------------------------------------------
77#             include "par_GYRE.h90"
78#elif defined key_pomme_r025
79   !!---------------------------------------------------------------------
80   !!   'key_pomme_r025':                        regional basin : POMME025
81   !!---------------------------------------------------------------------
82#             include "par_POMME_R025.h90"
83#elif defined key_amm_12km
84   !!---------------------------------------------------------------------
85   !!   'key_amm_12km':                    Atlantic Margin Model : AMM12km
86   !!---------------------------------------------------------------------
87#             include "par_AMM_12km.h90"
88#elif defined key_trop075
89   !!---------------------------------------------------------------------
90   !!   'key_trop075' :             regional basin : Tropical Channel R075
91   !!---------------------------------------------------------------------
92#             include "par_TROP075.h90"
93#elif defined key_trop025
94   !!---------------------------------------------------------------------
95   !!   'key_trop025' :             regional basin : Tropical Channel R025
96   !!---------------------------------------------------------------------
97#             include "par_TROP025.h90"
98#elif defined key_trop12
99   !!---------------------------------------------------------------------
100   !!   'key_trop12' :                          Tropical Periodic : TROP12
101   !!---------------------------------------------------------------------
102#             include "par_TROP12.h90"
103#elif defined key_bb12
104   !!---------------------------------------------------------------------
105   !!   'key_bb12'      :                   regional basin : bay of bengal
106   !!---------------------------------------------------------------------
107#             include "par_BB12.h90"
108#elif defined key_peru12
109   !!---------------------------------------------------------------------
110   !!   'key_peru12'      :                    regional basin : Peru/Chile
111   !!---------------------------------------------------------------------
112#             include "par_PERU12.h90"
113#elif defined key_narc025
114   !!---------------------------------------------------------------------
115   !!   'key_narc025' :               regional basin : North Atlantic R025
116   !!---------------------------------------------------------------------
117#             include "par_NARC025.h90"
118#else
119   !!---------------------------------------------------------------------
120   !!   default option  :                               small closed basin
121   !!---------------------------------------------------------------------
122   CHARACTER(len=16), PUBLIC, PARAMETER ::   cp_cfg = "default"   !: name of the configuration
123   INTEGER          , PUBLIC, PARAMETER ::   jp_cfg = 0           !: resolution of the configuration
124
125   ! data size                                       !!! * size of all input files *
126   INTEGER, PUBLIC, PARAMETER ::   jpidta  = 10       !: 1st lateral dimension ( >= jpi )
127   INTEGER, PUBLIC, PARAMETER ::   jpjdta  = 12       !: 2nd    "         "    ( >= jpj )
128   INTEGER, PUBLIC, PARAMETER ::   jpkdta  = 31       !: number of levels      ( >= jpk )
129
130   ! global or zoom domain size                      !!! * computational domain *
131   INTEGER, PUBLIC, PARAMETER ::   jpiglo  = jpidta   !: 1st dimension of global domain --> i
132   INTEGER, PUBLIC, PARAMETER ::   jpjglo  = jpjdta   !: 2nd    -                  -    --> j
133
134   ! zoom starting position
135   INTEGER, PUBLIC, PARAMETER ::   jpizoom =   1      !: left bottom (i,j) indices of the zoom
136   INTEGER, PUBLIC, PARAMETER ::   jpjzoom =   1      !: in data domain indices
137
138   ! Domain characteristics
139   INTEGER, PUBLIC, PARAMETER ::   jperio  =  0       !: lateral cond. type (between 0 and 6)
140   !                                                  !  = 0 closed                 ;   = 1 cyclic East-West
141   !                                                  !  = 2 equatorial symmetric   ;   = 3 North fold T-point pivot
142   !                                                  !  = 4 cyclic East-West AND North fold T-point pivot
143   !                                                  !  = 5 North fold F-point pivot
144   !                                                  !  = 6 cyclic East-West AND North fold F-point pivot
145
146   !!  Values set to pp_not_used indicates that this parameter is not used in THIS config.
147   !!  Values set to pp_to_be_computed  indicates that variables will be computed in domzgr
148   REAL(wp), PUBLIC, PARAMETER ::   pp_not_used       = 999999._wp   !: vertical grid parameter
149   REAL(wp), PUBLIC, PARAMETER ::   pp_to_be_computed = 999999._wp   !:    -      -       -
150
151
152   !! Horizontal grid parameters for domhgr
153   !! =====================================
154   INTEGER, PUBLIC, PARAMETER  ::   jphgr_msh = 0   !: type of horizontal mesh
155   !                                                !  = 0 curvilinear coordinate on the sphere read in coordinate.nc
156   !                                                !  = 1 geographical mesh on the sphere with regular grid-spacing
157   !                                                !  = 2 f-plane with regular grid-spacing
158   !                                                !  = 3 beta-plane with regular grid-spacing
159   !                                                !  = 4 Mercator grid with T/U point at the equator
160
161   REAL(wp) , PUBLIC, PARAMETER ::   ppglam0  =    0.0_wp   !: longitude of first raw and column T-point (jphgr_msh = 1)
162   REAL(wp) , PUBLIC, PARAMETER ::   ppgphi0  =  -35.0_wp   !: latitude  of first raw and column T-point (jphgr_msh = 1)
163   !                                                        !  used for Coriolis & Beta parameters (jphgr_msh = 2 or 3)
164   REAL(wp) , PUBLIC, PARAMETER ::   ppe1_deg =    1.0_wp   !: zonal      grid-spacing (degrees)
165   REAL(wp) , PUBLIC, PARAMETER ::   ppe2_deg =    0.5_wp   !: meridional grid-spacing (degrees)
166   REAL(wp) , PUBLIC, PARAMETER ::   ppe1_m   = 5000.0_wp   !: zonal      grid-spacing (degrees)
167   REAL(wp) , PUBLIC, PARAMETER ::   ppe2_m   = 5000.0_wp   !: meridional grid-spacing (degrees)
168
169   !! Vertical grid parameter for domzgr
170   !! ==================================
171   REAL(wp), PUBLIC, PARAMETER ::   ppsur = -4762.96143546300_wp   !: ORCA r4, r2 and r05 coefficients
172   REAL(wp), PUBLIC, PARAMETER ::   ppa0  =   255.58049070440_wp   !: (default coefficients)
173   REAL(wp), PUBLIC, PARAMETER ::   ppa1  =   245.58132232490_wp   !:
174   REAL(wp), PUBLIC, PARAMETER ::   ppkth =    21.43336197938_wp   !:
175   REAL(wp), PUBLIC, PARAMETER ::   ppacr =     3.00000000000_wp   !:
176   !
177   !  If both ppa0 ppa1 and ppsur are specified to 0, then
178   !  they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr
179   REAL(wp), PUBLIC, PARAMETER ::   ppdzmin = 10._wp     !: Minimum vertical spacing
180   REAL(wp), PUBLIC, PARAMETER ::   pphmax  = 5000._wp   !: Maximum depth
181   !
182   LOGICAL , PUBLIC, PARAMETER ::   ldbletanh = .TRUE.   !: Use/do not use double tanf function for vertical coordinates
183   REAL(wp), PUBLIC, PARAMETER ::   ppa2  =   100.760928500000_wp   !: Double tanh function parameters
184   REAL(wp), PUBLIC, PARAMETER ::   ppkth2=    48.029893720000_wp   !:
185   REAL(wp), PUBLIC, PARAMETER ::   ppacr2=    13.000000000000_wp   !:
186   !
187#endif
188
189
190   !!---------------------------------------------------------------------
191   !! Active tracer parameters
192   !!---------------------------------------------------------------------
193   INTEGER, PUBLIC, PARAMETER ::   jpts   = 2    !: Number of active tracers (=2, i.e. T & S )
194   INTEGER, PUBLIC, PARAMETER ::   jp_tem = 1    !: indice for temperature
195   INTEGER, PUBLIC, PARAMETER ::   jp_sal = 2    !: indice for salinity
196
197   !!---------------------------------------------------------------------
198   !! Domain Matrix size  (if AGRIF, they are not all parameters)
199   !!---------------------------------------------------------------------
200#if defined key_agrif
201   INTEGER, PUBLIC, PARAMETER ::   nbghostcells = 1                             !: number of ghost cells
202   INTEGER, PUBLIC            ::   nbcellsx     = jpiglo - 2 - 2*nbghostcells   !: number of cells in i-direction
203   INTEGER, PUBLIC            ::   nbcellsy     = jpjglo - 2 - 2*nbghostcells   !: number of cells in j-direction
204   !
205#endif
206   INTEGER, PUBLIC  ::   jpi   ! = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci   !: first  dimension
207   INTEGER, PUBLIC  ::   jpj   ! = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj   !: second dimension
208   INTEGER, PUBLIC  ::   jpk   ! = jpkdta
209   INTEGER, PUBLIC  ::   jpim1 ! = jpi-1                                            !: inner domain indices
210   INTEGER, PUBLIC  ::   jpjm1 ! = jpj-1                                            !:   -     -      -
211   INTEGER, PUBLIC  ::   jpkm1 ! = jpk-1                                            !:   -     -      -
212   INTEGER, PUBLIC  ::   jpij  ! = jpi*jpj                                          !:  jpi x jpj
213
214   !!---------------------------------------------------------------------
215   !! Optimization/control flags
216   !!---------------------------------------------------------------------
217#if defined key_esopa
218   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .TRUE.   !: flag to activate the all options
219#else
220   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .FALSE.  !: flag to activate the all options
221#endif
222
223#if defined key_vectopt_loop
224   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .TRUE.   !: vector optimization flag
225#else
226   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .FALSE.  !: vector optimization flag
227#endif
228
229   !!----------------------------------------------------------------------
230   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
231   !! $Id: par_oce.F90 3294 2012-01-28 16:44:18Z rblod $
232   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
233   !!======================================================================
234END MODULE par_oce
Note: See TracBrowser for help on using the repository browser.