- Timestamp:
- 2010-09-17T14:35:46+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/par_oce.F90
r2025 r2104 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 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 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 !!---------------------------------------------------------------------- 16 10 USE par_kind ! kind parameters 17 11 … … 22 16 !! Domain decomposition 23 17 !!---------------------------------------------------------------------- 24 !! * if we dont use massively parallel computer (parameters jpni=jpnj=1) 25 !! so jpiglo=jpi and jpjglo=jpj 26 18 !! if we dont use massively parallel computer (parameters jpni=jpnj=1) so jpiglo=jpi and jpjglo=jpj 27 19 #if ! defined key_mpp_dyndist 28 INTEGER, PUBLIC, PARAMETER :: & !: 29 jpni = 1, & !: number of processors following i 30 jpnj = 1, & !: number of processors following j 31 jpnij = 1 !: nb of local domain = nb of processors 32 ! ! ( <= jpni x jpnj ) 33 #else 34 INTEGER, PUBLIC :: & ! 35 jpni , & !: number of processors following i 36 jpnj , & !: number of processors following j 37 jpnij !: nb of local domain = nb of processors 38 ! ! ( <= jpni x jpnj ) 39 #endif 40 41 INTEGER, PUBLIC, PARAMETER :: & !: 42 jpr2di = 0, & !: number of columns for extra outer halo 43 jpr2dj = 0, & !: number of rows for extra outer halo 44 jpreci = 1, & !: number of columns for overlap 45 jprecj = 1 !: number of rows for overlap 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 46 32 47 33 !! Ocean Domain sizes … … 100 86 !! default option : small closed basin 101 87 !!--------------------------------------------------------------------- 102 CHARACTER(len=16), PUBLIC, PARAMETER :: & !: 103 cp_cfg = "default" !: name of the configuration 104 INTEGER, PARAMETER :: & !: 105 jp_cfg = 0 , & !: resolution of the configuration 106 107 ! data size !!! * size of all input files * 108 jpidta = 10, & !: 1st lateral dimension ( >= jpi ) 109 jpjdta = 12, & !: 2nd " " ( >= jpj ) 110 jpkdta = 31, & !: number of levels ( >= jpk ) 111 112 ! global or zoom domain size !!! * computational domain * 113 jpiglo = jpidta, & !: 1st dimension of global domain --> i 114 jpjglo = jpjdta, & !: 2nd " " --> j 115 jpk = jpkdta, & !: number of vertical levels 116 ! zoom starting position 117 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom 118 jpjzoom = 1 , & !: in data domain indices 119 120 ! Domain characteristics 121 jperio = 0 !: lateral cond. type (between 0 and 6) 122 ! ! = 0 closed 123 ! ! = 1 cyclic East-West 124 ! ! = 2 equatorial symmetric 125 ! ! = 3 North fold T-point pivot 126 ! ! = 4 cyclic East-West AND North fold T-point pivot 127 ! ! = 5 North fold F-point pivot 128 ! ! = 6 cyclic East-West AND North fold F-point pivot 129 130 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 131 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 132 REAL(wp), PARAMETER :: & !: 133 pp_not_used = 999999._wp , & !: 134 pp_to_be_computed = 999999._wp !: 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 !: - - - 135 116 136 117 137 118 !! Horizontal grid parameters for domhgr 138 119 !! ===================================== 139 140 INTEGER, PUBLIC, PARAMETER :: & !: 141 jphgr_msh = 0 !: type of horizontal mesh 142 ! ! = 0 curvilinear coordinate on the sphere 143 ! ! read in coordinate.nc file 144 ! ! = 1 geographical mesh on the sphere 145 ! ! with regular grid-spacing 146 ! ! = 2 f-plane with regular grid-spacing 147 ! ! = 3 beta-plane with regular grid-spacing 148 ! ! = 4 Mercator grid with T/U point at the equator with 149 ! ! isotropic resolution (e1_deg) 150 151 REAL(wp) , PUBLIC, PARAMETER :: & !: 152 ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point (jphgr_msh = 1) 153 ppgphi0 = -35.0_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) 154 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 155 ppe1_deg = 1.0_wp, & !: zonal grid-spacing (degrees) 156 ppe2_deg = 0.5_wp, & !: meridional grid-spacing (degrees) 157 ppe1_m = 5000.0_wp, & !: zonal grid-spacing (degrees) 158 ppe2_m = 5000.0_wp !: meridional grid-spacing (degrees) 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) 159 134 160 135 !! Vertical grid parameter for domzgr 161 136 !! ================================== 162 163 REAL(wp), PUBLIC, PARAMETER :: & !: 164 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 165 & ppa0 = 255.58049070440_wp , & !: (default coefficients) 166 & ppa1 = 245.58132232490_wp , & !: 167 & ppkth = 21.43336197938_wp , & !: 168 & ppacr = 3.00000000000_wp !: 169 170 !! If both ppa0 ppa1 and ppsur are specified to 0, then 171 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 172 173 REAL(wp), PUBLIC, PARAMETER :: & !: 174 & ppdzmin = 10._wp , & !: Minimum vertical spacing 175 & pphmax = 5000._wp !: Maximum depth 176 177 !!--------------------------------------------------------------------- 178 #endif 179 180 INTEGER, PUBLIC, PARAMETER :: jpts = 2 !: Number of active tracers ( T & S ) 181 INTEGER, PUBLIC, PARAMETER :: jp_tem = 1 !: indice for temperature 182 INTEGER, PUBLIC, PARAMETER :: jp_sal = 2 !: indice for salinity 183 184 !!--------------------------------------------------------------------- 185 !! Domain Matrix size 186 !!--------------------------------------------------------------------- 187 INTEGER & !: 188 #if !defined key_agrif 189 ,PARAMETER & 190 #endif 191 :: & 192 jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci , & !: first dimension 193 jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj , & !: second dimension 194 jpim1 = jpi-1, & !: inner domain indices 195 jpjm1 = jpj-1, & !: " " 196 jpkm1 = jpk-1, & !: " " 197 jpij = jpi*jpj !: jpi x jpj 198 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 !!--------------------------------------------------------------------- 199 161 #if defined key_agrif 200 !!--------------------------------------------------------------------- 201 !! Agrif variables 202 !!--------------------------------------------------------------------- 203 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 204 INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells 205 INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells 206 #endif 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 207 181 !!--------------------------------------------------------------------- 208 182 !! Optimization/control flags … … 214 188 #endif 215 189 216 #if defined key_vectopt_memory217 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .TRUE. !: vector optimization flag218 #else219 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .FALSE. !: vector optimization flag220 #endif221 222 190 #if defined key_vectopt_loop 223 191 LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .TRUE. !: vector optimization flag … … 226 194 #endif 227 195 196 !!---------------------------------------------------------------------- 197 !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010) 198 !! $Id$ 199 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 228 200 !!====================================================================== 229 201 END MODULE par_oce
Note: See TracChangeset
for help on using the changeset viewer.