Changeset 1176
- Timestamp:
- 2008-09-11T18:26:59+02:00 (16 years ago)
- Location:
- trunk/NEMO/TOP_SRC/LOBSTER
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
r1152 r1176 22 22 INTEGER, PUBLIC, PARAMETER :: jp_lobster_2d = 19 !: additional 2d output arrays ('key_trc_diaadd') 23 23 INTEGER, PUBLIC, PARAMETER :: jp_lobster_3d = 3 !: additional 3d output arrays ('key_trc_diaadd') 24 INTEGER, PUBLIC, PARAMETER :: jp_lobster_trd = 1 5!: number of sms trends for LOBSTER24 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 -
trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90
r1146 r1176 20 20 USE lbclnk ! 21 21 USE prtctl_trc ! Print control for debbuging 22 USE trdmld_trc 23 USE trdmld_trc_oce 22 24 23 25 IMPLICIT NONE … … 59 61 INTEGER, INTENT( in ) :: kt ! ocean time-step index 60 62 !! 61 INTEGER :: ji, jj, jk 63 INTEGER :: ji, jj, jk, jn, jl 62 64 REAL(wp) :: zdet, zzoo, zphy, zno3, znh4, zdom ! now concentrations 63 65 REAL(wp) :: zlno3, zlnh4, zle, zlt ! limitation terms for phyto … … 71 73 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 72 74 #endif 75 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ztrbio 73 76 CHARACTER (len=25) :: charout 74 77 !!--------------------------------------------------------------------- … … 90 93 fbod(:,:) = 0.e0 91 94 #if defined key_trc_diaadd 92 DO j i= 1, jp_lobster_2d93 trc2d(:,:,j i) = 0.e095 DO jl = 1, jp_lobster_2d 96 trc2d(:,:,jl) = 0.e0 94 97 END DO 95 98 #endif 96 99 100 IF( l_trdtrc )THEN 101 ALLOCATE( ztrbio(jpi,jpj,jpk,jp_lobster_trd) ) 102 !CDIR COLLAPSE 103 ztrbio(:,:,:,:) = 0. 104 ENDIF 97 105 98 106 ! ! -------------------------- ! … … 226 234 trc3d(ji,jj,jk,3) = znh4no3 * 86400 227 235 #endif 236 IF( l_trdtrc ) THEN 237 ztrbio(ji,jj,jk,1) = zno3phy 238 ztrbio(ji,jj,jk,2) = znh4phy 239 ztrbio(ji,jj,jk,3) = zphynh4 240 ztrbio(ji,jj,jk,4) = zphydom 241 ztrbio(ji,jj,jk,5) = zphyzoo 242 ztrbio(ji,jj,jk,6) = zphydet 243 ztrbio(ji,jj,jk,7) = zdetzoo 244 ! trend number 8 in trcsed 245 ztrbio(ji,jj,jk,9) = zzoodet 246 ztrbio(ji,jj,jk,10) = zzoobod 247 ztrbio(ji,jj,jk,11) = zzoonh4 248 ztrbio(ji,jj,jk,12) = zzoodom 249 ztrbio(ji,jj,jk,13) = znh4no3 250 ztrbio(ji,jj,jk,14) = zdomnh4 251 ztrbio(ji,jj,jk,15) = zdetnh4 252 ztrbio(ji,jj,jk,16) = zdetdom 253 ! trend number 17 in trcexp 254 ENDIF 255 228 256 229 257 ! tracer flux at totox-point added to the general trend … … 351 379 trc3d(ji,jj,jk,3) = znh4no3 * 86400 352 380 #endif 381 IF( l_trdtrc ) THEN 382 ztrbio(ji,jj,jk,1) = zno3phy 383 ztrbio(ji,jj,jk,2) = znh4phy 384 ztrbio(ji,jj,jk,3) = zphynh4 385 ztrbio(ji,jj,jk,4) = zphydom 386 ztrbio(ji,jj,jk,5) = zphyzoo 387 ztrbio(ji,jj,jk,6) = zphydet 388 ztrbio(ji,jj,jk,7) = zdetzoo 389 ! trend number 8 in trcsed 390 ztrbio(ji,jj,jk,9) = zzoodet 391 ztrbio(ji,jj,jk,10) = zzoobod 392 ztrbio(ji,jj,jk,11) = zzoonh4 393 ztrbio(ji,jj,jk,12) = zzoodom 394 ztrbio(ji,jj,jk,13) = znh4no3 395 ztrbio(ji,jj,jk,14) = zdomnh4 396 ztrbio(ji,jj,jk,15) = zdetnh4 397 ztrbio(ji,jj,jk,16) = zdetdom 398 ! trend number 17 in trcexp 399 ENDIF 400 353 401 354 402 ! tracer flux at totox-point added to the general trend … … 366 414 #if defined key_trc_diaadd 367 415 ! Lateral boundary conditions on trc2d and trc3d 368 DO j i= 1, jp_lobster_2d369 CALL lbc_lnk( trc2d(:,:,j i),'T', 1. )416 DO jl = 1, jp_lobster_2d 417 CALL lbc_lnk( trc2d(:,:,jl),'T', 1. ) 370 418 END DO 371 DO j i= 1, jp_lobster_3d372 CALL lbc_lnk( trc3d(:,:,1,j i),'T', 1. )419 DO jl = 1, jp_lobster_3d 420 CALL lbc_lnk( trc3d(:,:,1,jl),'T', 1. ) 373 421 END DO 374 422 #endif … … 376 424 #if defined key_trc_diabio 377 425 ! Lateral boundary conditions on trcbio 378 DO j i= 1, jp_lobster_trd379 CALL lbc_lnk( trbio(:,:,1,j i),'T', 1. )426 DO jl = 1, jp_lobster_trd 427 CALL lbc_lnk( trbio(:,:,1,jl),'T', 1. ) 380 428 END DO 381 429 #endif 382 430 ! 431 IF( l_trdtrc ) THEN 432 !CDIRR COLLAPSE 433 DO jl = 1, jp_lobster_trd 434 CALL trd_mod_trc( ztrbio(:,:,:,jl), jl, kt ) ! handle the trend 435 END DO 436 ENDIF 437 383 438 IF(ln_ctl) THEN ! print mean trends (used for debugging) 384 439 WRITE(charout, FMT="('bio')") -
trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90
r1146 r1176 21 21 USE trctrp_lec 22 22 USE prtctl_trc ! Print control for debbuging 23 USE trdmld_trc 24 USE trdmld_trc_oce 23 25 24 26 IMPLICIT NONE … … 52 54 INTEGER, INTENT( in ) :: kt ! ocean time-step index 53 55 !! 54 INTEGER :: ji, jj, jk 56 INTEGER :: ji, jj, jk, jl 55 57 REAL(wp) :: zgeolpoc, zfact 56 58 INTEGER , DIMENSION(jpi,jpj) :: ikbot 57 59 REAL(wp), DIMENSION(jpi,jpj) :: zwork 58 60 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrbio 59 61 CHARACTER (len=25) :: charout 60 62 !!--------------------------------------------------------------------- … … 66 68 ENDIF 67 69 68 ! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC 69 ! POC IN THE WATER COLUMN 70 ! (PARTS OF NEWLY FORMED MATTER REMAINING IN THE DIFFERENT 71 ! LAYERS IS DETERMINED BY DMIN3 DEFINED IN common.passivetrc.*.h 72 ! ---------------------------------------------------------------------- 70 ! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC 71 ! POC IN THE WATER COLUMN 72 ! (PARTS OF NEWLY FORMED MATTER REMAINING IN THE DIFFERENT 73 ! LAYERS IS DETERMINED BY DMIN3 DEFINED IN sms_lobster.F90 74 ! ---------------------------------------------------------------------- 75 76 IF( l_trdtrc )THEN 77 ALLOCATE( ztrbio(jpi,jpj,jpk) ) 78 !CDIR COLLAPSE 79 ztrbio(:,:,:) = tra(:,:,:,jpno3) 80 ENDIF 73 81 74 82 DO jk = 1, jpkm1 … … 166 174 ENDIF 167 175 ! 176 IF( l_trdtrc ) THEN 177 !CDIRR COLLAPSE 178 ztrbio(:,:,:) = tra(:,:,:,jpno3) - ztrbio(:,:,:) 179 jl = 17 180 CALL trd_mod_trc( ztrbio, jl, kt ) ! handle the trend 181 ENDIF 168 182 169 183 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
trunk/NEMO/TOP_SRC/LOBSTER/trcopt.F90
r1146 r1176 48 48 INTEGER, INTENT( in ) :: kt ! index of the time stepping 49 49 INTEGER :: ji, jj, jk 50 INTEGER , DIMENSION(jpi,jpj) :: itabe ! euphotic layer last k index51 INTEGER , DIMENSION(jpi,jpj,jpk) :: imaske ! euphotic layer mask52 50 REAL(wp) :: zpig ! total pigment 53 51 REAL(wp) :: zkr ! total absorption coefficient in red … … 103 101 END DO 104 102 105 ! determination of euphotic layer depth (xze)106 ! ------------------------------------- 103 ! 3. Determination of euphotic layer depth 104 ! ---------------------------------------- 107 105 108 DO jk = 1, jpk ! imaske equal 1 in the euphotic layer, and 0 without 106 ! Euphotic layer bottom level 107 neln(:,:) = 1 ! initialisation of EL level 108 DO jk = 1, jpk 109 109 DO jj = 1, jpj 110 DO ji = 1,jpi 111 IF( xpar(ji,jj,jk) >= zpar100(ji,jj) ) THEN 112 imaske(ji,jj,jk) = 1 113 ELSE 114 imaske(ji,jj,jk) = 0 115 ENDIF 116 END DO 110 DO ji = 1, jpi 111 IF( xpar(ji,jj,jk) >= zpar100(ji,jj) ) neln(ji,jj) = jk+1 ! 1rst T-level strictly below EL bottom 112 ! ! nb. this is to ensure compatibility with 113 ! ! nmld_trc definition in trd_mld_trc_zint 114 END DO 117 115 END DO 118 END DO 119 ! ! sum of imaske Cover the vertical with a minimim value of 1 120 itabe(:,:) = 1 ! surface value setto 1 <=> set a ninimum value to 1 121 DO jk = 2, jpk 122 DO jj = 1, jpj 123 DO ji = 1,jpi 124 itabe(ji,jj) = itabe(ji,jj) + imaske(ji,jj,jk) 125 END DO 116 ENDDO 117 118 ! Euphotic layer depth 119 DO jj = 1, jpj 120 DO ji = 1, jpi 121 xze(ji,jj) = fsdepw( ji, jj, neln(ji,jj) ) ! exact EL depth 126 122 END DO 127 END DO 128 DO jj = 1, jpj ! converte the number of level into depth 129 DO ji = 1,jpi 130 xze(ji,jj) = fsdepw(ji,jj,itabe(ji,jj)+1) 131 END DO 132 END DO 133 ! 123 ENDDO 124 134 125 135 126 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90
r1146 r1176 18 18 USE sms_lobster 19 19 USE lbclnk 20 USE trdmld_trc 21 USE trdmld_trc_oce 20 22 21 23 USE prtctl_trc ! Print control for debbuging … … 56 58 INTEGER, INTENT( in ) :: kt ! ocean time-step index 57 59 !! 58 INTEGER :: ji, jj, jk 60 INTEGER :: ji, jj, jk, jl 59 61 REAL(wp) :: ztra 60 62 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwork 61 63 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrbio 62 64 CHARACTER (len=25) :: charout 63 65 !!--------------------------------------------------------------------- … … 76 78 zwork(:,:,1 ) = 0.e0 ! surface value set to zero 77 79 zwork(:,:,jpk) = 0.e0 ! bottom value set to zero 80 81 IF( l_trdtrc )THEN 82 ALLOCATE( ztrbio(jpi,jpj,jpk) ) 83 !CDIR COLLAPSE 84 ztrbio(:,:,:) = tra(:,:,:,jpdet) 85 ENDIF 78 86 79 87 ! tracer flux at w-point: we use -vsed (downward flux) with simplification : no e1*e2 … … 108 116 ! 109 117 118 IF( l_trdtrc ) THEN 119 !CDIRR COLLAPSE 120 ztrbio(:,:,:) = tra(:,:,:,jpdet) - ztrbio(:,:,:) 121 jl = 8 122 CALL trd_mod_trc( ztrbio, jl, kt ) ! handle the trend 123 ENDIF 124 110 125 IF(ln_ctl) THEN ! print mean trends (used for debugging) 111 126 WRITE(charout, FMT="('sed')") -
trunk/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90
r1152 r1176 13 13 !! trcsms_lobster : Time loop of passive tracers sms 14 14 !!---------------------------------------------------------------------- 15 USE oce_trc ! 16 USE trc 15 17 USE trcbio 16 18 USE trcopt 17 19 USE trcsed 18 20 USE trcexp 21 USE trdmld_trc_oce 22 USE trdmld_trc 19 23 20 24 IMPLICIT NONE … … 41 45 !! ------------------------------------------------------------------------------------- 42 46 INTEGER, INTENT( in ) :: kt ! ocean time-step index 47 INTEGER :: jn 48 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrlob ! used for lobster sms trends 43 49 !! 44 50 … … 50 56 51 57 CALL trc_exp( kt ) ! export 58 59 IF( l_trdtrc ) THEN 60 DO jn = 1, jptra 61 ztrlob(:,:,:) = tra(:,:,:,jn) 62 CALL trd_mod_trc( ztrlob, jn, jptrc_trd_sms, kt ) ! save trends 63 END DO 64 END IF 65 66 IF( lk_trdmld_trc ) CALL trd_mld_bio( kt ) ! trends: Mixed-layer 52 67 53 68 END SUBROUTINE trc_sms_lobster
Note: See TracChangeset
for help on using the changeset viewer.