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 branches/dev_001_GM/NEMO/TOP_SRC – NEMO

source: branches/dev_001_GM/NEMO/TOP_SRC/oce_trc.F90 @ 770

Last change on this file since 770 was 770, checked in by gm, 16 years ago

dev_001_GM - some small things

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 15.6 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   !! $Header: $
11   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
12   !!----------------------------------------------------------------------
13#if defined key_passivetrc
14   !!----------------------------------------------------------------------
15   !!   'key_passivetrc'                                          TOP model
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
146   !* ocean fields: here now and after fields *
147   USE oce , ONLY :   ua      =>    ua      !: i-horizontal velocity (m s-1)
148   USE oce , ONLY :   va      =>    va      !: j-horizontal velocity (m s-1)
149   USE oce , ONLY :   un      =>    un      !: i-horizontal velocity (m s-1)
150   USE oce , ONLY :   vn      =>    vn      !: j-horizontal velocity (m s-1)
151   USE oce , ONLY :   wn      =>    wn      !: vertical velocity (m s-1) 
152   USE oce , ONLY :   tn      =>    tn      !: pot. temperature (celsius)
153   USE oce , ONLY :   sn      =>    sn      !: salinity (psu)
154   USE oce , ONLY :   rhop    =>    rhop    !: potential volumic mass (kg m-3)
155   USE oce , ONLY :   rhd     =>    rhd     !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units)
156# if defined key_trc_diatrd
157   USE oce , ONLY :   hdivn   =>    hdivn   !: horizontal divergence (1/s)
158# endif
159
160
161   USE lib_mpp , ONLY :   lk_mpp    =>  lk_mpp       !: Mpp flag
162
163   USE dynspg_oce , ONLY :   lk_dynspg_rl   =>  lk_dynspg_rl      !: rigid lid flag
164
165   USE dom_oce , ONLY :   n_cla     =>   n_cla         !: flag (0/1) for cross land advection
166
167
168
169   !* surface fluxes *
170# if defined key_flx_bulk_monthly || defined key_flx_bulk_daily || defined key_flx_core
171   USE blk_oce, ONLY :   vatm       =>    vatm       !: wind speed at sea surface (m s-1)
172# endif
173   USE taumod , ONLY :   taux       =>    taux       !: i-surface stress component
174   USE taumod , ONLY :   tauy       =>    tauy       !: j-surface stress component
175   USE ocesbc , ONLY :   qt         =>    qt         !: total surface heat flux (w m-2)   
176   USE ocesbc , ONLY :   qsr        =>    qsr        !: penetrative solar radiation (w m-2) 
177   USE ocesbc , ONLY :   emp        =>    emp        !: evaporation minus precipitation (kg m-2 s-2)
178   USE ocesbc , ONLY :   emps       =>    emps       !: evaporation minus precipitation (kg m-2 s-2)
179   USE traqsr , ONLY :   xsi1       =>   xsi1        !: first depth of extinction
180   USE traqsr , ONLY :   ln_qsr_sms =>  ln_qsr_sms   !: flag to use or not the biological fluxes for light
181   USE flxrnf , ONLY :   upsrnfh    =>   upsrnfh     !: mixed adv scheme in runoffs vicinity (hori.)
182   USE flxrnf , ONLY :   upsrnfz    =>   upsrnfz     !: mixed adv scheme in runoffs vicinity (vert.)
183   USE flxrnf , ONLY :   upsadv     =>   upsadv      !: mixed adv scheme in straits vicinity (hori.)
184
185   !* freezing area *
186   USE ocfzpt , ONLY :   freeze      =>    freeze     !: ice mask (0 or 1) 
187   USE ocfzpt , ONLY :   fzptn       =>    fzptn      !: now freezing temperature at ocean surface 
188
189   !* bottom boundary layer *
190# if   defined key_trabbl_dif   ||   defined key_trabbl_adv
191   USE trabbl , ONLY :   atrbbl   =>   atrbbl     !: lateral coeff. for bottom boundary layer scheme (m2/s)
192#  if defined key_off_tra
193   USE trabbl, ONLY :   bblx   => bblx         !: ???
194   USE trabbl, ONLY :   bbly   => bbly         !: ???
195#  endif
196# endif
197
198   !* lateral diffusivity (tracers) *
199   USE ldftra_oce , ONLY :   aht0    =>   aht0     !: horizontal eddy diffusivity for tracers (m2/s)
200   USE ldftra_oce , ONLY :   ahtb0   =>   ahtb0    !: background eddy diffusivity for isopycnal diff. (m2/s)
201   USE ldftra_oce , ONLY :   ahtu    =>   ahtu     !: lateral diffusivity coef. at u-points
202   USE ldftra_oce , ONLY :   ahtv    =>   ahtv     !: lateral diffusivity coef. at v-points
203   USE ldftra_oce , ONLY :   ahtw    =>   ahtw     !: lateral diffusivity coef. at w-points
204   USE ldftra_oce , ONLY :   ahtt    =>   ahtt     !: lateral diffusivity coef. at t-points
205   USE ldftra_oce , ONLY :   aeiv0   =>   aeiv0    !: eddy induced velocity coefficient (m2/s)
206   USE ldftra_oce , ONLY :   aeiu    =>   aeiu     !: eddy induced velocity coef. at u-points (m2/s)   
207   USE ldftra_oce , ONLY :   aeiv    =>   aeiv     !: eddy induced velocity coef. at v-points (m2/s)
208   USE ldftra_oce , ONLY :   aeiw    =>   aeiw     !: eddy induced velocity coef. at w-points (m2/s)
209
210   !* vertical diffusion *
211   USE zdf_oce , ONLY :   avt        =>   avt         !: vert. diffusivity coef. at w-point for temp 
212   USE zdf_oce , ONLY :   avt0       =>   avt0        !: vertical eddy diffusivity for tracers (m2/s)
213   USE zdf_oce , ONLY :   ln_zdfnpc  =>   ln_zdfnpc   !: convection: non-penetrative convection flag
214# if defined key_zdfddm
215   USE zdfddm  , ONLY :   avs        =>    avs        !: salinity vertical diffusivity coeff. at w-point
216# endif
217
218   !* mixing & mixed layer depth *
219   USE zdfmxl , ONLY :   hmld        =>   hmld        !: mixing layer depth (turbocline)
220   USE zdfmxl , ONLY :   hmlp        =>   hmlp        !: mixed layer depth  (rho=rho0+zdcrit) (m)
221   USE zdfmxl , ONLY :   hmlpt       =>   hmlpt       !: mixed layer depth at t-points (m)
222
223   !* direction of lateral diffusion *
224   USE ldfslp , ONLY :   lk_ldfslp  =>  lk_ldfslp     !: slopes flag
225# if   defined key_ldfslp
226   USE ldfslp , ONLY :   uslp       =>   uslp         !: i-direction slope at u-, w-points
227   USE ldfslp , ONLY :   vslp       =>   vslp         !: j-direction slope at v-, w-points
228   USE ldfslp , ONLY :   wslpi      =>   wslpi        !: i-direction slope at u-, w-points
229   USE ldfslp , ONLY :   wslpj      =>   wslpj        !: j-direction slope at v-, w-points
230# endif
231
232#else
233   !!----------------------------------------------------------------------
234   !!  Empty module :                                     No passive tracer
235   !!----------------------------------------------------------------------
236#endif
237
238   !!======================================================================
239END MODULE oce_trc
Note: See TracBrowser for help on using the repository browser.