Changeset 2528 for trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90
r1800 r2528 20 20 USE oce_trc ! ocean variables 21 21 USE trc 22 USE lbclnk 23 USE lib_mpp 24 USE lib_fortran 22 25 23 26 IMPLICIT NONE … … 28 31 # include "top_substitute.h90" 29 32 !!---------------------------------------------------------------------- 30 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)33 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 31 34 !! $Id$ 32 !! Software governed by the CeCILL licence ( modipsl/doc/NEMO_CeCILL.txt)35 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 33 36 !!---------------------------------------------------------------------- 34 37 … … 46 49 !!---------------------------------------------------------------------- 47 50 51 ! Control consitency 52 CALL trc_ctl_lobster 53 54 48 55 IF(lwp) WRITE(numout,*) 49 56 IF(lwp) WRITE(numout,*) ' trc_ini_lobster : LOBSTER biochemical model initialisation' 50 57 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~' 51 52 58 53 59 ! initialization of fields for optical model … … 118 124 ! Coastal mask 119 125 ! ------------ 120 cmask = 0.e0126 cmask(:,:) = 0.e0 121 127 DO ji = 2, jpi-1 122 128 DO jj = 2, jpj-1 … … 128 134 END DO 129 135 130 cmask( 1 ,:) = cmask(jpi-1,:) 131 cmask(jpi,:) = cmask( 2 ,:) 132 133 !!gm BUG !!!!! not valid in mpp and also not valid for north fold !!!!! 136 CALL lbc_lnk( cmask, 'T', 1. ) 134 137 135 138 ! Coastal surface 136 139 ! --------------- 137 areacot = 0.e0 138 DO ji = 2, jpi-1 139 DO jj = 2, jpj-1 140 areacot = areacot + e1t(ji,jj) * e2t(ji,jj) * cmask(ji,jj) 141 END DO 142 END DO 143 ! 140 areacot = glob_sum( e1t(:,:) * e2t(:,:) * cmask(:,:) ) 144 141 145 142 ! Initialization of tracer concentration in case of no restart … … 153 150 154 151 DO jk = 1, 7 155 trn(:,:,jk,jp det) = 0.016 * tmask(:,:,jk)156 trn(:,:,jk,jp zoo) = 0.018 * tmask(:,:,jk)157 trn(:,:,jk,jp phy) = 0.036 * tmask(:,:,jk)158 trn(:,:,jk,jp no3) = 1.e-5 * tmask(:,:,jk)159 trn(:,:,jk,jp nh4) = 5.e-4 * tmask(:,:,jk)160 trn(:,:,jk,jp dom) = 0.017 * tmask(:,:,jk)161 END DO 162 163 trn(:,:, 8,jp det) = 0.020 * tmask(:,:, 8)164 trn(:,:, 8,jp zoo) = 0.027 * tmask(:,:, 8)165 trn(:,:, 8,jp phy) = 0.041 * tmask(:,:, 8)166 trn(:,:, 8,jp no3) = 0.00022 * tmask(:,:, 8)167 trn(:,:, 8,jp nh4) = 0.0033 * tmask(:,:, 8)168 trn(:,:, 8,jp dom) = 0.021 * tmask(:,:, 8)169 170 trn(:,:, 9,jp det) = 0.0556 * tmask(:,:, 9)171 trn(:,:, 9,jp zoo) = 0.123 * tmask(:,:, 9)172 trn(:,:, 9,jp phy) = 0.122 * tmask(:,:, 9)173 trn(:,:, 9,jp no3) = 0.028 * tmask(:,:, 9)174 trn(:,:, 9,jp nh4) = 0.024 * tmask(:,:, 9)175 trn(:,:, 9,jp dom) = 0.06 * tmask(:,:, 9)176 177 trn(:,:,10,jp det) = 0.025 * tmask(:,:,10)178 trn(:,:,10,jp zoo) = 0.016 * tmask(:,:,10)179 trn(:,:,10,jp phy) = 0.029 * tmask(:,:,10)180 trn(:,:,10,jp no3) = 2.462 * tmask(:,:,10)181 trn(:,:,10,jp nh4) = 0.04 * tmask(:,:,10)182 trn(:,:,10,jp dom) = 0.022 * tmask(:,:,10)183 184 trn(:,:,11,jp det) = 0.0057 * tmask(:,:,11)185 trn(:,:,11,jp zoo) = 0.0005 * tmask(:,:,11)186 trn(:,:,11,jp phy) = 0.0006 * tmask(:,:,11)187 trn(:,:,11,jp no3) = 3.336 * tmask(:,:,11)188 trn(:,:,11,jp nh4) = 0.005 * tmask(:,:,11)189 trn(:,:,11,jp dom) = 0.004 * tmask(:,:,11)190 191 trn(:,:,12,jp det) = 0.002 * tmask(:,:,12)192 trn(:,:,12,jp zoo) = 1.e-6 * tmask(:,:,12)193 trn(:,:,12,jp phy) = 5.e-6 * tmask(:,:,12)194 trn(:,:,12,jp no3) = 4.24 * tmask(:,:,12)195 trn(:,:,12,jp nh4) = 0.001 * tmask(:,:,12)196 trn(:,:,12,jp dom) = 3.e-5 * tmask(:,:,12)152 trn(:,:,jk,jp_lob_det) = 0.016 * tmask(:,:,jk) 153 trn(:,:,jk,jp_lob_zoo) = 0.018 * tmask(:,:,jk) 154 trn(:,:,jk,jp_lob_phy) = 0.036 * tmask(:,:,jk) 155 trn(:,:,jk,jp_lob_no3) = 1.e-5 * tmask(:,:,jk) 156 trn(:,:,jk,jp_lob_nh4) = 5.e-4 * tmask(:,:,jk) 157 trn(:,:,jk,jp_lob_dom) = 0.017 * tmask(:,:,jk) 158 END DO 159 160 trn(:,:, 8,jp_lob_det) = 0.020 * tmask(:,:, 8) 161 trn(:,:, 8,jp_lob_zoo) = 0.027 * tmask(:,:, 8) 162 trn(:,:, 8,jp_lob_phy) = 0.041 * tmask(:,:, 8) 163 trn(:,:, 8,jp_lob_no3) = 0.00022 * tmask(:,:, 8) 164 trn(:,:, 8,jp_lob_nh4) = 0.0033 * tmask(:,:, 8) 165 trn(:,:, 8,jp_lob_dom) = 0.021 * tmask(:,:, 8) 166 167 trn(:,:, 9,jp_lob_det) = 0.0556 * tmask(:,:, 9) 168 trn(:,:, 9,jp_lob_zoo) = 0.123 * tmask(:,:, 9) 169 trn(:,:, 9,jp_lob_phy) = 0.122 * tmask(:,:, 9) 170 trn(:,:, 9,jp_lob_no3) = 0.028 * tmask(:,:, 9) 171 trn(:,:, 9,jp_lob_nh4) = 0.024 * tmask(:,:, 9) 172 trn(:,:, 9,jp_lob_dom) = 0.06 * tmask(:,:, 9) 173 174 trn(:,:,10,jp_lob_det) = 0.025 * tmask(:,:,10) 175 trn(:,:,10,jp_lob_zoo) = 0.016 * tmask(:,:,10) 176 trn(:,:,10,jp_lob_phy) = 0.029 * tmask(:,:,10) 177 trn(:,:,10,jp_lob_no3) = 2.462 * tmask(:,:,10) 178 trn(:,:,10,jp_lob_nh4) = 0.04 * tmask(:,:,10) 179 trn(:,:,10,jp_lob_dom) = 0.022 * tmask(:,:,10) 180 181 trn(:,:,11,jp_lob_det) = 0.0057 * tmask(:,:,11) 182 trn(:,:,11,jp_lob_zoo) = 0.0005 * tmask(:,:,11) 183 trn(:,:,11,jp_lob_phy) = 0.0006 * tmask(:,:,11) 184 trn(:,:,11,jp_lob_no3) = 3.336 * tmask(:,:,11) 185 trn(:,:,11,jp_lob_nh4) = 0.005 * tmask(:,:,11) 186 trn(:,:,11,jp_lob_dom) = 0.004 * tmask(:,:,11) 187 188 trn(:,:,12,jp_lob_det) = 0.002 * tmask(:,:,12) 189 trn(:,:,12,jp_lob_zoo) = 1.e-6 * tmask(:,:,12) 190 trn(:,:,12,jp_lob_phy) = 5.e-6 * tmask(:,:,12) 191 trn(:,:,12,jp_lob_no3) = 4.24 * tmask(:,:,12) 192 trn(:,:,12,jp_lob_nh4) = 0.001 * tmask(:,:,12) 193 trn(:,:,12,jp_lob_dom) = 3.e-5 * tmask(:,:,12) 197 194 198 195 DO jk=13,jpk 199 trn(:,:,jk,jp det) = 0.e0200 trn(:,:,jk,jp zoo) = 0.e0201 trn(:,:,jk,jp phy) = 0.e0202 trn(:,:,jk,jp nh4) = 0.e0203 trn(:,:,jk,jp dom) = 0.e0204 END DO 205 206 trn(:,:,13,jp no3) = 5.31 * tmask(:,:,13)207 trn(:,:,14,jp no3) = 6.73 * tmask(:,:,14)208 trn(:,:,15,jp no3) = 8.32 * tmask(:,:,15)209 trn(:,:,16,jp no3) = 10.13 * tmask(:,:,16)210 trn(:,:,17,jp no3) = 11.95 * tmask(:,:,17)211 trn(:,:,18,jp no3) = 13.57 * tmask(:,:,18)212 trn(:,:,19,jp no3) = 15.08 * tmask(:,:,19)213 trn(:,:,20,jp no3) = 16.41 * tmask(:,:,20)214 trn(:,:,21,jp no3) = 17.47 * tmask(:,:,21)215 trn(:,:,22,jp no3) = 18.29 * tmask(:,:,22)216 trn(:,:,23,jp no3) = 18.88 * tmask(:,:,23)217 trn(:,:,24,jp no3) = 19.30 * tmask(:,:,24)218 trn(:,:,25,jp no3) = 19.68 * tmask(:,:,25)219 trn(:,:,26,jp no3) = 19.91 * tmask(:,:,26)220 trn(:,:,27,jp no3) = 19.99 * tmask(:,:,27)221 trn(:,:,28,jp no3) = 20.01 * tmask(:,:,28)222 trn(:,:,29,jp no3) = 20.01 * tmask(:,:,29)223 trn(:,:,30,jp no3) = 20.01 * tmask(:,:,30)196 trn(:,:,jk,jp_lob_det) = 0.e0 197 trn(:,:,jk,jp_lob_zoo) = 0.e0 198 trn(:,:,jk,jp_lob_phy) = 0.e0 199 trn(:,:,jk,jp_lob_nh4) = 0.e0 200 trn(:,:,jk,jp_lob_dom) = 0.e0 201 END DO 202 203 trn(:,:,13,jp_lob_no3) = 5.31 * tmask(:,:,13) 204 trn(:,:,14,jp_lob_no3) = 6.73 * tmask(:,:,14) 205 trn(:,:,15,jp_lob_no3) = 8.32 * tmask(:,:,15) 206 trn(:,:,16,jp_lob_no3) = 10.13 * tmask(:,:,16) 207 trn(:,:,17,jp_lob_no3) = 11.95 * tmask(:,:,17) 208 trn(:,:,18,jp_lob_no3) = 13.57 * tmask(:,:,18) 209 trn(:,:,19,jp_lob_no3) = 15.08 * tmask(:,:,19) 210 trn(:,:,20,jp_lob_no3) = 16.41 * tmask(:,:,20) 211 trn(:,:,21,jp_lob_no3) = 17.47 * tmask(:,:,21) 212 trn(:,:,22,jp_lob_no3) = 18.29 * tmask(:,:,22) 213 trn(:,:,23,jp_lob_no3) = 18.88 * tmask(:,:,23) 214 trn(:,:,24,jp_lob_no3) = 19.30 * tmask(:,:,24) 215 trn(:,:,25,jp_lob_no3) = 19.68 * tmask(:,:,25) 216 trn(:,:,26,jp_lob_no3) = 19.91 * tmask(:,:,26) 217 trn(:,:,27,jp_lob_no3) = 19.99 * tmask(:,:,27) 218 trn(:,:,28,jp_lob_no3) = 20.01 * tmask(:,:,28) 219 trn(:,:,29,jp_lob_no3) = 20.01 * tmask(:,:,29) 220 trn(:,:,30,jp_lob_no3) = 20.01 * tmask(:,:,30) 224 221 225 222 # elif defined key_gyre … … 227 224 ! ---------------------- 228 225 ! here: init NO3=f(density) by asklod AS Kremeur 2005-07 229 trn(:,:,:,jp det) = 0.1 * tmask(:,:,:)230 trn(:,:,:,jp zoo) = 0.1 * tmask(:,:,:)231 trn(:,:,:,jp nh4) = 0.1 * tmask(:,:,:)232 trn(:,:,:,jp phy) = 0.1 * tmask(:,:,:)233 trn(:,:,:,jp dom) = 1.0 * tmask(:,:,:)226 trn(:,:,:,jp_lob_det) = 0.1 * tmask(:,:,:) 227 trn(:,:,:,jp_lob_zoo) = 0.1 * tmask(:,:,:) 228 trn(:,:,:,jp_lob_nh4) = 0.1 * tmask(:,:,:) 229 trn(:,:,:,jp_lob_phy) = 0.1 * tmask(:,:,:) 230 trn(:,:,:,jp_lob_dom) = 1.0 * tmask(:,:,:) 234 231 DO jk = 1, jpk 235 232 DO jj = 1, jpj 236 233 DO ji = 1, jpi 237 234 IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN 238 trn(ji,jj,jk,jp no3) = 2. * tmask(ji,jj,jk)235 trn(ji,jj,jk,jp_lob_no3) = 2. * tmask(ji,jj,jk) 239 236 ELSE 240 trn(ji,jj,jk,jp no3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk)237 trn(ji,jj,jk,jp_lob_no3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk) 241 238 ENDIF 242 239 END DO … … 259 256 END SUBROUTINE trc_ini_lobster 260 257 258 SUBROUTINE trc_ctl_lobster 259 !!---------------------------------------------------------------------- 260 !! *** ROUTINE trc_ctl_lobster *** 261 !! 262 !! ** Purpose : control the cpp options, namelist and files 263 !!---------------------------------------------------------------------- 264 INTEGER :: jl, jn 265 266 IF(lwp) WRITE(numout,*) 267 IF(lwp) WRITE(numout,*) ' use LOBSTER biological model ' 268 269 ! Check number of tracers 270 ! ----------------------- 271 IF( jp_lobster /= 6 ) CALL ctl_stop( ' LOBSTER has 6 passive tracers. Change jp_lobster in par_lobster.F90' ) 272 273 ! Check tracer names 274 ! ------------------ 275 IF( ctrcnm(jp_lob_det) /= 'DET' .OR. ctrcnm(jp_lob_zoo) /= 'ZOO' .OR. & 276 & ctrcnm(jp_lob_phy) /= 'PHY' .OR. ctrcnm(jp_lob_no3) /= 'NO3' .OR. & 277 & ctrcnm(jp_lob_nh4) /= 'NH4' .OR. ctrcnm(jp_lob_dom) /= 'DOM' .OR. & 278 & ctrcnl(jp_lob_det) /= 'Detritus' .OR. & 279 & ctrcnl(jp_lob_zoo) /= 'Zooplankton concentration' .OR. & 280 & ctrcnl(jp_lob_phy) /= 'Phytoplankton concentration' .OR. & 281 & ctrcnl(jp_lob_no3) /= 'Nitrate concentration' .OR. & 282 & ctrcnl(jp_lob_nh4) /= 'Ammonium concentration' .OR. & 283 & ctrcnl(jp_lob_dom) /= 'Dissolved organic matter' ) THEN 284 ctrcnm(jp_lob_det)='DET' 285 ctrcnl(jp_lob_det)='Detritus' 286 ctrcnm(jp_lob_zoo)='ZOO' 287 ctrcnl(jp_lob_zoo)='Zooplankton concentration' 288 ctrcnm(jp_lob_phy)='PHY' 289 ctrcnl(jp_lob_phy)='Phytoplankton concentration' 290 ctrcnm(jp_lob_no3)='NO3' 291 ctrcnl(jp_lob_no3)='Nitrate concentration' 292 ctrcnm(jp_lob_nh4)='NH4' 293 ctrcnl(jp_lob_nh4)='Ammonium concentration' 294 ctrcnm(jp_lob_dom)='DOM' 295 ctrcnl(jp_lob_dom)='Dissolved organic matter' 296 IF(lwp) THEN 297 CALL ctl_warn( ' We force tracer names ' ) 298 DO jl = 1, jp_lobster 299 jn = jp_lob0 + jl - 1 300 WRITE(numout,*) ' tracer nb: ',jn,' name = ',ctrcnm(jn), ctrcnl(jn) 301 END DO 302 WRITE(numout,*) ' ' 303 ENDIF 304 ENDIF 305 306 ! Check tracer units 307 DO jl = 1, jp_lobster 308 jn = jp_lob0 + jl - 1 309 IF( ctrcun(jn) /= 'mmole-N/m3') THEN 310 ctrcun(jn) = 'mmole-N/m3' 311 IF(lwp) THEN 312 CALL ctl_warn( ' We force tracer units ' ) 313 WRITE(numout,*) ' tracer ',ctrcnm(jn), 'UNIT= ',ctrcun(jn) 314 ENDIF 315 ENDIF 316 END DO 317 318 END SUBROUTINE trc_ctl_lobster 319 261 320 #else 262 321 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.