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 5601 for branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_crs.F90 – NEMO

Ignore:
Timestamp:
2015-07-16T11:04:29+02:00 (9 years ago)
Author:
cbricaud
Message:

commit changes/bugfix/... for crs ; ok with time-splitting/fixed volume

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_crs.F90

    r5105 r5601  
    1919   !!                  the isopycnal or geopotential s-coord. operator  
    2020   !!---------------------------------------------------------------------- 
    21    USE oce             ! ocean dynamics and active tracers 
    22    USE dom_oce         ! ocean space and time domain 
    23    USE trc_oce         ! share passive tracers/Ocean variables 
    24    USE zdf_oce         ! ocean vertical physics 
    25    USE ldftra_oce      ! ocean active tracers: lateral physics 
    26  !  USE ldfslp          ! iso-neutral slopes 
     21!   USE oce             ! ocean dynamics and active tracers 
     22!   USE dom_oce         ! ocean space and time domain 
     23!   USE trc_oce         ! share passive tracers/Ocean variables 
     24!   USE zdf_oce         ! ocean vertical physics 
     25!   USE ldftra_oce      ! ocean active tracers: lateral physics 
     26!   USE ldfslp          ! iso-neutral slopes 
    2727   USE ldfslp_crs          ! iso-neutral slopes 
    2828   USE diaptr          ! poleward transport diagnostics 
     
    3535   USE wrk_nemo        ! Memory Allocation 
    3636   USE timing          ! Timing 
    37    USE crs 
     37!   USE crs 
     38   USE oce_trc 
     39   USE iom, ONLY : iom_put,iom_swap 
    3840 
    3941   IMPLICIT NONE 
     
    9496      !! ** Action :   Update pta arrays with the before rotated diffusion 
    9597      !!---------------------------------------------------------------------- 
    96       USE oce     , ONLY:   zftu => ua       , zftv  => va         ! (ua,va) used as workspace 
    9798      ! 
    9899      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    113114#endif 
    114115      REAL(wp), POINTER, DIMENSION(:,:  ) ::  zdkt, zdk1t, z2d 
    115       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdit, zdjt, ztfw  
     116      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdit, zdjt, ztfw , zftu,  zftv  
    116117      !!---------------------------------------------------------------------- 
    117118      ! 
     
    119120      ! 
    120121      CALL wrk_alloc( jpi, jpj,      zdkt, zdk1t, z2d )  
    121       CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw )  
     122      CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw , zftu, zftv )  
    122123      ! 
    123124 
     
    149150            END DO 
    150151         END DO 
    151     !    WRITE(numout,*) ' test1 ', zdit 
    152 !cc commenté pour le test concluant de TMP16 --> pgu mauvais, correction dans 
    153 !zpshde_crs ( probleme de signe lorsque ze3wu negatif, de mem pour pgv) 
    154152         IF( ln_zps ) THEN      ! partial steps correction at the last ocean level  
    155153            DO jj = 1, jpjm1 
     
    160158            END DO 
    161159         ENDIF 
    162 !cc 
    163      !   WRITE(numout,*) ' test2 ', zdit 
    164160 
    165161         !!---------------------------------------------------------------------- 
     
    183179            DO jj = 1 , jpjm1 
    184180               DO ji = 1, fs_jpim1   ! vector opt. 
    185    !               zabe1 = ( fsahtu(ji,jj,jk) + pahtb0 ) * e2e3u_msk(ji,jj,jk) / e1u_crs(ji,jj) 
    186   zabe1 = ( fsahtu(ji,jj,jk) + pahtb0 ) * e2e3u_msk(ji,jj,jk) / e1u_crs(ji,jj) 
    187  !               zabe2 = ( fsahtv(ji,jj,jk) + pahtb0 ) * e1e3v_msk(ji,jj,jk) / e2v_crs(ji,jj) 
    188 zabe2 = ( fsahtv(ji,jj,jk) + pahtb0 ) * e1e3v_msk(ji,jj,jk) / e2v_crs(ji,jj) 
     181                  zabe1 = ( fsahtu(ji,jj,jk) + pahtb0 ) * e2e3u_msk(ji,jj,jk) / e1u_crs(ji,jj) 
     182                  zabe2 = ( fsahtv(ji,jj,jk) + pahtb0 ) * e1e3v_msk(ji,jj,jk) / e2v_crs(ji,jj) 
    189183 
    190184                  zmsku = 1. / MAX(  tmask_crs(ji+1,jj,jk  ) + tmask_crs(ji,jj,jk+1)   & 
     
    194188                     &             + tmask_crs(ji,jj+1,jk+1) + tmask_crs(ji,jj,jk  ), 1. ) 
    195189                  ! 
    196     !              zcof1 = - fsahtu(ji,jj,jk) * e2e3u_msk(ji,jj,jk) * uslp_crs(ji,jj,jk) * zmsku / MAX( 1._wp , e3u_max_crs(ji,jj,jk)) vue avec Gurvan OK 
    197                 zcof1 = - fsahtu(ji,jj,jk) * e2e3u_msk(ji,jj,jk) * uslp_crs(ji,jj,jk) * zmsku / MAX( 1._wp , e3u_max_crs(ji,jj,jk)) 
    198   !                zcof2 = - fsahtv(ji,jj,jk) * e1e3v_msk(ji,jj,jk) * vslp_crs(ji,jj,jk) * zmskv / MAX( 1._wp , e3v_max_crs(ji,jj,jk))  vue avec Gurvan OK 
    199                 zcof2 = - fsahtv(ji,jj,jk) * e1e3v_msk(ji,jj,jk) * vslp_crs(ji,jj,jk) * zmskv / MAX( 1._wp , e3v_max_crs(ji,jj,jk)) 
    200            !        zcof1 = - fsahtu(ji,jj,jk) * e2u_crs(ji,jj) * uslp(ji,jj,jk) * zmsku 
    201            !        zcof2 = - fsahtv(ji,jj,jk) * e1v_crs(ji,jj) * vslp(ji,jj,jk) * zmskv   
     190                  zcof1 = - fsahtu(ji,jj,jk) * e2e3u_msk(ji,jj,jk) * uslp_crs(ji,jj,jk) * zmsku / MAX( 1._wp , e3u_max_crs(ji,jj,jk)) 
     191                  zcof2 = - fsahtv(ji,jj,jk) * e1e3v_msk(ji,jj,jk) * vslp_crs(ji,jj,jk) * zmskv / MAX( 1._wp , e3v_max_crs(ji,jj,jk)) 
    202192                  ! 
    203193                  zftu(ji,jj,jk ) = ( zabe1 * zdit(ji,jj,jk)   & 
     
    209199               END DO 
    210200            END DO 
     201            CALL iom_swap( "nemo_crs"  ) 
     202            CALL iom_put( "zftu" , zftu ) 
     203            CALL iom_put( "zftv" , zftv ) 
     204            CALL iom_swap( "nemo" ) 
    211205 
    212206            ! II.4 Second derivative (divergence) and add to the general trend 
     
    285279                  zcoef3 = zcoef0 * e1e2w_crs(ji,jj,jk) * zmsku * wslpi_crs(ji,jj,jk) / e1t_crs(ji,jj) 
    286280                  zcoef4 = zcoef0 * e1e2w_crs(ji,jj,jk) * zmskv * wslpj_crs(ji,jj,jk) / e2t_crs(ji,jj) 
    287            !       zcoef3 = zcoef0 * e2t_crs(ji,jj) * zmsku * wslpi (ji,jj,jk) 
    288            !       zcoef4 = zcoef0 * e1t_crs(ji,jj) * zmskv * wslpj (ji,jj,jk) 
    289281                  ztfw(ji,jj,jk) = zcoef3 * (   zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk)      & 
    290282                     &                        + zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk)  )   & 
     
    312304      ! 
    313305      CALL wrk_dealloc( jpi, jpj,      zdkt, zdk1t, z2d )  
    314       CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw )  
     306      CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw , zftu, zftv )  
    315307      ! 
    316308      IF( nn_timing == 1 )  CALL timing_stop('tra_ldf_iso') 
Note: See TracChangeset for help on using the changeset viewer.