Changeset 2038 for branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER
- Timestamp:
- 2010-08-02T12:57:40+02:00 (14 years ago)
- Location:
- branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER
- Files:
-
- 1 added
- 2 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
r1176 r2038 20 20 LOGICAL, PUBLIC, PARAMETER :: lk_lobster = .TRUE. !: LOBSTER flag 21 21 INTEGER, PUBLIC, PARAMETER :: jp_lobster = 6 !: number of LOBSTER tracers 22 INTEGER, PUBLIC, PARAMETER :: jp_lobster_2d = 19 !: additional 2d output arrays ('key_ trc_diaadd')23 INTEGER, PUBLIC, PARAMETER :: jp_lobster_3d = 3 !: additional 3d output arrays ('key_ trc_diaadd')22 INTEGER, PUBLIC, PARAMETER :: jp_lobster_2d = 19 !: additional 2d output arrays ('key_diatrc') 23 INTEGER, PUBLIC, PARAMETER :: jp_lobster_3d = 3 !: additional 3d output arrays ('key_diatrc') 24 24 INTEGER, PUBLIC, PARAMETER :: jp_lobster_trd = 17 !: number of sms trends for LOBSTER 25 25 26 26 ! assign an index in trc arrays for each LOBSTER prognostic variables 27 INTEGER, PUBLIC, PARAMETER :: jp det= 1 !: detritus [mmoleN/m3]28 INTEGER, PUBLIC, PARAMETER :: jp zoo= 2 !: zooplancton concentration [mmoleN/m3]29 INTEGER, PUBLIC, PARAMETER :: jp phy= 3 !: phytoplancton concentration [mmoleN/m3]30 INTEGER, PUBLIC, PARAMETER :: jp no3= 4 !: nitrate concentration [mmoleN/m3]31 INTEGER, PUBLIC, PARAMETER :: jp nh4= 5 !: ammonium concentration [mmoleN/m3]32 INTEGER, PUBLIC, PARAMETER :: jp dom= 6 !: dissolved organic matter [mmoleN/m3]27 INTEGER, PUBLIC, PARAMETER :: jp_lob_det = 1 !: detritus [mmoleN/m3] 28 INTEGER, PUBLIC, PARAMETER :: jp_lob_zoo = 2 !: zooplancton concentration [mmoleN/m3] 29 INTEGER, PUBLIC, PARAMETER :: jp_lob_phy = 3 !: phytoplancton concentration [mmoleN/m3] 30 INTEGER, PUBLIC, PARAMETER :: jp_lob_no3 = 4 !: nitrate concentration [mmoleN/m3] 31 INTEGER, PUBLIC, PARAMETER :: jp_lob_nh4 = 5 !: ammonium concentration [mmoleN/m3] 32 INTEGER, PUBLIC, PARAMETER :: jp_lob_dom = 6 !: dissolved organic matter [mmoleN/m3] 33 33 34 34 ! productive layer depth -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcbio.F90
r1953 r2038 20 20 USE lbclnk ! 21 21 USE prtctl_trc ! Print control for debbuging 22 USE trdmld_trc 23 USE trdmld_trc_oce 22 USE trdmod_trc 24 23 USE iom 25 24 … … 57 56 !! source sink 58 57 !! 59 !! IF 'key_ trc_diabio' defined , the biogeochemical trends58 !! IF 'key_diabio' defined , the biogeochemical trends 60 59 !! for passive tracers are saved for futher diagnostics. 61 60 !!--------------------------------------------------------------------- … … 71 70 REAL(wp) :: zfilpz, zfildz, zphya, zzooa, zno3a 72 71 REAL(wp) :: znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju 73 #if defined key_ trc_diaadd72 #if defined key_diatrc 74 73 REAL(wp) :: ze3t 75 74 #endif 76 #if defined key_ trc_diaadd&& defined key_iomput75 #if defined key_diatrc && defined key_iomput 77 76 REAL(wp), DIMENSION(jpi,jpj,17) :: zw2d 78 # if defined key_trc_dia3d79 77 REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: zw3d 80 # endif81 78 #endif 82 79 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ztrbio … … 91 88 92 89 fbod(:,:) = 0.e0 93 #if defined key_ trc_diaadd&& ! defined key_iomput90 #if defined key_diatrc && ! defined key_iomput 94 91 DO jl = jp_lob0_2d, jp_lob1_2d 95 92 trc2d(:,:,jl) = 0.e0 96 93 END DO 97 94 #endif 98 #if defined key_ trc_diaadd&& defined key_iomput95 #if defined key_diatrc && defined key_iomput 99 96 zw2d(:,:,:) = 0.e0 100 # if defined key_trc_dia3d101 97 zw3d(:,:,:,:) = 0.e0 102 # endif103 98 #endif 104 99 … … 117 112 118 113 ! negative trophic variables DO not contribute to the fluxes 119 zdet = MAX( 0.e0, trn(ji,jj,jk,jp det) )120 zzoo = MAX( 0.e0, trn(ji,jj,jk,jp zoo) )121 zphy = MAX( 0.e0, trn(ji,jj,jk,jp phy) )122 zno3 = MAX( 0.e0, trn(ji,jj,jk,jp no3) )123 znh4 = MAX( 0.e0, trn(ji,jj,jk,jp nh4) )124 zdom = MAX( 0.e0, trn(ji,jj,jk,jp dom) )114 zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) ) 115 zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) ) 116 zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) ) 117 zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) ) 118 znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) ) 119 zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) ) 125 120 126 121 ! Limitations … … 194 189 195 190 ! tracer flux at totox-point added to the general trend 196 tra(ji,jj,jk,jp det) = tra(ji,jj,jk,jpdet) + zdeta197 tra(ji,jj,jk,jp zoo) = tra(ji,jj,jk,jpzoo) + zzooa198 tra(ji,jj,jk,jp phy) = tra(ji,jj,jk,jpphy) + zphya199 tra(ji,jj,jk,jp no3) = tra(ji,jj,jk,jpno3) + zno3a200 tra(ji,jj,jk,jp nh4) = tra(ji,jj,jk,jpnh4) + znh4a201 tra(ji,jj,jk,jp dom) = tra(ji,jj,jk,jpdom) + zdoma202 203 #if defined key_ trc_diabio191 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta 192 tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa 193 tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya 194 tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a 195 tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a 196 tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma 197 198 #if defined key_diabio 204 199 trbio(ji,jj,jk,jp_lob0_trd ) = zno3phy 205 200 trbio(ji,jj,jk,jp_lob0_trd + 1) = znh4phy … … 238 233 ENDIF 239 234 240 #if defined key_ trc_diaadd235 #if defined key_diatrc 241 236 ! convert fluxes in per day 242 237 ze3t = fse3t(ji,jj,jk) * 86400. … … 282 277 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 283 278 #endif 284 #if defined key_ trc_dia3d279 #if defined key_diatrc 285 280 # if ! defined key_iomput 286 281 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 … … 307 302 ! trophic variables( det, zoo, phy, no3, nh4, dom) 308 303 ! negative trophic variables DO not contribute to the fluxes 309 zdet = MAX( 0.e0, trn(ji,jj,jk,jp det) )310 zzoo = MAX( 0.e0, trn(ji,jj,jk,jp zoo) )311 zphy = MAX( 0.e0, trn(ji,jj,jk,jp phy) )312 zno3 = MAX( 0.e0, trn(ji,jj,jk,jp no3) )313 znh4 = MAX( 0.e0, trn(ji,jj,jk,jp nh4) )314 zdom = MAX( 0.e0, trn(ji,jj,jk,jp dom) )304 zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) ) 305 zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) ) 306 zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) ) 307 zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) ) 308 znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) ) 309 zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) ) 315 310 316 311 ! Limitations … … 363 358 364 359 ! tracer flux at totox-point added to the general trend 365 tra(ji,jj,jk,jp det) = tra(ji,jj,jk,jpdet) + zdeta366 tra(ji,jj,jk,jp zoo) = tra(ji,jj,jk,jpzoo) + zzooa367 tra(ji,jj,jk,jp phy) = tra(ji,jj,jk,jpphy) + zphya368 tra(ji,jj,jk,jp no3) = tra(ji,jj,jk,jpno3) + zno3a369 tra(ji,jj,jk,jp nh4) = tra(ji,jj,jk,jpnh4) + znh4a370 tra(ji,jj,jk,jp dom) = tra(ji,jj,jk,jpdom) + zdoma360 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta 361 tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa 362 tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya 363 tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a 364 tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a 365 tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma 371 366 ! 372 #if defined key_ trc_diabio367 #if defined key_diabio 373 368 trbio(ji,jj,jk,jp_lob0_trd ) = zno3phy 374 369 trbio(ji,jj,jk,jp_lob0_trd + 1) = znh4phy … … 406 401 ! trend number 17 in trcexp 407 402 ENDIF 408 #if defined key_ trc_diaadd && defined key_trc_dia3d403 #if defined key_diatrc 409 404 # if ! defined key_iomput 410 405 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 … … 421 416 END DO 422 417 423 #if defined key_ trc_diaadd418 #if defined key_diatrc 424 419 ! Lateral boundary conditions 425 420 # if ! defined key_iomput … … 452 447 #endif 453 448 454 #if defined key_ trc_diaadd && defined key_trc_dia3d449 #if defined key_diatrc 455 450 ! Lateral boundary conditions 456 451 # if ! defined key_iomput … … 469 464 #endif 470 465 471 #if defined key_ trc_diabio466 #if defined key_diabio 472 467 ! Lateral boundary conditions on trcbio 473 468 DO jl = jp_lob0_trd, jp_lob1_trd -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcexp.F90
r1953 r2038 21 21 USE trctrp_lec 22 22 USE prtctl_trc ! Print control for debbuging 23 USE trdmld_trc 24 USE trdmld_trc_oce 23 USE trdmod_trc 25 24 USE iom 26 25 … … 75 74 IF( l_trdtrc )THEN 76 75 ALLOCATE( ztrbio(jpi,jpj,jpk) ) 77 ztrbio(:,:,:) = tra(:,:,:,jp no3)76 ztrbio(:,:,:) = tra(:,:,:,jp_lob_no3) 78 77 ENDIF 79 78 … … 82 81 DO ji = fs_2, fs_jpim1 83 82 ze3t = 1. / fse3t(ji,jj,jk) 84 tra(ji,jj,jk,jp no3) = tra(ji,jj,jk,jpno3) + ze3t * dmin3(ji,jj,jk) * fbod(ji,jj)83 tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + ze3t * dmin3(ji,jj,jk) * fbod(ji,jj) 85 84 END DO 86 85 END DO … … 96 95 DO ji = fs_2, fs_jpim1 97 96 ikbot = mbathy(ji,jj) - 1 98 tra(ji,jj,ikbot,jp no3) = tra(ji,jj,ikbot,jpno3) + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot)97 tra(ji,jj,ikbot,jp_lob_no3) = tra(ji,jj,ikbot,jp_lob_no3) + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot) 99 98 ! Deposition of organic matter in the sediment 100 zwork = vsed * trn(ji,jj,ikbot,jp det)99 zwork = vsed * trn(ji,jj,ikbot,jp_lob_det) 101 100 sedpoca(ji,jj) = ( zwork + dminl(ji,jj) * fbod(ji,jj) & 102 101 & - sedlam * sedpocn(ji,jj) - sedlostpoc * sedpocn(ji,jj) ) * rdt … … 107 106 DO jj = 2, jpjm1 108 107 DO ji = fs_2, fs_jpim1 109 tra(ji,jj,1,jp no3) = tra(ji,jj,1,jpno3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1)108 tra(ji,jj,1,jp_lob_no3) = tra(ji,jj,1,jp_lob_no3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1) 110 109 END DO 111 110 END DO … … 114 113 115 114 ! Oa & Ek: diagnostics depending on jpdia2d ! left as example 116 #if defined key_ trc_diaadd115 #if defined key_diatrc 117 116 # if ! defined key_iomput 118 117 trc2d(:,:,jp_lob0_2d + 18) = sedpocn(:,:) … … 124 123 ! Leap-frog scheme (only in explicit case, otherwise the 125 124 ! ---------------- time stepping is already done in trczdf) 126 IF( l _trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN127 zfact = 2. * rdttra(jk) * FLOAT( n dttrc )128 IF( neuler == 0 .AND. kt == nittrc000 ) zfact = rdttra(jk) * FLOAT(n dttrc)125 IF( ln_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN 126 zfact = 2. * rdttra(jk) * FLOAT( nn_dttrc ) 127 IF( neuler == 0 .AND. kt == nittrc000 ) zfact = rdttra(jk) * FLOAT(nn_dttrc) 129 128 sedpoca(:,:) = sedpocb(:,:) + zfact * sedpoca(:,:) 130 129 ENDIF … … 159 158 ! 160 159 IF( l_trdtrc ) THEN 161 ztrbio(:,:,:) = tra(:,:,:,jp no3) - ztrbio(:,:,:)160 ztrbio(:,:,:) = tra(:,:,:,jp_lob_no3) - ztrbio(:,:,:) 162 161 jl = jp_lob0_trd + 16 163 162 CALL trd_mod_trc( ztrbio, jl, kt ) ! handle the trend -
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 !!---------------------------------------------------------------------- -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcopt.F90
r1953 r2038 78 78 zparg (:,:,1) = zpar0m(:,:) * 0.5 79 79 80 !!gm optimisation : introduce zcoef and LOG computed once for all81 82 80 ! ! Photosynthetically Available Radiation (PAR) 83 81 zcoef = 12 * redf / rcchl / rpig ! -------------------------------------- … … 85 83 DO jj = 1, jpj 86 84 DO ji = 1, jpi 87 !!gm zpig = MAX( TINY(0.), trn(ji,jj,jk-1,jpphy) ) * zcoef 88 !!gm zkr = xkr0 + xkrp * EXP( xlr * LOG(zpig) ) 89 !!gm zkg = xkg0 + xkgp * EXP( xlg * LOG(zpig) ) 90 zpig = LOG( MAX( TINY(0.), trn(ji,jj,jk-1,jpphy) ) * zcoef ) 85 zpig = LOG( MAX( TINY(0.), trn(ji,jj,jk-1,jp_lob_phy) ) * zcoef ) 91 86 zkr = xkr0 + xkrp * EXP( xlr * zpig ) 92 87 zkg = xkg0 + xkgp * EXP( xlg * zpig ) … … 96 91 END DO 97 92 END DO 98 !!gm optimisation : suppress one division99 93 DO jk = 1, jpkm1 ! mean par at t-levels 100 94 DO jj = 1, jpj 101 95 DO ji = 1, jpi 102 zpig = LOG( MAX( TINY(0.), trn(ji,jj,jk,jp phy) ) * zcoef )96 zpig = LOG( MAX( TINY(0.), trn(ji,jj,jk,jp_lob_phy) ) * zcoef ) 103 97 zkr = xkr0 + xkrp * EXP( xlr * zpig ) 104 98 zkg = xkg0 + xkgp * EXP( xlg * zpig ) 105 !!gm zparr(ji,jj,jk) = zparr(ji,jj,jk) / zkr / fse3t(ji,jj,jk) * ( 1 - EXP( -zkr * fse3t(ji,jj,jk) ) )106 !!gm zparg(ji,jj,jk) = zparg(ji,jj,jk) / zkg / fse3t(ji,jj,jk) * ( 1 - EXP( -zkg * fse3t(ji,jj,jk) ) )107 99 zparr(ji,jj,jk) = zparr(ji,jj,jk) / ( zkr * fse3t(ji,jj,jk) ) * ( 1 - EXP( -zkr * fse3t(ji,jj,jk) ) ) 108 100 zparg(ji,jj,jk) = zparg(ji,jj,jk) / ( zkg * fse3t(ji,jj,jk) ) * ( 1 - EXP( -zkg * fse3t(ji,jj,jk) ) ) -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcrst_lobster.F90
r1953 r2038 43 43 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 44 44 45 CALL iom_get( knum, jpdom_autoglo, 'SEDB'//ctrcnm(jp det), sedpocb(:,:) )46 CALL iom_get( knum, jpdom_autoglo, 'SEDN'//ctrcnm(jp det), sedpocn(:,:) )45 CALL iom_get( knum, jpdom_autoglo, 'SEDB'//ctrcnm(jp_lob_det), sedpocb(:,:) ) 46 CALL iom_get( knum, jpdom_autoglo, 'SEDN'//ctrcnm(jp_lob_det), sedpocn(:,:) ) 47 47 48 48 END SUBROUTINE trc_rst_read_lobster … … 64 64 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 65 65 66 CALL iom_rstput( kt, kitrst, knum, 'SEDB'//ctrcnm(jp det), sedpocb(:,:) )67 CALL iom_rstput( kt, kitrst, knum, 'SEDN'//ctrcnm(jp det), sedpocn(:,:) )66 CALL iom_rstput( kt, kitrst, knum, 'SEDB'//ctrcnm(jp_lob_det), sedpocb(:,:) ) 67 CALL iom_rstput( kt, kitrst, knum, 'SEDN'//ctrcnm(jp_lob_det), sedpocn(:,:) ) 68 68 69 69 END SUBROUTINE trc_rst_wri_lobster -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcsed.F90
r1953 r2038 18 18 USE sms_lobster 19 19 USE lbclnk 20 USE trdmld_trc 21 USE trdmld_trc_oce 20 USE trdmod_trc 22 21 USE iom 23 22 USE prtctl_trc ! Print control for debbuging … … 53 52 !! tra = tra + dz(trn wn) 54 53 !! 55 !! IF 'key_ trc_diabio' is defined, the now vertical advection54 !! IF 'key_diabio' is defined, the now vertical advection 56 55 !! trend of passive tracers is saved for futher diagnostics. 57 56 !!--------------------------------------------------------------------- … … 61 60 REAL(wp) :: ztra 62 61 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwork 63 #if defined key_ trc_diaadd&& defined key_iomput62 #if defined key_diatrc && defined key_iomput 64 63 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 65 64 #endif … … 77 76 ! -------------------------------------------- 78 77 79 ! for detritus sedimentation only - jp det78 ! for detritus sedimentation only - jp_lob_det 80 79 zwork(:,:,1 ) = 0.e0 ! surface value set to zero 81 80 zwork(:,:,jpk) = 0.e0 ! bottom value set to zero 82 81 83 #if defined key_ trc_diaadd&& defined key_iomput82 #if defined key_diatrc && defined key_iomput 84 83 zw2d(:,:) = 0. 85 84 # endif … … 87 86 IF( l_trdtrc )THEN 88 87 ALLOCATE( ztrbio(jpi,jpj,jpk) ) 89 ztrbio(:,:,:) = tra(:,:,:,jp det)88 ztrbio(:,:,:) = tra(:,:,:,jp_lob_det) 90 89 ENDIF 91 90 92 91 ! tracer flux at w-point: we use -vsed (downward flux) with simplification : no e1*e2 93 92 DO jk = 2, jpkm1 94 zwork(:,:,jk) = -vsed * trn(:,:,jk-1,jp det)93 zwork(:,:,jk) = -vsed * trn(:,:,jk-1,jp_lob_det) 95 94 END DO 96 95 … … 100 99 DO ji = 1,jpi 101 100 ztra = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 102 tra(ji,jj,jk,jp det) = tra(ji,jj,jk,jpdet) + ztra103 #if defined key_ trc_diabio101 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + ztra 102 #if defined key_diabio 104 103 trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 105 104 #endif 106 #if defined key_ trc_diaadd105 #if defined key_diatrc 107 106 # if ! defined key_iomput 108 107 trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. … … 115 114 END DO 116 115 117 #if defined key_ trc_diabio116 #if defined key_diabio 118 117 jl = jp_lob0_trd + 7 119 118 CALL lbc_lnk (trbio(:,:,1,jl), 'T', 1. ) ! Lateral boundary conditions on trcbio 120 119 #endif 121 #if defined key_ trc_diaadd120 #if defined key_diatrc 122 121 # if ! defined key_iomput 123 122 jl = jp_lob0_2d + 7 … … 131 130 132 131 IF( l_trdtrc ) THEN 133 ztrbio(:,:,:) = tra(:,:,:,jp det) - ztrbio(:,:,:)132 ztrbio(:,:,:) = tra(:,:,:,jp_lob_det) - ztrbio(:,:,:) 134 133 jl = jp_lob0_trd + 7 135 134 CALL trd_mod_trc( ztrbio, jl, kt ) ! handle the trend -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90
r1255 r2038 19 19 USE trcsed 20 20 USE trcexp 21 USE trdmld_trc_oce 21 USE trdmod_oce 22 USE trdmod_trc 22 23 USE trdmld_trc 23 24 … … 50 51 51 52 CALL trc_opt( kt ) ! optical model 52 53 53 CALL trc_bio( kt ) ! biological model 54 55 54 CALL trc_sed( kt ) ! sedimentation model 56 57 55 CALL trc_exp( kt ) ! export 58 56 … … 60 58 DO jn = jp_lob0, jp_lob1 61 59 ztrlob(:,:,:) = tra(:,:,:,jn) 62 CALL trd_mod_trc( ztrlob, jn, jptr c_trd_sms, kt ) ! save trends60 CALL trd_mod_trc( ztrlob, jn, jptra_trd_sms, kt ) ! save trends 63 61 END DO 64 62 END IF
Note: See TracChangeset
for help on using the changeset viewer.