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 @ 1610

Last change on this file since 1610 was 1606, checked in by ctlod, 15 years ago

correct minor compilation error due to Doctor naming of OPA namelist variables, see ticket: #525

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 16.0 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   USE dom_oce , ONLY :   lk_vvl    => lk_vvl  !: variable grid flag
123
124   !* masks, bathymetry *
125   USE dom_oce , ONLY :   mbathy    =>   mbathy      !: number of ocean level (=0,  & 1, ... , jpk-1)
126   USE dom_oce , ONLY :   tmask_i   =>   tmask_i     !: Interior mask at t-points
127   USE dom_oce , ONLY :   tmask     =>   tmask       !: land/ocean mask at t-points
128   USE dom_oce , ONLY :   umask     =>   umask       !: land/ocean mask at u-points   
129   USE dom_oce , ONLY :   vmask     =>   vmask       !: land/ocean mask at v-points
130   USE dom_oce , ONLY :   fmask     =>   fmask       !: land/ocean mask at f-points
131# if defined key_off_degrad
132   USE dom_oce , ONLY :   facvol    =>   facvol      !: volume factor for degradation
133# endif
134
135   !* time domain *
136   USE dom_oce , ONLY :   neuler    =>   neuler      !: restart euler forward option (0=Euler)
137   USE dom_oce , ONLY :   rdt       =>   rdt         !: time step for the dynamics
138   USE dom_oce , ONLY :   atfp      =>   atfp        !: asselin time filter parameter
139   USE dom_oce , ONLY :   atfp1     =>   atfp1       !: asselin time filter coeff. (atfp1= 1-2*atfp)
140   USE dom_oce , ONLY :   rdttra    =>   rdttra      !: vertical profile of tracer time step
141   USE daymod  , ONLY :   ndastp    =>   ndastp      !: time step date in year/month/day aammjj
142   USE daymod  , ONLY :   nday_year =>   nday_year   !: curent day counted from jan 1st of the current year
143   USE daymod  , ONLY :   nyear     =>   nyear       !: Current year
144   USE daymod  , ONLY :   nmonth    =>   nmonth      !: Current month
145   USE daymod  , ONLY :   nday      =>   nday        !: Current day
146   USE daymod  , ONLY :   adatrj    =>   adatrj      !: number of elapsed days since the begining of the run
147   !                                                 !: it is the accumulated duration of previous runs
148   !                                                 !: that may have been run with different time steps.
149
150   !* ocean fields: here now and after fields *
151   USE oce , ONLY :   ua      =>    ua      !: i-horizontal velocity (m s-1)
152   USE oce , ONLY :   va      =>    va      !: j-horizontal velocity (m s-1)
153   USE oce , ONLY :   un      =>    un      !: i-horizontal velocity (m s-1)
154   USE oce , ONLY :   vn      =>    vn      !: j-horizontal velocity (m s-1)
155   USE oce , ONLY :   wn      =>    wn      !: vertical velocity (m s-1) 
156   USE oce , ONLY :   tn      =>    tn      !: pot. temperature (celsius)
157   USE oce , ONLY :   sn      =>    sn      !: salinity (psu)
158   USE oce , ONLY :   rhop    =>    rhop    !: potential volumic mass (kg m-3)
159   USE oce , ONLY :   rhd     =>    rhd     !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units)
160   USE oce , ONLY :   hdivn   =>    hdivn   !: horizontal divergence (1/s)
161#if defined key_off_tra
162   USE oce , ONLY :   gtu     =>    gtu     !: t-, s- and rd horizontal gradient at u- and
163   USE oce , ONLY :   gsu     =>    gsu     !: v-points at bottom ocean level
164   USE oce , ONLY :   gru     =>    gru     !:
165   USE oce , ONLY :   gtv     =>    gtv     !:
166   USE oce , ONLY :   gsv     =>    gsv     !:
167   USE oce , ONLY :   grv     =>    grv     !:
168#endif
169   USE lib_mpp , ONLY :   lk_mpp    =>  lk_mpp       !: Mpp flag
170
171   USE dom_oce , ONLY :   n_cla     =>   n_cla         !: flag (0/1) for cross land advection
172
173   !* surface fluxes *
174   USE sbc_oce , ONLY :   utau       =>    utau       !: i-surface stress component
175   USE sbc_oce , ONLY :   vtau       =>    vtau       !: j-surface stress component
176   USE sbc_oce , ONLY :   wndm       =>    wndm       !: 10m wind speed
177   USE sbc_oce , ONLY :   qsr        =>    qsr        !: penetrative solar radiation (w m-2) 
178   USE sbc_oce , ONLY :   emp        =>    emp        !: evaporation minus precipitation (kg m-2 s-2)
179   USE sbc_oce , ONLY :   emps       =>    emps       !: evaporation minus precipitation (kg m-2 s-2)
180   USE sbc_oce , ONLY :   fr_i       =>    fr_i       !: ice fraction (between 0 to 1)
181   USE traqsr  , ONLY :   rn_abs     =>    rn_abs     !: fraction absorbed in the very near surface
182   USE traqsr  , ONLY :   rn_si0     =>    rn_si0     !: very near surface depth of extinction
183   USE traqsr  , ONLY :   rn_si2     =>    rn_si2     !: deepest depth of extinction (blue &  0.01 mg.m-3)     (RGB)
184   USE traqsr  , ONLY :   ln_qsr_bio =>    ln_qsr_bio !: flag to use or not the biological fluxes for light
185   USE sbcrnf  , ONLY :   rnfmsk     =>    rnfmsk     !: mixed adv scheme in runoffs vicinity (hori.)
186   USE sbcrnf  , ONLY :   rnfmsk_z   =>    rnfmsk_z   !: mixed adv scheme in runoffs vicinity (vert.)
187
188   !* bottom boundary layer *
189# if   defined key_trabbl_dif   ||   defined key_trabbl_adv
190   USE trabbl , ONLY :   atrbbl   =>   rn_ahtbbl     !: lateral coeff. for bottom boundary layer scheme (m2/s)
191#  if defined key_off_tra
192   USE trabbl, ONLY :   bblx   => bblx         !: ???
193   USE trabbl, ONLY :   bbly   => bbly         !: ???
194#  endif
195# endif
196
197   !* lateral diffusivity (tracers) *
198   USE ldftra_oce , ONLY :   aht0    =>   aht0     !: horizontal eddy diffusivity for tracers (m2/s)
199   USE ldftra_oce , ONLY :   ahtb0   =>   ahtb0    !: background eddy diffusivity for isopycnal diff. (m2/s)
200   USE ldftra_oce , ONLY :   ahtu    =>   ahtu     !: lateral diffusivity coef. at u-points
201   USE ldftra_oce , ONLY :   ahtv    =>   ahtv     !: lateral diffusivity coef. at v-points
202   USE ldftra_oce , ONLY :   ahtw    =>   ahtw     !: lateral diffusivity coef. at w-points
203   USE ldftra_oce , ONLY :   ahtt    =>   ahtt     !: lateral diffusivity coef. at t-points
204   USE ldftra_oce , ONLY :   aeiv0   =>   aeiv0    !: eddy induced velocity coefficient (m2/s)
205   USE ldftra_oce , ONLY :   aeiu    =>   aeiu     !: eddy induced velocity coef. at u-points (m2/s)   
206   USE ldftra_oce , ONLY :   aeiv    =>   aeiv     !: eddy induced velocity coef. at v-points (m2/s)
207   USE ldftra_oce , ONLY :   aeiw    =>   aeiw     !: eddy induced velocity coef. at w-points (m2/s)
208
209   !* vertical diffusion *
210   USE zdf_oce , ONLY :   avt        =>   avt         !: vert. diffusivity coef. at w-point for temp 
211# if defined key_zdfddm
212   USE zdfddm  , ONLY :   avs        =>    avs        !: salinity vertical diffusivity coeff. at w-point
213# endif
214
215   !* mixing & mixed layer depth *
216   USE zdfmxl , ONLY :   nmln        =>   nmln        !: number of level in the mixed layer
217   USE zdfmxl , ONLY :   hmld        =>   hmld        !: mixing layer depth (turbocline)
218   USE zdfmxl , ONLY :   hmlp        =>   hmlp        !: mixed layer depth  (rho=rho0+zdcrit) (m)
219   USE zdfmxl , ONLY :   hmlpt       =>   hmlpt       !: mixed layer depth at t-points (m)
220
221   !* direction of lateral diffusion *
222   USE ldfslp , ONLY :   lk_ldfslp  =>  lk_ldfslp     !: slopes flag
223# if   defined key_ldfslp
224   USE ldfslp , ONLY :   uslp       =>   uslp         !: i-direction slope at u-, w-points
225   USE ldfslp , ONLY :   vslp       =>   vslp         !: j-direction slope at v-, w-points
226   USE ldfslp , ONLY :   wslpi      =>   wslpi        !: i-direction slope at u-, w-points
227   USE ldfslp , ONLY :   wslpj      =>   wslpj        !: j-direction slope at v-, w-points
228# endif
229
230#else
231   !!----------------------------------------------------------------------
232   !!  Empty module :                                     No passive tracer
233   !!----------------------------------------------------------------------
234#endif
235
236   !!======================================================================
237END MODULE oce_trc
Note: See TracBrowser for help on using the repository browser.