source: NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/dom_oce.F90 @ 12482

Last change on this file since 12482 was 12482, checked in by techene, 22 months ago

new reference without ztilde, duplicated modules and routines to be modified from zstar MLF to zstar LF

  • Property svn:keywords set to Id
File size: 21.9 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   !!            4.1  ! 2019-08  (A. Coward, D. Storkey) rename prognostic variables in preparation for new time scheme.
15   !!            4.x  ! 2020-02  (G. Madec, S. Techene) introduce ssh to h0 ratio
16   !!----------------------------------------------------------------------
17
18   !!----------------------------------------------------------------------
19   !!   Agrif_Root    : dummy function used when lk_agrif=F
20   !!   Agrif_CFixed  : dummy function used when lk_agrif=F
21   !!   dom_oce_alloc : dynamical allocation of dom_oce arrays
22   !!----------------------------------------------------------------------
23   USE par_oce        ! ocean parameters
24
25   IMPLICIT NONE
26   PUBLIC             ! allows the acces to par_oce when dom_oce is used (exception to coding rules)
27
28   PUBLIC dom_oce_alloc  ! Called from nemogcm.F90
29
30   !!----------------------------------------------------------------------
31   !! time & space domain namelist
32   !! ----------------------------
33   !                                   !!* Namelist namdom : time & space domain *
34   LOGICAL , PUBLIC ::   ln_linssh      !: =T  linear free surface ==>> model level are fixed in time
35   LOGICAL , PUBLIC ::   ln_meshmask    !: =T  create a mesh-mask file (mesh_mask.nc)
36   REAL(wp), PUBLIC ::   rn_rdt         !: time step for the dynamics and tracer
37   REAL(wp), PUBLIC ::   rn_atfp        !: asselin time filter parameter
38   INTEGER , PUBLIC ::   nn_euler       !: =0 start with forward time step or not (=1)
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   !                                                        !  reference scale factors
132   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3t_0   !: t- vert. scale factor [m]
133   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3u_0   !: u- vert. scale factor [m]
134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3v_0   !: v- vert. scale factor [m]
135   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3f_0   !: f- vert. scale factor [m]
136   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3w_0   !: w- vert. scale factor [m]
137   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3uw_0   !: uw-vert. scale factor [m]
138   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3vw_0   !: vw-vert. scale factor [m]
139   !                                                        !  time-dependent scale factors
140   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e3t, e3u, e3v, e3w, e3uw, e3vw  !: vert. scale factor [m]
141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   e3f                             !: F-point vert. scale factor [m]
142   !                                                        !  time-dependent ratio ssh / h_0
143   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   r3t, r3u, r3v                   !: [-]
144   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   r3f                             !: [-]
145   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   r3t_f, r3u_f, r3v_f             !: [-]
146
147   !                                                        !  reference depths of cells
148   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_0  !: t- depth              [m]
149   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdepw_0  !: w- depth              [m]
150   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gde3w_0  !: w- depth (sum of e3w) [m]
151   !                                                        !  time-dependent depths of cells
152   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  gdept, gdepw
153   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  gde3w
154
155   !                                                      !  reference heights of water column
156   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_0  !: t-depth              [m]
157   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hu_0  !: u-depth              [m]
158   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hv_0  !: v-depth              [m]
159   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hf_0  !: f-depth              [m]
160   !                                                      !  reciprocal reference heights of water column
161   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   r1_ht_0, r1_hu_0, r1_hv_0, r1_hf_0   !: t-depth   [1/m]
162                                                          ! time-dependent heights of water column
163   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ht                     !: height of water column at T-points [m]
164   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hu, hv, r1_hu, r1_hv   !: height of water column [m] and reciprocal [1/m]
165
166   INTEGER, PUBLIC ::   nla10              !: deepest    W level Above  ~10m (nlb10 - 1)
167   INTEGER, PUBLIC ::   nlb10              !: shallowest W level Bellow ~10m (nla10 + 1)
168
169   !! 1D reference  vertical coordinate
170   !! =-----------------====------
171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   gdept_1d, gdepw_1d !: reference depth of t- and w-points (m)
172   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   e3t_1d  , e3w_1d   !: reference vertical scale factors at T- and W-pts (m)
173
174   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   risfdep, bathy
175
176   !!----------------------------------------------------------------------
177   !! masks, top and bottom ocean point position
178   !! ---------------------------------------------------------------------
179!!gm Proposition of new name for top/bottom vertical indices
180!   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mtk_t, mtk_u, mtk_v   !: top first wet T-, U-, V-, F-level (ISF)
181!   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbk_t, mbk_u, mbk_v   !: bottom last wet T-, U- and V-level
182!!gm
183   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbkt, mbku, mbkv   !: bottom last wet T-, U- and V-level
184   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_i            !: interior domain T-point mask
185   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_h            !: internal domain T-point mask (Figure 8.5 NEMO book)
186
187   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mikt, miku, mikv, mikf  !: top first wet T-, U-, V-, F-level           (ISF)
188
189   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ssmask, ssumask, ssvmask, ssfmask    !: surface mask at T-,U-, V- and F-pts
190   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: tmask, umask, vmask, fmask   !: land/ocean mask at T-, U-, V- and F-pts
191   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: wmask, wumask, wvmask        !: land/ocean mask at WT-, WU- and WV-pts
192
193   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   tpol, fpol          !: north fold mask (jperio= 3 or 4)
194
195   !!----------------------------------------------------------------------
196   !! calendar variables
197   !! ---------------------------------------------------------------------
198   INTEGER , PUBLIC ::   nyear         !: current year
199   INTEGER , PUBLIC ::   nmonth        !: current month
200   INTEGER , PUBLIC ::   nday          !: current day of the month
201   INTEGER , PUBLIC ::   nhour         !: current hour
202   INTEGER , PUBLIC ::   nminute       !: current minute
203   INTEGER , PUBLIC ::   ndastp        !: time step date in yyyymmdd format
204   INTEGER , PUBLIC ::   nday_year     !: current day counted from jan 1st of the current year
205   INTEGER , PUBLIC ::   nsec_year     !: seconds between 00h jan 1st of the current  year and half of the current time step
206   INTEGER , PUBLIC ::   nsec_month    !: seconds between 00h 1st day of the current month and half of the current time step
207   INTEGER , PUBLIC ::   nsec_monday   !: seconds between 00h         of the last Monday   and half of the current time step
208   INTEGER , PUBLIC ::   nsec_day      !: seconds between 00h         of the current   day and half of the current time step
209   REAL(wp), PUBLIC ::   fjulday       !: current julian day
210   REAL(wp), PUBLIC ::   fjulstartyear !: first day of the current year in julian days
211   REAL(wp), PUBLIC ::   adatrj        !: number of elapsed days since the begining of the whole simulation
212   !                                   !: (cumulative duration of previous runs that may have used different time-step size)
213   INTEGER , PUBLIC, DIMENSION(  0: 2) ::   nyear_len     !: length in days of the previous/current/next year
214   INTEGER , PUBLIC, DIMENSION(-11:25) ::   nmonth_len    !: length in days of the months of the current year
215   INTEGER , PUBLIC, DIMENSION(-11:25) ::   nmonth_beg    !: second since Jan 1st 0h of the current year and the half of the months
216   INTEGER , PUBLIC                  ::   nsec1jan000     !: second since Jan 1st 0h of nit000 year and Jan 1st 0h the current year
217   INTEGER , PUBLIC                  ::   nsec000_1jan000   !: second since Jan 1st 0h of nit000 year and nit000
218   INTEGER , PUBLIC                  ::   nsecend_1jan000   !: second since Jan 1st 0h of nit000 year and nitend
219
220   !!----------------------------------------------------------------------
221   !! agrif domain
222   !!----------------------------------------------------------------------
223#if defined key_agrif
224   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .TRUE.    !: agrif flag
225#else
226   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .FALSE.   !: agrif flag
227#endif
228
229   !!----------------------------------------------------------------------
230   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
231   !! $Id$
232   !! Software governed by the CeCILL license (see ./LICENSE)
233   !!----------------------------------------------------------------------
234CONTAINS
235
236#if ! defined key_agrif
237   !!----------------------------------------------------------------------
238   !! NOT 'key_agrif'      dummy function                     No AGRIF zoom
239   !!----------------------------------------------------------------------
240   LOGICAL FUNCTION Agrif_Root()
241      Agrif_Root = .TRUE.
242   END FUNCTION Agrif_Root
243
244   CHARACTER(len=3) FUNCTION Agrif_CFixed()
245      Agrif_CFixed = '0'
246   END FUNCTION Agrif_CFixed
247#endif
248
249   INTEGER FUNCTION dom_oce_alloc()
250      !!----------------------------------------------------------------------
251      INTEGER, DIMENSION(12) :: ierr
252      !!----------------------------------------------------------------------
253      ierr(:) = 0
254      !
255      ALLOCATE( mig(jpi), mjg(jpj), STAT=ierr(1) )
256         !
257      ALLOCATE( mi0(jpiglo)   , mi1 (jpiglo),  mj0(jpjglo)   , mj1 (jpjglo) ,     &
258         &      tpol(jpiglo)  , fpol(jpiglo)                                , STAT=ierr(2) )
259         !
260      ALLOCATE( glamt(jpi,jpj) ,    glamu(jpi,jpj) ,  glamv(jpi,jpj) ,  glamf(jpi,jpj) ,     &
261         &      gphit(jpi,jpj) ,    gphiu(jpi,jpj) ,  gphiv(jpi,jpj) ,  gphif(jpi,jpj) ,     &
262         &       e1t (jpi,jpj) ,     e2t (jpi,jpj) , r1_e1t(jpi,jpj) , r1_e2t(jpi,jpj) ,     &
263         &       e1u (jpi,jpj) ,     e2u (jpi,jpj) , r1_e1u(jpi,jpj) , r1_e2u(jpi,jpj) ,     &
264         &       e1v (jpi,jpj) ,     e2v (jpi,jpj) , r1_e1v(jpi,jpj) , r1_e2v(jpi,jpj) ,     &
265         &       e1f (jpi,jpj) ,     e2f (jpi,jpj) , r1_e1f(jpi,jpj) , r1_e2f(jpi,jpj) ,     &
266         &      e1e2t(jpi,jpj) , r1_e1e2t(jpi,jpj)                                     ,     &
267         &      e1e2u(jpi,jpj) , r1_e1e2u(jpi,jpj) , e2_e1u(jpi,jpj)                   ,     &
268         &      e1e2v(jpi,jpj) , r1_e1e2v(jpi,jpj) , e1_e2v(jpi,jpj)                   ,     &
269         &      e1e2f(jpi,jpj) , r1_e1e2f(jpi,jpj)                                     ,     &
270         &      ff_f (jpi,jpj) ,    ff_t (jpi,jpj)                                     , STAT=ierr(3) )
271         !
272      ALLOCATE( gdept_0(jpi,jpj,jpk)     , gdepw_0(jpi,jpj,jpk)     , gde3w_0(jpi,jpj,jpk) ,      &
273         &      gdept  (jpi,jpj,jpk,jpt) , gdepw  (jpi,jpj,jpk,jpt) , gde3w  (jpi,jpj,jpk) , STAT=ierr(4) )
274         !
275      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)     ,   &
276         &      e3t  (jpi,jpj,jpk,jpt) , e3u  (jpi,jpj,jpk,jpt) , e3v  (jpi,jpj,jpk,jpt) , e3f  (jpi,jpj,jpk) , e3w  (jpi,jpj,jpk,jpt) ,   &
277         &      e3uw_0(jpi,jpj,jpk)     , e3vw_0(jpi,jpj,jpk)     ,         &
278         &      e3uw  (jpi,jpj,jpk,jpt) , e3vw  (jpi,jpj,jpk,jpt) ,         &
279         &      r3t  (jpi,jpj,jpt)     , r3u  (jpi,jpj,jpt)     , r3v  (jpi,jpj,jpt)     , r3f  (jpi,jpj) ,  &
280         &      r3t_f(jpi,jpj)         , r3u_f(jpi,jpj)         , r3v_f(jpi,jpj)                          ,  STAT=ierr(5) )
281         !
282      ALLOCATE( ht_0(jpi,jpj) ,    hu_0(jpi,jpj)    ,    hv_0(jpi,jpj)     , hf_0(jpi,jpj)     ,   &
283         &      ht  (jpi,jpj) ,    hu  (jpi,jpj,jpt),    hv  (jpi,jpj,jpt) ,                       &
284         &                      r1_hu  (jpi,jpj,jpt), r1_hv  (jpi,jpj,jpt) ,                       &
285         &   r1_ht_0(jpi,jpj) , r1_hu_0(jpi,jpj) ,    r1_hv_0(jpi,jpj),   r1_hf_0(jpi,jpj)     ,   STAT=ierr(6)  )
286         !
287      ALLOCATE( risfdep(jpi,jpj) , bathy(jpi,jpj) , STAT=ierr(7)  ) 
288         !
289      ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , e3t_1d(jpk) , e3w_1d(jpk) , STAT=ierr(8) )
290         !
291      ALLOCATE( tmask_i(jpi,jpj) , tmask_h(jpi,jpj) ,                        &
292         &      ssmask (jpi,jpj) , ssumask(jpi,jpj) , ssvmask(jpi,jpj) , ssfmask(jpi,jpj) ,    &
293         &      mbkt   (jpi,jpj) , mbku   (jpi,jpj) , mbkv   (jpi,jpj) , STAT=ierr(9) )
294         !
295      ALLOCATE( mikt(jpi,jpj), miku(jpi,jpj), mikv(jpi,jpj), mikf(jpi,jpj), STAT=ierr(10) )
296         !
297      ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk) ,     &
298         &      vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk) , STAT=ierr(11) )
299         !
300      ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) )
301      !
302      dom_oce_alloc = MAXVAL(ierr)
303      !
304   END FUNCTION dom_oce_alloc
305
306   !!======================================================================
307END MODULE dom_oce
Note: See TracBrowser for help on using the repository browser.