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.
dom_oce.F90 in branches/2011/UKMO_MERCATOR_obc_bdy_merge/NEMOGCM/NEMO/OPA_SRC/DOM – NEMO

source: branches/2011/UKMO_MERCATOR_obc_bdy_merge/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90 @ 2800

Last change on this file since 2800 was 2800, checked in by davestorkey, 13 years ago
  1. Application of boundary conditions to barotropic and baroclinic velocities clearly separated.
  2. Option to input full velocities in boundary data (default expects barotropic and baroclinic velocities separately).
  3. Option to use initial conditions as boundary conditions coded.
  • Property svn:keywords set to Id
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   !!            4.0  ! 2011-01  (A. R. Porter, STFC Daresbury) dynamical allocation
10   !!----------------------------------------------------------------------
11
12   !!----------------------------------------------------------------------
13   !!   Agrif_Root    : dummy function used when lk_agrif=F
14   !!   Agrif_CFixed  : dummy function used when lk_agrif=F
15   !!   dom_oce_alloc : dynamical allocation of dom_oce arrays
16   !!----------------------------------------------------------------------
17   USE par_oce        ! ocean parameters
18
19   IMPLICIT NONE
20   PUBLIC             ! allows the acces to par_oce when dom_oce is used
21   !                  ! exception to coding rules... to be suppressed ???
22
23   PUBLIC dom_oce_alloc  ! Called from nemogcm.F90
24
25   !!----------------------------------------------------------------------
26   !! time & space domain namelist
27   !! ----------------------------
28   !                                              !!* Namelist namdom : time & space domain *
29   INTEGER , PUBLIC ::   nn_bathy     =    0       !: = 0/1 ,compute/read the bathymetry file
30   REAL(wp), PUBLIC ::   rn_hmin      =   -3.0_wp  !: minimum ocean depth (>0) or minimum number of ocean levels (<0)
31   REAL(wp), PUBLIC ::   rn_e3zps_min =    5.0_wp  !: miminum thickness for partial steps (meters)
32   REAL(wp), PUBLIC ::   rn_e3zps_rat =    0.1_wp  !: minimum thickness ration for partial steps
33   INTEGER , PUBLIC ::   nn_msh       =    0       !: = 1 create a mesh-mask file
34   INTEGER , PUBLIC ::   nn_acc       =    0       !: = 0/1 use of the acceleration of convergence technique
35   REAL(wp), PUBLIC ::   rn_atfp      =    0.1_wp  !: asselin time filter parameter
36   REAL(wp), PUBLIC ::   rn_rdt       = 3600._wp   !: time step for the dynamics (and tracer if nacc=0)
37   REAL(wp), PUBLIC ::   rn_rdtmin    = 3600._wp   !: minimum time step on tracers
38   REAL(wp), PUBLIC ::   rn_rdtmax    = 3600._wp   !: maximum time step on tracers
39   REAL(wp), PUBLIC ::   rn_rdth      =  800._wp   !: depth variation of tracer step
40   INTEGER , PUBLIC ::   nn_baro      =   64       !: number of barotropic time steps (key_dynspg_ts)
41   INTEGER , PUBLIC ::   nn_closea    =    0       !: =0 suppress closed sea/lake from the ORCA domain or not (=1)
42
43   !                                    !! old non-DOCTOR names still used in the model
44   INTEGER , PUBLIC ::   ntopo           !: = 0/1 ,compute/read the bathymetry file
45   REAL(wp), PUBLIC ::   e3zps_min       !: miminum thickness for partial steps (meters)
46   REAL(wp), PUBLIC ::   e3zps_rat       !: minimum thickness ration for partial steps
47   INTEGER , PUBLIC ::   nmsh            !: = 1 create a mesh-mask file
48   INTEGER , PUBLIC ::   nacc            !: = 0/1 use of the acceleration of convergence technique
49   REAL(wp), PUBLIC ::   atfp            !: asselin time filter parameter
50   REAL(wp), PUBLIC ::   rdt             !: time step for the dynamics (and tracer if nacc=0)
51   REAL(wp), PUBLIC ::   rdtmin          !: minimum time step on tracers
52   REAL(wp), PUBLIC ::   rdtmax          !: maximum time step on tracers
53   REAL(wp), PUBLIC ::   rdth            !: depth variation of tracer step
54   INTEGER , PUBLIC ::   nclosea         !: =0 suppress closed sea/lake from the ORCA domain or not (=1)
55
56   !                                                  !!! associated variables
57   INTEGER , PUBLIC                 ::   neuler  = 0   !: restart euler forward option (0=Euler)
58   REAL(wp), PUBLIC                 ::   atfp1         !: asselin time filter coeff. (atfp1= 1-2*atfp)
59   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   rdttra  !: vertical profile of tracer time step
60   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   r2dtra  !: = 2*rdttra except at nit000 (=rdttra) if neuler=0
61
62   !                                         !!* Namelist namcla : cross land advection
63   INTEGER, PUBLIC ::   nn_cla = 0            !: =1 cross land advection for exchanges through some straits (ORCA2)
64
65   !!----------------------------------------------------------------------
66   !! space domain parameters
67   !!----------------------------------------------------------------------
68   LOGICAL, PUBLIC ::   lzoom      =  .FALSE.   !: zoom flag
69   LOGICAL, PUBLIC ::   lzoom_e    =  .FALSE.   !: East  zoom type flag
70   LOGICAL, PUBLIC ::   lzoom_w    =  .FALSE.   !: West  zoom type flag
71   LOGICAL, PUBLIC ::   lzoom_s    =  .FALSE.   !: South zoom type flag
72   LOGICAL, PUBLIC ::   lzoom_n    =  .FALSE.   !: North zoom type flag
73   LOGICAL, PUBLIC ::   lzoom_arct =  .FALSE.   !: ORCA    arctic zoom flag
74   LOGICAL, PUBLIC ::   lzoom_anta =  .FALSE.   !: ORCA antarctic zoom flag
75
76   !                                     !!! domain parameters linked to mpp
77   INTEGER, PUBLIC ::   nperio            !: type of lateral boundary condition
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, PUBLIC ::   npolj             !: north fold mark (0, 3 or 4)
84   INTEGER, PUBLIC ::   nlci, nldi, nlei  !: i-dimensions of the local subdomain and its first and last indoor indices
85   INTEGER, PUBLIC ::   nlcj, nldj, nlej  !: i-dimensions of the local subdomain and its first and last indoor indices
86   INTEGER, PUBLIC ::   noea, nowe        !: index of the local neighboring processors in
87   INTEGER, PUBLIC ::   noso, nono        !: east, west, south and north directions
88   INTEGER, PUBLIC ::   npne, npnw        !: index of north east and north west processor
89   INTEGER, PUBLIC ::   npse, npsw        !: index of south east and south west processor
90   INTEGER, PUBLIC ::   nbne, nbnw        !: logical of north east & north west processor
91   INTEGER, PUBLIC ::   nbse, nbsw        !: logical of south east & south west processor
92   INTEGER, PUBLIC ::   nidom             !: ???
93
94   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mig        !: local  ==> global domain i-index
95   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mjg        !: local  ==> global domain j-index
96   INTEGER, PUBLIC,               DIMENSION(jpidta) ::   mi0, mi1   !: global ==> local  domain i-index    !!bug ==> other solution?
97   !                                                  ! (mi0=1 and mi1=0 if the global index is not in the local domain)
98   INTEGER, PUBLIC,               DIMENSION(jpjdta) ::   mj0, mj1   !: global ==> local  domain j-index     !!bug ==> other solution?
99   !                                                  ! (mi0=1 and mi1=0 if the global index is not in the local domain)
100   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nimppt, njmppt   !: i-, j-indexes for each processor
101   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ibonit, ibonjt   !: i-, j- processor neighbour existence
102   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nlcit , nlcjt    !: dimensions of every subdomain
103   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nldit , nldjt    !: first, last indoor index for each i-domain
104   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   nleit , nlejt    !: first, last indoor index for each j-domain
105
106   !!----------------------------------------------------------------------
107   !! horizontal curvilinear coordinate and scale factors
108   !! ---------------------------------------------------------------------
109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  glamt, glamu   !: longitude of t-, u-, v- and f-points (degre)
110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  glamv, glamf   !:
111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  gphit, gphiu   !: latitude  of t-, u-, v- and f-points (degre)
112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  gphiv, gphif   !:
113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  e1t, e2t       !: horizontal scale factors at t-point (m)
114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  e1u, e2u       !: horizontal scale factors at u-point (m)
115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  e1v, e2v       !: horizontal scale factors at v-point (m)
116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  e1f, e2f       !: horizontal scale factors at f-point (m)
117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  e1e2t          !: surface at t-point (m2)
118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  ff             !: coriolis factor (2.*omega*sin(yphi) ) (s-1)
119
120   !!----------------------------------------------------------------------
121   !! vertical coordinate and scale factors
122   !! ---------------------------------------------------------------------
123   !                                           !!* Namelist namzgr : vertical coordinate *
124   LOGICAL, PUBLIC ::   ln_zco     =  .TRUE.    !: z-coordinate - full step
125   LOGICAL, PUBLIC ::   ln_zps     =  .FALSE.   !: z-coordinate - partial step
126   LOGICAL, PUBLIC ::   ln_sco     =  .FALSE.   !: s-coordinate or hybrid z-s coordinate
127
128   !! All coordinates
129   !! ---------------
130   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdep3w          !: depth of T-points (sum of e3w) (m)
131   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept , gdepw   !: analytical depth at T-W  points (m)
132   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3v   , e3f     !: analytical vertical scale factors at  V--F
133   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3t   , e3u     !:                                       T--U  points (m)
134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3vw            !: analytical vertical scale factors at  VW--
135   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3w   , e3uw    !:                                        W--UW  points (m)
136#if defined key_vvl
137   LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .TRUE.    !: variable grid flag
138
139   !! All coordinates
140   !! ---------------
141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdep3w_1           !: depth of T-points (sum of e3w) (m)
142   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_1, gdepw_1   !: analytical depth at T-W  points (m)
143   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3v_1  , e3f_1     !: analytical vertical scale factors at  V--F
144   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3t_1  , e3u_1     !:                                       T--U  points (m)
145   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3vw_1             !: analytical vertical scale factors at  VW--
146   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3w_1  , e3uw_1    !:                                       W--UW  points (m)
147   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3t_b              !: before         -      -      -    -   T      points (m)
148   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   e3u_b  , e3v_b     !:   -            -      -      -    -   U--V   points (m)
149#else
150   LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .FALSE.   !: fixed grid flag
151#endif
152   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET ::   hur  , hvr    !: inverse of u and v-points ocean depth (1/m)
153   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)         ::   hu   , hv     !: depth at u- and v-points (meters)
154   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)         ::   hu_0 , hv_0   !: refernce depth at u- and v-points (meters)
155
156   INTEGER, PUBLIC ::   nla10              !: deepest    W level Above  ~10m (nlb10 - 1)
157   INTEGER, PUBLIC ::   nlb10              !: shallowest W level Bellow ~10m (nla10 + 1)
158
159   !! z-coordinate with full steps (also used in the other cases as reference z-coordinate)
160   !! =-----------------====------
161   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   :: gdept_0, gdepw_0 !: reference depth of t- and w-points (m)
162   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   :: e3t_0  , e3w_0   !: reference vertical scale factors at T- and W-pts (m)
163   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e3tp   , e3wp    !: ocean bottom level thickness at T and W points
164
165   !! s-coordinate and hybrid z-s-coordinate
166   !! =----------------======---------------
167   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   gsigt, gsigw   !: model level depth coefficient at t-, w-levels (analytic)
168   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   gsi3w          !: model level depth coefficient at w-level (sum of gsigw)
169   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   esigt, esigw   !: vertical scale factor coef. at t-, w-levels
170
171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hbatv , hbatf    !: ocean depth at the vertical of  V--F
172   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hbatt , hbatu    !:                                 T--U  points (m)
173   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   scosrf, scobot   !: ocean surface and bottom topographies
174   !                                        !  (if deviating from coordinate surfaces in HYBRID)
175   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hifv  , hiff     !: interface depth between stretching at  V--F
176   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hift  , hifu     !: and quasi-uniform spacing              T--U  points (m)
177
178   !!----------------------------------------------------------------------
179   !! masks, bathymetry
180   !! ---------------------------------------------------------------------
181   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbathy       !: number of ocean level (=0, 1, ... , jpk-1)
182   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbkt         !: vertical index of the bottom last T- ocean level
183   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbku, mbkv   !: vertical index of the bottom last U- and W- ocean level
184   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   bathy        !: ocean depth (meters)
185   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_i      !: interior domain T-point mask
186   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   bmask        !: land/ocean mask of barotropic stream function
187
188   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tmask, umask, vmask, fmask   !: land/ocean mask at T-, U-, V- and F-pts
189
190   REAL(wp), PUBLIC, DIMENSION(jpiglo) ::   tpol, fpol          !: north fold mask (jperio= 3 or 4)
191
192#if defined key_noslip_accurate
193   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:  ) :: npcoa        !: ???
194   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: nicoa, njcoa !: ???
195#endif
196
197   !!----------------------------------------------------------------------
198   !! calendar variables
199   !! ---------------------------------------------------------------------
200   INTEGER , PUBLIC ::   nyear         !: current year
201   INTEGER , PUBLIC ::   nmonth        !: current month
202   INTEGER , PUBLIC ::   nday          !: current day of the month
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     !: current time step counted in second since 00h jan 1st of the current year
206   INTEGER , PUBLIC ::   nsec_month    !: current time step counted in second since 00h 1st day of the current month
207   INTEGER , PUBLIC ::   nsec_week     !: current time step counted in second since 00h of last monday
208   INTEGER , PUBLIC ::   nsec_day      !: current time step counted in second since 00h of the current day
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: 1) ::   nyear_len     !: length in days of the previous/current year
214   INTEGER , PUBLIC, DIMENSION(0:13) ::   nmonth_len    !: length in days of the months of the current year
215   INTEGER , PUBLIC, DIMENSION(0:13) ::   nmonth_half   !: second since Jan 1st 0h of the current year and the half of the months
216   INTEGER , PUBLIC, DIMENSION(0:13) ::   nmonth_end    !: second since Jan 1st 0h of the current year and the end of the months
217   INTEGER , PUBLIC                  ::   nsec1jan000   !: second since Jan 1st 0h of nit000 year and Jan 1st 0h the current year
218
219   !!----------------------------------------------------------------------
220   !! mpp reproducibility
221   !!----------------------------------------------------------------------
222#if defined key_mpp_rep
223   LOGICAL, PUBLIC, PARAMETER ::   lk_mpp_rep = .TRUE.    !: agrif flag
224#else
225   LOGICAL, PUBLIC, PARAMETER ::   lk_mpp_rep = .FALSE.   !: agrif flag
226#endif
227
228   !!----------------------------------------------------------------------
229   !! agrif domain
230   !!----------------------------------------------------------------------
231#if defined key_agrif
232   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .TRUE.    !: agrif flag
233#else
234   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .FALSE.   !: agrif flag
235#endif
236
237   !!----------------------------------------------------------------------
238   !! NEMO/OPA 4.0 , NEMO Consortium (2011)
239   !! $Id$
240   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
241   !!----------------------------------------------------------------------
242CONTAINS
243
244#if ! defined key_agrif
245   !!----------------------------------------------------------------------
246   !! NOT 'key_agrif'      dummy function                     No AGRIF zoom
247   !!----------------------------------------------------------------------
248   LOGICAL FUNCTION Agrif_Root()
249      Agrif_Root = .TRUE.
250   END FUNCTION Agrif_Root
251
252   CHARACTER(len=3) FUNCTION Agrif_CFixed()
253      Agrif_CFixed = '0' 
254   END FUNCTION Agrif_CFixed
255#endif
256
257   INTEGER FUNCTION dom_oce_alloc()
258      !!----------------------------------------------------------------------
259      INTEGER, DIMENSION(11) :: ierr
260      !!----------------------------------------------------------------------
261      ierr(:) = 0
262      !
263      ALLOCATE( rdttra(jpk), r2dtra(jpk), mig(jpi), mjg(jpj), STAT=ierr(1) )
264         !
265      ALLOCATE( nimppt(jpnij) , ibonit(jpnij) , nlcit(jpnij) , nlcjt(jpnij) ,     &
266         &      njmppt(jpnij) , ibonjt(jpnij) , nldit(jpnij) , nldjt(jpnij) ,     &
267         &                                      nleit(jpnij) , nlejt(jpnij) , STAT=ierr(2) )
268         !
269      ALLOCATE( glamt(jpi,jpj) , gphit(jpi,jpj) , e1t(jpi,jpj) , e2t(jpi,jpj) ,                      & 
270         &      glamu(jpi,jpj) , gphiu(jpi,jpj) , e1u(jpi,jpj) , e2u(jpi,jpj) ,                      & 
271         &      glamv(jpi,jpj) , gphiv(jpi,jpj) , e1v(jpi,jpj) , e2v(jpi,jpj) , e1e2t(jpi,jpj) ,     & 
272         &      glamf(jpi,jpj) , gphif(jpi,jpj) , e1f(jpi,jpj) , e2f(jpi,jpj) , ff   (jpi,jpj) , STAT=ierr(3) )     
273         !
274      ALLOCATE( gdep3w(jpi,jpj,jpk) , e3v(jpi,jpj,jpk) , e3f (jpi,jpj,jpk) ,                         &
275         &      gdept (jpi,jpj,jpk) , e3t(jpi,jpj,jpk) , e3u (jpi,jpj,jpk) ,                         &
276         &      gdepw (jpi,jpj,jpk) , e3w(jpi,jpj,jpk) , e3vw(jpi,jpj,jpk) , e3uw(jpi,jpj,jpk) , STAT=ierr(4) )
277         !
278#if defined key_vvl
279      ALLOCATE( gdep3w_1(jpi,jpj,jpk) , e3v_1(jpi,jpj,jpk) , e3f_1 (jpi,jpj,jpk) ,                           &
280         &      gdept_1 (jpi,jpj,jpk) , e3t_1(jpi,jpj,jpk) , e3u_1 (jpi,jpj,jpk) ,                           &
281         &      gdepw_1 (jpi,jpj,jpk) , e3w_1(jpi,jpj,jpk) , e3vw_1(jpi,jpj,jpk) , e3uw_1(jpi,jpj,jpk) ,     &
282         &      e3t_b   (jpi,jpj,jpk) , e3u_b(jpi,jpj,jpk) , e3v_b (jpi,jpj,jpk)                       , STAT=ierr(5) )
283#endif
284         !
285      ALLOCATE( hu(jpi,jpj) , hur(jpi,jpj) , hu_0(jpi,jpj) ,     &
286         &      hv(jpi,jpj) , hvr(jpi,jpj) , hv_0(jpi,jpj) , STAT=ierr(6) )
287         !
288      ALLOCATE( gdept_0(jpk) , gdepw_0(jpk) ,                                     &
289         &      e3t_0  (jpk) , e3w_0  (jpk) , e3tp (jpi,jpj), e3wp(jpi,jpj) ,     &
290         &      gsigt  (jpk) , gsigw  (jpk) , gsi3w(jpk)    ,                     &
291         &      esigt  (jpk) , esigw  (jpk)                                 , STAT=ierr(7) )
292         !
293      ALLOCATE( hbatv (jpi,jpj) , hbatf (jpi,jpj) ,     &
294         &      hbatt (jpi,jpj) , hbatu (jpi,jpj) ,     &
295         &      scosrf(jpi,jpj) , scobot(jpi,jpj) ,     &
296         &      hifv  (jpi,jpj) , hiff  (jpi,jpj) ,     &
297         &      hift  (jpi,jpj) , hifu  (jpi,jpj) , STAT=ierr(8) )
298
299      ALLOCATE( mbathy(jpi,jpj) , bathy(jpi,jpj) ,                     &
300         &     tmask_i(jpi,jpj) , bmask(jpi,jpj) ,                     &
301         &     mbkt   (jpi,jpj) , mbku (jpi,jpj) , mbkv(jpi,jpj) , STAT=ierr(9) )
302
303      ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk),     & 
304         &      vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk), STAT=ierr(10) )
305
306#if defined key_noslip_accurate
307      ALLOCATE( npcoa(4,jpk), nicoa(2*(jpi+jpj),4,jpk), njcoa(2*(jpi+jpj),4,jpk), STAT=ierr(11) )
308#endif
309      !
310      dom_oce_alloc = MAXVAL(ierr)
311      !
312   END FUNCTION dom_oce_alloc
313
314   !!======================================================================
315END MODULE dom_oce
Note: See TracBrowser for help on using the repository browser.