- Timestamp:
- 2010-08-02T12:57:40+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90
r1953 r2038 20 20 USE oce_trc ! ocean variables 21 21 USE trc 22 USE lbclnk 23 USE lib_mpp 22 24 23 25 IMPLICIT NONE … … 46 48 !!---------------------------------------------------------------------- 47 49 50 ! Control consitency 51 CALL trc_ctl_lobster 52 53 48 54 IF(lwp) WRITE(numout,*) 49 55 IF(lwp) WRITE(numout,*) ' trc_ini_lobster : LOBSTER biochemical model initialisation' 50 56 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~' 51 52 57 53 58 ! initialization of fields for optical model … … 118 123 ! Coastal mask 119 124 ! ------------ 120 cmask = 0.e0125 cmask(:,:) = 0.e0 121 126 DO ji = 2, jpi-1 122 127 DO jj = 2, jpj-1 … … 128 133 END DO 129 134 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 !!!!! 135 CALL lbc_lnk( cmask, 'T', 1. ) 134 136 135 137 ! Coastal surface 136 138 ! --------------- 137 139 areacot = 0.e0 138 DO ji = 2, jpi-1139 DO jj = 2, jpj-1140 DO ji = 1, jpi 141 DO jj = 1, jpj 140 142 areacot = areacot + e1t(ji,jj) * e2t(ji,jj) * cmask(ji,jj) 141 143 END DO 142 144 END DO 143 145 ! 146 IF( lk_mpp ) CALL mpp_sum( areacot ) ! sum over the global domain 144 147 145 148 ! Initialization of tracer concentration in case of no restart … … 153 156 154 157 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)158 trn(:,:,jk,jp_lob_det) = 0.016 * tmask(:,:,jk) 159 trn(:,:,jk,jp_lob_zoo) = 0.018 * tmask(:,:,jk) 160 trn(:,:,jk,jp_lob_phy) = 0.036 * tmask(:,:,jk) 161 trn(:,:,jk,jp_lob_no3) = 1.e-5 * tmask(:,:,jk) 162 trn(:,:,jk,jp_lob_nh4) = 5.e-4 * tmask(:,:,jk) 163 trn(:,:,jk,jp_lob_dom) = 0.017 * tmask(:,:,jk) 164 END DO 165 166 trn(:,:, 8,jp_lob_det) = 0.020 * tmask(:,:, 8) 167 trn(:,:, 8,jp_lob_zoo) = 0.027 * tmask(:,:, 8) 168 trn(:,:, 8,jp_lob_phy) = 0.041 * tmask(:,:, 8) 169 trn(:,:, 8,jp_lob_no3) = 0.00022 * tmask(:,:, 8) 170 trn(:,:, 8,jp_lob_nh4) = 0.0033 * tmask(:,:, 8) 171 trn(:,:, 8,jp_lob_dom) = 0.021 * tmask(:,:, 8) 172 173 trn(:,:, 9,jp_lob_det) = 0.0556 * tmask(:,:, 9) 174 trn(:,:, 9,jp_lob_zoo) = 0.123 * tmask(:,:, 9) 175 trn(:,:, 9,jp_lob_phy) = 0.122 * tmask(:,:, 9) 176 trn(:,:, 9,jp_lob_no3) = 0.028 * tmask(:,:, 9) 177 trn(:,:, 9,jp_lob_nh4) = 0.024 * tmask(:,:, 9) 178 trn(:,:, 9,jp_lob_dom) = 0.06 * tmask(:,:, 9) 179 180 trn(:,:,10,jp_lob_det) = 0.025 * tmask(:,:,10) 181 trn(:,:,10,jp_lob_zoo) = 0.016 * tmask(:,:,10) 182 trn(:,:,10,jp_lob_phy) = 0.029 * tmask(:,:,10) 183 trn(:,:,10,jp_lob_no3) = 2.462 * tmask(:,:,10) 184 trn(:,:,10,jp_lob_nh4) = 0.04 * tmask(:,:,10) 185 trn(:,:,10,jp_lob_dom) = 0.022 * tmask(:,:,10) 186 187 trn(:,:,11,jp_lob_det) = 0.0057 * tmask(:,:,11) 188 trn(:,:,11,jp_lob_zoo) = 0.0005 * tmask(:,:,11) 189 trn(:,:,11,jp_lob_phy) = 0.0006 * tmask(:,:,11) 190 trn(:,:,11,jp_lob_no3) = 3.336 * tmask(:,:,11) 191 trn(:,:,11,jp_lob_nh4) = 0.005 * tmask(:,:,11) 192 trn(:,:,11,jp_lob_dom) = 0.004 * tmask(:,:,11) 193 194 trn(:,:,12,jp_lob_det) = 0.002 * tmask(:,:,12) 195 trn(:,:,12,jp_lob_zoo) = 1.e-6 * tmask(:,:,12) 196 trn(:,:,12,jp_lob_phy) = 5.e-6 * tmask(:,:,12) 197 trn(:,:,12,jp_lob_no3) = 4.24 * tmask(:,:,12) 198 trn(:,:,12,jp_lob_nh4) = 0.001 * tmask(:,:,12) 199 trn(:,:,12,jp_lob_dom) = 3.e-5 * tmask(:,:,12) 197 200 198 201 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)202 trn(:,:,jk,jp_lob_det) = 0.e0 203 trn(:,:,jk,jp_lob_zoo) = 0.e0 204 trn(:,:,jk,jp_lob_phy) = 0.e0 205 trn(:,:,jk,jp_lob_nh4) = 0.e0 206 trn(:,:,jk,jp_lob_dom) = 0.e0 207 END DO 208 209 trn(:,:,13,jp_lob_no3) = 5.31 * tmask(:,:,13) 210 trn(:,:,14,jp_lob_no3) = 6.73 * tmask(:,:,14) 211 trn(:,:,15,jp_lob_no3) = 8.32 * tmask(:,:,15) 212 trn(:,:,16,jp_lob_no3) = 10.13 * tmask(:,:,16) 213 trn(:,:,17,jp_lob_no3) = 11.95 * tmask(:,:,17) 214 trn(:,:,18,jp_lob_no3) = 13.57 * tmask(:,:,18) 215 trn(:,:,19,jp_lob_no3) = 15.08 * tmask(:,:,19) 216 trn(:,:,20,jp_lob_no3) = 16.41 * tmask(:,:,20) 217 trn(:,:,21,jp_lob_no3) = 17.47 * tmask(:,:,21) 218 trn(:,:,22,jp_lob_no3) = 18.29 * tmask(:,:,22) 219 trn(:,:,23,jp_lob_no3) = 18.88 * tmask(:,:,23) 220 trn(:,:,24,jp_lob_no3) = 19.30 * tmask(:,:,24) 221 trn(:,:,25,jp_lob_no3) = 19.68 * tmask(:,:,25) 222 trn(:,:,26,jp_lob_no3) = 19.91 * tmask(:,:,26) 223 trn(:,:,27,jp_lob_no3) = 19.99 * tmask(:,:,27) 224 trn(:,:,28,jp_lob_no3) = 20.01 * tmask(:,:,28) 225 trn(:,:,29,jp_lob_no3) = 20.01 * tmask(:,:,29) 226 trn(:,:,30,jp_lob_no3) = 20.01 * tmask(:,:,30) 224 227 225 228 # elif defined key_gyre … … 227 230 ! ---------------------- 228 231 ! 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(:,:,:)232 trn(:,:,:,jp_lob_det) = 0.1 * tmask(:,:,:) 233 trn(:,:,:,jp_lob_zoo) = 0.1 * tmask(:,:,:) 234 trn(:,:,:,jp_lob_nh4) = 0.1 * tmask(:,:,:) 235 trn(:,:,:,jp_lob_phy) = 0.1 * tmask(:,:,:) 236 trn(:,:,:,jp_lob_dom) = 1.0 * tmask(:,:,:) 234 237 DO jk = 1, jpk 235 238 DO jj = 1, jpj 236 239 DO ji = 1, jpi 237 240 IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN 238 trn(ji,jj,jk,jp no3) = 2. * tmask(ji,jj,jk)241 trn(ji,jj,jk,jp_lob_no3) = 2. * tmask(ji,jj,jk) 239 242 ELSE 240 trn(ji,jj,jk,jp no3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk)243 trn(ji,jj,jk,jp_lob_no3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk) 241 244 ENDIF 242 245 END DO … … 259 262 END SUBROUTINE trc_ini_lobster 260 263 264 SUBROUTINE trc_ctl_lobster 265 !!---------------------------------------------------------------------- 266 !! *** ROUTINE trc_ctl_lobster *** 267 !! 268 !! ** Purpose : control the cpp options, namelist and files 269 !!---------------------------------------------------------------------- 270 INTEGER :: jl, jn 271 272 IF(lwp) WRITE(numout,*) 273 IF(lwp) WRITE(numout,*) ' use LOBSTER biological model ' 274 275 ! Check number of tracers 276 ! ----------------------- 277 IF (jp_lobster /= 6) THEN 278 IF (lwp) THEN 279 WRITE (numout,*) ' ===>>>> : w a r n i n g ' 280 WRITE (numout,*) ' ======= ============= ' 281 WRITE (numout,*) & 282 & ' STOP, change jp_lobster to 6 in ' & 283 & ,'par_lobster.F90 ' 284 END IF 285 STOP 'TRC_CTL' 286 END IF 287 ! Check tracer names 288 ! ------------------ 289 IF( ctrcnm(jp_lob_det) /= 'DET' .OR. ctrcnm(jp_lob_zoo) /= 'ZOO' .OR. & 290 & ctrcnm(jp_lob_phy) /= 'PHY' .OR. ctrcnm(jp_lob_no3) /= 'NO3' .OR. & 291 & ctrcnm(jp_lob_nh4) /= 'NH4' .OR. ctrcnm(jp_lob_dom) /= 'DOM' .OR. & 292 & ctrcnl(jp_lob_det) /= 'Detritus' .OR. & 293 & ctrcnl(jp_lob_zoo) /= 'Zooplankton concentration' .OR. & 294 & ctrcnl(jp_lob_phy) /= 'Phytoplankton concentration' .OR. & 295 & ctrcnl(jp_lob_no3) /= 'Nitrate concentration' .OR. & 296 & ctrcnl(jp_lob_nh4) /= 'Ammonium concentration' .OR. & 297 & ctrcnl(jp_lob_dom) /= 'Dissolved organic matter' ) THEN 298 ctrcnm(jp_lob_det)='DET' 299 ctrcnl(jp_lob_det)='Detritus' 300 ctrcnm(jp_lob_zoo)='ZOO' 301 ctrcnl(jp_lob_zoo)='Zooplankton concentration' 302 ctrcnm(jp_lob_phy)='PHY' 303 ctrcnl(jp_lob_phy)='Phytoplankton concentration' 304 ctrcnm(jp_lob_no3)='NO3' 305 ctrcnl(jp_lob_no3)='Nitrate concentration' 306 ctrcnm(jp_lob_nh4)='NH4' 307 ctrcnl(jp_lob_nh4)='Ammonium concentration' 308 ctrcnm(jp_lob_dom)='DOM' 309 ctrcnl(jp_lob_dom)='Dissolved organic matter' 310 IF(lwp) THEN 311 WRITE (numout,*) ' ===>>>> : w a r n i n g ' 312 WRITE (numout,*) ' ======= ============= ' 313 WRITE (numout,*) ' we force tracer names' 314 DO jl = 1, jp_lobster 315 jn = jp_lob0 + jl - 1 316 WRITE(numout,*) ' tracer nb: ',jn,' name = ',ctrcnm(jn), ctrcnl(jn) 317 END DO 318 WRITE(numout,*) ' ' 319 ENDIF 320 ENDIF 321 322 ! Check tracer units 323 DO jl = 1, jp_lobster 324 jn = jp_lob0 + jl - 1 325 IF( ctrcun(jn) /= 'mmole-N/m3') THEN 326 ctrcun(jn) = 'mmole-N/m3' 327 IF(lwp) THEN 328 WRITE (numout,*) ' ===>>>> : w a r n i n g ' 329 WRITE (numout,*) ' ======= ============= ' 330 WRITE (numout,*) ' we force tracer unit' 331 WRITE(numout,*) ' tracer ',ctrcnm(jn), 'UNIT= ',ctrcun(jn) 332 ENDIF 333 ENDIF 334 END DO 335 336 END SUBROUTINE trc_ctl_lobster 337 261 338 #else 262 339 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.