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 1257 for trunk/NEMO/TOP_SRC/TRP/trcrad.F90 – NEMO

Ignore:
Timestamp:
2009-01-13T11:34:10+01:00 (15 years ago)
Author:
cetlod
Message:

update trcrad to take into account the new C14 bomb tracer model, see ticket:298

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/TRP/trcrad.F90

    r1193 r1257  
    1515   USE oce_trc             ! ocean dynamics and tracers variables 
    1616   USE trp_trc             ! ocean passive tracers variables 
    17    USE trctrp_lec , ONLY : ln_trcadv_tvd, ln_trcadv_cen2 
    1817   USE trdmld_trc 
    1918   USE trdmld_trc_oce 
     
    2423   PRIVATE 
    2524 
    26    PUBLIC trc_rad        ! routine called by trcstp.F90 
     25   PUBLIC trc_rad         ! routine called by trcstp.F90 
    2726 
    2827   !! * Substitutions 
     
    6160      ENDIF 
    6261 
    63       IF( lk_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0, jp_cfc1               ) ! CFC model 
    64       IF( lk_lobster )   CALL trc_rad_sms( kt, trb, trn, jp_lob0, jp_lob1, cpreserv='Y' )  ! LOBSTER model 
    65       IF( lk_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' )  ! PISCES model 
    66       IF( lk_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0, jp_myt1               ) ! MY_TRC model 
     62      IF( lk_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0 , jp_cfc1               )  ! CFC model 
     63      IF( lk_c14b    )   CALL trc_rad_sms( kt, trb, trn, jp_c14b0, jp_c14b1              )  ! bomb C14 
     64      IF( lk_lobster )   CALL trc_rad_sms( kt, trb, trn, jp_lob0 , jp_lob1, cpreserv='Y' )  ! LOBSTER model 
     65      IF( lk_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0 , jp_pcs1, cpreserv='Y' )  ! PISCES model 
     66      IF( lk_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0 , jp_myt1               )  ! MY_TRC model 
    6767 
    6868 
     
    110110      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrdb  ! workspace arrays 
    111111      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrdn  ! workspace arrays 
     112      REAL(wp) :: zs2rdt 
    112113      LOGICAL ::   lldebug = .FALSE. 
    113114 
     
    137138               DO jj = 1, jpj 
    138139                  DO ji = 1, jpi 
    139                      zvolk  = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)   & 
     140                     zvolk  = cvol(ji,jj,jk) 
    140141# if defined key_off_degrad 
    141                         &   * facvol(ji,jj,jk)   & 
     142                     zvolk  = zvolk * facvol(ji,jj,jk) 
    142143# endif 
    143                         &   * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    144  
    145                      ztrcorb = ztrcorb + MIN( 0., ptrb(ji,jj,jk,jn) )  * zvolk 
    146                      ztrcorn = ztrcorn + MIN( 0., ptrn(ji,jj,jk,jn) )  * zvolk 
    147  
    148                      ptrb(ji,jj,jk,jn) = MAX( 0. , ptrb(ji,jj,jk,jn) ) 
    149                      ptrn(ji,jj,jk,jn) = MAX( 0. , ptrn(ji,jj,jk,jn) ) 
     144                     ztrcorb = ztrcorb + MIN( 0., ptrb(ji,jj,jk,jn) ) * zvolk 
     145                     ztrcorn = ztrcorn + MIN( 0., ptrn(ji,jj,jk,jn) ) * zvolk 
     146 
     147                     ptrb(ji,jj,jk,jn) = MAX( 0., ptrb(ji,jj,jk,jn) ) 
     148                     ptrn(ji,jj,jk,jn) = MAX( 0., ptrn(ji,jj,jk,jn) ) 
    150149 
    151150                     ztrmasb = ztrmasb + ptrb(ji,jj,jk,jn) * zvolk 
     
    178177            IF( l_trdtrc ) THEN 
    179178               ! 
    180                ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) / (2.*rdt) 
    181                ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) / (2.*rdt) 
     179               zs2rdt = 1. / ( 2. * rdt ) 
     180               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 
     181               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt  
    182182               IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdb, jn, jptrc_trd_radb, kt )       ! Asselin-like trend handling 
    183183               IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdn, jn, jptrc_trd_radn, kt )       ! standard     trend handling 
     
    191191 
    192192         DO jn = jp_sms0, jp_sms1   
     193 
     194           IF( l_trdtrc ) THEN 
     195              ztrtrdb(:,:,:) = ptrb(:,:,:,jn)                        ! save input trb for trend computation 
     196              ztrtrdn(:,:,:) = ptrn(:,:,:,jn)                        ! save input trn for trend computation 
     197           ENDIF 
     198 
    193199            DO jk = 1, jpkm1 
    194200               DO jj = 1, jpj 
     
    199205               END DO 
    200206            END DO 
    201          END DO 
     207          
     208            IF( l_trdtrc ) THEN 
     209               ! 
     210               zs2rdt = 1. / ( 2. * rdt * FLOAT(ndttrc) ) 
     211               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 
     212               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt  
     213               IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdb, jn, jptrc_trd_radb, kt )       ! Asselin-like trend handling 
     214               IF (luttrd(jn)) CALL trd_mod_trc( ztrtrdn, jn, jptrc_trd_radn, kt )       ! standard     trend handling 
     215              ! 
     216            ENDIF 
     217            ! 
     218         ENDDO 
    202219 
    203220      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.