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.
Changeset 2104 for branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/par_oce.F90 – NEMO

Ignore:
Timestamp:
2010-09-17T14:35:46+02:00 (14 years ago)
Author:
cetlod
Message:

update DEV_r2006_merge_TRA_TRC according to review

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/par_oce.F90

    r2025 r2104  
    44   !! Ocean :   set the ocean parameters 
    55   !!====================================================================== 
    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   !!---------------------------------------------------------------------- 
    1610   USE par_kind          ! kind parameters 
    1711 
     
    2216   !!   Domain decomposition 
    2317   !!---------------------------------------------------------------------- 
    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 
    2719#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  
    4632 
    4733   !! Ocean Domain sizes 
     
    10086   !!   default option  :                               small closed basin 
    10187   !!--------------------------------------------------------------------- 
    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   !:    -      -       - 
    135116 
    136117 
    137118   !! Horizontal grid parameters for domhgr 
    138119   !! ===================================== 
    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) 
    159134 
    160135   !! Vertical grid parameter for domzgr 
    161136   !! ================================== 
    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   !!--------------------------------------------------------------------- 
    199161#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 
    207181   !!--------------------------------------------------------------------- 
    208182   !! Optimization/control flags 
     
    214188#endif 
    215189 
    216 #if defined key_vectopt_memory 
    217    LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .TRUE.   !: vector optimization flag 
    218 #else 
    219    LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .FALSE.  !: vector optimization flag 
    220 #endif 
    221  
    222190#if defined key_vectopt_loop 
    223191   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .TRUE.   !: vector optimization flag 
     
    226194#endif 
    227195 
     196   !!---------------------------------------------------------------------- 
     197   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     198   !! $Id$  
     199   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    228200   !!====================================================================== 
    229201END MODULE par_oce 
Note: See TracChangeset for help on using the changeset viewer.