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 6688 for branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90 – NEMO

Ignore:
Timestamp:
2016-06-13T14:50:45+02:00 (8 years ago)
Author:
lovato
Message:

#1677 - v3.6_STABLE: Update code for passive tracers data input and restoring

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90

    r6606 r6688  
    8585      CHARACTER (len=22) :: charout 
    8686      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrtrd 
    87       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrcdta   ! 3D  workspace 
     87      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrcdta   ! 3D  workspace 
    8888      !!---------------------------------------------------------------------- 
    8989      ! 
     
    9898      IF( nb_trcdta > 0 ) THEN  ! Initialisation of tracer from a file that may also be used for damping 
    9999         ! 
    100          CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
    101          CALL trc_dta( kt, ztrcdta )   ! read tracer data at nit000 
     100         CALL wrk_alloc( jpi, jpj, jpk, ztrcdta )    ! Memory allocation 
    102101         !                                                          ! =========== 
    103102         DO jn = 1, jptra                                           ! tracer loop 
     
    106105            ! 
    107106            IF( ln_trc_ini(jn) ) THEN      ! update passive tracers arrays with input data read from file 
     107                
    108108               jl = n_trc_index(jn)  
     109               CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta )   ! read tracer data at nit000 
     110 
    109111               SELECT CASE ( nn_zdmp_tr ) 
    110112               ! 
     
    113115                     DO jj = 2, jpjm1 
    114116                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    115                            ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
     117                           ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
    116118                           tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    117119                        END DO 
     
    124126                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    125127                           IF( avt(ji,jj,jk) <= 5.e-4_wp )  THEN  
    126                               ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
     128                              ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
    127129                              tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    128130                           ENDIF 
     
    136138                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    137139                           IF( fsdept(ji,jj,jk) >= hmlp (ji,jj) ) THEN 
    138                               ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
     140                              ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
    139141                              tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    140142                           END IF 
     
    154156         END DO                                                     ! tracer loop 
    155157         !                                                          ! =========== 
    156          CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) 
     158         CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 
    157159      ENDIF 
    158160      ! 
     
    184186      INTEGER :: ji , jj, jk, jn, jl, jc                     ! dummy loop indicesa 
    185187      INTEGER :: isrow                                      ! local index 
    186       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrcdta   ! 3D  workspace 
     188      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrcdta       ! 3D  workspace 
    187189 
    188190      !!---------------------------------------------------------------------- 
     
    228230            nctsi1(8)   = 297  ; nctsj1(8)   = 270 - isrow 
    229231            nctsi2(8)   = 308  ; nctsj2(8)   = 293 - isrow 
    230                                  
     232            !                                         
    231233            !                                           ! ======================= 
    232234            CASE ( 2 )                                  !  ORCA_R2 configuration 
     
    296298         IF(lwp)  WRITE(numout,*) 
    297299         ! 
    298          CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
    299          CALL trc_dta( kt, ztrcdta )   ! read tracer data at nit000 
     300         CALL wrk_alloc( jpi, jpj, jpk, ztrcdta )   ! Memory allocation 
    300301         ! 
    301302         DO jn = 1, jptra 
    302303            IF( ln_trc_ini(jn) ) THEN      ! update passive tracers arrays with input data read from file 
    303304                jl = n_trc_index(jn) 
    304                 IF(lwp)  WRITE(numout,*) 
     305                CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta )   ! read tracer data at nit000 
    305306                DO jc = 1, npncts 
    306307                   DO jk = 1, jpkm1 
    307308                      DO jj = nctsj1(jc), nctsj2(jc) 
    308309                         DO ji = nctsi1(jc), nctsi2(jc) 
    309                             trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) 
     310                            trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk) 
    310311                            trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 
    311312                         ENDDO 
     
    315316             ENDIF 
    316317          ENDDO 
    317           CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
    318           ! 
     318          CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 
    319319      ENDIF 
    320320      ! 
     
    336336      IF( nn_timing == 1 )  CALL timing_start('trc_dmp_init') 
    337337      ! 
     338      !Allocate arrays 
     339      IF( trc_dmp_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'trc_dmp_init: unable to allocate arrays' ) 
    338340 
    339341      IF( lzoom )   nn_zdmp_tr = 0           ! restoring to climatology at closed north or south boundaries 
Note: See TracChangeset for help on using the changeset viewer.