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 7567 for branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90 – NEMO

Ignore:
Timestamp:
2017-01-16T20:11:00+01:00 (7 years ago)
Author:
hadjt
Message:

CO6 version adapted for shelf seas climate projections, including added diagnostics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90

    r7566 r7567  
    1818   USE trdtra 
    1919   USE prtctl_trc          ! Print control for debbuging 
     20#if defined key_tracer_budget 
     21   USE iom 
     22#endif 
    2023 
    2124   IMPLICIT NONE 
     
    110113      REAL(wp) :: zcoef, ztrcorn, ztrmasn   !    "         " 
    111114      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrtrdb, ztrtrdn   ! workspace arrays 
     115#if defined key_tracer_budget 
     116      REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  ztrtrdb_m1 ! slwa  
     117#endif 
    112118      REAL(wp) :: zs2rdt 
    113119      LOGICAL ::   lldebug = .FALSE. 
     
    116122  
    117123      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn ) 
     124#if defined key_tracer_budget 
     125      IF( kt == nittrc000 .AND. l_trdtrc) THEN 
     126         ALLOCATE( ztrtrdb_m1(jpi,jpj,jpk,jptra) )  ! slwa 
     127         IF( ln_rsttr .AND.    &                     ! Restart: read in restart  file 
     128            iom_varid( numrtr, 'rdb_trend_'//TRIM(ctrcnm(1)), ldstop = .FALSE. ) > 0 ) THEN 
     129            IF(lwp) WRITE(numout,*) '          nittrc000-nn_dttrc RDB tracer trend read in the restart file' 
     130            DO jn = 1, jptra 
     131               CALL iom_get( numrtr, jpdom_autoglo, 'rdb_trend_'//TRIM(ctrcnm(jn)), ztrtrdb_m1(:,:,:,jn) )   ! before tracer trend for rdb 
     132            END DO 
     133         ELSE 
     134           ztrtrdb_m1=0.0 
     135         ENDIF 
     136      ENDIF 
     137#endif 
    118138       
    119139      IF( PRESENT( cpreserv )  ) THEN   !  total tracer concentration is preserved  
     
    156176               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 
    157177               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt  
     178#if defined key_tracer_budget 
     179! slwa budget code 
     180               DO jk = 1, jpkm1 
     181                  ztrtrdb(:,:,jk) = ztrtrdb(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 
     182                  ztrtrdn(:,:,jk) = ztrtrdn(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 
     183               END DO 
     184               CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb_m1(:,:,:,jn) ) 
     185               ztrtrdb_m1(:,:,:,jn)=ztrtrdb(:,:,:) 
     186#else 
    158187               CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb )       ! Asselin-like trend handling 
     188#endif 
    159189               CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrdn )       ! standard     trend handling 
    160190              ! 
     
    187217               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 
    188218               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt  
     219#if defined key_tracer_budget 
     220! slwa budget code 
     221               DO jk = 1, jpkm1 
     222                  ztrtrdb(:,:,jk) = ztrtrdb(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 
     223                  ztrtrdn(:,:,jk) = ztrtrdn(:,:,jk) * e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) 
     224               END DO 
     225               CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb_m1(:,:,:,jn) ) 
     226               ztrtrdb_m1(:,:,:,jn)=ztrtrdb(:,:,:) 
     227#else 
    189228               CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrdb )       ! Asselin-like trend handling 
     229#endif 
    190230               CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrdn )       ! standard     trend handling 
    191231              ! 
     
    195235 
    196236      ENDIF 
     237 
     238#if defined key_tracer_budget 
     239      !                                           Write in the tracer restart file 
     240      !                                          ******************************* 
     241      IF( lrst_trc ) THEN 
     242         IF(lwp) WRITE(numout,*) 
     243         IF(lwp) WRITE(numout,*) 'trc : RDB trend at last time step for tracer budget written in tracer restart file ',   & 
     244            &                    'at it= ', kt,' date= ', ndastp 
     245         IF(lwp) WRITE(numout,*) '~~~~' 
     246         DO jn = 1, jptra 
     247            CALL iom_rstput( kt, nitrst, numrtw, 'rdb_trend_'//TRIM(ctrcnm(jn)), ztrtrdb_m1(:,:,:,jn) ) 
     248         END DO 
     249      ENDIF 
     250#endif 
    197251 
    198252      IF( l_trdtrc )  CALL wrk_dealloc( jpi, jpj, jpk, ztrtrdb, ztrtrdn ) 
Note: See TracChangeset for help on using the changeset viewer.