Changeset 1176


Ignore:
Timestamp:
2008-09-11T18:26:59+02:00 (12 years ago)
Author:
cetlod
Message:

update LOBSTER modules to take into account new trends organization, see ticket:248

Location:
trunk/NEMO/TOP_SRC/LOBSTER
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/LOBSTER/par_lobster.F90

    r1152 r1176  
    2222   INTEGER, PUBLIC, PARAMETER ::   jp_lobster_2d  = 19        !: additional 2d output arrays ('key_trc_diaadd') 
    2323   INTEGER, PUBLIC, PARAMETER ::   jp_lobster_3d  =  3        !: additional 3d output arrays ('key_trc_diaadd') 
    24    INTEGER, PUBLIC, PARAMETER ::   jp_lobster_trd = 15        !: number of sms trends for LOBSTER 
     24   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 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90

    r1146 r1176  
    2020   USE lbclnk          !  
    2121   USE prtctl_trc      ! Print control for debbuging 
     22   USE trdmld_trc 
     23   USE trdmld_trc_oce 
    2224    
    2325   IMPLICIT NONE 
     
    5961      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    6062      !! 
    61       INTEGER  ::   ji, jj, jk 
     63      INTEGER  ::   ji, jj, jk, jn, jl 
    6264      REAL(wp) ::   zdet, zzoo, zphy, zno3, znh4, zdom      ! now concentrations 
    6365      REAL(wp) ::   zlno3, zlnh4, zle, zlt                  ! limitation terms for phyto 
     
    7173      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t 
    7274#endif 
     75      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrbio 
    7376      CHARACTER (len=25) :: charout 
    7477      !!--------------------------------------------------------------------- 
     
    9093      fbod(:,:) = 0.e0 
    9194#if defined key_trc_diaadd 
    92       DO ji = 1, jp_lobster_2d 
    93          trc2d(:,:,ji) = 0.e0 
     95      DO jl = 1, jp_lobster_2d 
     96         trc2d(:,:,jl) = 0.e0 
    9497      END DO  
    9598#endif 
    9699 
     100      IF( l_trdtrc )THEN 
     101         ALLOCATE( ztrbio(jpi,jpj,jpk,jp_lobster_trd) ) 
     102!CDIR COLLAPSE 
     103         ztrbio(:,:,:,:) = 0. 
     104      ENDIF 
    97105 
    98106      !                                      ! -------------------------- ! 
     
    226234               trc3d(ji,jj,jk,3) = znh4no3 * 86400      
    227235#endif 
     236               IF( l_trdtrc ) THEN 
     237                  ztrbio(ji,jj,jk,1) = zno3phy 
     238                  ztrbio(ji,jj,jk,2) = znh4phy 
     239                  ztrbio(ji,jj,jk,3) = zphynh4 
     240                  ztrbio(ji,jj,jk,4) = zphydom 
     241                  ztrbio(ji,jj,jk,5) = zphyzoo 
     242                  ztrbio(ji,jj,jk,6) = zphydet 
     243                  ztrbio(ji,jj,jk,7) = zdetzoo 
     244                  !  trend number 8 in trcsed 
     245                  ztrbio(ji,jj,jk,9) = zzoodet 
     246                  ztrbio(ji,jj,jk,10) = zzoobod 
     247                  ztrbio(ji,jj,jk,11) = zzoonh4 
     248                  ztrbio(ji,jj,jk,12) = zzoodom 
     249                  ztrbio(ji,jj,jk,13) = znh4no3 
     250                  ztrbio(ji,jj,jk,14) = zdomnh4 
     251                  ztrbio(ji,jj,jk,15) = zdetnh4 
     252                  ztrbio(ji,jj,jk,16) = zdetdom 
     253                  !  trend number 17 in trcexp 
     254                ENDIF 
     255 
    228256 
    229257               ! tracer flux at totox-point added to the general trend 
     
    351379               trc3d(ji,jj,jk,3) =  znh4no3 * 86400      
    352380#endif 
     381               IF( l_trdtrc ) THEN 
     382                  ztrbio(ji,jj,jk,1) = zno3phy 
     383                  ztrbio(ji,jj,jk,2) = znh4phy 
     384                  ztrbio(ji,jj,jk,3) = zphynh4 
     385                  ztrbio(ji,jj,jk,4) = zphydom 
     386                  ztrbio(ji,jj,jk,5) = zphyzoo 
     387                  ztrbio(ji,jj,jk,6) = zphydet 
     388                  ztrbio(ji,jj,jk,7) = zdetzoo 
     389                  !  trend number 8 in trcsed 
     390                  ztrbio(ji,jj,jk,9) = zzoodet 
     391                  ztrbio(ji,jj,jk,10) = zzoobod 
     392                  ztrbio(ji,jj,jk,11) = zzoonh4 
     393                  ztrbio(ji,jj,jk,12) = zzoodom 
     394                  ztrbio(ji,jj,jk,13) = znh4no3 
     395                  ztrbio(ji,jj,jk,14) = zdomnh4 
     396                  ztrbio(ji,jj,jk,15) = zdetnh4 
     397                  ztrbio(ji,jj,jk,16) = zdetdom 
     398                  !  trend number 17 in trcexp 
     399                ENDIF 
     400 
    353401 
    354402               ! tracer flux at totox-point added to the general trend 
     
    366414#if defined key_trc_diaadd 
    367415      ! Lateral boundary conditions on trc2d and trc3d 
    368       DO ji = 1, jp_lobster_2d 
    369           CALL lbc_lnk( trc2d(:,:,ji),'T', 1. ) 
     416      DO jl = 1, jp_lobster_2d 
     417          CALL lbc_lnk( trc2d(:,:,jl),'T', 1. ) 
    370418      END DO  
    371       DO ji = 1, jp_lobster_3d 
    372           CALL lbc_lnk( trc3d(:,:,1,ji),'T', 1. ) 
     419      DO jl = 1, jp_lobster_3d 
     420          CALL lbc_lnk( trc3d(:,:,1,jl),'T', 1. ) 
    373421      END DO  
    374422#endif 
     
    376424#if defined key_trc_diabio 
    377425      ! Lateral boundary conditions on trcbio 
    378       DO ji = 1, jp_lobster_trd 
    379           CALL lbc_lnk( trbio(:,:,1,ji),'T', 1. ) 
     426      DO jl = 1, jp_lobster_trd 
     427          CALL lbc_lnk( trbio(:,:,1,jl),'T', 1. ) 
    380428      END DO  
    381429#endif 
    382430      ! 
     431      IF( l_trdtrc ) THEN 
     432!CDIRR COLLAPSE 
     433         DO jl = 1, jp_lobster_trd 
     434            CALL trd_mod_trc( ztrbio(:,:,:,jl), jl, kt )   ! handle the trend 
     435         END DO 
     436      ENDIF 
     437 
    383438      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    384439         WRITE(charout, FMT="('bio')") 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90

    r1146 r1176  
    2121   USE trctrp_lec 
    2222   USE prtctl_trc      ! Print control for debbuging 
     23   USE trdmld_trc 
     24   USE trdmld_trc_oce 
    2325 
    2426   IMPLICIT NONE 
     
    5254      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    5355      !! 
    54       INTEGER  ::   ji, jj, jk 
     56      INTEGER  ::   ji, jj, jk, jl 
    5557      REAL(wp) ::   zgeolpoc, zfact 
    5658      INTEGER , DIMENSION(jpi,jpj) ::   ikbot 
    5759      REAL(wp), DIMENSION(jpi,jpj) ::   zwork 
    58  
     60      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrbio 
    5961      CHARACTER (len=25) :: charout 
    6062      !!--------------------------------------------------------------------- 
     
    6668      ENDIF 
    6769 
    68 ! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC 
    69 ! POC IN THE WATER COLUMN 
    70 ! (PARTS OF NEWLY FORMED MATTER REMAINING IN THE DIFFERENT 
    71 ! LAYERS IS DETERMINED BY DMIN3 DEFINED IN common.passivetrc.*.h 
    72 ! ---------------------------------------------------------------------- 
     70      ! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC 
     71      ! POC IN THE WATER COLUMN 
     72      ! (PARTS OF NEWLY FORMED MATTER REMAINING IN THE DIFFERENT 
     73      ! LAYERS IS DETERMINED BY DMIN3 DEFINED IN sms_lobster.F90 
     74      ! ---------------------------------------------------------------------- 
     75 
     76      IF( l_trdtrc )THEN 
     77         ALLOCATE( ztrbio(jpi,jpj,jpk) ) 
     78!CDIR COLLAPSE 
     79         ztrbio(:,:,:) = tra(:,:,:,jpno3) 
     80      ENDIF 
    7381 
    7482      DO jk = 1, jpkm1 
     
    166174      ENDIF 
    167175      ! 
     176      IF( l_trdtrc ) THEN 
     177!CDIRR COLLAPSE 
     178         ztrbio(:,:,:) = tra(:,:,:,jpno3) - ztrbio(:,:,:) 
     179         jl = 17 
     180         CALL trd_mod_trc( ztrbio, jl, kt )   ! handle the trend 
     181      ENDIF 
    168182 
    169183      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcopt.F90

    r1146 r1176  
    4848      INTEGER, INTENT( in ) ::   kt   ! index of the time stepping 
    4949      INTEGER  ::   ji, jj, jk 
    50       INTEGER , DIMENSION(jpi,jpj)     ::   itabe           ! euphotic layer last k index 
    51       INTEGER , DIMENSION(jpi,jpj,jpk) ::   imaske          ! euphotic layer mask 
    5250      REAL(wp) ::   zpig                                    ! total pigment 
    5351      REAL(wp) ::   zkr                                     ! total absorption coefficient in red 
     
    103101      END DO 
    104102 
    105       ! determination of euphotic layer depth (xze) 
    106       ! ------------------------------------- 
     103      ! 3. Determination of euphotic layer depth 
     104      ! ---------------------------------------- 
    107105 
    108       DO jk = 1, jpk                   ! imaske equal 1 in the euphotic layer, and 0 without 
     106      ! Euphotic layer bottom level 
     107      neln(:,:) = 1                                           ! initialisation of EL level 
     108      DO jk = 1, jpk 
    109109         DO jj = 1, jpj 
    110             DO ji = 1,jpi 
    111                IF( xpar(ji,jj,jk) >= zpar100(ji,jj) ) THEN 
    112                   imaske(ji,jj,jk) = 1 
    113                ELSE 
    114                   imaske(ji,jj,jk) = 0 
    115                ENDIF 
    116             END DO 
     110           DO ji = 1, jpi 
     111              IF( xpar(ji,jj,jk) >= zpar100(ji,jj) )   neln(ji,jj) = jk+1 ! 1rst T-level strictly below EL bottom 
     112              !                                                  ! nb. this is to ensure compatibility with 
     113              !                                                  ! nmld_trc definition in trd_mld_trc_zint 
     114           END DO 
    117115         END DO 
    118       END DO 
    119       !                                ! sum of imaske Cover the vertical with a minimim value of 1  
    120       itabe(:,:) = 1                   !   surface value setto 1 <=> set a ninimum value to 1 
    121       DO jk = 2, jpk 
    122          DO jj = 1, jpj 
    123             DO ji = 1,jpi 
    124                itabe(ji,jj) = itabe(ji,jj) + imaske(ji,jj,jk) 
    125             END DO 
     116      ENDDO 
     117 
     118      ! Euphotic layer depth 
     119      DO jj = 1, jpj 
     120         DO ji = 1, jpi 
     121            xze(ji,jj) = fsdepw( ji, jj, neln(ji,jj) )            ! exact EL depth 
    126122         END DO 
    127       END DO 
    128       DO jj = 1, jpj                  ! converte the number of level into depth 
    129          DO ji = 1,jpi 
    130             xze(ji,jj) = fsdepw(ji,jj,itabe(ji,jj)+1) 
    131          END DO 
    132       END DO 
    133       ! 
     123      ENDDO  
     124 
    134125 
    135126      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90

    r1146 r1176  
    1818   USE sms_lobster 
    1919   USE lbclnk 
     20   USE trdmld_trc 
     21   USE trdmld_trc_oce 
    2022 
    2123   USE prtctl_trc      ! Print control for debbuging 
     
    5658      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    5759      !! 
    58       INTEGER  ::   ji, jj, jk 
     60      INTEGER  ::   ji, jj, jk, jl 
    5961      REAL(wp) ::   ztra 
    6062      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwork 
    61  
     63      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrbio 
    6264      CHARACTER (len=25) :: charout 
    6365      !!--------------------------------------------------------------------- 
     
    7678      zwork(:,:,1  ) = 0.e0      ! surface value set to zero 
    7779      zwork(:,:,jpk) = 0.e0      ! bottom value  set to zero 
     80 
     81      IF( l_trdtrc )THEN 
     82         ALLOCATE( ztrbio(jpi,jpj,jpk) ) 
     83!CDIR COLLAPSE 
     84         ztrbio(:,:,:) = tra(:,:,:,jpdet) 
     85      ENDIF 
    7886 
    7987      ! tracer flux at w-point: we use -vsed (downward flux)  with simplification : no e1*e2 
     
    108116      ! 
    109117 
     118      IF( l_trdtrc ) THEN 
     119!CDIRR COLLAPSE 
     120         ztrbio(:,:,:) = tra(:,:,:,jpdet) - ztrbio(:,:,:) 
     121         jl = 8 
     122         CALL trd_mod_trc( ztrbio, jl, kt )   ! handle the trend 
     123      ENDIF 
     124 
    110125      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    111126         WRITE(charout, FMT="('sed')") 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90

    r1152 r1176  
    1313   !!   trcsms_lobster        :  Time loop of passive tracers sms 
    1414   !!---------------------------------------------------------------------- 
     15   USE oce_trc         ! 
     16   USE trc 
    1517   USE trcbio 
    1618   USE trcopt 
    1719   USE trcsed 
    1820   USE trcexp 
     21   USE trdmld_trc_oce 
     22   USE trdmld_trc 
    1923 
    2024   IMPLICIT NONE 
     
    4145      !! ------------------------------------------------------------------------------------- 
    4246      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     47      INTEGER :: jn 
     48      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrlob   ! used for lobster sms trends 
    4349      !! 
    4450 
     
    5056 
    5157      CALL trc_exp( kt )      ! export 
     58 
     59      IF( l_trdtrc ) THEN 
     60          DO jn = 1, jptra 
     61            ztrlob(:,:,:) = tra(:,:,:,jn) 
     62            CALL trd_mod_trc( ztrlob, jn, jptrc_trd_sms, kt )   ! save trends 
     63          END DO 
     64      END IF 
     65 
     66      IF( lk_trdmld_trc )  CALL trd_mld_bio( kt )   ! trends: Mixed-layer 
    5267 
    5368   END SUBROUTINE trc_sms_lobster 
Note: See TracChangeset for help on using the changeset viewer.