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.
oce_trc.F90 in trunk/NEMO/TOP_SRC – NEMO

source: trunk/NEMO/TOP_SRC/oce_trc.F90 @ 1329

Last change on this file since 1329 was 1329, checked in by cetlod, 15 years ago

update modules to take into account the mask land points in NetCDF outputs, see ticket:322

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 15.8 KB
Line 
1MODULE oce_trc
2   !!======================================================================
3   !!                      ***  MODULE  oce_trc  ***
4   !! TOP :   variables shared between ocean and passive tracers
5   !!======================================================================
6   !! History :   1.0  !  2004-03  (C. Ethe)  original code
7   !!             2.0  !  2007-12 (C. Ethe, G. Madec)  rewritting
8   !!----------------------------------------------------------------------
9   !! NEMO/TOP 2.0,  LOCEAN-IPSL (2007)
10   !! $Id$
11   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
12   !!----------------------------------------------------------------------
13#if defined key_top
14   !!----------------------------------------------------------------------
15   !!   'key_top'                                                TOP models
16   !!----------------------------------------------------------------------
17
18   !* Domain size *
19   USE par_oce , ONLY :   cp_cfg   =>   cp_cfg     !: name of the configuration
20   USE par_oce , ONLY :   jp_cfg   =>   jp_cfg     !: resolution of the configuration
21   USE par_oce , ONLY :   jpiglo   =>   jpiglo     !: first  dimension of global domain --> i
22   USE par_oce , ONLY :   jpjglo   =>   jpjglo     !: second dimension of global domain --> j
23   USE par_oce , ONLY :   jpi      =>   jpi        !: first  dimension of grid --> i
24   USE par_oce , ONLY :   jpj      =>   jpj        !: second dimension of grid --> j 
25   USE par_oce , ONLY :   jpk      =>   jpk        !: number of levels 
26   USE par_oce , ONLY :   jpim1    =>   jpim1      !: jpi - 1
27   USE par_oce , ONLY :   jpjm1    =>   jpjm1      !: jpj - 1
28   USE par_oce , ONLY :   jpkm1    =>   jpkm1      !: jpk - 1 
29   USE par_oce , ONLY :   jpij     =>   jpij       !: jpi x jpj
30   USE par_oce , ONLY :   jpidta   =>   jpidta     !: first horizontal dimension  > or = jpi
31   USE par_oce , ONLY :   jpjdta   =>   jpjdta     !: second horizontal dimension > or = jpj
32   USE par_oce , ONLY :   jpkdta   =>   jpkdta     !: number of levels            > or = jpk
33   USE par_oce , ONLY :   lk_esopa =>   lk_esopa   !: flag to activate the all option
34
35   !* IO manager *
36   USE in_out_manager      ! use all the variables
37   !* physical constants *
38   USE phycst              ! use all the variables
39
40   !* model domain *
41   USE dom_oce , ONLY :   lzoom      => lzoom        !: zoom flag
42   USE dom_oce , ONLY :   lzoom_e    => lzoom_e      !: East  zoom type flag
43   USE dom_oce , ONLY :   lzoom_w    => lzoom_w      !: West  zoom type flag
44   USE dom_oce , ONLY :   lzoom_s    => lzoom_s      !: South zoom type flag
45   USE dom_oce , ONLY :   lzoom_n    => lzoom_n      !: North zoom type flag
46   USE dom_oce , ONLY :   lzoom_arct => lzoom_arct   !: ORCA    arctic zoom flag
47   USE dom_oce , ONLY :   lzoom_anta => lzoom_anta   !: ORCA antarctic zoom flag
48   USE dom_oce , ONLY :   nperio     =>   nperio     !: type of lateral boundary condition       
49   USE dom_oce , ONLY :   nimpp      =>   nimpp      !: i index for mpp-subdomain left bottom
50   USE dom_oce , ONLY :   njmpp      =>   njmpp      !: j index for mpp-subdomain left bottom
51   USE dom_oce , ONLY :   nproc      =>   nproc      !: number for local processor
52   USE dom_oce , ONLY :   narea      =>   narea      !: number for local area
53   USE dom_oce , ONLY :   mig        =>   mig        !: local  ==> global  domain i-indice
54   USE dom_oce , ONLY :   mjg        =>   mjg        !: local  ==> global  domain i-indice
55   USE dom_oce , ONLY :   mi0        =>   mi0        !: global ==> local domain i-indice
56   USE dom_oce , ONLY :   mi1        =>   mi1        !: (mi0=1 and mi1=0 if the global indice is not in the local one)
57   USE dom_oce , ONLY :   mj0        =>   mj0        !: global ==> local domain j-indice
58   USE dom_oce , ONLY :   mj1        =>   mj1        !: (mj0=1 and mj1=0 if the global indice is not in the local one)
59   USE dom_oce , ONLY :   nidom      =>   nidom
60   USE dom_oce , ONLY :   nimppt     => nimppt     !:i-indexes for each processor
61   USE dom_oce , ONLY :   njmppt     => njmppt       !:j-indexes for each processor
62   USE dom_oce , ONLY :   ibonit     => ibonit       !:i-processor neighbour existence
63   USE dom_oce , ONLY :   ibonjt     => ibonjt       !:j- processor neighbour existence
64   USE dom_oce , ONLY :   nlci       => nlci         !:i- & j-dimensions of the local subdomain
65   USE dom_oce , ONLY :   nlcj       => nlcj         !:
66   USE dom_oce , ONLY :   nldi       => nldi         !:first and last indoor i- and j-indexes
67   USE dom_oce , ONLY :   nlei       => nlei         !:
68   USE dom_oce , ONLY :   nldj       => nldj         !:
69   USE dom_oce , ONLY :   nlej       => nlej         !:
70   USE dom_oce , ONLY :   nlcit      => nlcit        !:dimensions of every i-subdomain
71   USE dom_oce , ONLY :   nlcjt      => nlcjt        !:dimensions of every j-subdomain
72   USE dom_oce , ONLY :   nldit      => nldit        !:first indoor index for each i-domain
73   USE dom_oce , ONLY :   nleit      => nleit        !:last indoor index for each i-domain
74   USE dom_oce , ONLY :   nldjt      => nldjt        !:first indoor index for each j-domain
75   USE dom_oce , ONLY :   nlejt      => nlejt        !:last indoor index for each j-domain
76 
77   !* horizontal mesh *
78   USE dom_oce , ONLY :   glamt      =>   glamt      !: longitude of t-point (degre) 
79   USE dom_oce , ONLY :   glamu      =>   glamu      !: longitude of t-point (degre) 
80   USE dom_oce , ONLY :   glamv      =>   glamv      !: longitude of t-point (degre) 
81   USE dom_oce , ONLY :   glamf      =>   glamf      !: longitude of t-point (degre) 
82   USE dom_oce , ONLY :   gphit      =>   gphit      !: latitude  of t-point (degre)   
83   USE dom_oce , ONLY :   gphiu      =>   gphiu      !: latitude  of t-point (degre)   
84   USE dom_oce , ONLY :   gphiv      =>   gphiv      !: latitude  of t-point (degre)   
85   USE dom_oce , ONLY :   gphif      =>   gphif      !: latitude  of t-point (degre)   
86   USE dom_oce , ONLY :   e1t        =>   e1t        !: horizontal scale factors at t-point (m) 
87   USE dom_oce , ONLY :   e2t        =>   e2t        !: horizontal scale factors at t-point (m)   
88   USE dom_oce , ONLY :   e1u        =>   e1u        !: horizontal scale factors at u-point (m)
89   USE dom_oce , ONLY :   e2u        =>   e2u        !: horizontal scale factors at u-point (m)
90   USE dom_oce , ONLY :   e1v        =>   e1v        !: horizontal scale factors at v-point (m)
91   USE dom_oce , ONLY :   e2v        =>   e2v        !: horizontal scale factors at v-point (m) 
92
93   !* vertical mesh *
94   USE dom_oce , ONLY :   gdept_0    =>   gdept_0    !: reference depth of t-points (m)
95   USE dom_oce , ONLY :   e3t_0      =>   e3t_0      !: reference depth of t-points (m) 
96   USE dom_oce , ONLY :   e3w_0      =>   e3w_0      !: reference depth of w-points (m)
97   USE dom_oce , ONLY :   gdepw_0    =>   gdepw_0    !: reference depth of w-points (m)
98# if ! defined key_zco
99   USE dom_oce , ONLY :   gdep3w     =>  gdep3w      !: ???
100   USE dom_oce , ONLY :   gdept      =>  gdept       !: depth of t-points (m)
101   USE dom_oce , ONLY :   gdepw      =>  gdepw       !: depth of t-points (m)
102   USE dom_oce , ONLY :   e3t        =>  e3t         !: vertical scale factors at t-
103   USE dom_oce , ONLY :   e3u        =>  e3u         !: vertical scale factors at u-
104   USE dom_oce , ONLY :   e3v        =>  e3v         !: vertical scale factors v-
105   USE dom_oce , ONLY :   e3w        =>  e3w         !: w-points (m)
106   USE dom_oce , ONLY :   e3f        =>  e3f         !: f-points (m)
107   USE dom_oce , ONLY :   e3uw       =>  e3uw        !: uw-points (m)
108   USE dom_oce , ONLY :   e3vw       =>  e3vw        !: vw-points (m)
109# endif
110   USE dom_oce , ONLY :   ln_zps     =>  ln_zps      !: partial steps flag
111   USE dom_oce , ONLY :   ln_sco     =>  ln_sco      !: s-coordinate flag
112   USE dom_oce , ONLY :   ln_zco     =>  ln_zco      !: z-coordinate flag
113   USE dom_oce , ONLY :   lk_zco     =>  lk_zco      !: z-coordinate flag (1D or 3D arrays)
114   USE dom_oce , ONLY :   hbatt     =>   hbatt       !: ocean depth at the vertical of  t-point (m)
115   USE dom_oce , ONLY :   hbatu     =>   hbatu       !: ocean depth at the vertical of  u-point (m)
116   USE dom_oce , ONLY :   hbatv     =>   hbatv       !: ocean depth at the vertical of w-point (m)
117   USE dom_oce , ONLY :   gsigt     =>   gsigt       !: model level depth coefficient at T-levels
118   USE dom_oce , ONLY :   gsigw     =>   gsigw       !: model level depth coefficient at W-levels
119   USE dom_oce , ONLY :   gsi3w     =>   gsi3w       !: model level depth coef at w-levels (defined as the sum of e3w)
120   USE dom_oce , ONLY :   esigt     =>   esigt       !: vertical scale factor coef. at t-levels
121   USE dom_oce , ONLY :   esigw     =>   esigw       !: vertical scale factor coef. at w-levels
122
123   !* masks, bathymetry *
124   USE dom_oce , ONLY :   mbathy    =>   mbathy      !: number of ocean level (=0,  & 1, ... , jpk-1)
125   USE dom_oce , ONLY :   tmask_i   =>   tmask_i     !: Interior mask at t-points
126   USE dom_oce , ONLY :   tmask     =>   tmask       !: land/ocean mask at t-points
127   USE dom_oce , ONLY :   umask     =>   umask       !: land/ocean mask at u-points   
128   USE dom_oce , ONLY :   vmask     =>   vmask       !: land/ocean mask at v-points
129   USE dom_oce , ONLY :   fmask     =>   fmask       !: land/ocean mask at f-points
130# if defined key_off_degrad
131   USE dom_oce , ONLY :   facvol    =>   facvol      !: volume factor for degradation
132# endif
133
134   !* time domain *
135   USE dom_oce , ONLY :   neuler    =>   neuler      !: restart euler forward option (0=Euler)
136   USE dom_oce , ONLY :   rdt       =>   rdt         !: time step for the dynamics
137   USE dom_oce , ONLY :   atfp      =>   atfp        !: asselin time filter parameter
138   USE dom_oce , ONLY :   atfp1     =>   atfp1       !: asselin time filter coeff. (atfp1= 1-2*atfp)
139   USE dom_oce , ONLY :   rdttra    =>   rdttra      !: vertical profile of tracer time step
140   USE daymod  , ONLY :   ndastp    =>   ndastp      !: time step date in year/month/day aammjj
141   USE daymod  , ONLY :   nday_year =>   nday_year   !: curent day counted from jan 1st of the current year
142   USE daymod  , ONLY :   nyear     =>   nyear       !: Current year
143   USE daymod  , ONLY :   nmonth    =>   nmonth      !: Current month
144   USE daymod  , ONLY :   nday      =>   nday        !: Current day
145   USE daymod  , ONLY :   adatrj    =>   adatrj      !: number of elapsed days since the begining of the run
146   !                                                 !: it is the accumulated duration of previous runs
147   !                                                 !: that may have been run with different time steps.
148
149   !* ocean fields: here now and after fields *
150   USE oce , ONLY :   ua      =>    ua      !: i-horizontal velocity (m s-1)
151   USE oce , ONLY :   va      =>    va      !: j-horizontal velocity (m s-1)
152   USE oce , ONLY :   un      =>    un      !: i-horizontal velocity (m s-1)
153   USE oce , ONLY :   vn      =>    vn      !: j-horizontal velocity (m s-1)
154   USE oce , ONLY :   wn      =>    wn      !: vertical velocity (m s-1) 
155   USE oce , ONLY :   tn      =>    tn      !: pot. temperature (celsius)
156   USE oce , ONLY :   sn      =>    sn      !: salinity (psu)
157   USE oce , ONLY :   rhop    =>    rhop    !: potential volumic mass (kg m-3)
158   USE oce , ONLY :   rhd     =>    rhd     !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units)
159   USE oce , ONLY :   hdivn   =>    hdivn   !: horizontal divergence (1/s)
160#if defined key_off_tra
161   USE oce , ONLY :   gtu     =>    gtu     !: t-, s- and rd horizontal gradient at u- and
162   USE oce , ONLY :   gsu     =>    gsu     !: v-points at bottom ocean level
163   USE oce , ONLY :   gru     =>    gru     !:
164   USE oce , ONLY :   gtv     =>    gtv     !:
165   USE oce , ONLY :   gsv     =>    gsv     !:
166   USE oce , ONLY :   grv     =>    grv     !:
167#endif
168   USE lib_mpp , ONLY :   lk_mpp    =>  lk_mpp       !: Mpp flag
169
170   USE dynspg_oce , ONLY :   lk_dynspg_rl   =>  lk_dynspg_rl      !: rigid lid flag
171
172   USE dom_oce , ONLY :   n_cla     =>   n_cla         !: flag (0/1) for cross land advection
173
174   !* surface fluxes *
175   USE sbc_oce , ONLY :   utau       =>    utau       !: i-surface stress component
176   USE sbc_oce , ONLY :   vtau       =>    vtau       !: j-surface stress component
177   USE sbc_oce , ONLY :   wndm       =>    wndm       !: 10m wind speed
178   USE sbc_oce , ONLY :   qsr        =>    qsr        !: penetrative solar radiation (w m-2) 
179   USE sbc_oce , ONLY :   emp        =>    emp        !: evaporation minus precipitation (kg m-2 s-2)
180   USE sbc_oce , ONLY :   emps       =>    emps       !: evaporation minus precipitation (kg m-2 s-2)
181   USE sbc_oce , ONLY :   fr_i       =>    fr_i       !: ice fraction (between 0 to 1)
182   USE traqsr  , ONLY :   xsi1       =>    xsi1       !: first depth of extinction
183   USE traqsr  , ONLY :   ln_qsr_sms =>    ln_qsr_sms !: flag to use or not the biological fluxes for light
184   USE sbcrnf  , ONLY :   rnfmsk     =>    rnfmsk     !: mixed adv scheme in runoffs vicinity (hori.)
185   USE sbcrnf  , ONLY :   rnfmsk_z   =>    rnfmsk_z   !: mixed adv scheme in runoffs vicinity (vert.)
186
187   !* bottom boundary layer *
188# if   defined key_trabbl_dif   ||   defined key_trabbl_adv
189   USE trabbl , ONLY :   atrbbl   =>   atrbbl     !: lateral coeff. for bottom boundary layer scheme (m2/s)
190#  if defined key_off_tra
191   USE trabbl, ONLY :   bblx   => bblx         !: ???
192   USE trabbl, ONLY :   bbly   => bbly         !: ???
193#  endif
194# endif
195
196   !* lateral diffusivity (tracers) *
197   USE ldftra_oce , ONLY :   aht0    =>   aht0     !: horizontal eddy diffusivity for tracers (m2/s)
198   USE ldftra_oce , ONLY :   ahtb0   =>   ahtb0    !: background eddy diffusivity for isopycnal diff. (m2/s)
199   USE ldftra_oce , ONLY :   ahtu    =>   ahtu     !: lateral diffusivity coef. at u-points
200   USE ldftra_oce , ONLY :   ahtv    =>   ahtv     !: lateral diffusivity coef. at v-points
201   USE ldftra_oce , ONLY :   ahtw    =>   ahtw     !: lateral diffusivity coef. at w-points
202   USE ldftra_oce , ONLY :   ahtt    =>   ahtt     !: lateral diffusivity coef. at t-points
203   USE ldftra_oce , ONLY :   aeiv0   =>   aeiv0    !: eddy induced velocity coefficient (m2/s)
204   USE ldftra_oce , ONLY :   aeiu    =>   aeiu     !: eddy induced velocity coef. at u-points (m2/s)   
205   USE ldftra_oce , ONLY :   aeiv    =>   aeiv     !: eddy induced velocity coef. at v-points (m2/s)
206   USE ldftra_oce , ONLY :   aeiw    =>   aeiw     !: eddy induced velocity coef. at w-points (m2/s)
207
208   !* vertical diffusion *
209   USE zdf_oce , ONLY :   avt        =>   avt         !: vert. diffusivity coef. at w-point for temp 
210# if defined key_zdfddm
211   USE zdfddm  , ONLY :   avs        =>    avs        !: salinity vertical diffusivity coeff. at w-point
212# endif
213
214   !* mixing & mixed layer depth *
215   USE zdfmxl , ONLY :   nmln        =>   nmln        !: number of level in the mixed layer
216   USE zdfmxl , ONLY :   hmld        =>   hmld        !: mixing layer depth (turbocline)
217   USE zdfmxl , ONLY :   hmlp        =>   hmlp        !: mixed layer depth  (rho=rho0+zdcrit) (m)
218   USE zdfmxl , ONLY :   hmlpt       =>   hmlpt       !: mixed layer depth at t-points (m)
219
220   !* direction of lateral diffusion *
221   USE ldfslp , ONLY :   lk_ldfslp  =>  lk_ldfslp     !: slopes flag
222# if   defined key_ldfslp
223   USE ldfslp , ONLY :   uslp       =>   uslp         !: i-direction slope at u-, w-points
224   USE ldfslp , ONLY :   vslp       =>   vslp         !: j-direction slope at v-, w-points
225   USE ldfslp , ONLY :   wslpi      =>   wslpi        !: i-direction slope at u-, w-points
226   USE ldfslp , ONLY :   wslpj      =>   wslpj        !: j-direction slope at v-, w-points
227# endif
228
229#else
230   !!----------------------------------------------------------------------
231   !!  Empty module :                                     No passive tracer
232   !!----------------------------------------------------------------------
233#endif
234
235   !!======================================================================
236END MODULE oce_trc
Note: See TracBrowser for help on using the repository browser.