source: NEMO/branches/UKMO/NEMO_4.0_surge/src/OCE/DOM/dom_oce.F90 @ 11180

Last change on this file since 11180 was 11180, checked in by clne, 22 months ago

Initial commit of code for 2d (surge) work in NEMO4.
This is aiming to replicate the 3.6 version in branches/UKMO/dev_r5518_Surge_Modelling

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