MODULE trcdtr !!====================================================================== !! *** MODULE trcdtr *** !! TOP : computes or READ initial DATA for passive tracer !!====================================================================== !! History : - ! 1996-11 () original code !! ! 2000-12 (O. Aumont, E. Kestenare) add for POC in sediments !! 1.0 ! 2005-12 (O. Aumont, A. El Moussaoui) F90 !!---------------------------------------------------------------------- #if defined key_top !!---------------------------------------------------------------------- !! 'key_top' TOP models !!---------------------------------------------------------------------- !! trc_dtr : computes or READ initial DATA for passive tracer !!---------------------------------------------------------------------- USE oce_trc USE trc USE sms USE trcdta USE lib_mpp IMPLICIT NONE PRIVATE PUBLIC trc_dtr ! called in ??? !!---------------------------------------------------------------------- !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) !! $Header:$ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trc_dtr !!--------------------------------------------------------------------- !! *** ROUTINE trc_dtr *** !! !! ** Purpose : computes or READ initial DATA for passive tracer !! !! ** Method : !!--------------------------------------------------------------------- INTEGER :: jn # if defined key_pisces INTEGER :: ji, jj, jk REAL(wp) :: alka0, oxyg0, calc0, bioma0 REAL(wp) :: silic1, po4, no3, caralk, bicarb, co3 # endif !!--------------------------------------------------------------------- IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) 'trc_dtr : initialisation of the passive tracers' IF(lwp) WRITE(numout,*) '~~~~~~~' IF( lk_cfc ) THEN DO jn = jp_cfc0,jp_cfc1 trn(:,:,:,jn) = 0.e0 ! CFC initialisation to zera END DO ENDIF # if defined key_pisces ! PISCES initialisation ! --------------------- sco2 = 2.300e-3 alka0 = 2.390e-3 oxyg0 = 1.800e-4 po4 = 2.165e-6 / po4r bioma0 = 1.000e-8 silic1 = 91.510e-6 calc0 = 1.000e-6 no3 = 30.880e-6 * 7.6 trn(:,:,:,jpdic) = sco2 trn(:,:,:,jpdoc) = bioma0 trn(:,:,:,jptal) = alka0 trn(:,:,:,jpoxy) = oxyg0 trn(:,:,:,jpcal) = calc0 trn(:,:,:,jppo4) = po4 trn(:,:,:,jppoc) = bioma0 # if ! defined key_kriest trn(:,:,:,jpgoc) = bioma0 trn(:,:,:,jpbfe) = bioma0 * 5.e-6 # else trn(:,:,:,jpnum) = bioma0 / ( 6. *xkr_massp ) # endif trn(:,:,:,jpsil) = silic1 trn(:,:,:,jpbsi) = bioma0 * 0.15 trn(:,:,:,jpdsi) = bioma0 * 5.e-6 trn(:,:,:,jpphy) = bioma0 trn(:,:,:,jpdia) = bioma0 trn(:,:,:,jpzoo) = bioma0 trn(:,:,:,jpmes) = bioma0 trn(:,:,:,jpfer) = 0.6E-9 trn(:,:,:,jpsfe) = bioma0 * 5.e-6 trn(:,:,:,jpdfe) = bioma0 * 5.e-6 trn(:,:,:,jpnfe) = bioma0 * 5.e-6 trn(:,:,:,jpnch) = bioma0 * 12. / 55. trn(:,:,:,jpdch) = bioma0 * 12. / 55. trn(:,:,:,jpno3) = no3 trn(:,:,:,jpnh4) = bioma0 ! Initialization of chemical variables of the carbon cycle ! -------------------------------------------------------- DO jk = 1, jpk DO jj = 1, jpj DO ji = 1, jpi caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) ) ) co3 = ( caralk - trn(ji,jj,jk,jpdic) ) * tmask(ji,jj,jk) & & + 0.5e-3 * ( 1. - tmask(ji,jj,jk) ) bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) & & + 1.e-9 * ( 1. - tmask(ji,jj,jk) ) END DO END DO END DO ! initialize the half saturation constant for silicate ! ---------------------------------------------------- xksi(:,:) = 2.e-6 IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' IF(lwp) WRITE(numout,*) ' ' # elif defined key_lobster && ( 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_lobster && 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 # else ! Default case ! ------------ DO jn = 1, jptra trn(:,:,:,jn) = 0.1 * tmask(:,:,:) END DO # endif # if defined key_dtatrc ! Initialization of tracer from a file that may also be used for damping CALL dta_trc( nittrc000 ) DO jn = 1, jptra IF( lutini(jn) ) trn(:,:,:,jk) = trdta(:,:,:,jn) * tmask(:,:,:) ! initialisation from file if required END DO # endif ! before field : ! ------------- trb(:,:,:,:) = trn(:,:,:,:) # if defined key_lobster ! initialize the POC in sediments sedpocb(:,:) = 0.e0 sedpocn(:,:) = 0.e0 sedpoca(:,:) = 0.e0 # endif ! END SUBROUTINE trc_dtr #else !!---------------------------------------------------------------------- !! Dummy module : No passive tracer !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trc_dtr ! Empty routine END SUBROUTINE trc_dtr #endif !!====================================================================== END MODULE trcdtr