source: NEMO/branches/UKMO/NEMO_4.0.1_MIRROR_WAD_ZENV/src/OCE/DOM/dom_oce.F90 @ 12326

Last change on this file since 12326 was 12326, checked in by deazer, 17 months ago

Adjusted to account for flux form advection
should now work with both types of advection and enveloping bathymetry
moved one off caluculations of depth scales to domain.F90

File size: 21.6 KB
Line 
1MODULE dom_oce
2   !!======================================================================
3   !!                       ***  MODULE dom_oce  ***
4   !!       
5   !! ** Purpose :   Define in memory all the ocean space domain variables
6   !!======================================================================
7   !! History :  1.0  ! 2005-10  (A. Beckmann, G. Madec)  reactivate s-coordinate
8   !!            3.3  ! 2010-11  (G. Madec) add mbk. arrays associated to the deepest ocean level
9   !!            3.4  ! 2011-01  (A. R. Porter, STFC Daresbury) dynamical allocation
10   !!            3.5  ! 2012     (S. Mocavero, I. Epicoco) Add arrays associated
11   !!                             to the optimization of BDY communications
12   !!            3.7  ! 2015-11  (G. Madec) introduce surface and scale factor ratio
13   !!             -   ! 2015-11  (G. Madec, A. Coward)  time varying zgr by default
14   !!----------------------------------------------------------------------
15
16   !!----------------------------------------------------------------------
17   !!   Agrif_Root    : dummy function used when lk_agrif=F
18   !!   Agrif_CFixed  : dummy function used when lk_agrif=F
19   !!   dom_oce_alloc : dynamical allocation of dom_oce arrays
20   !!----------------------------------------------------------------------
21   USE par_oce        ! ocean parameters
22
23   IMPLICIT NONE
24   PUBLIC             ! allows the acces to par_oce when dom_oce is used (exception to coding rules)
25
26   PUBLIC dom_oce_alloc  ! Called from nemogcm.F90
27
28   !!----------------------------------------------------------------------
29   !! time & space domain namelist
30   !! ----------------------------
31   !                                   !!* Namelist namdom : time & space domain *
32   LOGICAL , PUBLIC ::   ln_linssh      !: =T  linear free surface ==>> model level are fixed in time
33   LOGICAL , PUBLIC ::   ln_meshmask    !: =T  create a mesh-mask file (mesh_mask.nc)
34   REAL(wp), PUBLIC ::   rn_isfhmin     !: threshold to discriminate grounded ice to floating ice
35   REAL(wp), PUBLIC ::   rn_rdt         !: time step for the dynamics and tracer
36   REAL(wp), PUBLIC ::   rn_atfp        !: asselin time filter parameter
37   INTEGER , PUBLIC ::   nn_euler       !: =0 start with forward time step or not (=1)
38   LOGICAL , PUBLIC ::   ln_iscpl       !: coupling with ice sheet
39   LOGICAL , PUBLIC ::   ln_crs         !: Apply grid coarsening to dynamical model output or online passive tracers
40
41   !! Free surface parameters
42   !! =======================
43   LOGICAL , PUBLIC :: ln_dynspg_exp    !: Explicit free surface flag
44   LOGICAL , PUBLIC :: ln_dynspg_ts     !: Split-Explicit free surface flag
45
46   !! Time splitting parameters
47   !! =========================
48   LOGICAL,  PUBLIC :: ln_bt_fw         !: Forward integration of barotropic sub-stepping
49   LOGICAL,  PUBLIC :: ln_bt_av         !: Time averaging of barotropic variables
50   LOGICAL,  PUBLIC :: ln_bt_auto       !: Set number of barotropic iterations automatically
51   INTEGER,  PUBLIC :: nn_bt_flt        !: Filter choice
52   INTEGER,  PUBLIC :: nn_baro          !: Number of barotropic iterations during one baroclinic step (rdt)
53   REAL(wp), PUBLIC :: rn_bt_cmax       !: Maximum allowed courant number (used if ln_bt_auto=T)
54   REAL(wp), PUBLIC :: rn_bt_alpha      !: Time stepping diffusion parameter
55
56
57   !                                   !! old non-DOCTOR names still used in the model
58   REAL(wp), PUBLIC ::   atfp           !: asselin time filter parameter
59   REAL(wp), PUBLIC ::   rdt            !: time step for the dynamics and tracer
60
61   !                                   !!! associated variables
62   INTEGER , PUBLIC ::   neuler         !: restart euler forward option (0=Euler)
63   REAL(wp), PUBLIC ::   r2dt           !: = 2*rdt except at nit000 (=rdt) if neuler=0
64
65   !!----------------------------------------------------------------------
66   !! space domain parameters
67   !!----------------------------------------------------------------------
68   INTEGER, PUBLIC ::   jperio   !: Global domain lateral boundary type (between 0 and 7)
69   !                                !  = 0 closed                 ;   = 1 cyclic East-West
70   !                                !  = 2 cyclic North-South     ;   = 3 North fold T-point pivot
71   !                                !  = 4 cyclic East-West AND North fold T-point pivot
72   !                                !  = 5 North fold F-point pivot
73   !                                !  = 6 cyclic East-West AND North fold F-point pivot
74   !                                !  = 7 bi-cyclic East-West AND North-South
75   LOGICAL, PUBLIC ::   l_Iperio, l_Jperio   !   should we explicitely take care I/J periodicity
76
77   !                                 !  domain MPP decomposition parameters
78   INTEGER             , PUBLIC ::   nimpp, njmpp     !: i- & j-indexes for mpp-subdomain left bottom
79   INTEGER             , PUBLIC ::   nreci, nrecj     !: overlap region in i and j
80   INTEGER             , PUBLIC ::   nproc            !: number for local processor
81   INTEGER             , PUBLIC ::   narea            !: number for local area
82   INTEGER             , PUBLIC ::   nbondi, nbondj   !: mark of i- and j-direction local boundaries
83   INTEGER, ALLOCATABLE, PUBLIC ::   nbondi_bdy(:)    !: mark i-direction local boundaries for BDY open boundaries
84   INTEGER, ALLOCATABLE, PUBLIC ::   nbondj_bdy(:)    !: mark j-direction local boundaries for BDY open boundaries
85   INTEGER, ALLOCATABLE, PUBLIC ::   nbondi_bdy_b(:)  !: mark i-direction of neighbours local boundaries for BDY open boundaries 
86   INTEGER, ALLOCATABLE, PUBLIC ::   nbondj_bdy_b(:)  !: mark j-direction of neighbours local boundaries for BDY open boundaries 
87
88   INTEGER, PUBLIC ::   npolj             !: north fold mark (0, 3 or 4)
89   INTEGER, PUBLIC ::   nlci, nldi, nlei  !: i-dimensions of the local subdomain and its first and last indoor indices
90   INTEGER, PUBLIC ::   nlcj, nldj, nlej  !: i-dimensions of the local subdomain and its first and last indoor indices
91   INTEGER, PUBLIC ::   noea, nowe        !: index of the local neighboring processors in
92   INTEGER, PUBLIC ::   noso, nono        !: east, west, south and north directions
93   INTEGER, PUBLIC ::   nidom             !: ???
94
95   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mig        !: local  ==> global domain i-index
96   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mjg        !: local  ==> global domain j-index
97   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mi0, mi1   !: global ==> local  domain i-index (mi0=1 and mi1=0 if the global index
98   !                                                                !                                             is not in the local domain)
99   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mj0, mj1   !: global ==> local  domain j-index (mj0=1 and mj1=0 if the global index
100   !                                                                !                                             is not in the local domain)
101   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nimppt, njmppt   !: i-, j-indexes for each processor
102   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ibonit, ibonjt   !: i-, j- processor neighbour existence
103   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nlcit , nlcjt    !: dimensions of every subdomain
104   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nldit , nldjt    !: first, last indoor index for each i-domain
105   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nleit , nlejt    !: first, last indoor index for each j-domain
106   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nfiimpp, nfipproc, nfilcit
107
108   !!----------------------------------------------------------------------
109   !! horizontal curvilinear coordinate and scale factors
110   !! ---------------------------------------------------------------------
111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   glamt , glamu, glamv , glamf    !: longitude at t, u, v, f-points [degree]
112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   gphit , gphiu, gphiv , gphif    !: latitude  at t, u, v, f-points [degree]
113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1t   , e2t  , r1_e1t, r1_e2t   !: t-point horizontal scale factors    [m]
114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1u   , e2u  , r1_e1u, r1_e2u   !: horizontal scale factors at u-point [m]
115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1v   , e2v  , r1_e1v, r1_e2v   !: horizontal scale factors at v-point [m]
116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1f   , e2f  , r1_e1f, r1_e2f   !: horizontal scale factors at f-point [m]
117   !
118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2t , r1_e1e2t                !: associated metrics at t-point
119   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2u , r1_e1e2u , e2_e1u       !: associated metrics at u-point
120   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2v , r1_e1e2v , e1_e2v       !: associated metrics at v-point
121   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2f , r1_e1e2f                !: associated metrics at f-point
122   !
123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   ff_f  , ff_t                    !: Coriolis factor at f- & t-points  [1/s]
124   !!----------------------------------------------------------------------
125   !! vertical coordinate and scale factors
126   !! ---------------------------------------------------------------------
127   LOGICAL, PUBLIC ::   ln_zco       !: z-coordinate - full step
128   LOGICAL, PUBLIC ::   ln_zps       !: z-coordinate - partial step
129   LOGICAL, PUBLIC ::   ln_sco       !: s-coordinate or hybrid z-s coordinate
130   LOGICAL, PUBLIC ::   ln_isfcav    !: presence of ISF
131   !                                                        !  ref.   ! before  !   now   ! after  !
132   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3t_0 ,   e3t_b ,   e3t_n ,  e3t_a   !: t- vert. scale factor [m]
133   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3u_0 ,   e3u_b ,   e3u_n ,  e3u_a   !: u- vert. scale factor [m]
134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3v_0 ,   e3v_b ,   e3v_n ,  e3v_a   !: v- vert. scale factor [m]
135   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3f_0           ,   e3f_n            !: f- vert. scale factor [m]
136   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3w_0 ,   e3w_b ,   e3w_n            !: w- vert. scale factor [m]
137   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3uw_0 ,  e3uw_b ,  e3uw_n            !: uw-vert. scale factor [m]
138   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3vw_0 ,  e3vw_b ,  e3vw_n            !: vw-vert. scale factor [m]
139
140   !                                                        !  ref.   ! before  !   now   !
141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_0 , gdept_b , gdept_n   !: t- depth              [m]
142   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdepw_0 , gdepw_b , gdepw_n   !: w- depth              [m]
143   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gde3w_0           , gde3w_n   !: w- depth (sum of e3w) [m]
144   
145   !                                                      !  ref. ! before  !   now   !  after  !
146   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_0            ,    ht_n             !: t-depth              [m]
147   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hu_0  ,    hu_b ,    hu_n ,    hu_a   !: u-depth              [m]
148   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hv_0  ,    hv_b ,    hv_n ,    hv_a   !: v-depth              [m]
149   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::           r1_hu_b , r1_hu_n , r1_hu_a   !: inverse of u-depth [1/m]
150   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::           r1_hv_b , r1_hv_n , r1_hv_a   !: inverse of v-depth [1/m]
151
152!CEOD Scale of water column down to shllowest of neighbourinbg points over total
153!water depth
154   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: scaled_e3t_0_ik   , scaled_e3t_0_jk
155   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: scaled_e3t_0_ip1k , scaled_e3t_0_jp1k
156!CEOD
157   INTEGER, PUBLIC ::   nla10              !: deepest    W level Above  ~10m (nlb10 - 1)
158   INTEGER, PUBLIC ::   nlb10              !: shallowest W level Bellow ~10m (nla10 + 1)
159
160   !! 1D reference  vertical coordinate
161   !! =-----------------====------
162   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   gdept_1d, gdepw_1d !: reference depth of t- and w-points (m)
163   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   e3t_1d  , e3w_1d   !: reference vertical scale factors at T- and W-pts (m)
164
165
166   !!----------------------------------------------------------------------
167   !! masks, top and bottom ocean point position
168   !! ---------------------------------------------------------------------
169!!gm Proposition of new name for top/bottom vertical indices
170!   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mtk_t, mtk_u, mtk_v   !: top first wet T-, U-, V-, F-level (ISF)
171!   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbk_t, mbk_u, mbk_v   !: bottom last wet T-, U- and V-level
172!!gm
173   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbkt, mbku, mbkv   !: bottom last wet T-, U- and V-level
174   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_i            !: interior domain T-point mask
175   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_h            !: internal domain T-point mask (Figure 8.5 NEMO book)
176
177   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   misfdep                 !: top first ocean level             (ISF)
178   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mikt, miku, mikv, mikf  !: top first wet T-, U-, V-, F-level (ISF)
179   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   risfdep                 !: Iceshelf draft                    (ISF)
180
181   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ssmask, ssumask, ssvmask             !: surface mask at T-,U-, V- and F-pts
182   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: tmask, umask, vmask, fmask   !: land/ocean mask at T-, U-, V- and F-pts
183   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: wmask, wumask, wvmask        !: land/ocean mask at WT-, WU- and WV-pts
184
185   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   tpol, fpol          !: north fold mask (jperio= 3 or 4)
186
187   !!----------------------------------------------------------------------
188   !! calendar variables
189   !! ---------------------------------------------------------------------
190   INTEGER , PUBLIC ::   nyear         !: current year
191   INTEGER , PUBLIC ::   nmonth        !: current month
192   INTEGER , PUBLIC ::   nday          !: current day of the month
193   INTEGER , PUBLIC ::   nhour         !: current hour
194   INTEGER , PUBLIC ::   nminute       !: current minute
195   INTEGER , PUBLIC ::   ndastp        !: time step date in yyyymmdd format
196   INTEGER , PUBLIC ::   nday_year     !: current day counted from jan 1st of the current year
197   INTEGER , PUBLIC ::   nsec_year     !: current time step counted in second since 00h jan 1st of the current year
198   INTEGER , PUBLIC ::   nsec_month    !: current time step counted in second since 00h 1st day of the current month
199   INTEGER , PUBLIC ::   nsec_week     !: current time step counted in second since 00h of last monday
200   INTEGER , PUBLIC ::   nsec_day      !: current time step counted in second since 00h of the current day
201   REAL(wp), PUBLIC ::   fjulday       !: current julian day
202   REAL(wp), PUBLIC ::   fjulstartyear !: first day of the current year in julian days
203   REAL(wp), PUBLIC ::   adatrj        !: number of elapsed days since the begining of the whole simulation
204   !                                   !: (cumulative duration of previous runs that may have used different time-step size)
205   INTEGER , PUBLIC, DIMENSION(0: 2) ::   nyear_len     !: length in days of the previous/current/next year
206   INTEGER , PUBLIC, DIMENSION(0:13) ::   nmonth_len    !: length in days of the months of the current year
207   INTEGER , PUBLIC, DIMENSION(0:13) ::   nmonth_half   !: second since Jan 1st 0h of the current year and the half of the months
208   INTEGER , PUBLIC, DIMENSION(0:13) ::   nmonth_end    !: second since Jan 1st 0h of the current year and the end of the months
209   INTEGER , PUBLIC                  ::   nsec1jan000   !: second since Jan 1st 0h of nit000 year and Jan 1st 0h the current year
210
211   !!----------------------------------------------------------------------
212   !! agrif domain
213   !!----------------------------------------------------------------------
214#if defined key_agrif
215   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .TRUE.    !: agrif flag
216#else
217   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .FALSE.   !: agrif flag
218#endif
219
220   !!----------------------------------------------------------------------
221   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
222   !! $Id$
223   !! Software governed by the CeCILL license (see ./LICENSE)
224   !!----------------------------------------------------------------------
225CONTAINS
226
227#if ! defined key_agrif
228   !!----------------------------------------------------------------------
229   !! NOT 'key_agrif'      dummy function                     No AGRIF zoom
230   !!----------------------------------------------------------------------
231   LOGICAL FUNCTION Agrif_Root()
232      Agrif_Root = .TRUE.
233   END FUNCTION Agrif_Root
234
235   CHARACTER(len=3) FUNCTION Agrif_CFixed()
236      Agrif_CFixed = '0' 
237   END FUNCTION Agrif_CFixed
238#endif
239
240   INTEGER FUNCTION dom_oce_alloc()
241      !!----------------------------------------------------------------------
242      INTEGER, DIMENSION(12) :: ierr
243      !!----------------------------------------------------------------------
244      ierr(:) = 0
245      !
246      ALLOCATE( mig(jpi), mjg(jpj), STAT=ierr(1) )
247         !
248      ALLOCATE( mi0(jpiglo)   , mi1 (jpiglo),  mj0(jpjglo)   , mj1 (jpjglo) ,     &
249         &      tpol(jpiglo)  , fpol(jpiglo)                                , STAT=ierr(2) )
250         !
251      ALLOCATE( glamt(jpi,jpj) ,    glamu(jpi,jpj) ,  glamv(jpi,jpj) ,  glamf(jpi,jpj) ,     &
252         &      gphit(jpi,jpj) ,    gphiu(jpi,jpj) ,  gphiv(jpi,jpj) ,  gphif(jpi,jpj) ,     &
253         &       e1t (jpi,jpj) ,     e2t (jpi,jpj) , r1_e1t(jpi,jpj) , r1_e2t(jpi,jpj) ,     &
254         &       e1u (jpi,jpj) ,     e2u (jpi,jpj) , r1_e1u(jpi,jpj) , r1_e2u(jpi,jpj) ,     &
255         &       e1v (jpi,jpj) ,     e2v (jpi,jpj) , r1_e1v(jpi,jpj) , r1_e2v(jpi,jpj) ,     &
256         &       e1f (jpi,jpj) ,     e2f (jpi,jpj) , r1_e1f(jpi,jpj) , r1_e2f(jpi,jpj) ,     &
257         &      e1e2t(jpi,jpj) , r1_e1e2t(jpi,jpj)                                     ,     &
258         &      e1e2u(jpi,jpj) , r1_e1e2u(jpi,jpj) , e2_e1u(jpi,jpj)                   ,     &
259         &      e1e2v(jpi,jpj) , r1_e1e2v(jpi,jpj) , e1_e2v(jpi,jpj)                   ,     &
260         &      e1e2f(jpi,jpj) , r1_e1e2f(jpi,jpj)                                     ,     &
261         &      ff_f (jpi,jpj) ,    ff_t (jpi,jpj)                                     , STAT=ierr(3) )
262         !
263      ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) ,      &
264         &      gdept_b(jpi,jpj,jpk) , gdepw_b(jpi,jpj,jpk) ,                             &
265         &      gdept_n(jpi,jpj,jpk) , gdepw_n(jpi,jpj,jpk) , gde3w_n(jpi,jpj,jpk) , STAT=ierr(4) )
266         !
267      ALLOCATE( e3t_0(jpi,jpj,jpk) , e3u_0(jpi,jpj,jpk) , e3v_0(jpi,jpj,jpk) , e3f_0(jpi,jpj,jpk) , e3w_0(jpi,jpj,jpk) ,   &
268         &      e3t_b(jpi,jpj,jpk) , e3u_b(jpi,jpj,jpk) , e3v_b(jpi,jpj,jpk) ,                      e3w_b(jpi,jpj,jpk) ,   & 
269         &      e3t_n(jpi,jpj,jpk) , e3u_n(jpi,jpj,jpk) , e3v_n(jpi,jpj,jpk) , e3f_n(jpi,jpj,jpk) , e3w_n(jpi,jpj,jpk) ,   & 
270         &      e3t_a(jpi,jpj,jpk) , e3u_a(jpi,jpj,jpk) , e3v_a(jpi,jpj,jpk) ,                                             &
271         !                                                          !
272         &      e3uw_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) ,         &
273         &      e3uw_b(jpi,jpj,jpk) , e3vw_b(jpi,jpj,jpk) ,         &               
274         &      e3uw_n(jpi,jpj,jpk) , e3vw_n(jpi,jpj,jpk) ,     STAT=ierr(5) )                       
275         !
276      ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) ,                                           &
277         &                      hu_b(jpi,jpj) , hv_b(jpi,jpj) , r1_hu_b(jpi,jpj) , r1_hv_b(jpi,jpj) ,     &
278         &      ht_n(jpi,jpj) , hu_n(jpi,jpj) , hv_n(jpi,jpj) , r1_hu_n(jpi,jpj) , r1_hv_n(jpi,jpj) ,     &
279         &                      hu_a(jpi,jpj) , hv_a(jpi,jpj) , r1_hu_a(jpi,jpj) , r1_hv_a(jpi,jpj) , STAT=ierr(6)  )
280         !
281         !
282      ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , e3t_1d(jpk) , e3w_1d(jpk) , STAT=ierr(7) )
283         !
284      ALLOCATE( tmask_i(jpi,jpj) , tmask_h(jpi,jpj) ,                        & 
285         &      ssmask (jpi,jpj) , ssumask(jpi,jpj) , ssvmask(jpi,jpj) ,     &
286         &      mbkt   (jpi,jpj) , mbku   (jpi,jpj) , mbkv   (jpi,jpj) , STAT=ierr(9) )
287         !
288      ALLOCATE( misfdep(jpi,jpj) , mikt(jpi,jpj) , miku(jpi,jpj) ,     &
289         &      risfdep(jpi,jpj) , mikv(jpi,jpj) , mikf(jpi,jpj) , STAT=ierr(10) )
290         !
291      ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk) ,     & 
292         &      vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk) , STAT=ierr(11) )
293         !
294      ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) )
295!CEOD
296      ALLOCATE(  scaled_e3t_0_ik  (jpi,jpj) , scaled_e3t_0_jk  (jpi,jpj) ,      & 
297         &       scaled_e3t_0_ip1k(jpi,jpj) , scaled_e3t_0_jp1k(jpi,jpj) ,  STAT=ierr(13) )
298         !
299      !
300      dom_oce_alloc = MAXVAL(ierr)
301      !
302   END FUNCTION dom_oce_alloc
303
304   !!======================================================================
305END MODULE dom_oce
Note: See TracBrowser for help on using the repository browser.