MODULE trcini_lobster !!====================================================================== !! *** MODULE trcini_lobster *** !! TOP : initialisation of the LOBSTER biological model !!====================================================================== !! History : - ! 1999-09 (M. Levy) Original code !! - ! 2000-12 (0. Aumont, E. Kestenare) add sediment !! 1.0 ! 2004-03 (C. Ethe) Modularity !! - ! 2005-03 (O. Aumont, A. El Moussaoui) F90 !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcini.lobster1.h90 !!---------------------------------------------------------------------- #if defined key_lobster !!---------------------------------------------------------------------- !! 'key_lobster' LOBSTER bio-model !!---------------------------------------------------------------------- !! trc_ini_lobster : LOBSTER model initialisation !!---------------------------------------------------------------------- USE par_trc ! TOP parameters USE sms_lobster ! Source Minus Sink variables USE oce_trc ! ocean variables USE trc IMPLICIT NONE PRIVATE PUBLIC trc_ini_lobster ! called by trcini.F90 module # include "domzgr_substitute.h90" # include "top_substitute.h90" !!---------------------------------------------------------------------- !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) !! $Id$ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trc_ini_lobster !!---------------------------------------------------------------------- !! *** ROUTINE trc_ini_lobster *** !! ** purpose : specific initialisation for LOBSTER bio-model !!---------------------------------------------------------------------- INTEGER :: ji, jj, jk, jn REAL(wp) :: ztest, zfluo, zfluu REAL(wp), DIMENSION(jpi,jpj) :: zrro REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdm0 !!---------------------------------------------------------------------- IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) ' trc_ini_lobster : LOBSTER biochemical model initialisation' IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~' ! initialization of fields for optical model ! -------------------------------------------- xze (:,:) = 5.e0 xpar(:,:,:) = 0.e0 ! initialization for passive tracer remineralisation-damping array ! ----------------------------------------------------------------- DO jn = jp_lob0, jp_lob1 remdmp(:,jn) = tminr END DO IF(lwp) THEN WRITE(numout,*) ' ' WRITE(numout,*) ' trcini: compute remineralisation-damping ' WRITE(numout,*) ' arrays for tracers' ENDIF ! initialization of biological variables ! ------------------------------------------ ! Calculate vertical distribution of newly formed biogenic poc ! in the water column in the case of max. possible bottom depth ! ------------------------------------------------------------ zdm0 = 0.e0 zrro = 1.e0 DO jk = jpkb,jpkm1 DO jj =1, jpj DO ji =1, jpi zfluo = ( fsdepw(ji,jj,jk ) / fsdepw(ji,jj,jpkb) )**xhr zfluu = ( fsdepw(ji,jj,jk+1) / fsdepw(ji,jj,jpkb) )**xhr IF( zfluo.GT.1. ) zfluo = 1.e0 zdm0(ji,jj,jk) = zfluo - zfluu IF( jk <= jpkb-1 ) zdm0(ji,jj,jk) = 0.e0 zrro(ji,jj) = zrro(ji,jj) - zdm0(ji,jj,jk) END DO END DO END DO zdm0(:,:,jpk) = zrro(:,:) ! Calculate vertical distribution of newly formed biogenic poc ! in the water column with realistic topography (first "dry" layer ! contains total fraction, which has passed to the upper layers) ! ---------------------------------------------------------------------- dminl = 0. dmin3 = zdm0 DO jk = 1, jpk DO jj = 1, jpj DO ji = 1, jpi IF( tmask(ji,jj,jk) == 0. ) THEN dminl(ji,jj) = dminl(ji,jj) + dmin3(ji,jj,jk) dmin3(ji,jj,jk) = 0.e0 ENDIF END DO END DO END DO DO jj = 1, jpj DO ji = 1, jpi IF( tmask(ji,jj,1) == 0 ) dmin3(ji,jj,1) = 0.e0 END DO END DO ! Coastal mask ! ------------ cmask = 0.e0 DO ji = 2, jpi-1 DO jj = 2, jpj-1 if (tmask(ji,jj,1) == 1) then ztest=tmask(ji+1,jj,1)*tmask(ji-1,jj,1)*tmask(ji,jj+1,1)*tmask(ji,jj-1,1) IF (ztest == 0) cmask(ji,jj) = 1. endif END DO END DO cmask( 1 ,:) = cmask(jpi-1,:) cmask(jpi,:) = cmask( 2 ,:) !!gm BUG !!!!! not valid in mpp and also not valid for north fold !!!!! ! Coastal surface ! --------------- areacot = 0.e0 DO ji = 2, jpi-1 DO jj = 2, jpj-1 areacot = areacot + e1t(ji,jj) * e2t(ji,jj) * cmask(ji,jj) END DO END DO ! ! Initialization of tracer concentration in case of no restart !------------------------------------------------------------- IF( .NOT. lrsttr ) THEN # if defined key_eel_r6 || defined key_eel_r2 ! LOBSTER initialisation for EEL ! ---------------------- ! here: analytical initialisation used in Levy et al. (2001) DO jk = 1, 7 trn(:,:,jk,jpdet) = 0.016 * tmask(:,:,jk) trn(:,:,jk,jpzoo) = 0.018 * tmask(:,:,jk) trn(:,:,jk,jpphy) = 0.036 * tmask(:,:,jk) trn(:,:,jk,jpno3) = 1.e-5 * tmask(:,:,jk) trn(:,:,jk,jpnh4) = 5.e-4 * tmask(:,:,jk) trn(:,:,jk,jpdom) = 0.017 * tmask(:,:,jk) END DO trn(:,:, 8,jpdet) = 0.020 * tmask(:,:, 8) trn(:,:, 8,jpzoo) = 0.027 * tmask(:,:, 8) trn(:,:, 8,jpphy) = 0.041 * tmask(:,:, 8) trn(:,:, 8,jpno3) = 0.00022 * tmask(:,:, 8) trn(:,:, 8,jpnh4) = 0.0033 * tmask(:,:, 8) trn(:,:, 8,jpdom) = 0.021 * tmask(:,:, 8) trn(:,:, 9,jpdet) = 0.0556 * tmask(:,:, 9) trn(:,:, 9,jpzoo) = 0.123 * tmask(:,:, 9) trn(:,:, 9,jpphy) = 0.122 * tmask(:,:, 9) trn(:,:, 9,jpno3) = 0.028 * tmask(:,:, 9) trn(:,:, 9,jpnh4) = 0.024 * tmask(:,:, 9) trn(:,:, 9,jpdom) = 0.06 * tmask(:,:, 9) trn(:,:,10,jpdet) = 0.025 * tmask(:,:,10) trn(:,:,10,jpzoo) = 0.016 * tmask(:,:,10) trn(:,:,10,jpphy) = 0.029 * tmask(:,:,10) trn(:,:,10,jpno3) = 2.462 * tmask(:,:,10) trn(:,:,10,jpnh4) = 0.04 * tmask(:,:,10) trn(:,:,10,jpdom) = 0.022 * tmask(:,:,10) trn(:,:,11,jpdet) = 0.0057 * tmask(:,:,11) trn(:,:,11,jpzoo) = 0.0005 * tmask(:,:,11) trn(:,:,11,jpphy) = 0.0006 * tmask(:,:,11) trn(:,:,11,jpno3) = 3.336 * tmask(:,:,11) trn(:,:,11,jpnh4) = 0.005 * tmask(:,:,11) trn(:,:,11,jpdom) = 0.004 * tmask(:,:,11) trn(:,:,12,jpdet) = 0.002 * tmask(:,:,12) trn(:,:,12,jpzoo) = 1.e-6 * tmask(:,:,12) trn(:,:,12,jpphy) = 5.e-6 * tmask(:,:,12) trn(:,:,12,jpno3) = 4.24 * tmask(:,:,12) trn(:,:,12,jpnh4) = 0.001 * tmask(:,:,12) trn(:,:,12,jpdom) = 3.e-5 * tmask(:,:,12) DO jk=13,jpk trn(:,:,jk,jpdet) = 0.e0 trn(:,:,jk,jpzoo) = 0.e0 trn(:,:,jk,jpphy) = 0.e0 trn(:,:,jk,jpnh4) = 0.e0 trn(:,:,jk,jpdom) = 0.e0 END DO trn(:,:,13,jpno3) = 5.31 * tmask(:,:,13) trn(:,:,14,jpno3) = 6.73 * tmask(:,:,14) trn(:,:,15,jpno3) = 8.32 * tmask(:,:,15) trn(:,:,16,jpno3) = 10.13 * tmask(:,:,16) trn(:,:,17,jpno3) = 11.95 * tmask(:,:,17) trn(:,:,18,jpno3) = 13.57 * tmask(:,:,18) trn(:,:,19,jpno3) = 15.08 * tmask(:,:,19) trn(:,:,20,jpno3) = 16.41 * tmask(:,:,20) trn(:,:,21,jpno3) = 17.47 * tmask(:,:,21) trn(:,:,22,jpno3) = 18.29 * tmask(:,:,22) trn(:,:,23,jpno3) = 18.88 * tmask(:,:,23) trn(:,:,24,jpno3) = 19.30 * tmask(:,:,24) trn(:,:,25,jpno3) = 19.68 * tmask(:,:,25) trn(:,:,26,jpno3) = 19.91 * tmask(:,:,26) trn(:,:,27,jpno3) = 19.99 * tmask(:,:,27) trn(:,:,28,jpno3) = 20.01 * tmask(:,:,28) trn(:,:,29,jpno3) = 20.01 * tmask(:,:,29) trn(:,:,30,jpno3) = 20.01 * tmask(:,:,30) # elif defined key_gyre ! LOBSTER initialisation for GYRE ! ---------------------- ! here: init NO3=f(density) by asklod AS Kremeur 2005-07 trn(:,:,:,jpdet) = 0.1 * tmask(:,:,:) trn(:,:,:,jpzoo) = 0.1 * tmask(:,:,:) trn(:,:,:,jpnh4) = 0.1 * tmask(:,:,:) trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:) trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:) DO jk = 1, jpk DO jj = 1, jpj DO ji = 1, jpi IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN trn(ji,jj,jk,jpno3) = 2. * tmask(ji,jj,jk) ELSE trn(ji,jj,jk,jpno3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk) ENDIF END DO END DO END DO #endif ENDIF ! initialize the POC in sediments sedpocb(:,:) = 0.e0 sedpocn(:,:) = 0.e0 sedpoca(:,:) = 0.e0 IF(lwp) WRITE(numout,*) 'Initialization of LOBSTER tracers done' IF(lwp) WRITE(numout,*) ' ' END SUBROUTINE trc_ini_lobster #else !!---------------------------------------------------------------------- !! Dummy module No LOBSTER bio-model !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trc_ini_lobster ! Empty routine END SUBROUTINE trc_ini_lobster #endif !!====================================================================== END MODULE trcini_lobster