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 778 for branches/dev_001_GM/NEMO/OPA_SRC/par_oce.F90 – NEMO

Ignore:
Timestamp:
2007-12-22T11:30:56+01:00 (16 years ago)
Author:
gm
Message:

dev_001_GM - par_oce evolution: suppress the par_...h90 and create new module for all ocean configuration -compilation OK

File:
1 edited

Legend:

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

    r719 r778  
    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 
     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 
    109   !!---------------------------------------------------------------------- 
    11    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    12    !! $Header$  
    13    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
     10   !! NEMO/OPA 2.4 , LOCEAN-IPSL (2007)  
     11   !! $Id:$  
     12   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    1413   !!---------------------------------------------------------------------- 
    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) 
    1724 
    1825   IMPLICIT NONE 
    1926   PUBLIC 
    2027 
    21    !!---------------------------------------------------------------------- 
    22    !!   Domain decomposition 
    23    !!---------------------------------------------------------------------- 
    24    !! * if we dont use massively parallel computer (parameters jpni=jpnj=1) 
    25    !!      so jpiglo=jpi and jpjglo=jpj 
    26  
    27 #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  
    46  
    47    !! Ocean Domain sizes 
    48    !! ------------------ 
    49    !!   data           domain   (jpidta,jpjdta) 
    50    !!   global or zoom domain   (jpiglo,jpjglo) 
    51    !!   local          domain   ( jpi  , jpj  ) 
    52     
    53 #if   defined key_orca_r4 
    5428   !!--------------------------------------------------------------------- 
    55    !!   'key_orca_r4'   :                           global ocean : ORCA R4 
     29   !! Extra halos for mpp computing  
    5630   !!--------------------------------------------------------------------- 
    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  
    19135 
    19236#if defined key_agrif 
    19337   !!--------------------------------------------------------------------- 
    194    !! Agrif variables 
     38   !!   'key_agrif'   :                                              AGRIF 
    19539   !!--------------------------------------------------------------------- 
    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) 
    19945#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 
    20076   !!--------------------------------------------------------------------- 
    20177   !! Optimization/control flags 
     
    20682   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .FALSE.  !: flag to activate the all options 
    20783#endif 
    208  
    20984#if defined key_vectopt_memory 
    21085   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .TRUE.   !: vector optimization flag 
     
    21287   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .FALSE.  !: vector optimization flag 
    21388#endif 
    214  
    21589#if defined key_vectopt_loop 
    21690   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .TRUE.   !: vector optimization flag 
     
    21892   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .FALSE.  !: vector optimization flag 
    21993#endif 
    220  
    22194#if defined key_mpp_omp 
    22295   LOGICAL, PUBLIC, PARAMETER ::   lk_jki = .TRUE.   !: j-k-i loop flag 
Note: See TracChangeset for help on using the changeset viewer.