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 – 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

Location:
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER
Files:
1 added
2 deleted
8 edited

Legend:

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

    r1176 r2038  
    2020   LOGICAL, PUBLIC, PARAMETER ::   lk_lobster     = .TRUE.    !: LOBSTER flag  
    2121   INTEGER, PUBLIC, PARAMETER ::   jp_lobster     =  6        !: number of LOBSTER tracers 
    22    INTEGER, PUBLIC, PARAMETER ::   jp_lobster_2d  = 19        !: additional 2d output arrays ('key_trc_diaadd') 
    23    INTEGER, PUBLIC, PARAMETER ::   jp_lobster_3d  =  3        !: additional 3d output arrays ('key_trc_diaadd') 
     22   INTEGER, PUBLIC, PARAMETER ::   jp_lobster_2d  = 19        !: additional 2d output arrays ('key_diatrc') 
     23   INTEGER, PUBLIC, PARAMETER ::   jp_lobster_3d  =  3        !: additional 3d output arrays ('key_diatrc') 
    2424   INTEGER, PUBLIC, PARAMETER ::   jp_lobster_trd = 17       !: number of sms trends for LOBSTER 
    2525 
    2626   ! assign an index in trc arrays for each LOBSTER prognostic variables 
    27    INTEGER, PUBLIC, PARAMETER ::   jpdet          =  1        !: detritus                    [mmoleN/m3] 
    28    INTEGER, PUBLIC, PARAMETER ::   jpzoo          =  2        !: zooplancton concentration   [mmoleN/m3] 
    29    INTEGER, PUBLIC, PARAMETER ::   jpphy          =  3        !: phytoplancton concentration [mmoleN/m3] 
    30    INTEGER, PUBLIC, PARAMETER ::   jpno3          =  4        !: nitrate concentration       [mmoleN/m3] 
    31    INTEGER, PUBLIC, PARAMETER ::   jpnh4          =  5        !: ammonium concentration      [mmoleN/m3] 
    32    INTEGER, PUBLIC, PARAMETER ::   jpdom          =  6        !: dissolved organic matter    [mmoleN/m3] 
     27   INTEGER, PUBLIC, PARAMETER ::   jp_lob_det     =  1        !: detritus                    [mmoleN/m3] 
     28   INTEGER, PUBLIC, PARAMETER ::   jp_lob_zoo     =  2        !: zooplancton concentration   [mmoleN/m3] 
     29   INTEGER, PUBLIC, PARAMETER ::   jp_lob_phy     =  3        !: phytoplancton concentration [mmoleN/m3] 
     30   INTEGER, PUBLIC, PARAMETER ::   jp_lob_no3     =  4        !: nitrate concentration       [mmoleN/m3] 
     31   INTEGER, PUBLIC, PARAMETER ::   jp_lob_nh4     =  5        !: ammonium concentration      [mmoleN/m3] 
     32   INTEGER, PUBLIC, PARAMETER ::   jp_lob_dom     =  6        !: dissolved organic matter    [mmoleN/m3] 
    3333 
    3434   ! productive layer depth 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcbio.F90

    r1953 r2038  
    2020   USE lbclnk          !  
    2121   USE prtctl_trc      ! Print control for debbuging 
    22    USE trdmld_trc 
    23    USE trdmld_trc_oce 
     22   USE trdmod_trc 
    2423   USE iom 
    2524    
     
    5756      !!                                  source      sink 
    5857      !!         
    59       !!              IF 'key_trc_diabio' defined , the biogeochemical trends 
     58      !!              IF 'key_diabio' defined , the biogeochemical trends 
    6059      !!              for passive tracers are saved for futher diagnostics. 
    6160      !!--------------------------------------------------------------------- 
     
    7170      REAL(wp) ::   zfilpz, zfildz, zphya, zzooa, zno3a 
    7271      REAL(wp) ::   znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju 
    73 #if defined key_trc_diaadd 
     72#if defined key_diatrc 
    7473      REAL(wp) ::   ze3t 
    7574#endif 
    76 #if defined key_trc_diaadd && defined key_iomput 
     75#if defined key_diatrc && defined key_iomput 
    7776      REAL(wp), DIMENSION(jpi,jpj,17)     :: zw2d 
    78 # if defined key_trc_dia3d 
    7977      REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: zw3d 
    80 # endif 
    8178#endif 
    8279      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrbio 
     
    9188 
    9289      fbod(:,:) = 0.e0 
    93 #if defined key_trc_diaadd && ! defined key_iomput 
     90#if defined key_diatrc && ! defined key_iomput 
    9491      DO jl = jp_lob0_2d, jp_lob1_2d 
    9592         trc2d(:,:,jl) = 0.e0 
    9693      END DO  
    9794#endif 
    98 #if defined key_trc_diaadd && defined key_iomput 
     95#if defined key_diatrc && defined key_iomput 
    9996      zw2d(:,:,:) = 0.e0 
    100 # if defined key_trc_dia3d 
    10197      zw3d(:,:,:,:) = 0.e0 
    102 # endif 
    10398#endif 
    10499 
     
    117112 
    118113               ! negative trophic variables DO not contribute to the fluxes 
    119                zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) ) 
    120                zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) ) 
    121                zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) ) 
    122                zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) ) 
    123                znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) ) 
    124                zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) ) 
     114               zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) ) 
     115               zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) ) 
     116               zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) ) 
     117               zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) ) 
     118               znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) ) 
     119               zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) ) 
    125120 
    126121               ! Limitations 
     
    194189 
    195190               ! tracer flux at totox-point added to the general trend 
    196                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
    197                tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
    198                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
    199                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
    200                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
    201                tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    202  
    203 #if defined key_trc_diabio 
     191               tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta 
     192               tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa 
     193               tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya 
     194               tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a 
     195               tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a 
     196               tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma 
     197 
     198#if defined key_diabio 
    204199               trbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy 
    205200               trbio(ji,jj,jk,jp_lob0_trd +  1) = znh4phy 
     
    238233                ENDIF 
    239234 
    240 #if defined key_trc_diaadd 
     235#if defined key_diatrc 
    241236               ! convert fluxes in per day 
    242237               ze3t = fse3t(ji,jj,jk) * 86400. 
     
    282277               zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
    283278#endif 
    284 #if defined key_trc_dia3d  
     279#if defined key_diatrc  
    285280# if ! defined key_iomput 
    286281               trc3d(ji,jj,jk,jp_lob0_3d    ) = zno3phy * 86400      
     
    307302               !    trophic variables( det, zoo, phy, no3, nh4, dom) 
    308303               !       negative trophic variables DO not contribute to the fluxes 
    309                zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) ) 
    310                zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) ) 
    311                zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) ) 
    312                zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) ) 
    313                znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) ) 
    314                zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) ) 
     304               zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) ) 
     305               zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) ) 
     306               zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) ) 
     307               zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) ) 
     308               znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) ) 
     309               zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) ) 
    315310 
    316311               !    Limitations 
     
    363358 
    364359               ! tracer flux at totox-point added to the general trend 
    365                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
    366                tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
    367                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
    368                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
    369                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
    370                tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
     360               tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta 
     361               tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa 
     362               tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya 
     363               tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a 
     364               tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a 
     365               tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma 
    371366               ! 
    372 #if defined key_trc_diabio 
     367#if defined key_diabio 
    373368               trbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy 
    374369               trbio(ji,jj,jk,jp_lob0_trd +  1) = znh4phy 
     
    406401                  !  trend number 17 in trcexp 
    407402                ENDIF 
    408 #if defined key_trc_diaadd && defined key_trc_dia3d 
     403#if defined key_diatrc 
    409404# if ! defined key_iomput 
    410405               trc3d(ji,jj,jk,jp_lob0_3d    ) =  zno3phy * 86400      
     
    421416      END DO 
    422417 
    423 #if defined key_trc_diaadd 
     418#if defined key_diatrc 
    424419      ! Lateral boundary conditions  
    425420# if ! defined key_iomput 
     
    452447#endif 
    453448 
    454 #if defined key_trc_diaadd && defined key_trc_dia3d 
     449#if defined key_diatrc 
    455450      ! Lateral boundary conditions  
    456451# if ! defined key_iomput 
     
    469464#endif 
    470465 
    471 #if defined key_trc_diabio 
     466#if defined key_diabio 
    472467      ! Lateral boundary conditions on trcbio 
    473468      DO jl = jp_lob0_trd, jp_lob1_trd 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcexp.F90

    r1953 r2038  
    2121   USE trctrp_lec 
    2222   USE prtctl_trc      ! Print control for debbuging 
    23    USE trdmld_trc 
    24    USE trdmld_trc_oce 
     23   USE trdmod_trc 
    2524   USE iom 
    2625 
     
    7574      IF( l_trdtrc )THEN 
    7675         ALLOCATE( ztrbio(jpi,jpj,jpk) ) 
    77          ztrbio(:,:,:) = tra(:,:,:,jpno3) 
     76         ztrbio(:,:,:) = tra(:,:,:,jp_lob_no3) 
    7877      ENDIF 
    7978 
     
    8281            DO ji = fs_2, fs_jpim1 
    8382               ze3t = 1. / fse3t(ji,jj,jk) 
    84                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + ze3t * dmin3(ji,jj,jk) * fbod(ji,jj) 
     83               tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + ze3t * dmin3(ji,jj,jk) * fbod(ji,jj) 
    8584            END DO 
    8685         END DO 
     
    9695         DO ji = fs_2, fs_jpim1 
    9796            ikbot = mbathy(ji,jj) - 1 
    98             tra(ji,jj,ikbot,jpno3) = tra(ji,jj,ikbot,jpno3) + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot)  
     97            tra(ji,jj,ikbot,jp_lob_no3) = tra(ji,jj,ikbot,jp_lob_no3) + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot)  
    9998            ! Deposition of organic matter in the sediment 
    100             zwork = vsed * trn(ji,jj,ikbot,jpdet) 
     99            zwork = vsed * trn(ji,jj,ikbot,jp_lob_det) 
    101100            sedpoca(ji,jj) = ( zwork + dminl(ji,jj) * fbod(ji,jj)   & 
    102101               &           - sedlam * sedpocn(ji,jj) - sedlostpoc * sedpocn(ji,jj) ) * rdt 
     
    107106      DO jj = 2, jpjm1 
    108107         DO ji = fs_2, fs_jpim1 
    109             tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1) 
     108            tra(ji,jj,1,jp_lob_no3) = tra(ji,jj,1,jp_lob_no3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1) 
    110109         END DO 
    111110      END DO 
     
    114113  
    115114      ! Oa & Ek: diagnostics depending on jpdia2d !          left as example 
    116 #if defined key_trc_diaadd 
     115#if defined key_diatrc 
    117116# if ! defined key_iomput 
    118117      trc2d(:,:,jp_lob0_2d + 18) = sedpocn(:,:) 
     
    124123      ! Leap-frog scheme (only in explicit case, otherwise the  
    125124      ! ----------------  time stepping is already done in trczdf) 
    126       IF( l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN 
    127          zfact = 2. * rdttra(jk) * FLOAT( ndttrc )  
    128          IF( neuler == 0 .AND. kt == nittrc000 )   zfact = rdttra(jk) * FLOAT(ndttrc)  
     125      IF( ln_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN 
     126         zfact = 2. * rdttra(jk) * FLOAT( nn_dttrc )  
     127         IF( neuler == 0 .AND. kt == nittrc000 )   zfact = rdttra(jk) * FLOAT(nn_dttrc)  
    129128         sedpoca(:,:) =  sedpocb(:,:) + zfact * sedpoca(:,:)  
    130129      ENDIF 
     
    159158      ! 
    160159      IF( l_trdtrc ) THEN 
    161          ztrbio(:,:,:) = tra(:,:,:,jpno3) - ztrbio(:,:,:) 
     160         ztrbio(:,:,:) = tra(:,:,:,jp_lob_no3) - ztrbio(:,:,:) 
    162161         jl = jp_lob0_trd + 16 
    163162         CALL trd_mod_trc( ztrbio, jl, kt )   ! handle the trend 
  • 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   !!---------------------------------------------------------------------- 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcopt.F90

    r1953 r2038  
    7878      zparg  (:,:,1) = zpar0m(:,:) * 0.5 
    7979 
    80 !!gm optimisation : introduce zcoef and LOG computed once for all 
    81  
    8280      !                                          ! Photosynthetically Available Radiation (PAR) 
    8381      zcoef = 12 * redf / rcchl / rpig           ! -------------------------------------- 
     
    8583         DO jj = 1, jpj 
    8684            DO ji = 1, jpi 
    87 !!gm           zpig = MAX( TINY(0.), trn(ji,jj,jk-1,jpphy) ) * zcoef 
    88 !!gm           zkr  = xkr0 + xkrp * EXP( xlr * LOG(zpig) ) 
    89 !!gm           zkg  = xkg0 + xkgp * EXP( xlg * LOG(zpig) ) 
    90                zpig = LOG(  MAX( TINY(0.), trn(ji,jj,jk-1,jpphy) ) * zcoef  ) 
     85               zpig = LOG(  MAX( TINY(0.), trn(ji,jj,jk-1,jp_lob_phy) ) * zcoef  ) 
    9186               zkr  = xkr0 + xkrp * EXP( xlr * zpig ) 
    9287               zkg  = xkg0 + xkgp * EXP( xlg * zpig ) 
     
    9691        END DO 
    9792      END DO 
    98 !!gm optimisation : suppress one division 
    9993      DO jk = 1, jpkm1                                ! mean par at t-levels 
    10094         DO jj = 1, jpj 
    10195            DO ji = 1, jpi 
    102                zpig = LOG(  MAX( TINY(0.), trn(ji,jj,jk,jpphy) ) * zcoef  ) 
     96               zpig = LOG(  MAX( TINY(0.), trn(ji,jj,jk,jp_lob_phy) ) * zcoef  ) 
    10397               zkr  = xkr0 + xkrp * EXP( xlr * zpig ) 
    10498               zkg  = xkg0 + xkgp * EXP( xlg * zpig ) 
    105 !!gm           zparr(ji,jj,jk) = zparr(ji,jj,jk) / zkr / fse3t(ji,jj,jk) * ( 1 - EXP( -zkr * fse3t(ji,jj,jk) ) ) 
    106 !!gm           zparg(ji,jj,jk) = zparg(ji,jj,jk) / zkg / fse3t(ji,jj,jk) * ( 1 - EXP( -zkg * fse3t(ji,jj,jk) ) ) 
    10799               zparr(ji,jj,jk) = zparr(ji,jj,jk) / ( zkr * fse3t(ji,jj,jk) ) * ( 1 - EXP( -zkr * fse3t(ji,jj,jk) ) ) 
    108100               zparg(ji,jj,jk) = zparg(ji,jj,jk) / ( zkg * fse3t(ji,jj,jk) ) * ( 1 - EXP( -zkg * fse3t(ji,jj,jk) ) ) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcrst_lobster.F90

    r1953 r2038  
    4343      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    4444 
    45       CALL iom_get( knum, jpdom_autoglo, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) )  
    46       CALL iom_get( knum, jpdom_autoglo, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) )  
     45      CALL iom_get( knum, jpdom_autoglo, 'SEDB'//ctrcnm(jp_lob_det), sedpocb(:,:) )  
     46      CALL iom_get( knum, jpdom_autoglo, 'SEDN'//ctrcnm(jp_lob_det), sedpocn(:,:) )  
    4747 
    4848   END SUBROUTINE trc_rst_read_lobster 
     
    6464      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    6565 
    66       CALL iom_rstput( kt, kitrst, knum, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 
    67       CALL iom_rstput( kt, kitrst, knum, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 
     66      CALL iom_rstput( kt, kitrst, knum, 'SEDB'//ctrcnm(jp_lob_det), sedpocb(:,:) ) 
     67      CALL iom_rstput( kt, kitrst, knum, 'SEDN'//ctrcnm(jp_lob_det), sedpocn(:,:) ) 
    6868 
    6969   END SUBROUTINE trc_rst_wri_lobster 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcsed.F90

    r1953 r2038  
    1818   USE sms_lobster 
    1919   USE lbclnk 
    20    USE trdmld_trc 
    21    USE trdmld_trc_oce 
     20   USE trdmod_trc 
    2221   USE iom 
    2322   USE prtctl_trc      ! Print control for debbuging 
     
    5352      !!                             tra = tra + dz(trn wn) 
    5453      !!         
    55       !!              IF 'key_trc_diabio' is defined, the now vertical advection 
     54      !!              IF 'key_diabio' is defined, the now vertical advection 
    5655      !!              trend of passive tracers is saved for futher diagnostics. 
    5756      !!--------------------------------------------------------------------- 
     
    6160      REAL(wp) ::   ztra 
    6261      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwork 
    63 #if defined key_trc_diaadd && defined key_iomput 
     62#if defined key_diatrc && defined key_iomput 
    6463      REAL(wp), DIMENSION(jpi,jpj) ::  zw2d 
    6564#endif 
     
    7776      ! -------------------------------------------- 
    7877 
    79       ! for detritus sedimentation only - jpdet 
     78      ! for detritus sedimentation only - jp_lob_det 
    8079      zwork(:,:,1  ) = 0.e0      ! surface value set to zero 
    8180      zwork(:,:,jpk) = 0.e0      ! bottom value  set to zero 
    8281 
    83 #if defined key_trc_diaadd && defined key_iomput 
     82#if defined key_diatrc && defined key_iomput 
    8483      zw2d(:,:) = 0. 
    8584# endif 
     
    8786      IF( l_trdtrc )THEN 
    8887         ALLOCATE( ztrbio(jpi,jpj,jpk) ) 
    89          ztrbio(:,:,:) = tra(:,:,:,jpdet) 
     88         ztrbio(:,:,:) = tra(:,:,:,jp_lob_det) 
    9089      ENDIF 
    9190 
    9291      ! tracer flux at w-point: we use -vsed (downward flux)  with simplification : no e1*e2 
    9392      DO jk = 2, jpkm1 
    94          zwork(:,:,jk) = -vsed * trn(:,:,jk-1,jpdet) 
     93         zwork(:,:,jk) = -vsed * trn(:,:,jk-1,jp_lob_det) 
    9594      END DO 
    9695 
     
    10099            DO ji = 1,jpi 
    101100               ztra  = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 
    102                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + ztra 
    103 #if defined key_trc_diabio 
     101               tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + ztra 
     102#if defined key_diabio 
    104103               trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 
    105104#endif 
    106 #if defined key_trc_diaadd 
     105#if defined key_diatrc 
    107106# if ! defined key_iomput 
    108107               trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. 
     
    115114      END DO 
    116115 
    117 #if defined key_trc_diabio 
     116#if defined key_diabio 
    118117      jl = jp_lob0_trd + 7 
    119118      CALL lbc_lnk (trbio(:,:,1,jl), 'T', 1. )    ! Lateral boundary conditions on trcbio 
    120119#endif 
    121 #if defined key_trc_diaadd 
     120#if defined key_diatrc 
    122121# if ! defined key_iomput 
    123122      jl = jp_lob0_2d + 7 
     
    131130 
    132131      IF( l_trdtrc ) THEN 
    133          ztrbio(:,:,:) = tra(:,:,:,jpdet) - ztrbio(:,:,:) 
     132         ztrbio(:,:,:) = tra(:,:,:,jp_lob_det) - ztrbio(:,:,:) 
    134133         jl = jp_lob0_trd + 7 
    135134         CALL trd_mod_trc( ztrbio, jl, kt )   ! handle the trend 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90

    r1255 r2038  
    1919   USE trcsed 
    2020   USE trcexp 
    21    USE trdmld_trc_oce 
     21   USE trdmod_oce 
     22   USE trdmod_trc 
    2223   USE trdmld_trc 
    2324 
     
    5051 
    5152      CALL trc_opt( kt )      ! optical model 
    52  
    5353      CALL trc_bio( kt )      ! biological model 
    54  
    5554      CALL trc_sed( kt )      ! sedimentation model 
    56  
    5755      CALL trc_exp( kt )      ! export 
    5856 
     
    6058          DO jn = jp_lob0, jp_lob1 
    6159            ztrlob(:,:,:) = tra(:,:,:,jn) 
    62             CALL trd_mod_trc( ztrlob, jn, jptrc_trd_sms, kt )   ! save trends 
     60            CALL trd_mod_trc( ztrlob, jn, jptra_trd_sms, kt )   ! save trends 
    6361          END DO 
    6462      END IF 
Note: See TracChangeset for help on using the changeset viewer.