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_trc_lobster1 !!---------------------------------------------------------------------- !! 'key_trc_lobster1' LOBSTER model !!---------------------------------------------------------------------- !! trc_ini_lobster : LOBSTER model initialisation !!---------------------------------------------------------------------- USE par_trc ! TOP parameters USE trccfc ! CFC sms trends USE sms ! Source Minus Sink variables USE oce_trc ! ocean variables IMPLICIT NONE PRIVATE PUBLIC trc_ini_lobster ! called by trcini.F90 module # include "domzgr_substitute.h90" # include "passivetrc_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 = 1, jptra 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 ! 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