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 6701 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90 – NEMO

Ignore:
Timestamp:
2016-06-13T17:29:32+02:00 (8 years ago)
Author:
lovato
Message:

#1677 - trunk: Update code for passive tracers data input and restoring

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90

    r6607 r6701  
    100100            !                                                       ! =========== 
    101101            IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn)    ! save trends  
    102             CALL trc_dta( kt, ztrcdta )   ! read tracer data at nit000 
    103102            ! 
    104103            IF( ln_trc_ini(jn) ) THEN      ! update passive tracers arrays with input data read from file 
    105104               ! 
    106105               jl = n_trc_index(jn)  
     106               CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta )   ! read tracer data at nit000 
    107107               ! 
    108108               SELECT CASE ( nn_zdmp_tr ) 
     
    112112                     DO jj = 2, jpjm1 
    113113                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    114                            tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) * rf_trfac(jl)  - trb(ji,jj,jk,jn) ) 
     114                           tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
    115115                        END DO 
    116116                     END DO 
     
    122122                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    123123                           IF( avt(ji,jj,jk) <= 5.e-4_wp )  THEN  
    124                               tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
     124                              tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
    125125                           ENDIF 
    126126                        END DO 
     
    133133                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    134134                           IF( gdept_n(ji,jj,jk) >= hmlp (ji,jj) ) THEN 
    135                               tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
     135                              tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
    136136                           END IF 
    137137                        END DO 
     
    180180      !!---------------------------------------------------------------------- 
    181181      ! 
    182       IF( nn_timing == 1 )  CALL timing_start('trc_dmp_init') 
     182      IF( nn_timing == 1 )  CALL timing_start('trc_dmp_ini') 
    183183      ! 
    184184      REWIND( numnat_ref )              ! Namelist namtrc_dmp in reference namelist : Passive tracers newtonian damping 
     
    199199         WRITE(numout,*) '      Restoration coeff file    cn_resto_tr = ', cn_resto_tr 
    200200      ENDIF 
     201      !                          ! Allocate arrays 
     202      IF( trc_dmp_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'trc_dmp_ini: unable to allocate arrays' ) 
    201203      ! 
    202204      IF( lzoom .AND. .NOT.lk_c1d )   nn_zdmp_tr = 0           ! restoring to climatology at closed north or south boundaries 
     
    240242      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    241243      ! 
    242       INTEGER :: ji , jj, jk, jn, jl, jc                     ! dummy loop indicesa 
     244      INTEGER :: ji , jj, jk, jn, jl, jc                    ! dummy loop indicesa 
    243245      INTEGER :: isrow                                      ! local index 
    244       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrcdta   ! 3D  workspace 
     246      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrcdta       ! 3D  workspace 
    245247 
    246248      !!---------------------------------------------------------------------- 
     
    286288            nctsi1(8)   = 297  ; nctsj1(8)   = 270 - isrow 
    287289            nctsi2(8)   = 308  ; nctsj2(8)   = 293 - isrow 
    288                                  
     290            !                                         
    289291            !                                           ! ======================= 
    290292            CASE ( 2 )                                  !  ORCA_R2 configuration 
     
    354356         IF(lwp)  WRITE(numout,*) 
    355357         ! 
    356          CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
    357          CALL trc_dta( kt, ztrcdta )   ! read tracer data at nit000 
     358         CALL wrk_alloc( jpi, jpj, jpk, ztrcdta )   ! Memory allocation 
    358359         ! 
    359360         DO jn = 1, jptra 
    360361            IF( ln_trc_ini(jn) ) THEN      ! update passive tracers arrays with input data read from file 
    361362                jl = n_trc_index(jn) 
    362                 IF(lwp)  WRITE(numout,*) 
     363                CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta )   ! read tracer data at nit000 
    363364                DO jc = 1, npncts 
    364365                   DO jk = 1, jpkm1 
    365366                      DO jj = nctsj1(jc), nctsj2(jc) 
    366367                         DO ji = nctsi1(jc), nctsi2(jc) 
    367                             trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) 
     368                            trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk) 
    368369                            trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 
    369370                         ENDDO 
     
    373374             ENDIF 
    374375          ENDDO 
    375           CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
    376           ! 
     376          CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 
    377377      ENDIF 
    378378      ! 
Note: See TracChangeset for help on using the changeset viewer.