Changeset 778 for branches/dev_001_GM/NEMO/OPA_SRC/par_oce.F90
- Timestamp:
- 2007-12-22T11:30:56+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_GM/NEMO/OPA_SRC/par_oce.F90
r719 r778 4 4 !! Ocean : set the ocean parameters 5 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 6 !! History : - ! 1991 (Imbard, Levy, Madec) Original code 7 !! 1.0 ! 2004-01 (G. Madec, J.-M. Molines) Free form and module 8 !! 2.4 ! 2007-11 (G. Madec) Suppress .h90 + style with AGRIF 10 9 !!---------------------------------------------------------------------- 11 !! OPA 9.0 , LOCEAN-IPSL (2005)12 !! $ Header$13 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt10 !! NEMO/OPA 2.4 , LOCEAN-IPSL (2007) 11 !! $Id:$ 12 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 14 13 !!---------------------------------------------------------------------- 15 !! * Modules used 16 USE par_kind ! kind parameters 14 USE par_kind ! kind parameters 15 USE par_orca_r4 ! ORCA R4 configuration 16 USE par_orca_r2 ! ORCA R2 configuration (including 1D or arctic/antarctic zoom) 17 USE par_orca_r05 ! ORCA R05 configuration (including 1D or arctic/antarctic zoom) 18 USE par_orca_r025 ! ORCA R025 configuration (including 1D or arctic/antarctic zoom) 19 USE par_gyre ! GYRE configuration 20 USE par_eel_r2 ! GYRE R2 configuration 21 USE par_eel_r5 ! GYRE R5 configuration 22 USE par_eel_r6 ! GYRE R6 configuration 23 USE par_my_cfg ! MY_CFG user defined configuration (including 1D) 17 24 18 25 IMPLICIT NONE 19 26 PUBLIC 20 27 21 !!----------------------------------------------------------------------22 !! Domain decomposition23 !!----------------------------------------------------------------------24 !! * if we dont use massively parallel computer (parameters jpni=jpnj=1)25 !! so jpiglo=jpi and jpjglo=jpj26 27 #if ! defined key_mpp_dyndist28 INTEGER, PUBLIC, PARAMETER :: & !:29 jpni = 1, & !: number of processors following i30 jpnj = 1, & !: number of processors following j31 jpnij = 1 !: nb of local domain = nb of processors32 ! ! ( <= jpni x jpnj )33 #else34 INTEGER, PUBLIC :: & !35 jpni , & !: number of processors following i36 jpnj , & !: number of processors following j37 jpnij !: nb of local domain = nb of processors38 ! ! ( <= jpni x jpnj )39 #endif40 41 INTEGER, PUBLIC, PARAMETER :: & !:42 jpr2di = 0, & !: number of columns for extra outer halo43 jpr2dj = 0, & !: number of rows for extra outer halo44 jpreci = 1, & !: number of columns for overlap45 jprecj = 1 !: number of rows for overlap46 47 !! Ocean Domain sizes48 !! ------------------49 !! data domain (jpidta,jpjdta)50 !! global or zoom domain (jpiglo,jpjglo)51 !! local domain ( jpi , jpj )52 53 #if defined key_orca_r454 28 !!--------------------------------------------------------------------- 55 !! 'key_orca_r4' : global ocean : ORCA R429 !! Extra halos for mpp computing 56 30 !!--------------------------------------------------------------------- 57 # include "par_ORCA_R4.h90" 58 #elif defined key_orca_r2 59 !!--------------------------------------------------------------------- 60 !! 'key_orca_r2' : global ocean : ORCA R4 61 !!--------------------------------------------------------------------- 62 # include "par_ORCA_R2.h90" 63 #elif defined key_orca_r05 64 !!--------------------------------------------------------------------- 65 !! 'key_orca_r05' : global ocean : ORCA R05 66 !!--------------------------------------------------------------------- 67 # include "par_ORCA_R05.h90" 68 #elif defined key_orca_r025 69 !!--------------------------------------------------------------------- 70 !! 'key_orca_r025' : global ocean : ORCA R025 71 !!--------------------------------------------------------------------- 72 # include "par_ORCA_R025.h90" 73 #elif defined key_eel_r2 74 !!--------------------------------------------------------------------- 75 !! 'key_eel_r2' : channel : EEL R2 76 !!--------------------------------------------------------------------- 77 # include "par_EEL_R2.h90" 78 #elif defined key_eel_r5 79 !!--------------------------------------------------------------------- 80 !! 'key_eel_r5' : channel : EEL R5 81 !!--------------------------------------------------------------------- 82 # include "par_EEL_R5.h90" 83 #elif defined key_eel_r6 84 !!--------------------------------------------------------------------- 85 !! 'key_eel_r6' : channel : EEL R6 86 !!--------------------------------------------------------------------- 87 # include "par_EEL_R6.h90" 88 #elif defined key_gyre 89 !!--------------------------------------------------------------------- 90 !! 'key_gyre' : mid-latitude basin : GYRE 91 !!--------------------------------------------------------------------- 92 # include "par_GYRE.h90" 93 #else 94 !!--------------------------------------------------------------------- 95 !! default option : small closed basin 96 !!--------------------------------------------------------------------- 97 CHARACTER(len=16), PUBLIC, PARAMETER :: & !: 98 cp_cfg = "default" !: name of the configuration 99 INTEGER, PARAMETER :: & !: 100 jp_cfg = 0 , & !: resolution of the configuration 101 102 ! data size !!! * size of all input files * 103 jpidta = 10, & !: 1st lateral dimension ( >= jpi ) 104 jpjdta = 12, & !: 2nd " " ( >= jpj ) 105 jpkdta = 31, & !: number of levels ( >= jpk ) 106 107 ! global or zoom domain size !!! * computational domain * 108 jpiglo = jpidta, & !: 1st dimension of global domain --> i 109 jpjglo = jpjdta, & !: 2nd " " --> j 110 jpk = jpkdta, & !: number of vertical levels 111 ! zoom starting position 112 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom 113 jpjzoom = 1 , & !: in data domain indices 114 115 ! Domain characteristics 116 jperio = 0, & !: lateral cond. type (between 0 and 6) 117 ! ! = 0 closed 118 ! ! = 1 cyclic East-West 119 ! ! = 2 equatorial symmetric 120 ! ! = 3 North fold T-point pivot 121 ! ! = 4 cyclic East-West AND North fold T-point pivot 122 ! ! = 5 North fold F-point pivot 123 ! ! = 6 cyclic East-West AND North fold F-point pivot 124 jpisl = 0, & !: number of islands (rigid-lid only) 125 jpnisl = 0 !: maximum number of points per island 126 127 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 128 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 129 REAL(wp), PARAMETER :: & !: 130 pp_not_used = 999999._wp , & !: 131 pp_to_be_computed = 999999._wp !: 132 133 134 !! Horizontal grid parameters for domhgr 135 !! ===================================== 136 137 INTEGER, PUBLIC, PARAMETER :: & !: 138 jphgr_msh = 0 !: type of horizontal mesh 139 ! ! = 0 curvilinear coordinate on the sphere 140 ! ! read in coordinate.nc file 141 ! ! = 1 geographical mesh on the sphere 142 ! ! with regular grid-spacing 143 ! ! = 2 f-plane with regular grid-spacing 144 ! ! = 3 beta-plane with regular grid-spacing 145 ! ! = 4 Mercator grid with T/U point at the equator with 146 ! ! isotropic resolution (e1_deg) 147 148 REAL(wp) , PUBLIC, PARAMETER :: & !: 149 ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point (jphgr_msh = 1) 150 ppgphi0 = -35.0_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) 151 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 152 ppe1_deg = 1.0_wp, & !: zonal grid-spacing (degrees) 153 ppe2_deg = 0.5_wp, & !: meridional grid-spacing (degrees) 154 ppe1_m = 5000.0_wp, & !: zonal grid-spacing (degrees) 155 ppe2_m = 5000.0_wp !: meridional grid-spacing (degrees) 156 157 !! Vertical grid parameter for domzgr 158 !! ================================== 159 160 REAL(wp), PUBLIC, PARAMETER :: & !: 161 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 162 & ppa0 = 255.58049070440_wp , & !: (default coefficients) 163 & ppa1 = 245.58132232490_wp , & !: 164 & ppkth = 21.43336197938_wp , & !: 165 & ppacr = 3.00000000000_wp !: 166 167 !! If both ppa0 ppa1 and ppsur are specified to 0, then 168 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 169 170 REAL(wp), PUBLIC, PARAMETER :: & !: 171 & ppdzmin = 10._wp , & !: Minimum vertical spacing 172 & pphmax = 5000._wp !: Maximum depth 173 174 !!--------------------------------------------------------------------- 175 #endif 176 177 !!--------------------------------------------------------------------- 178 !! Domain Matrix size 179 !!--------------------------------------------------------------------- 180 INTEGER & !: 181 #if !defined key_agrif 182 ,PARAMETER & 183 #endif 184 :: & 185 jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci , & !: first dimension 186 jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj , & !: second dimension 187 jpim1 = jpi-1, & !: inner domain indices 188 jpjm1 = jpj-1, & !: " " 189 jpkm1 = jpk-1, & !: " " 190 jpij = jpi*jpj !: jpi x jpj 31 INTEGER, PUBLIC, PARAMETER :: jpr2di = 0 !: number of columns for extra outer halo (solsor only) 32 INTEGER, PUBLIC, PARAMETER :: jpr2dj = 0 !: number of rows for extra outer halo (solsor only) 33 INTEGER, PUBLIC, PARAMETER :: jpreci = 1 !: number of columns for overlap 34 INTEGER, PUBLIC, PARAMETER :: jprecj = 1 !: number of rows for overlap 191 35 192 36 #if defined key_agrif 193 37 !!--------------------------------------------------------------------- 194 !! Agrif variables38 !! 'key_agrif' : AGRIF 195 39 !!--------------------------------------------------------------------- 196 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 197 INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells 198 INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells 40 41 ! Configuration, and domain size are not assigned to a parameter value 42 ! as they are different in mother and children models 43 #if defined key_mpp_dyndist 44 INTEGER, PUBLIC :: jpni, jpnj, jpnij !: domain decomposition (AGRIF case) 199 45 #endif 46 INTEGER, PUBLIC :: jpi, jpj, jpim1, jpjm1, jpkm1, jpij !: local domain size (AGRIF case) 47 48 !! AGRIF ghost cells 49 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 !: ??? 50 INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2 * nbghostcells !: ??? 51 INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2 * nbghostcells !: ??? 52 53 #else 54 !!--------------------------------------------------------------------- 55 !! Default : no AGRIF: model parameters 56 !!--------------------------------------------------------------------- 57 58 ! Domain decomposition (NO massively parallel computer: jpni=jpnj=1 so jpi=jpiglo and jpj=jpjglo) 59 INTEGER, PUBLIC, PARAMETER :: jpni = 1 !: number of processors following i 60 INTEGER, PUBLIC, PARAMETER :: jpnj = 1 !: number of processors following j 61 INTEGER, PUBLIC, PARAMETER :: jpnij = 1 !: nb of local domain = nb of processors ( <= jpni x jpnj ) 62 63 !! Domain Matrix size on each processor 64 !! data domain (jpidta,jpjdta) defined in par_"config name" modules 65 !! global or zoom domain (jpiglo,jpjglo) defined in par_"config name" modules 66 !! local domain ( jpi , jpj ) defined below (= size of the domain on each processor) 67 INTEGER, PARAMETER :: jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci !: first dimension 68 INTEGER, PARAMETER :: jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj !: second dimension 69 INTEGER, PARAMETER :: jpim1 = jpi - 1 !: inner domain indices 70 INTEGER, PARAMETER :: jpjm1 = jpj - 1 !: inner domain indices 71 INTEGER, PARAMETER :: jpkm1 = jpk - 1 !: inner domain indices 72 INTEGER, PARAMETER :: jpij = jpi * jpj !: jpi x jpj 73 #endif 74 75 200 76 !!--------------------------------------------------------------------- 201 77 !! Optimization/control flags … … 206 82 LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .FALSE. !: flag to activate the all options 207 83 #endif 208 209 84 #if defined key_vectopt_memory 210 85 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .TRUE. !: vector optimization flag … … 212 87 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .FALSE. !: vector optimization flag 213 88 #endif 214 215 89 #if defined key_vectopt_loop 216 90 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .TRUE. !: vector optimization flag … … 218 92 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .FALSE. !: vector optimization flag 219 93 #endif 220 221 94 #if defined key_mpp_omp 222 95 LOGICAL, PUBLIC, PARAMETER :: lk_jki = .TRUE. !: j-k-i loop flag
Note: See TracChangeset
for help on using the changeset viewer.