New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 2038 for branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90 – NEMO

Ignore:
Timestamp:
2010-08-02T12:57:40+02:00 (14 years ago)
Author:
cetlod
Message:

Apply the merge to passive tracers, see ticket:693

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90

    r1953 r2038  
    2020   USE oce_trc         ! ocean variables 
    2121   USE trc 
     22   USE lbclnk  
     23   USE lib_mpp  
    2224 
    2325   IMPLICIT NONE 
     
    4648      !!---------------------------------------------------------------------- 
    4749 
     50      !  Control consitency 
     51      CALL trc_ctl_lobster 
     52 
     53 
    4854      IF(lwp) WRITE(numout,*) 
    4955      IF(lwp) WRITE(numout,*) ' trc_ini_lobster :   LOBSTER biochemical model initialisation' 
    5056      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~' 
    51  
    5257 
    5358      ! initialization of fields for optical model 
     
    118123      ! Coastal mask  
    119124      ! ------------    
    120       cmask = 0.e0 
     125      cmask(:,:) = 0.e0 
    121126      DO ji = 2, jpi-1 
    122127         DO jj = 2, jpj-1 
     
    128133      END DO 
    129134 
    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. ) 
    134136 
    135137      ! Coastal surface 
    136138      ! --------------- 
    137139      areacot = 0.e0 
    138       DO ji = 2, jpi-1 
    139          DO jj = 2, jpj-1 
     140      DO ji = 1, jpi 
     141         DO jj = 1, jpj 
    140142            areacot = areacot + e1t(ji,jj) * e2t(ji,jj) * cmask(ji,jj) 
    141143         END DO 
    142144      END DO 
    143145      ! 
     146      IF( lk_mpp ) CALL mpp_sum( areacot )   ! sum over the global domain 
    144147 
    145148      ! Initialization of tracer concentration in case of  no restart  
     
    153156          
    154157         DO jk = 1, 7 
    155             trn(:,:,jk,jpdet) = 0.016 * tmask(:,:,jk) 
    156             trn(:,:,jk,jpzoo) = 0.018 * tmask(:,:,jk) 
    157             trn(:,:,jk,jpphy) = 0.036 * tmask(:,:,jk)  
    158             trn(:,:,jk,jpno3) = 1.e-5 * tmask(:,:,jk) 
    159             trn(:,:,jk,jpnh4) = 5.e-4 * tmask(:,:,jk) 
    160             trn(:,:,jk,jpdom) = 0.017 * tmask(:,:,jk) 
    161          END DO 
    162           
    163          trn(:,:, 8,jpdet) = 0.020   * tmask(:,:, 8) 
    164          trn(:,:, 8,jpzoo) = 0.027   * tmask(:,:, 8) 
    165          trn(:,:, 8,jpphy) = 0.041   * tmask(:,:, 8) 
    166          trn(:,:, 8,jpno3) = 0.00022 * tmask(:,:, 8) 
    167          trn(:,:, 8,jpnh4) = 0.0033  * tmask(:,:, 8) 
    168          trn(:,:, 8,jpdom) = 0.021   * tmask(:,:, 8) 
    169           
    170          trn(:,:, 9,jpdet) = 0.0556  * tmask(:,:, 9) 
    171          trn(:,:, 9,jpzoo) = 0.123   * tmask(:,:, 9) 
    172          trn(:,:, 9,jpphy) = 0.122   * tmask(:,:, 9) 
    173          trn(:,:, 9,jpno3) = 0.028   * tmask(:,:, 9) 
    174          trn(:,:, 9,jpnh4) = 0.024   * tmask(:,:, 9) 
    175          trn(:,:, 9,jpdom) = 0.06    * tmask(:,:, 9) 
    176           
    177          trn(:,:,10,jpdet) = 0.025   * tmask(:,:,10) 
    178          trn(:,:,10,jpzoo) = 0.016   * tmask(:,:,10) 
    179          trn(:,:,10,jpphy) = 0.029   * tmask(:,:,10) 
    180          trn(:,:,10,jpno3) = 2.462   * tmask(:,:,10) 
    181          trn(:,:,10,jpnh4) = 0.04    * tmask(:,:,10) 
    182          trn(:,:,10,jpdom) = 0.022   * tmask(:,:,10) 
    183           
    184          trn(:,:,11,jpdet) = 0.0057  * tmask(:,:,11) 
    185          trn(:,:,11,jpzoo) = 0.0005  * tmask(:,:,11) 
    186          trn(:,:,11,jpphy) = 0.0006  * tmask(:,:,11) 
    187          trn(:,:,11,jpno3) = 3.336   * tmask(:,:,11) 
    188          trn(:,:,11,jpnh4) = 0.005   * tmask(:,:,11) 
    189          trn(:,:,11,jpdom) = 0.004   * tmask(:,:,11) 
    190           
    191          trn(:,:,12,jpdet) = 0.002   * tmask(:,:,12) 
    192          trn(:,:,12,jpzoo) = 1.e-6   * tmask(:,:,12) 
    193          trn(:,:,12,jpphy) = 5.e-6   * tmask(:,:,12) 
    194          trn(:,:,12,jpno3) = 4.24    * tmask(:,:,12) 
    195          trn(:,:,12,jpnh4) = 0.001   * tmask(:,:,12) 
    196          trn(:,:,12,jpdom) = 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) 
    197200          
    198201         DO jk=13,jpk 
    199             trn(:,:,jk,jpdet) = 0.e0 
    200             trn(:,:,jk,jpzoo) = 0.e0 
    201             trn(:,:,jk,jpphy) = 0.e0 
    202             trn(:,:,jk,jpnh4) = 0.e0 
    203             trn(:,:,jk,jpdom) = 0.e0 
    204          END DO 
    205           
    206          trn(:,:,13,jpno3) = 5.31  * tmask(:,:,13) 
    207          trn(:,:,14,jpno3) = 6.73  * tmask(:,:,14) 
    208          trn(:,:,15,jpno3) = 8.32  * tmask(:,:,15) 
    209          trn(:,:,16,jpno3) = 10.13 * tmask(:,:,16) 
    210          trn(:,:,17,jpno3) = 11.95 * tmask(:,:,17) 
    211          trn(:,:,18,jpno3) = 13.57 * tmask(:,:,18) 
    212          trn(:,:,19,jpno3) = 15.08 * tmask(:,:,19) 
    213          trn(:,:,20,jpno3) = 16.41 * tmask(:,:,20) 
    214          trn(:,:,21,jpno3) = 17.47 * tmask(:,:,21) 
    215          trn(:,:,22,jpno3) = 18.29 * tmask(:,:,22) 
    216          trn(:,:,23,jpno3) = 18.88 * tmask(:,:,23) 
    217          trn(:,:,24,jpno3) = 19.30 * tmask(:,:,24) 
    218          trn(:,:,25,jpno3) = 19.68 * tmask(:,:,25) 
    219          trn(:,:,26,jpno3) = 19.91 * tmask(:,:,26) 
    220          trn(:,:,27,jpno3) = 19.99 * tmask(:,:,27) 
    221          trn(:,:,28,jpno3) = 20.01 * tmask(:,:,28) 
    222          trn(:,:,29,jpno3) = 20.01 * tmask(:,:,29) 
    223          trn(:,:,30,jpno3) = 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) 
    224227 
    225228# elif defined key_gyre 
     
    227230         ! ---------------------- 
    228231         ! here:  init NO3=f(density) by asklod AS Kremeur 2005-07 
    229          trn(:,:,:,jpdet) = 0.1 * tmask(:,:,:) 
    230          trn(:,:,:,jpzoo) = 0.1 * tmask(:,:,:) 
    231          trn(:,:,:,jpnh4) = 0.1 * tmask(:,:,:) 
    232          trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:) 
    233          trn(:,:,:,jpdom) = 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(:,:,:) 
    234237         DO jk = 1, jpk 
    235238            DO jj = 1, jpj 
    236239               DO ji = 1, jpi 
    237240                  IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN 
    238                      trn(ji,jj,jk,jpno3) = 2. * tmask(ji,jj,jk) 
     241                     trn(ji,jj,jk,jp_lob_no3) = 2. * tmask(ji,jj,jk) 
    239242                  ELSE 
    240                      trn(ji,jj,jk,jpno3) = ( 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) 
    241244                  ENDIF 
    242245               END DO 
     
    259262   END SUBROUTINE trc_ini_lobster 
    260263 
     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 
    261338#else 
    262339   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.