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 NEMO/trunk/src/OCE/DOM – NEMO

source: NEMO/trunk/src/OCE/DOM/dom_oce.F90 @ 12377

Last change on this file since 12377 was 12377, checked in by acc, 4 years ago

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

  • Property svn:keywords set to Id
File size: 20.8 KB
RevLine 
[3]1MODULE dom_oce
[1601]2   !!======================================================================
[3]3   !!                       ***  MODULE dom_oce  ***
4   !!       
5   !! ** Purpose :   Define in memory all the ocean space domain variables
[1601]6   !!======================================================================
7   !! History :  1.0  ! 2005-10  (A. Beckmann, G. Madec)  reactivate s-coordinate
[2528]8   !!            3.3  ! 2010-11  (G. Madec) add mbk. arrays associated to the deepest ocean level
[5836]9   !!            3.4  ! 2011-01  (A. R. Porter, STFC Daresbury) dynamical allocation
[3680]10   !!            3.5  ! 2012     (S. Mocavero, I. Epicoco) Add arrays associated
11   !!                             to the optimization of BDY communications
[5836]12   !!            3.7  ! 2015-11  (G. Madec) introduce surface and scale factor ratio
[6140]13   !!             -   ! 2015-11  (G. Madec, A. Coward)  time varying zgr by default
[12377]14   !!            4.1  ! 2019-08  (A. Coward, D. Storkey) rename prognostic variables in preparation for new time scheme.
[3]15   !!----------------------------------------------------------------------
16
[2715]17   !!----------------------------------------------------------------------
18   !!   Agrif_Root    : dummy function used when lk_agrif=F
19   !!   Agrif_CFixed  : dummy function used when lk_agrif=F
20   !!   dom_oce_alloc : dynamical allocation of dom_oce arrays
21   !!----------------------------------------------------------------------
22   USE par_oce        ! ocean parameters
23
[3]24   IMPLICIT NONE
[5836]25   PUBLIC             ! allows the acces to par_oce when dom_oce is used (exception to coding rules)
[3]26
[2715]27   PUBLIC dom_oce_alloc  ! Called from nemogcm.F90
28
[3]29   !!----------------------------------------------------------------------
[1601]30   !! time & space domain namelist
31   !! ----------------------------
[7646]32   !                                   !!* Namelist namdom : time & space domain *
33   LOGICAL , PUBLIC ::   ln_linssh      !: =T  linear free surface ==>> model level are fixed in time
[9169]34   LOGICAL , PUBLIC ::   ln_meshmask    !: =T  create a mesh-mask file (mesh_mask.nc)
[7646]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_crs         !: Apply grid coarsening to dynamical model output or online passive tracers
[4154]39
[5930]40   !! Free surface parameters
41   !! =======================
[7646]42   LOGICAL , PUBLIC :: ln_dynspg_exp    !: Explicit free surface flag
43   LOGICAL , PUBLIC :: ln_dynspg_ts     !: Split-Explicit free surface flag
[5930]44
[4370]45   !! Time splitting parameters
46   !! =========================
[7646]47   LOGICAL,  PUBLIC :: ln_bt_fw         !: Forward integration of barotropic sub-stepping
48   LOGICAL,  PUBLIC :: ln_bt_av         !: Time averaging of barotropic variables
49   LOGICAL,  PUBLIC :: ln_bt_auto       !: Set number of barotropic iterations automatically
50   INTEGER,  PUBLIC :: nn_bt_flt        !: Filter choice
51   INTEGER,  PUBLIC :: nn_baro          !: Number of barotropic iterations during one baroclinic step (rdt)
52   REAL(wp), PUBLIC :: rn_bt_cmax       !: Maximum allowed courant number (used if ln_bt_auto=T)
[9023]53   REAL(wp), PUBLIC :: rn_bt_alpha      !: Time stepping diffusion parameter
[4370]54
[3]55
[7646]56   !                                   !! old non-DOCTOR names still used in the model
57   REAL(wp), PUBLIC ::   atfp           !: asselin time filter parameter
58   REAL(wp), PUBLIC ::   rdt            !: time step for the dynamics and tracer
[4147]59
[7646]60   !                                   !!! associated variables
61   INTEGER , PUBLIC ::   neuler         !: restart euler forward option (0=Euler)
62   REAL(wp), PUBLIC ::   r2dt           !: = 2*rdt except at nit000 (=rdt) if neuler=0
[4147]63
[3]64   !!----------------------------------------------------------------------
[1601]65   !! space domain parameters
[1715]66   !!----------------------------------------------------------------------
[9667]67   INTEGER, PUBLIC ::   jperio   !: Global domain lateral boundary type (between 0 and 7)
[7646]68   !                                !  = 0 closed                 ;   = 1 cyclic East-West
[9667]69   !                                !  = 2 cyclic North-South     ;   = 3 North fold T-point pivot
[7646]70   !                                !  = 4 cyclic East-West AND North fold T-point pivot
71   !                                !  = 5 North fold F-point pivot
72   !                                !  = 6 cyclic East-West AND North fold F-point pivot
[9667]73   !                                !  = 7 bi-cyclic East-West AND North-South
74   LOGICAL, PUBLIC ::   l_Iperio, l_Jperio   !   should we explicitely take care I/J periodicity
[1601]75
[7646]76   !                                 !  domain MPP decomposition parameters
77   INTEGER             , PUBLIC ::   nimpp, njmpp     !: i- & j-indexes for mpp-subdomain left bottom
78   INTEGER             , PUBLIC ::   nreci, nrecj     !: overlap region in i and j
79   INTEGER             , PUBLIC ::   nproc            !: number for local processor
80   INTEGER             , PUBLIC ::   narea            !: number for local area
81   INTEGER             , PUBLIC ::   nbondi, nbondj   !: mark of i- and j-direction local boundaries
[3680]82   INTEGER, ALLOCATABLE, PUBLIC ::   nbondi_bdy(:)    !: mark i-direction local boundaries for BDY open boundaries
83   INTEGER, ALLOCATABLE, PUBLIC ::   nbondj_bdy(:)    !: mark j-direction local boundaries for BDY open boundaries
84   INTEGER, ALLOCATABLE, PUBLIC ::   nbondi_bdy_b(:)  !: mark i-direction of neighbours local boundaries for BDY open boundaries 
85   INTEGER, ALLOCATABLE, PUBLIC ::   nbondj_bdy_b(:)  !: mark j-direction of neighbours local boundaries for BDY open boundaries 
86
[1601]87   INTEGER, PUBLIC ::   npolj             !: north fold mark (0, 3 or 4)
88   INTEGER, PUBLIC ::   nlci, nldi, nlei  !: i-dimensions of the local subdomain and its first and last indoor indices
89   INTEGER, PUBLIC ::   nlcj, nldj, nlej  !: i-dimensions of the local subdomain and its first and last indoor indices
90   INTEGER, PUBLIC ::   noea, nowe        !: index of the local neighboring processors in
91   INTEGER, PUBLIC ::   noso, nono        !: east, west, south and north directions
92   INTEGER, PUBLIC ::   nidom             !: ???
93
[2715]94   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mig        !: local  ==> global domain i-index
95   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mjg        !: local  ==> global domain j-index
[7646]96   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mi0, mi1   !: global ==> local  domain i-index (mi0=1 and mi1=0 if the global index
97   !                                                                !                                             is not in the local domain)
98   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   mj0, mj1   !: global ==> local  domain j-index (mj0=1 and mj1=0 if the global index
99   !                                                                !                                             is not in the local domain)
[2715]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
[4671]105   INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nfiimpp, nfipproc, nfilcit
[1601]106
107   !!----------------------------------------------------------------------
[3]108   !! horizontal curvilinear coordinate and scale factors
109   !! ---------------------------------------------------------------------
[7646]110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   glamt , glamu, glamv , glamf    !: longitude at t, u, v, f-points [degree]
111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   gphit , gphiu, gphiv , gphif    !: latitude  at t, u, v, f-points [degree]
[5836]112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1t   , e2t  , r1_e1t, r1_e2t   !: t-point horizontal scale factors    [m]
113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1u   , e2u  , r1_e1u, r1_e2u   !: horizontal scale factors at u-point [m]
114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1v   , e2v  , r1_e1v, r1_e2v   !: horizontal scale factors at v-point [m]
115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) ::   e1f   , e2f  , r1_e1f, r1_e2f   !: horizontal scale factors at f-point [m]
116   !
[7646]117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2t , r1_e1e2t                !: associated metrics at t-point
118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2u , r1_e1e2u , e2_e1u       !: associated metrics at u-point
119   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2v , r1_e1e2v , e1_e2v       !: associated metrics at v-point
120   REAL(wp), PUBLIC, ALLOCATABLE, SAVE        , DIMENSION(:,:) ::   e1e2f , r1_e1e2f                !: associated metrics at f-point
[5836]121   !
[12377]122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ff_f  , ff_t                    !: Coriolis factor at f- & t-points  [1/s]
[3]123   !!----------------------------------------------------------------------
124   !! vertical coordinate and scale factors
[1715]125   !! ---------------------------------------------------------------------
[6140]126   LOGICAL, PUBLIC ::   ln_zco       !: z-coordinate - full step
127   LOGICAL, PUBLIC ::   ln_zps       !: z-coordinate - partial step
128   LOGICAL, PUBLIC ::   ln_sco       !: s-coordinate or hybrid z-s coordinate
129   LOGICAL, PUBLIC ::   ln_isfcav    !: presence of ISF
[12377]130   !                                                        !  reference scale factors
131   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3t_0   !: t- vert. scale factor [m]
132   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3u_0   !: u- vert. scale factor [m]
133   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3v_0   !: v- vert. scale factor [m]
134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3f_0   !: f- vert. scale factor [m]
135   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3w_0   !: w- vert. scale factor [m]
136   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3uw_0   !: uw-vert. scale factor [m]
137   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3vw_0   !: vw-vert. scale factor [m]
138   !                                                        !  time-dependent scale factors
139   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e3t, e3u, e3v, e3w, e3uw, e3vw  !: vert. scale factor [m]
140   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   e3f                             !: F-point vert. scale factor [m]
[1601]141
[12377]142   !                                                        !  reference depths of cells
143   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_0  !: t- depth              [m]
144   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdepw_0  !: w- depth              [m]
145   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gde3w_0  !: w- depth (sum of e3w) [m]
146   !                                                        !  time-dependent depths of cells
147   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  gdept, gdepw 
148   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  gde3w 
[6140]149   
[12377]150   !                                                      !  reference heights of water column
151   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_0  !: t-depth              [m]
152   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hu_0  !: u-depth              [m]
153   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hv_0  !: v-depth              [m]
154                                                          ! time-dependent heights of water column
155   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ht                     !: height of water column at T-points [m]
156   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hu, hv, r1_hu, r1_hv   !: height of water column [m] and reciprocal [1/m]
[3]157
[1601]158   INTEGER, PUBLIC ::   nla10              !: deepest    W level Above  ~10m (nlb10 - 1)
159   INTEGER, PUBLIC ::   nlb10              !: shallowest W level Bellow ~10m (nla10 + 1)
[1577]160
[6140]161   !! 1D reference  vertical coordinate
[454]162   !! =-----------------====------
[4292]163   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   gdept_1d, gdepw_1d !: reference depth of t- and w-points (m)
164   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   e3t_1d  , e3w_1d   !: reference vertical scale factors at T- and W-pts (m)
[454]165
[12377]166   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   risfdep, bathy
[3]167
168   !!----------------------------------------------------------------------
[7646]169   !! masks, top and bottom ocean point position
[1715]170   !! ---------------------------------------------------------------------
[7646]171!!gm Proposition of new name for top/bottom vertical indices
172!   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mtk_t, mtk_u, mtk_v   !: top first wet T-, U-, V-, F-level (ISF)
173!   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbk_t, mbk_u, mbk_v   !: bottom last wet T-, U- and V-level
174!!gm
175   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mbkt, mbku, mbkv   !: bottom last wet T-, U- and V-level
[6140]176   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_i            !: interior domain T-point mask
177   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmask_h            !: internal domain T-point mask (Figure 8.5 NEMO book)
[3]178
[12377]179   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   mikt, miku, mikv, mikf  !: top first wet T-, U-, V-, F-level           (ISF)
[4990]180
[7646]181   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ssmask, ssumask, ssvmask             !: surface mask at T-,U-, V- and F-pts
[4292]182   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: tmask, umask, vmask, fmask   !: land/ocean mask at T-, U-, V- and F-pts
[5120]183   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: wmask, wumask, wvmask        !: land/ocean mask at WT-, WU- and WV-pts
[3]184
[4147]185   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   tpol, fpol          !: north fold mask (jperio= 3 or 4)
[3]186
187   !!----------------------------------------------------------------------
[1715]188   !! calendar variables
189   !! ---------------------------------------------------------------------
[2528]190   INTEGER , PUBLIC ::   nyear         !: current year
191   INTEGER , PUBLIC ::   nmonth        !: current month
192   INTEGER , PUBLIC ::   nday          !: current day of the month
[6140]193   INTEGER , PUBLIC ::   nhour         !: current hour
194   INTEGER , PUBLIC ::   nminute       !: current minute
[2528]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
[12377]197   INTEGER , PUBLIC ::   nsec_year     !: seconds between 00h jan 1st of the current  year and half of the current time step
198   INTEGER , PUBLIC ::   nsec_month    !: seconds between 00h 1st day of the current month and half of the current time step
199   INTEGER , PUBLIC ::   nsec_monday   !: seconds between 00h         of the last Monday   and half of the current time step
200   INTEGER , PUBLIC ::   nsec_day      !: seconds between 00h         of the current   day and half of the current time step
[2528]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)
[12377]205   INTEGER , PUBLIC, DIMENSION(  0: 2) ::   nyear_len     !: length in days of the previous/current/next year
206   INTEGER , PUBLIC, DIMENSION(-11:25) ::   nmonth_len    !: length in days of the months of the current year
207   INTEGER , PUBLIC, DIMENSION(-11:25) ::   nmonth_beg    !: second since Jan 1st 0h of the current year and the half of the months
208   INTEGER , PUBLIC                  ::   nsec1jan000     !: second since Jan 1st 0h of nit000 year and Jan 1st 0h the current year
209   INTEGER , PUBLIC                  ::   nsec000_1jan000   !: second since Jan 1st 0h of nit000 year and nit000
210   INTEGER , PUBLIC                  ::   nsecend_1jan000   !: second since Jan 1st 0h of nit000 year and nitend
[1715]211
212   !!----------------------------------------------------------------------
[1200]213   !! agrif domain
214   !!----------------------------------------------------------------------
215#if defined key_agrif
216   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .TRUE.    !: agrif flag
217#else
218   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .FALSE.   !: agrif flag
[2715]219#endif
[1886]220
[2715]221   !!----------------------------------------------------------------------
[9598]222   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
[7646]223   !! $Id$
[10068]224   !! Software governed by the CeCILL license (see ./LICENSE)
[2715]225   !!----------------------------------------------------------------------
[1886]226CONTAINS
[2715]227
228#if ! defined key_agrif
229   !!----------------------------------------------------------------------
230   !! NOT 'key_agrif'      dummy function                     No AGRIF zoom
231   !!----------------------------------------------------------------------
[1886]232   LOGICAL FUNCTION Agrif_Root()
233      Agrif_Root = .TRUE.
234   END FUNCTION Agrif_Root
235
236   CHARACTER(len=3) FUNCTION Agrif_CFixed()
[2715]237      Agrif_CFixed = '0' 
[1886]238   END FUNCTION Agrif_CFixed
[1200]239#endif
[2715]240
241   INTEGER FUNCTION dom_oce_alloc()
242      !!----------------------------------------------------------------------
[7646]243      INTEGER, DIMENSION(12) :: ierr
[2715]244      !!----------------------------------------------------------------------
245      ierr(:) = 0
246      !
[9436]247      ALLOCATE( mig(jpi), mjg(jpj), STAT=ierr(1) )
[2715]248         !
[9436]249      ALLOCATE( mi0(jpiglo)   , mi1 (jpiglo),  mj0(jpjglo)   , mj1 (jpjglo) ,     &
[7646]250         &      tpol(jpiglo)  , fpol(jpiglo)                                , STAT=ierr(2) )
[2715]251         !
[5836]252      ALLOCATE( glamt(jpi,jpj) ,    glamu(jpi,jpj) ,  glamv(jpi,jpj) ,  glamf(jpi,jpj) ,     &
253         &      gphit(jpi,jpj) ,    gphiu(jpi,jpj) ,  gphiv(jpi,jpj) ,  gphif(jpi,jpj) ,     &
254         &       e1t (jpi,jpj) ,     e2t (jpi,jpj) , r1_e1t(jpi,jpj) , r1_e2t(jpi,jpj) ,     &
255         &       e1u (jpi,jpj) ,     e2u (jpi,jpj) , r1_e1u(jpi,jpj) , r1_e2u(jpi,jpj) ,     &
256         &       e1v (jpi,jpj) ,     e2v (jpi,jpj) , r1_e1v(jpi,jpj) , r1_e2v(jpi,jpj) ,     &
257         &       e1f (jpi,jpj) ,     e2f (jpi,jpj) , r1_e1f(jpi,jpj) , r1_e2f(jpi,jpj) ,     &
258         &      e1e2t(jpi,jpj) , r1_e1e2t(jpi,jpj)                                     ,     &
259         &      e1e2u(jpi,jpj) , r1_e1e2u(jpi,jpj) , e2_e1u(jpi,jpj)                   ,     &
260         &      e1e2v(jpi,jpj) , r1_e1e2v(jpi,jpj) , e1_e2v(jpi,jpj)                   ,     &
261         &      e1e2f(jpi,jpj) , r1_e1e2f(jpi,jpj)                                     ,     &
[7646]262         &      ff_f (jpi,jpj) ,    ff_t (jpi,jpj)                                     , STAT=ierr(3) )
[2715]263         !
[12377]264      ALLOCATE( gdept_0(jpi,jpj,jpk)     , gdepw_0(jpi,jpj,jpk)     , gde3w_0(jpi,jpj,jpk) ,      &
265         &      gdept  (jpi,jpj,jpk,jpt) , gdepw  (jpi,jpj,jpk,jpt) , gde3w  (jpi,jpj,jpk) , STAT=ierr(4) )
[2715]266         !
[12377]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  (jpi,jpj,jpk,jpt) , e3u  (jpi,jpj,jpk,jpt) , e3v  (jpi,jpj,jpk,jpt) , e3f  (jpi,jpj,jpk) , e3w  (jpi,jpj,jpk,jpt) ,   & 
269         &      e3uw_0(jpi,jpj,jpk)     , e3vw_0(jpi,jpj,jpk)     ,         &
270         &      e3uw  (jpi,jpj,jpk,jpt) , e3vw  (jpi,jpj,jpk,jpt) ,    STAT=ierr(5) )                       
[2715]271         !
[12377]272      ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj)    , hv_0(jpi,jpj)     ,                                             &
273         &      ht  (jpi,jpj) , hu(  jpi,jpj,jpt), hv(  jpi,jpj,jpt) , r1_hu(jpi,jpj,jpt) , r1_hv(jpi,jpj,jpt) ,   &
274         &                      STAT=ierr(6)  )
[2715]275         !
[12377]276      ALLOCATE( risfdep(jpi,jpj) , bathy(jpi,jpj) , STAT=ierr(7)  ) 
[6140]277         !
[12377]278      ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , e3t_1d(jpk) , e3w_1d(jpk) , STAT=ierr(8) )
[2715]279         !
[7646]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         !
[12377]284      ALLOCATE( mikt(jpi,jpj), miku(jpi,jpj), mikv(jpi,jpj), mikf(jpi,jpj), STAT=ierr(10) )
[7646]285         !
286      ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk) ,     & 
287         &      vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk) , STAT=ierr(11) )
288         !
[5120]289      ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) )
[2715]290      !
291      dom_oce_alloc = MAXVAL(ierr)
292      !
293   END FUNCTION dom_oce_alloc
294
[1601]295   !!======================================================================
[3]296END MODULE dom_oce
Note: See TracBrowser for help on using the repository browser.