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

source: branches/dev_001_GM/NEMO/OPA_SRC/par_oce.F90 @ 778

Last change on this file since 778 was 778, checked in by gm, 16 years ago

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

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.4 KB
Line 
1MODULE par_oce
2   !!======================================================================
3   !!                        ***  par_oce  ***
4   !! Ocean :   set the ocean parameters
5   !!======================================================================
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
9   !!----------------------------------------------------------------------
10   !! NEMO/OPA 2.4 , LOCEAN-IPSL (2007)
11   !! $Id:$
12   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
13   !!----------------------------------------------------------------------
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)
24
25   IMPLICIT NONE
26   PUBLIC
27
28   !!---------------------------------------------------------------------
29   !! Extra halos for mpp computing
30   !!---------------------------------------------------------------------
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
35
36#if defined key_agrif
37   !!---------------------------------------------------------------------
38   !!   'key_agrif'   :                                              AGRIF
39   !!---------------------------------------------------------------------
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)
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
76   !!---------------------------------------------------------------------
77   !! Optimization/control flags
78   !!---------------------------------------------------------------------
79#if defined key_esopa
80   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .TRUE.   !: flag to activate the all options
81#else
82   LOGICAL, PUBLIC, PARAMETER ::   lk_esopa     = .FALSE.  !: flag to activate the all options
83#endif
84#if defined key_vectopt_memory
85   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .TRUE.   !: vector optimization flag
86#else
87   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_mem  = .FALSE.  !: vector optimization flag
88#endif
89#if defined key_vectopt_loop
90   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .TRUE.   !: vector optimization flag
91#else
92   LOGICAL, PUBLIC, PARAMETER ::   lk_vopt_loop = .FALSE.  !: vector optimization flag
93#endif
94#if defined key_mpp_omp
95   LOGICAL, PUBLIC, PARAMETER ::   lk_jki = .TRUE.   !: j-k-i loop flag
96#else
97   LOGICAL, PUBLIC, PARAMETER ::   lk_jki = .FALSE.  !: k-j-i loop flag
98#endif
99
100   !!======================================================================
101END MODULE par_oce
Note: See TracBrowser for help on using the repository browser.