1 | MODULE 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 | !!====================================================================== |
---|
101 | END MODULE par_oce |
---|