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_gyre.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 moved

Legend:

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

    r772 r778  
    1    !!--------------------------------------------------------------------- 
    2    !!                     ***  par_GYRE.h90  *** 
    3    !!   Ocean Domain : GYRE configuration at 1/jp_cfg degree resolution  
    4    !!--------------------------------------------------------------------- 
     1MODULE par_gyre 
     2   !!====================================================================== 
     3   !!                        ***  par_gyre  *** 
     4   !! Ocean Domain parameter : rotated square bassin on a beta-plane at 1/jp_cfg  
     5   !!    degree resolution (GYRE configuration) and a 1D configuration case 
     6   !!    NB: with AGRIF, values are not set as parameters 
     7   !!====================================================================== 
     8   !! History :   9.0  !  2007-11  (G. Madec)  Original code from par_GYRE.h90 
    59   !!---------------------------------------------------------------------- 
    6    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    7    !! $Header$  
    8    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     10   !! NEMO/OPA 2.4 , LOCEAN-IPSL (2007)  
     11   !! $Header: $  
     12   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    913   !!---------------------------------------------------------------------- 
    10    CHARACTER (len=16)      & 
    11 #if !defined key_agrif 
    12       , PARAMETER  & 
    13 #endif 
    14       ::    &   
    15       cp_cfg = "gyre"           !: name of the configuration 
    16    INTEGER     & 
    17 #if !defined key_agrif 
    18       , PARAMETER  & 
    19 #endif 
    20       :: & 
    21       jp_cfg =  1   ,        &  !:  
     14#if defined key_gyre 
     15   !!---------------------------------------------------------------------- 
     16   !!   'key_gyre'   :                                   GYRE configuration 
     17   !!---------------------------------------------------------------------- 
     18   USE par_kind          ! kind parameters 
    2219 
    23       ! data size              !!! * size of all the input files * 
    24       jpidta  = 30*jp_cfg+2, &  !: 1st horizontal dimension ( >= jpi ) 
    25       jpjdta  = 20*jp_cfg+2, &  !: 2nd    "            "    ( >= jpj ) 
    26       jpkdta  = 31,          &  !: number of levels         ( >= jpk ) 
     20   IMPLICIT NONE 
     21   PUBLIC 
    2722 
    28       ! global domain size     !!! * full domain * 
    29       jpiglo  = jpidta,      &  !: 1st dimension of global domain --> i 
    30       jpjglo  = jpjdta,      &  !: 2nd    "                  "    --> j 
    31       jpk     = jpkdta,      &  !: number of vertical levels 
    32       ! zoom starting position 
    33       jpizoom =   1   ,      &  !: left bottom (i,j) indices of the zoom 
    34       jpjzoom =   1   ,      &  !: in data indices 
     23# if defined key_agrif 
     24   !------!!-------------------------------------------------------------- 
     25   !      !!   'key_agrif'   :                                       AGRIF  
     26   !------!!-------------------------------------------------------------- 
    3527 
    36       ! Domain characteristics 
    37       jperio  =     0 ,      &  !: lateral cond. type (between 0 and 6) 
    38       jpisl   =     1 ,      &  !: number of islands 
    39       jpnisl  = jpiglo          !: maximum number of points per island 
     28   ! Configuration, and domain size are not assigned to a parameter value 
     29   !    as they are different in mother and children models 
     30   INTEGER ::   cp_cfg, jp_cfg                          !: configuration id       (AGRIF case) 
     31   INTEGER ::   jpidta, jpjdta, jpkdta                  !: input data size        (AGRIF case) 
     32   INTEGER ::   jpiglo, jpjglo, jpk, jpizoom, jpjzoom   !: domain size and zoom   (AGRIF case) 
     33   INTEGER ::   jperio, jpisl, jpnisl                   !: domain characteristics (AGRIF case) 
    4034 
    41    !!  Values set to pp_not_used indicates that this parameter is not used in THIS config. 
    42    !!  Values set to pp_to_be_computed  indicates that variables will be computed in domzgr 
    43    REAL(wp), PARAMETER ::   &  !: 
    44       pp_not_used       = 999999._wp  , & !: ??? 
    45       pp_to_be_computed =      0._wp      !: ??? 
    46    !! 
    47    !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 
    48    !! 
    49    INTEGER,PARAMETER   ::    & !: 
    50       jphgr_msh = 5            !: type of horizontal mesh 
    51       !                        ! = 0 curvilinear coordinate on the sphere 
    52       !                        !     read in coordinate.nc file 
    53       !                        ! = 1 geographical mesh on the sphere 
    54       !                        !     with regular grid-spacing 
    55       !                        ! = 2 f-plane with regular grid-spacing 
    56       !                        ! = 3 beta-plane with regular grid-spacing 
    57       !                        ! = 4 Mercator grid with T/U point at the equator  with 
    58       !                        !     isotropic resolution (e1_deg) 
    59       !                        ! =5  beta-plane with regular grid-spacing and rotated domain (GYRE configuration) 
     35# else 
     36   !------!!-------------------------------------------------------------- 
     37   !      !!   Default       :                  no AGRIF: model parameters 
     38   !------!!-------------------------------------------------------------- 
    6039 
    61       !   ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 
    62       !   The mercator grid starts only approximately at gphi0 because 
    63       !   of the constraint that the equator be a T point. 
    64    REAL(wp) & 
    65 #if !defined key_agrif 
    66       , PARAMETER  & 
    67 #endif 
    68       ::     &  !: 
    69       ppglam0  =    0.0_wp,   &  !: longitude of first raw and column T-point (jphgr_msh = 1) 
    70       ppgphi0  =   29.0_wp,   &  !: latitude  of first raw and column T-point (jphgr_msh = 1) 
    71       !                          ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 
    72       ppe1_deg = pp_not_used ,   &  !: zonal      grid-spacing (degrees) 
    73       ppe2_deg = pp_not_used ,   &  !: meridional grid-spacing (degrees) 
    74       ! 
    75       ppe1_m   = pp_not_used,    &  !: zonal      grid-spacing (meters ) 
    76       ppe2_m   = pp_not_used        !: meridional grid-spacing (meters ) 
    77    !! 
    78    !!  Coefficients associated with the vertical coordinate system 
    79    !! 
     40   ! Configuration name and resolution                 !!! *  GYRE  * 
     41   CHARACTER (len=16), PARAMETER ::   cp_cfg = "gyre"   !: name of the configuration  
     42   INTEGER, PARAMETER            ::   jp_cfg = 1        !: resolution of the configuration (degrees) 
     43   !                                                    !  control the size of GYRE configurations 
    8044 
    81    REAL(wp), PARAMETER  ::       &  !: 
    82       &     ppsur = -2033.194295283385_wp   ,  &  !:  
    83       &     ppa0  =  155.8325369664153_wp   ,  &  !: 
    84       &     ppa1  =  146.3615918601890_wp   ,  &  !: 
    85       ! 
    86       &     ppkth =  17.28520372419791_wp   ,  &  !: (non dimensional): gives the approximate 
    87       !                                           !    layer number above which  stretching will 
    88       !                                           !    be maximum. Usually of order jpk/2. 
    89       &     ppacr =  5.000000000000000_wp         !: (non dimensional): stretching factor 
    90       !                                           !    for the grid. The highest zacr, the smallest 
    91       !                                           !    the stretching. 
     45   ! input data size                                   !!! *  size of all input files  * 
     46   INTEGER, PARAMETER ::   jpidta  = 30 * jp_cfg + 2    !: 1st lateral dimension ( >= jpiglo ) 
     47   INTEGER, PARAMETER ::   jpjdta  = 20 * jp_cfg + 2    !: 2nd    "       "      ( >= jpjglo ) 
     48   INTEGER, PARAMETER ::   jpkdta  = 31                 !: number of levels      ( >= jpk    )  
    9249 
    93    !! 
    94    !!  If all ppa0 ppa1 and ppsur are specified to 0, then 
    95    !!  they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 
    96    !! 
    97    REAL(wp), PARAMETER ::        &  !: 
    98       &     ppdzmin = pp_not_used   ,  &  !: (meters): depth of the top (first) model layer 
    99       !                             !            depth of second "w" level 
    100       &     pphmax  = pp_not_used         !: (meters): maximum depth of the ocean 
    101       !                             !            depth of the last "w" level 
     50#  if defined key_cfg_1d 
     51   !------------!!-------------------------------------------------------- 
     52   !            !!   'key_cfg_1d' :             1D configuration of MY_CFG 
     53   !------------!!-------------------------------------------------------- 
     54   ! global domain size                                 !!! *  1D configuration  * 
     55   INTEGER, PARAMETER ::   jpiglo  = 3                   !: 1st dimension of global domain --> i 
     56   INTEGER, PARAMETER ::   jpjglo  = 3                   !: 2nd    "                  "    --> j 
     57   INTEGER, PARAMETER ::   jpk     = jpkdta              !: number of vertical levels 
     58   ! starting position of the zoom  
     59   INTEGER, PARAMETER ::   jpizoom =   16                !: left bottom (i,j) indices of the zoom 
     60   INTEGER, PARAMETER ::   jpjzoom =   11                !: in data domain indices 
     61   ! Domain characteristics 
     62   INTEGER, PARAMETER ::   jperio  =   0                 !: lateral cond. type (between 0 and 6) 
     63   INTEGER, PARAMETER ::   jpisl   =   0                 !: number of islands 
     64   INTEGER, PARAMETER ::   jpnisl  =   0                 !: maximum number of points per island 
     65 
     66#  else 
     67   !------------!!-------------------------------------------------------- 
     68   !            !!   Default :                  Full global domain of GYRE 
     69   !------------!!-------------------------------------------------------- 
     70   ! global domain size                                !!! *  global domain  * 
     71   INTEGER, PARAMETER ::   jpiglo  = jpidta             !: 1st dimension of global domain --> i 
     72   INTEGER, PARAMETER ::   jpjglo  = jpjdta             !: 2nd    "                  "    --> j 
     73   INTEGER, PARAMETER ::   jpk     = jpkdta             !: number of vertical levels 
     74   ! starting position of the zoom  
     75   INTEGER, PARAMETER ::   jpizoom =   1                !: left bottom (i,j) indices of the zoom 
     76   INTEGER, PARAMETER ::   jpjzoom =   1                !: in data domain indices 
     77   ! Domain characteristics 
     78   INTEGER, PARAMETER ::   jperio  =   0                !: lateral cond. type (between 0 and 6) 
     79   INTEGER, PARAMETER ::   jpisl   =   1                !: number of islands 
     80   INTEGER, PARAMETER ::   jpnisl  =   1                !: maximum number of points per island 
     81#  endif 
     82 
     83# endif 
    10284 
    10385   !!--------------------------------------------------------------------- 
     86   !! grid parameters for domhgr and domzgr 
     87   !!--------------------------------------------------------------------- 
     88   ! Values set to pp_not_used indicates that this parameter is not used in THIS config. 
     89   ! Values set to pp_to_be_computed  indicates that variables will be computed in domzgr 
     90   REAL(wp), PARAMETER ::   pp_not_used       = 999999_wp   !: default value for "not used" 
     91   REAL(wp), PARAMETER ::   pp_to_be_computed = 0._wp       !: default value for "to be computed" 
     92 
     93   ! horizontal mesh (domhgr) 
     94   !    Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 
     95   INTEGER, PARAMETER ::   jphgr_msh = 5   !: type of horizontal mesh 
     96   !                                       !  = 5  beta-plane with regular grid-spacing and rotated domain 
     97 
     98   !   ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 
     99   !   The mercator grid starts only approximately at gphi0 because 
     100   !   of the constraint that the equator be a T point. 
     101   REAL(wp) ,PARAMETER ::   ppglam0  =    0.0_wp     !: longitude of first raw and column T-point (jphgr_msh=1) 
     102   REAL(wp) ,PARAMETER ::   ppgphi0  =   29.0_wp     !: latitude  of first raw and column T-point (jphgr_msh=1) 
     103   !                                                 !  latitude  of the Coriolis/Beta parameter  (jphgr_msh=2 or 3) 
     104   REAL(wp) ,PARAMETER ::   ppe1_deg = pp_not_used   !: zonal      grid-spacing (degrees) 
     105   REAL(wp) ,PARAMETER ::   ppe2_deg = pp_not_used   !: meridional grid-spacing (degrees) 
     106   ! 
     107   REAL(wp) ,PARAMETER ::   ppe1_m   = pp_not_used   !: zonal      grid-spacing (meters ) 
     108   REAL(wp) ,PARAMETER ::   ppe2_m   = pp_not_used   !: meridional grid-spacing (meters ) 
     109 
     110   ! Vertical mesh (domzgr) 
     111   !    parameter used in the analytical function defining the repartition of the level and their thickness 
     112   REAL(wp), PARAMETER ::   ppsur = -2033.194295283385_wp     !: GYRE coefficients 
     113   REAL(wp), PARAMETER ::   ppa0  =   155.8325369664153_wp    !: 
     114   REAL(wp), PARAMETER ::   ppa1  =   146.3615918601890_wp    !: 
     115   REAL(wp), PARAMETER ::   ppkth =    17.28520372419791_wp   !: (non dimensional): gives the approximate 
     116   !                                                          !: layer number above which  stretching will 
     117   !                                                          !: be maximum. Usually of order jpk/2. 
     118   REAL(wp), PARAMETER ::   ppacr =     5.00000000000_wp      !: (non dimensional): stretching factor 
     119   !                                                          !: for the grid. The highest zacr, the smallest 
     120   !                                                          !: the stretching. 
     121   !  If both ppa0 ppa1 and ppsur are specified to 0, then 
     122   !  they are computed from ppdzmin, pphmax, ppkth, ppacr in dom_zgr 
     123   REAL(wp), PARAMETER ::   ppdzmin = pp_not_used   !: vertical thickness of the top layer   [meters] 
     124   REAL(wp), PARAMETER ::   pphmax  = pp_not_used   !: maximum depth of the ocean gdepw(jpk) [meters] 
     125 
     126#else 
     127   !!--------------------------------------------------------------------- 
     128   !!   default option  :                                     Empty module 
     129   !!--------------------------------------------------------------------- 
     130#endif 
     131 
     132   !!====================================================================== 
     133END MODULE par_gyre 
Note: See TracChangeset for help on using the changeset viewer.