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 2528 for trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90 – NEMO

Ignore:
Timestamp:
2010-12-27T18:33:53+01:00 (13 years ago)
Author:
rblod
Message:

Update NEMOGCM from branch nemo_v3_3_beta

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90

    r1800 r2528  
    2020   USE oce_trc         ! ocean variables 
    2121   USE trc 
     22   USE lbclnk  
     23   USE lib_mpp  
     24   USE lib_fortran  
    2225 
    2326   IMPLICIT NONE 
     
    2831#  include "top_substitute.h90" 
    2932   !!---------------------------------------------------------------------- 
    30    !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)  
     33   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    3134   !! $Id$  
    32    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     35   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    3336   !!---------------------------------------------------------------------- 
    3437 
     
    4649      !!---------------------------------------------------------------------- 
    4750 
     51      !  Control consitency 
     52      CALL trc_ctl_lobster 
     53 
     54 
    4855      IF(lwp) WRITE(numout,*) 
    4956      IF(lwp) WRITE(numout,*) ' trc_ini_lobster :   LOBSTER biochemical model initialisation' 
    5057      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~' 
    51  
    5258 
    5359      ! initialization of fields for optical model 
     
    118124      ! Coastal mask  
    119125      ! ------------    
    120       cmask = 0.e0 
     126      cmask(:,:) = 0.e0 
    121127      DO ji = 2, jpi-1 
    122128         DO jj = 2, jpj-1 
     
    128134      END DO 
    129135 
    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   !!!!! 
     136      CALL lbc_lnk( cmask, 'T', 1. ) 
    134137 
    135138      ! Coastal surface 
    136139      ! --------------- 
    137       areacot = 0.e0 
    138       DO ji = 2, jpi-1 
    139          DO jj = 2, jpj-1 
    140             areacot = areacot + e1t(ji,jj) * e2t(ji,jj) * cmask(ji,jj) 
    141          END DO 
    142       END DO 
    143       ! 
     140      areacot = glob_sum( e1t(:,:) * e2t(:,:) * cmask(:,:) ) 
    144141 
    145142      ! Initialization of tracer concentration in case of  no restart  
     
    153150          
    154151         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) 
     152            trn(:,:,jk,jp_lob_det) = 0.016 * tmask(:,:,jk) 
     153            trn(:,:,jk,jp_lob_zoo) = 0.018 * tmask(:,:,jk) 
     154            trn(:,:,jk,jp_lob_phy) = 0.036 * tmask(:,:,jk)  
     155            trn(:,:,jk,jp_lob_no3) = 1.e-5 * tmask(:,:,jk) 
     156            trn(:,:,jk,jp_lob_nh4) = 5.e-4 * tmask(:,:,jk) 
     157            trn(:,:,jk,jp_lob_dom) = 0.017 * tmask(:,:,jk) 
     158         END DO 
     159          
     160         trn(:,:, 8,jp_lob_det) = 0.020   * tmask(:,:, 8) 
     161         trn(:,:, 8,jp_lob_zoo) = 0.027   * tmask(:,:, 8) 
     162         trn(:,:, 8,jp_lob_phy) = 0.041   * tmask(:,:, 8) 
     163         trn(:,:, 8,jp_lob_no3) = 0.00022 * tmask(:,:, 8) 
     164         trn(:,:, 8,jp_lob_nh4) = 0.0033  * tmask(:,:, 8) 
     165         trn(:,:, 8,jp_lob_dom) = 0.021   * tmask(:,:, 8) 
     166          
     167         trn(:,:, 9,jp_lob_det) = 0.0556  * tmask(:,:, 9) 
     168         trn(:,:, 9,jp_lob_zoo) = 0.123   * tmask(:,:, 9) 
     169         trn(:,:, 9,jp_lob_phy) = 0.122   * tmask(:,:, 9) 
     170         trn(:,:, 9,jp_lob_no3) = 0.028   * tmask(:,:, 9) 
     171         trn(:,:, 9,jp_lob_nh4) = 0.024   * tmask(:,:, 9) 
     172         trn(:,:, 9,jp_lob_dom) = 0.06    * tmask(:,:, 9) 
     173          
     174         trn(:,:,10,jp_lob_det) = 0.025   * tmask(:,:,10) 
     175         trn(:,:,10,jp_lob_zoo) = 0.016   * tmask(:,:,10) 
     176         trn(:,:,10,jp_lob_phy) = 0.029   * tmask(:,:,10) 
     177         trn(:,:,10,jp_lob_no3) = 2.462   * tmask(:,:,10) 
     178         trn(:,:,10,jp_lob_nh4) = 0.04    * tmask(:,:,10) 
     179         trn(:,:,10,jp_lob_dom) = 0.022   * tmask(:,:,10) 
     180          
     181         trn(:,:,11,jp_lob_det) = 0.0057  * tmask(:,:,11) 
     182         trn(:,:,11,jp_lob_zoo) = 0.0005  * tmask(:,:,11) 
     183         trn(:,:,11,jp_lob_phy) = 0.0006  * tmask(:,:,11) 
     184         trn(:,:,11,jp_lob_no3) = 3.336   * tmask(:,:,11) 
     185         trn(:,:,11,jp_lob_nh4) = 0.005   * tmask(:,:,11) 
     186         trn(:,:,11,jp_lob_dom) = 0.004   * tmask(:,:,11) 
     187          
     188         trn(:,:,12,jp_lob_det) = 0.002   * tmask(:,:,12) 
     189         trn(:,:,12,jp_lob_zoo) = 1.e-6   * tmask(:,:,12) 
     190         trn(:,:,12,jp_lob_phy) = 5.e-6   * tmask(:,:,12) 
     191         trn(:,:,12,jp_lob_no3) = 4.24    * tmask(:,:,12) 
     192         trn(:,:,12,jp_lob_nh4) = 0.001   * tmask(:,:,12) 
     193         trn(:,:,12,jp_lob_dom) = 3.e-5   * tmask(:,:,12) 
    197194          
    198195         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) 
     196            trn(:,:,jk,jp_lob_det) = 0.e0 
     197            trn(:,:,jk,jp_lob_zoo) = 0.e0 
     198            trn(:,:,jk,jp_lob_phy) = 0.e0 
     199            trn(:,:,jk,jp_lob_nh4) = 0.e0 
     200            trn(:,:,jk,jp_lob_dom) = 0.e0 
     201         END DO 
     202          
     203         trn(:,:,13,jp_lob_no3) = 5.31  * tmask(:,:,13) 
     204         trn(:,:,14,jp_lob_no3) = 6.73  * tmask(:,:,14) 
     205         trn(:,:,15,jp_lob_no3) = 8.32  * tmask(:,:,15) 
     206         trn(:,:,16,jp_lob_no3) = 10.13 * tmask(:,:,16) 
     207         trn(:,:,17,jp_lob_no3) = 11.95 * tmask(:,:,17) 
     208         trn(:,:,18,jp_lob_no3) = 13.57 * tmask(:,:,18) 
     209         trn(:,:,19,jp_lob_no3) = 15.08 * tmask(:,:,19) 
     210         trn(:,:,20,jp_lob_no3) = 16.41 * tmask(:,:,20) 
     211         trn(:,:,21,jp_lob_no3) = 17.47 * tmask(:,:,21) 
     212         trn(:,:,22,jp_lob_no3) = 18.29 * tmask(:,:,22) 
     213         trn(:,:,23,jp_lob_no3) = 18.88 * tmask(:,:,23) 
     214         trn(:,:,24,jp_lob_no3) = 19.30 * tmask(:,:,24) 
     215         trn(:,:,25,jp_lob_no3) = 19.68 * tmask(:,:,25) 
     216         trn(:,:,26,jp_lob_no3) = 19.91 * tmask(:,:,26) 
     217         trn(:,:,27,jp_lob_no3) = 19.99 * tmask(:,:,27) 
     218         trn(:,:,28,jp_lob_no3) = 20.01 * tmask(:,:,28) 
     219         trn(:,:,29,jp_lob_no3) = 20.01 * tmask(:,:,29) 
     220         trn(:,:,30,jp_lob_no3) = 20.01 * tmask(:,:,30) 
    224221 
    225222# elif defined key_gyre 
     
    227224         ! ---------------------- 
    228225         ! 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(:,:,:) 
     226         trn(:,:,:,jp_lob_det) = 0.1 * tmask(:,:,:) 
     227         trn(:,:,:,jp_lob_zoo) = 0.1 * tmask(:,:,:) 
     228         trn(:,:,:,jp_lob_nh4) = 0.1 * tmask(:,:,:) 
     229         trn(:,:,:,jp_lob_phy) = 0.1 * tmask(:,:,:) 
     230         trn(:,:,:,jp_lob_dom) = 1.0 * tmask(:,:,:) 
    234231         DO jk = 1, jpk 
    235232            DO jj = 1, jpj 
    236233               DO ji = 1, jpi 
    237234                  IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN 
    238                      trn(ji,jj,jk,jpno3) = 2. * tmask(ji,jj,jk) 
     235                     trn(ji,jj,jk,jp_lob_no3) = 2. * tmask(ji,jj,jk) 
    239236                  ELSE 
    240                      trn(ji,jj,jk,jpno3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk) 
     237                     trn(ji,jj,jk,jp_lob_no3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk) 
    241238                  ENDIF 
    242239               END DO 
     
    259256   END SUBROUTINE trc_ini_lobster 
    260257 
     258   SUBROUTINE trc_ctl_lobster 
     259      !!---------------------------------------------------------------------- 
     260      !!                     ***  ROUTINE trc_ctl_lobster  *** 
     261      !! 
     262      !! ** Purpose :   control the cpp options, namelist and files  
     263      !!---------------------------------------------------------------------- 
     264      INTEGER :: jl, jn 
     265 
     266      IF(lwp) WRITE(numout,*) 
     267      IF(lwp) WRITE(numout,*) ' use LOBSTER biological model ' 
     268 
     269      ! Check number of tracers 
     270      ! ----------------------- 
     271      IF( jp_lobster /= 6 ) CALL ctl_stop( ' LOBSTER has 6 passive tracers. Change jp_lobster in par_lobster.F90' ) 
     272 
     273      ! Check tracer names 
     274      ! ------------------ 
     275      IF(   ctrcnm(jp_lob_det) /= 'DET' .OR. ctrcnm(jp_lob_zoo) /= 'ZOO' .OR.   & 
     276         &  ctrcnm(jp_lob_phy) /= 'PHY' .OR. ctrcnm(jp_lob_no3) /= 'NO3' .OR.   & 
     277         &  ctrcnm(jp_lob_nh4) /= 'NH4' .OR. ctrcnm(jp_lob_dom) /= 'DOM' .OR.   & 
     278         &  ctrcnl(jp_lob_det) /= 'Detritus'                        .OR.   & 
     279         &  ctrcnl(jp_lob_zoo) /= 'Zooplankton concentration'       .OR.   & 
     280         &  ctrcnl(jp_lob_phy) /= 'Phytoplankton concentration'     .OR.   & 
     281         &  ctrcnl(jp_lob_no3) /= 'Nitrate concentration'           .OR.   & 
     282         &  ctrcnl(jp_lob_nh4) /= 'Ammonium concentration'          .OR.   & 
     283         &  ctrcnl(jp_lob_dom) /= 'Dissolved organic matter' ) THEN 
     284         ctrcnm(jp_lob_det)='DET' 
     285         ctrcnl(jp_lob_det)='Detritus' 
     286         ctrcnm(jp_lob_zoo)='ZOO' 
     287         ctrcnl(jp_lob_zoo)='Zooplankton concentration' 
     288         ctrcnm(jp_lob_phy)='PHY' 
     289         ctrcnl(jp_lob_phy)='Phytoplankton concentration' 
     290         ctrcnm(jp_lob_no3)='NO3' 
     291         ctrcnl(jp_lob_no3)='Nitrate concentration' 
     292         ctrcnm(jp_lob_nh4)='NH4' 
     293         ctrcnl(jp_lob_nh4)='Ammonium concentration' 
     294         ctrcnm(jp_lob_dom)='DOM' 
     295         ctrcnl(jp_lob_dom)='Dissolved organic matter' 
     296         IF(lwp) THEN 
     297            CALL ctl_warn( ' We force tracer names ' ) 
     298            DO jl = 1, jp_lobster 
     299               jn = jp_lob0 + jl - 1 
     300               WRITE(numout,*) ' tracer nb: ',jn,' name = ',ctrcnm(jn), ctrcnl(jn) 
     301            END DO 
     302            WRITE(numout,*) ' ' 
     303         ENDIF 
     304      ENDIF 
     305 
     306      ! Check tracer units 
     307      DO jl = 1, jp_lobster 
     308         jn = jp_lob0 + jl - 1 
     309         IF( ctrcun(jn) /= 'mmole-N/m3') THEN 
     310            ctrcun(jn) = 'mmole-N/m3' 
     311            IF(lwp) THEN 
     312               CALL ctl_warn( ' We force tracer units ' ) 
     313               WRITE(numout,*) ' tracer  ',ctrcnm(jn), 'UNIT= ',ctrcun(jn) 
     314            ENDIF 
     315         ENDIF 
     316      END DO 
     317 
     318   END SUBROUTINE trc_ctl_lobster 
     319 
    261320#else 
    262321   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.