Ignore:
Timestamp:
05/23/16 16:14:48 (8 years ago)
Author:
cetlod
Message:

Bugfix on passive tracers restoring in closed seas, before new NEMO revision

Location:
CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/trcdmp.F90

    r2858 r2865  
    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, ztrcdta )    ! Memory allocation 
     100         CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
     101         CALL trc_dta( kt, ztrcdta )   ! read tracer data at nit000 
    101102         !                                                          ! =========== 
    102103         DO jn = 1, jptra                                           ! tracer loop 
     
    105106            ! 
    106107            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) )   ! read tracer data at nit000 
    110                ztrcdta(:,:,:) = sf_trcdta(jl)%fnow(:,:,:) * tmask(:,:,:) * rf_trfac(jl) 
    111  
    112109               SELECT CASE ( nn_zdmp_tr ) 
    113110               ! 
     
    116113                     DO jj = 2, jpjm1 
    117114                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    118                            ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
     115                           ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
    119116                           tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    120117                        END DO 
     
    127124                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    128125                           IF( avt(ji,jj,jk) <= 5.e-4_wp )  THEN  
    129                               ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
     126                              ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
    130127                              tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    131128                           ENDIF 
     
    139136                        DO ji = fs_2, fs_jpim1   ! vector opt. 
    140137                           IF( fsdept(ji,jj,jk) >= hmlp (ji,jj) ) THEN 
    141                               ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 
     138                              ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) - trb(ji,jj,jk,jn) ) 
    142139                              tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    143140                           END IF 
     
    157154         END DO                                                     ! tracer loop 
    158155         !                                                          ! =========== 
    159          CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 
     156         CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) 
    160157      ENDIF 
    161158      ! 
     
    187184      INTEGER :: ji , jj, jk, jn, jl, jc                     ! dummy loop indicesa 
    188185      INTEGER :: isrow                                      ! local index 
     186      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrcdta   ! 3D  workspace 
    189187 
    190188      !!---------------------------------------------------------------------- 
     
    298296         IF(lwp)  WRITE(numout,*) 
    299297         ! 
     298         CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
     299         CALL trc_dta( kt, ztrcdta )   ! read tracer data at nit000 
     300         ! 
    300301         DO jn = 1, jptra 
    301302            IF( ln_trc_ini(jn) ) THEN      ! update passive tracers arrays with input data read from file 
    302303                jl = n_trc_index(jn) 
    303                 CALL trc_dta( kt, sf_trcdta(jl) )   ! read tracer data at nit000 
     304                IF(lwp)  WRITE(numout,*) 
    304305                DO jc = 1, npncts 
    305306                   DO jk = 1, jpkm1 
    306307                      DO jj = nctsj1(jc), nctsj2(jc) 
    307308                         DO ji = nctsi1(jc), nctsi2(jc) 
    308                             trn(ji,jj,jk,jn) = sf_trcdta(jl)%fnow(ji,jj,jk) * tmask(ji,jj,jk) * rf_trfac(jl) 
     309                            trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk,jl) * rf_trfac(jl) 
    309310                            trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 
    310311                         ENDDO 
     
    314315             ENDIF 
    315316          ENDDO 
     317          CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta, ztrcdta )    ! Memory allocation 
    316318          ! 
    317319      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.