[186] | 1 | MODULE oce_trc |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE oce_trc *** |
---|
[945] | 4 | !! TOP : variables shared between ocean and passive tracers |
---|
[186] | 5 | !!====================================================================== |
---|
[945] | 6 | !! History : 1.0 ! 2004-03 (C. Ethe) original code |
---|
| 7 | !! 2.0 ! 2007-12 (C. Ethe, G. Madec) rewritting |
---|
[186] | 8 | !!---------------------------------------------------------------------- |
---|
[945] | 9 | #if defined key_top |
---|
| 10 | !!---------------------------------------------------------------------- |
---|
| 11 | !! 'key_top' TOP models |
---|
| 12 | !!---------------------------------------------------------------------- |
---|
[186] | 13 | |
---|
[945] | 14 | !* Domain size * |
---|
| 15 | USE par_oce , ONLY : cp_cfg => cp_cfg !: name of the configuration |
---|
| 16 | USE par_oce , ONLY : jp_cfg => jp_cfg !: resolution of the configuration |
---|
| 17 | USE par_oce , ONLY : jpiglo => jpiglo !: first dimension of global domain --> i |
---|
| 18 | USE par_oce , ONLY : jpjglo => jpjglo !: second dimension of global domain --> j |
---|
| 19 | USE par_oce , ONLY : jpi => jpi !: first dimension of grid --> i |
---|
| 20 | USE par_oce , ONLY : jpj => jpj !: second dimension of grid --> j |
---|
| 21 | USE par_oce , ONLY : jpk => jpk !: number of levels |
---|
| 22 | USE par_oce , ONLY : jpim1 => jpim1 !: jpi - 1 |
---|
| 23 | USE par_oce , ONLY : jpjm1 => jpjm1 !: jpj - 1 |
---|
| 24 | USE par_oce , ONLY : jpkm1 => jpkm1 !: jpk - 1 |
---|
| 25 | USE par_oce , ONLY : jpij => jpij !: jpi x jpj |
---|
| 26 | USE par_oce , ONLY : jpidta => jpidta !: first horizontal dimension > or = jpi |
---|
| 27 | USE par_oce , ONLY : jpjdta => jpjdta !: second horizontal dimension > or = jpj |
---|
| 28 | USE par_oce , ONLY : jpkdta => jpkdta !: number of levels > or = jpk |
---|
| 29 | USE par_oce , ONLY : lk_esopa => lk_esopa !: flag to activate the all option |
---|
[2528] | 30 | USE par_oce , ONLY : jp_tem => jp_tem !: indice for temperature |
---|
| 31 | USE par_oce , ONLY : jp_sal => jp_sal !: indice for salinity |
---|
[186] | 32 | |
---|
[945] | 33 | !* IO manager * |
---|
[2528] | 34 | USE in_out_manager |
---|
[2715] | 35 | |
---|
| 36 | !* MPP library |
---|
| 37 | USE lib_mpp |
---|
| 38 | |
---|
| 39 | !* Fortran utilities |
---|
| 40 | USE lib_fortran |
---|
| 41 | |
---|
| 42 | !* Lateral boundary conditions |
---|
| 43 | USE lbclnk |
---|
| 44 | |
---|
[945] | 45 | !* physical constants * |
---|
[2528] | 46 | USE phycst |
---|
[186] | 47 | |
---|
[2528] | 48 | !* 1D configuration |
---|
| 49 | USE c1d |
---|
| 50 | |
---|
[945] | 51 | !* model domain * |
---|
| 52 | USE dom_oce , ONLY : lzoom => lzoom !: zoom flag |
---|
| 53 | USE dom_oce , ONLY : lzoom_e => lzoom_e !: East zoom type flag |
---|
| 54 | USE dom_oce , ONLY : lzoom_w => lzoom_w !: West zoom type flag |
---|
| 55 | USE dom_oce , ONLY : lzoom_s => lzoom_s !: South zoom type flag |
---|
| 56 | USE dom_oce , ONLY : lzoom_n => lzoom_n !: North zoom type flag |
---|
| 57 | USE dom_oce , ONLY : lzoom_arct => lzoom_arct !: ORCA arctic zoom flag |
---|
| 58 | USE dom_oce , ONLY : lzoom_anta => lzoom_anta !: ORCA antarctic zoom flag |
---|
| 59 | USE dom_oce , ONLY : nperio => nperio !: type of lateral boundary condition |
---|
| 60 | USE dom_oce , ONLY : nimpp => nimpp !: i index for mpp-subdomain left bottom |
---|
| 61 | USE dom_oce , ONLY : njmpp => njmpp !: j index for mpp-subdomain left bottom |
---|
| 62 | USE dom_oce , ONLY : nproc => nproc !: number for local processor |
---|
| 63 | USE dom_oce , ONLY : narea => narea !: number for local area |
---|
| 64 | USE dom_oce , ONLY : mig => mig !: local ==> global domain i-indice |
---|
| 65 | USE dom_oce , ONLY : mjg => mjg !: local ==> global domain i-indice |
---|
| 66 | USE dom_oce , ONLY : mi0 => mi0 !: global ==> local domain i-indice |
---|
| 67 | USE dom_oce , ONLY : mi1 => mi1 !: (mi0=1 and mi1=0 if the global indice is not in the local one) |
---|
| 68 | USE dom_oce , ONLY : mj0 => mj0 !: global ==> local domain j-indice |
---|
| 69 | USE dom_oce , ONLY : mj1 => mj1 !: (mj0=1 and mj1=0 if the global indice is not in the local one) |
---|
| 70 | USE dom_oce , ONLY : nidom => nidom |
---|
| 71 | USE dom_oce , ONLY : nimppt => nimppt !:i-indexes for each processor |
---|
| 72 | USE dom_oce , ONLY : njmppt => njmppt !:j-indexes for each processor |
---|
| 73 | USE dom_oce , ONLY : ibonit => ibonit !:i-processor neighbour existence |
---|
| 74 | USE dom_oce , ONLY : ibonjt => ibonjt !:j- processor neighbour existence |
---|
| 75 | USE dom_oce , ONLY : nlci => nlci !:i- & j-dimensions of the local subdomain |
---|
| 76 | USE dom_oce , ONLY : nlcj => nlcj !: |
---|
| 77 | USE dom_oce , ONLY : nldi => nldi !:first and last indoor i- and j-indexes |
---|
| 78 | USE dom_oce , ONLY : nlei => nlei !: |
---|
| 79 | USE dom_oce , ONLY : nldj => nldj !: |
---|
| 80 | USE dom_oce , ONLY : nlej => nlej !: |
---|
| 81 | USE dom_oce , ONLY : nlcit => nlcit !:dimensions of every i-subdomain |
---|
| 82 | USE dom_oce , ONLY : nlcjt => nlcjt !:dimensions of every j-subdomain |
---|
| 83 | USE dom_oce , ONLY : nldit => nldit !:first indoor index for each i-domain |
---|
| 84 | USE dom_oce , ONLY : nleit => nleit !:last indoor index for each i-domain |
---|
| 85 | USE dom_oce , ONLY : nldjt => nldjt !:first indoor index for each j-domain |
---|
| 86 | USE dom_oce , ONLY : nlejt => nlejt !:last indoor index for each j-domain |
---|
[335] | 87 | |
---|
[945] | 88 | !* horizontal mesh * |
---|
| 89 | USE dom_oce , ONLY : glamt => glamt !: longitude of t-point (degre) |
---|
| 90 | USE dom_oce , ONLY : glamu => glamu !: longitude of t-point (degre) |
---|
| 91 | USE dom_oce , ONLY : glamv => glamv !: longitude of t-point (degre) |
---|
| 92 | USE dom_oce , ONLY : glamf => glamf !: longitude of t-point (degre) |
---|
| 93 | USE dom_oce , ONLY : gphit => gphit !: latitude of t-point (degre) |
---|
| 94 | USE dom_oce , ONLY : gphiu => gphiu !: latitude of t-point (degre) |
---|
| 95 | USE dom_oce , ONLY : gphiv => gphiv !: latitude of t-point (degre) |
---|
| 96 | USE dom_oce , ONLY : gphif => gphif !: latitude of t-point (degre) |
---|
| 97 | USE dom_oce , ONLY : e1t => e1t !: horizontal scale factors at t-point (m) |
---|
| 98 | USE dom_oce , ONLY : e2t => e2t !: horizontal scale factors at t-point (m) |
---|
[2715] | 99 | USE dom_oce , ONLY : e1e2t => e1e2t !: cell surface at t-point (m2) |
---|
[945] | 100 | USE dom_oce , ONLY : e1u => e1u !: horizontal scale factors at u-point (m) |
---|
| 101 | USE dom_oce , ONLY : e2u => e2u !: horizontal scale factors at u-point (m) |
---|
| 102 | USE dom_oce , ONLY : e1v => e1v !: horizontal scale factors at v-point (m) |
---|
| 103 | USE dom_oce , ONLY : e2v => e2v !: horizontal scale factors at v-point (m) |
---|
[335] | 104 | |
---|
[945] | 105 | !* vertical mesh * |
---|
| 106 | USE dom_oce , ONLY : gdept_0 => gdept_0 !: reference depth of t-points (m) |
---|
| 107 | USE dom_oce , ONLY : e3t_0 => e3t_0 !: reference depth of t-points (m) |
---|
| 108 | USE dom_oce , ONLY : e3w_0 => e3w_0 !: reference depth of w-points (m) |
---|
| 109 | USE dom_oce , ONLY : gdepw_0 => gdepw_0 !: reference depth of w-points (m) |
---|
| 110 | USE dom_oce , ONLY : gdep3w => gdep3w !: ??? |
---|
| 111 | USE dom_oce , ONLY : gdept => gdept !: depth of t-points (m) |
---|
| 112 | USE dom_oce , ONLY : gdepw => gdepw !: depth of t-points (m) |
---|
| 113 | USE dom_oce , ONLY : e3t => e3t !: vertical scale factors at t- |
---|
| 114 | USE dom_oce , ONLY : e3u => e3u !: vertical scale factors at u- |
---|
| 115 | USE dom_oce , ONLY : e3v => e3v !: vertical scale factors v- |
---|
| 116 | USE dom_oce , ONLY : e3w => e3w !: w-points (m) |
---|
| 117 | USE dom_oce , ONLY : e3f => e3f !: f-points (m) |
---|
| 118 | USE dom_oce , ONLY : e3uw => e3uw !: uw-points (m) |
---|
| 119 | USE dom_oce , ONLY : e3vw => e3vw !: vw-points (m) |
---|
[2787] | 120 | |
---|
[945] | 121 | USE dom_oce , ONLY : ln_zps => ln_zps !: partial steps flag |
---|
| 122 | USE dom_oce , ONLY : ln_sco => ln_sco !: s-coordinate flag |
---|
| 123 | USE dom_oce , ONLY : ln_zco => ln_zco !: z-coordinate flag |
---|
[2528] | 124 | USE dom_oce , ONLY : hbatt => hbatt !: ocean depth at the vertical of t-point (m) |
---|
| 125 | USE dom_oce , ONLY : hbatu => hbatu !: ocean depth at the vertical of u-point (m) |
---|
| 126 | USE dom_oce , ONLY : hbatv => hbatv !: ocean depth at the vertical of w-point (m) |
---|
| 127 | USE dom_oce , ONLY : gsigt => gsigt !: model level depth coefficient at T-levels |
---|
| 128 | USE dom_oce , ONLY : gsigw => gsigw !: model level depth coefficient at W-levels |
---|
| 129 | USE dom_oce , ONLY : gsi3w => gsi3w !: model level depth coef at w-levels (defined as the sum of e3w) |
---|
| 130 | USE dom_oce , ONLY : esigt => esigt !: vertical scale factor coef. at t-levels |
---|
| 131 | USE dom_oce , ONLY : esigw => esigw !: vertical scale factor coef. at w-levels |
---|
| 132 | USE dom_oce , ONLY : lk_vvl => lk_vvl !: variable grid flag |
---|
| 133 | # if defined key_vvl |
---|
| 134 | USE dom_oce , ONLY : gdep3w_1 => gdep3w_1 !: ??? |
---|
| 135 | USE dom_oce , ONLY : gdept_1 => gdept_1 !: depth of t-points (m) |
---|
| 136 | USE dom_oce , ONLY : gdepw_1 => gdepw_1 !: depth of t-points (m) |
---|
| 137 | USE dom_oce , ONLY : e3t_1 => e3t_1 !: vertical scale factors at t- |
---|
| 138 | USE dom_oce , ONLY : e3u_1 => e3u_1 !: vertical scale factors at u- |
---|
| 139 | USE dom_oce , ONLY : e3v_1 => e3v_1 !: vertical scale factors v- |
---|
| 140 | USE dom_oce , ONLY : e3w_1 => e3w_1 !: w-points (m) |
---|
| 141 | USE dom_oce , ONLY : e3f_1 => e3f_1 !: f-points (m) |
---|
| 142 | USE dom_oce , ONLY : e3uw_1 => e3uw_1 !: uw-points (m) |
---|
| 143 | USE dom_oce , ONLY : e3vw_1 => e3vw_1 !: vw-points (m) |
---|
| 144 | # endif |
---|
[945] | 145 | !* masks, bathymetry * |
---|
[2528] | 146 | USE dom_oce , ONLY : mbkt => mbkt !: vertical index of the bottom last T- ocean level |
---|
| 147 | USE dom_oce , ONLY : mbku => mbku !: vertical index of the bottom last U- ocean level |
---|
| 148 | USE dom_oce , ONLY : mbkv => mbkv !: vertical index of the bottom last V- ocean level |
---|
[1753] | 149 | USE dom_oce , ONLY : tmask_i => tmask_i !: Interior mask at t-points |
---|
| 150 | USE dom_oce , ONLY : tmask => tmask !: land/ocean mask at t-points |
---|
| 151 | USE dom_oce , ONLY : umask => umask !: land/ocean mask at u-points |
---|
| 152 | USE dom_oce , ONLY : vmask => vmask !: land/ocean mask at v-points |
---|
| 153 | USE dom_oce , ONLY : fmask => fmask !: land/ocean mask at f-points |
---|
[186] | 154 | |
---|
[945] | 155 | !* time domain * |
---|
[1753] | 156 | USE dom_oce , ONLY : neuler => neuler !: restart euler forward option (0=Euler) |
---|
| 157 | USE dom_oce , ONLY : rdt => rdt !: time step for the dynamics |
---|
| 158 | USE dom_oce , ONLY : atfp => atfp !: asselin time filter parameter |
---|
| 159 | USE dom_oce , ONLY : atfp1 => atfp1 !: asselin time filter coeff. (atfp1= 1-2*atfp) |
---|
| 160 | USE dom_oce , ONLY : rdttra => rdttra !: vertical profile of tracer time step |
---|
[1329] | 161 | ! !: it is the accumulated duration of previous runs |
---|
| 162 | ! !: that may have been run with different time steps. |
---|
[1753] | 163 | !* calendar variables * |
---|
| 164 | USE dom_oce , ONLY : nyear => nyear !: current year |
---|
| 165 | USE dom_oce , ONLY : nmonth => nmonth !: current month |
---|
| 166 | USE dom_oce , ONLY : nday => nday !: current day of the month |
---|
| 167 | USE dom_oce , ONLY : ndastp => ndastp !: time step date in yyyymmdd format |
---|
| 168 | USE dom_oce , ONLY : nday_year => nday_year !: current day counted from jan 1st of the current year |
---|
| 169 | USE dom_oce , ONLY : nsec_year => nsec_year !: current time step counted in second since 00h jan 1st of the current year |
---|
| 170 | USE dom_oce , ONLY : nsec_month => nsec_month !: current time step counted in second since 00h 1st day of the current month |
---|
| 171 | USE dom_oce , ONLY : nsec_day => nsec_day !: current time step counted in second since 00h of the current day |
---|
| 172 | USE dom_oce , ONLY : fjulday => fjulday !: julian day |
---|
| 173 | USE dom_oce , ONLY : adatrj => adatrj !: number of elapsed days since the begining of the whole simulation |
---|
| 174 | !: (cumulative duration of previous runs |
---|
| 175 | !: that may have used different time-step size) |
---|
| 176 | USE dom_oce , ONLY : nyear_len => nyear_len !: length in days of the previous/current year |
---|
| 177 | USE dom_oce , ONLY : nmonth_len => nmonth_len !: length in days of the months of the current year |
---|
[499] | 178 | |
---|
[1753] | 179 | |
---|
[945] | 180 | !* ocean fields: here now and after fields * |
---|
| 181 | USE oce , ONLY : ua => ua !: i-horizontal velocity (m s-1) |
---|
| 182 | USE oce , ONLY : va => va !: j-horizontal velocity (m s-1) |
---|
| 183 | USE oce , ONLY : un => un !: i-horizontal velocity (m s-1) |
---|
| 184 | USE oce , ONLY : vn => vn !: j-horizontal velocity (m s-1) |
---|
| 185 | USE oce , ONLY : wn => wn !: vertical velocity (m s-1) |
---|
| 186 | USE oce , ONLY : tn => tn !: pot. temperature (celsius) |
---|
| 187 | USE oce , ONLY : sn => sn !: salinity (psu) |
---|
[2528] | 188 | USE oce , ONLY : tsn => tsn !: 4D array contaning ( tn, sn ) |
---|
| 189 | USE oce , ONLY : tsb => tsb !: 4D array contaning ( tb, sb ) |
---|
| 190 | USE oce , ONLY : tsa => tsa !: 4D array contaning ( ta, sa ) |
---|
[945] | 191 | USE oce , ONLY : rhop => rhop !: potential volumic mass (kg m-3) |
---|
| 192 | USE oce , ONLY : rhd => rhd !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) |
---|
| 193 | USE oce , ONLY : hdivn => hdivn !: horizontal divergence (1/s) |
---|
[2528] | 194 | USE oce , ONLY : l_traldf_rot => l_traldf_rot !: rotated laplacian operator for lateral diffusion |
---|
| 195 | #if defined key_offline |
---|
| 196 | USE oce , ONLY : gtsu => gtsu !: t-, s- and rd horizontal gradient at u- and |
---|
| 197 | USE oce , ONLY : gtsv => gtsv !: |
---|
[1329] | 198 | USE oce , ONLY : gru => gru !: |
---|
| 199 | USE oce , ONLY : grv => grv !: |
---|
[2528] | 200 | # if defined key_degrad |
---|
| 201 | USE dommsk , ONLY : facvol => facvol !: volume factor for degradation |
---|
| 202 | # endif |
---|
| 203 | |
---|
[1329] | 204 | #endif |
---|
[201] | 205 | |
---|
[2528] | 206 | USE dom_oce , ONLY : nn_cla => nn_cla !: flag (0/1) for cross land advection |
---|
[186] | 207 | |
---|
[945] | 208 | !* surface fluxes * |
---|
| 209 | USE sbc_oce , ONLY : utau => utau !: i-surface stress component |
---|
| 210 | USE sbc_oce , ONLY : vtau => vtau !: j-surface stress component |
---|
[1011] | 211 | USE sbc_oce , ONLY : wndm => wndm !: 10m wind speed |
---|
[945] | 212 | USE sbc_oce , ONLY : qsr => qsr !: penetrative solar radiation (w m-2) |
---|
[2528] | 213 | USE sbc_oce , ONLY : emp => emp !: freshwater budget: volume flux [Kg/m2/s] |
---|
| 214 | USE sbc_oce , ONLY : emps => emps !: freshwater budget: concentration/dillution [Kg/m2/s] |
---|
| 215 | USE sbc_oce , ONLY : rnf => rnf !: river runoff [Kg/m2/s] |
---|
| 216 | USE sbc_oce , ONLY : ln_dm2dc => ln_dm2dc !: Daily mean to Diurnal Cycle short wave (qsr) |
---|
| 217 | USE sbc_oce , ONLY : ln_rnf => ln_rnf !: runoffs / runoff mouths |
---|
[1034] | 218 | USE sbc_oce , ONLY : fr_i => fr_i !: ice fraction (between 0 to 1) |
---|
[1445] | 219 | USE traqsr , ONLY : rn_abs => rn_abs !: fraction absorbed in the very near surface |
---|
| 220 | USE traqsr , ONLY : rn_si0 => rn_si0 !: very near surface depth of extinction |
---|
| 221 | USE traqsr , ONLY : ln_qsr_bio => ln_qsr_bio !: flag to use or not the biological fluxes for light |
---|
[945] | 222 | USE sbcrnf , ONLY : rnfmsk => rnfmsk !: mixed adv scheme in runoffs vicinity (hori.) |
---|
| 223 | USE sbcrnf , ONLY : rnfmsk_z => rnfmsk_z !: mixed adv scheme in runoffs vicinity (vert.) |
---|
[186] | 224 | |
---|
[2528] | 225 | USE trc_oce |
---|
[201] | 226 | |
---|
[945] | 227 | !* lateral diffusivity (tracers) * |
---|
| 228 | USE ldftra_oce , ONLY : aht0 => aht0 !: horizontal eddy diffusivity for tracers (m2/s) |
---|
| 229 | USE ldftra_oce , ONLY : ahtb0 => ahtb0 !: background eddy diffusivity for isopycnal diff. (m2/s) |
---|
| 230 | USE ldftra_oce , ONLY : ahtu => ahtu !: lateral diffusivity coef. at u-points |
---|
| 231 | USE ldftra_oce , ONLY : ahtv => ahtv !: lateral diffusivity coef. at v-points |
---|
| 232 | USE ldftra_oce , ONLY : ahtw => ahtw !: lateral diffusivity coef. at w-points |
---|
| 233 | USE ldftra_oce , ONLY : ahtt => ahtt !: lateral diffusivity coef. at t-points |
---|
| 234 | USE ldftra_oce , ONLY : aeiv0 => aeiv0 !: eddy induced velocity coefficient (m2/s) |
---|
| 235 | USE ldftra_oce , ONLY : aeiu => aeiu !: eddy induced velocity coef. at u-points (m2/s) |
---|
| 236 | USE ldftra_oce , ONLY : aeiv => aeiv !: eddy induced velocity coef. at v-points (m2/s) |
---|
| 237 | USE ldftra_oce , ONLY : aeiw => aeiw !: eddy induced velocity coef. at w-points (m2/s) |
---|
[186] | 238 | |
---|
[945] | 239 | !* vertical diffusion * |
---|
| 240 | USE zdf_oce , ONLY : avt => avt !: vert. diffusivity coef. at w-point for temp |
---|
| 241 | # if defined key_zdfddm |
---|
[2528] | 242 | USE zdfddm , ONLY : avs => avs !: salinity vertical diffusivity coeff. at w-point |
---|
[945] | 243 | # endif |
---|
[186] | 244 | |
---|
[945] | 245 | !* mixing & mixed layer depth * |
---|
[1177] | 246 | USE zdfmxl , ONLY : nmln => nmln !: number of level in the mixed layer |
---|
[945] | 247 | USE zdfmxl , ONLY : hmld => hmld !: mixing layer depth (turbocline) |
---|
| 248 | USE zdfmxl , ONLY : hmlp => hmlp !: mixed layer depth (rho=rho0+zdcrit) (m) |
---|
| 249 | USE zdfmxl , ONLY : hmlpt => hmlpt !: mixed layer depth at t-points (m) |
---|
[281] | 250 | |
---|
[945] | 251 | !* direction of lateral diffusion * |
---|
| 252 | USE ldfslp , ONLY : lk_ldfslp => lk_ldfslp !: slopes flag |
---|
| 253 | # if defined key_ldfslp |
---|
| 254 | USE ldfslp , ONLY : uslp => uslp !: i-direction slope at u-, w-points |
---|
| 255 | USE ldfslp , ONLY : vslp => vslp !: j-direction slope at v-, w-points |
---|
| 256 | USE ldfslp , ONLY : wslpi => wslpi !: i-direction slope at u-, w-points |
---|
| 257 | USE ldfslp , ONLY : wslpj => wslpj !: j-direction slope at v-, w-points |
---|
| 258 | # endif |
---|
[201] | 259 | |
---|
[945] | 260 | #else |
---|
| 261 | !!---------------------------------------------------------------------- |
---|
| 262 | !! Empty module : No passive tracer |
---|
| 263 | !!---------------------------------------------------------------------- |
---|
[186] | 264 | #endif |
---|
[201] | 265 | |
---|
[2528] | 266 | !!---------------------------------------------------------------------- |
---|
| 267 | !! NEMO/TOP 3.3 , NEMO Consortium (2010) |
---|
| 268 | !! $Id$ |
---|
| 269 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
[945] | 270 | !!====================================================================== |
---|
[186] | 271 | END MODULE oce_trc |
---|