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/TOP_SRC/TRP – 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

Location:
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90

    r4610 r5601  
    1616   USE oce_trc         ! ocean dynamics and active tracers 
    1717   USE trc             ! ocean passive tracers variables 
     18   USe domvvl 
    1819   USE trcnam_trp      ! passive tracers transport namelist variables 
    1920   USE traadv_cen2     ! 2nd order centered scheme (tra_adv_cen2   routine) 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl_crs.F90

    r5105 r5601  
    2525   USE trabbl_crs              !  
    2626   USE prtctl_trc          ! Print control for debbuging 
    27    USE trdmod_oce 
     27   USE trd_oce 
    2828   USE trdtra 
    2929 
     
    9595        DO jn = 1, jptra 
    9696           ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 
    97            CALL trd_tra( kt, 'TRC', jn, jptra_trd_ldf, ztrtrd(:,:,:,jn) ) 
     97           CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 
    9898        END DO 
    9999        CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) ! temporary save of trends 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf_crs.F90

    r5105 r5601  
    2525   USE traldf_iso_grif ! lateral mixing          (tra_ldf_iso_grif routine) 
    2626   USE traldf_lap_crs      ! lateral mixing            (tra_ldf_lap routine) 
    27    USE trdmod_oce 
     27   USE trd_oce 
    2828   USE trdtra 
    2929   USE prtctl_trc      ! Print control 
     
    8383                          CALL tra_ldf_iso_crs     ( kt, nittrc000, 'TRC', gtru ,gtrv , trb, tra, jptra, rn_ahtb_0 ) 
    8484                       ENDIF 
    85       CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level bilaplacian 
     85      CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, gtrui, gtrvi, trb, tra, jptra            )  ! iso-level bilaplacian 
    8686      CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt, nittrc000, 'TRC',             trb, tra, jptra            )  ! s-coord. horizontal bilaplacian 
    8787         ! 
     
    9797         WRITE(charout, FMT="('ldf1 ')") ;  CALL prt_ctl_trc_info(charout) 
    9898                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    99          CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra            ) 
     99         CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, gtrui, gtrvi, trb, tra, jptra            ) 
    100100         WRITE(charout, FMT="('ldf2 ')") ;  CALL prt_ctl_trc_info(charout) 
    101101                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     
    108108        DO jn = 1, jptra 
    109109           ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 
    110            CALL trd_tra( kt, 'TRC', jn, jptra_trd_ldf, ztrtrd(:,:,:,jn) ) 
     110           CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 
    111111        END DO 
    112112        CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90

    r4990 r5601  
    9595         IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn)  ! save trends 
    9696         !                                             ! add the trend to the general tracer trend 
    97          DO jj = 2, jpj 
    98             DO ji = fs_2, fs_jpim1   ! vector opt. 
    99                zse3t = 1. / fse3t(ji,jj,1) 
    100                tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) *  zsrau * trn(ji,jj,1,jn) * zse3t 
     97         IF( lk_vvl ) THEN  ! online coupling with vvl 
     98 
     99             
     100            DO jj = 2, jpj 
     101               DO ji = fs_2, fs_jpim1   ! vector opt. 
     102                  zse3t = 1. / fse3t(ji,jj,1) 
     103                  tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) *  zsrau * trn(ji,jj,1,jn) * zse3t 
     104               END DO 
    101105            END DO 
    102          END DO 
    103           
     106         ELSE 
     107            DO jj = 2, jpj 
     108               DO ji = fs_2, fs_jpim1   ! vector opt. 
     109                  zse3t = 1. / fse3t(ji,jj,1) 
     110                  tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) *  zsrau * trn(ji,jj,1,jn) * zse3t 
     111               END DO 
     112            END DO 
     113         ENDIF 
     114 
    104115         IF( l_trdtrc ) THEN 
    105116            ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc_crs.F90

    r5105 r5601  
    1919   USE trc             ! ocean  passive tracers variables 
    2020   USE prtctl_trc      ! Print control for debbuging 
    21    USE trdmod_oce 
     21   USE trd_oce 
    2222   USE trdtra 
    2323!cbr   USE crs 
     
    101101         IF( l_trdtrc ) THEN 
    102102            ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 
    103             CALL trd_tra( kt, 'TRC', jn, jptra_trd_nsr, ztrtrd ) 
     103            CALL trd_tra( kt, 'TRC', jn, jptra_nsr, ztrtrd ) 
    104104         END IF 
    105105         !                                                       ! =========== 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90

    r5105 r5601  
    3535   USE zpshde_crs      ! partial step: hor. derivative       (zps_hde routine) 
    3636   USE dom_oce , ONLY : ln_crs 
    37    USe crs, ONLY : jpi_crs,jpj_crs,wn_crs !cbr 
     37   USE crs     , ONLY : jpi_crs,jpj_crs,wn_crs,ln_crs_top !cbr 
     38   USE ldfslp_crs 
    3839 
    3940#if defined key_agrif 
     
    7576      IF( .NOT. lk_c1d ) THEN 
    7677         ! 
    77 !         CALL test(kstp,1) 
    78 !         IF( ln_crs ) THEN ;    CALL trc_sbc_crs( kstp ) 
    79 !         ELSE              ;    CALL trc_sbc( kstp ) 
    80 !         ENDIF 
    81 !         CALL test(kstp,2) 
    82          IF( ln_crs ) THEN ;    CALL trc_bbl_crs( kstp ) 
     78         IF( ln_crs_top ) THEN ;    CALL trc_sbc_crs( kstp ) 
     79         ELSE              ;    CALL trc_sbc( kstp ) 
     80         ENDIF 
     81         IF( ln_crs_top ) THEN ;    CALL trc_bbl_crs( kstp ) 
    8382         ELSE              ;    CALL trc_bbl( kstp ) 
    8483         ENDIF 
    8584         IF( ln_trcdmp )        CALL trc_dmp( kstp )            ! internal damping trends 
    86 !         CALL test(kstp,3) 
    8785 
    88          IF( ln_crs ) THEN ;    CALL trc_adv_crs( kstp ) 
     86         IF( ln_crs_top ) THEN ;    CALL trc_adv_crs( kstp ) 
    8987         ELSE              ;    CALL trc_adv( kstp ) 
    9088         ENDIF 
    91 !         CALL test(kstp,4) 
    9289 
    9390         IF( ln_trcdmp_clo )    CALL trc_dmp_clo( kstp )        ! internal damping trends on closed seas only 
    94          IF( ln_crs ) THEN ;    CALL trc_ldf_crs( kstp ) 
     91         IF( ln_crs_top ) THEN ;    CALL trc_ldf_crs( kstp ) 
    9592         ELSE              ;    CALL trc_ldf( kstp ) 
    9693         ENDIF 
    97 !         CALL test(kstp,5) 
    9894         IF( .NOT. lk_offline .AND. lk_zdfkpp )    & 
    9995            &                   CALL trc_kpp( kstp )            ! KPP non-local tracer fluxes 
     
    10197         IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc           ! tracers sponge 
    10298#endif 
    103          IF( ln_crs ) THEN ;    CALL trc_zdf_crs( kstp ) 
     99         IF( ln_crs_top ) THEN ;    CALL trc_zdf_crs( kstp ) 
    104100         ELSE              ;    CALL trc_zdf( kstp ) 
    105101         ENDIF 
    106 !         CALL test(kstp,6) 
    107102                                CALL trc_nxt( kstp )            ! tracer fields at next time step      
    108 !         CALL test(kstp,7) 
    109103         IF( ln_trcrad )        CALL trc_rad( kstp )            ! Correct artificial negative concentrations 
    110104 
     
    112106      IF( .NOT. Agrif_Root())   CALL Agrif_Update_Trc( kstp )   ! Update tracer at AGRIF zoom boundaries : children only 
    113107#endif 
    114          IF( ln_zps    )        CALL zps_hde( kstp, jptra, trn, gtru, gtrv ) ! Partial steps: now horizontal gradient of passive 
     108          ! Partial steps: now horizontal gradient of passive 
    115109         IF( ln_zps    )THEN 
    116          IF( ln_crs ) THEN ;    CALL zps_hde_crs( kstp, jptra, trn, gtru, gtrv ) 
    117          ELSE              ;    CALL zps_hde( kstp, jptra, trn, gtru, gtrv ) 
     110         IF( ln_crs_top ) THEN ;    CALL zps_hde_crs( kstp, jptra, trn, gtru, gtrv ) 
     111         ELSE              ;    CALL zps_hde( kstp, jptra, trn, pgtu=gtru, pgtv=gtrv, sgtu=gtrui, sgtv=gtrvi ) 
    118112         ENDIF 
    119113         ENDIF 
     
    136130   INTEGER,INTENT(IN) :: kt,i 
    137131   REAL(wp)::zmin,zmax 
    138    INTEGER :: ji,jj,jk 
     132   INTEGER :: ii,jj,kk 
    139133   zmin=MINVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_min(zmin) 
    140134   zmax=MAXVAL( trb(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax) 
     
    146140   zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,:,1),mask=(tmask(2:jpi-1,2:jpj-1,:)==1)) ; CALL mpp_max(zmax) 
    147141   IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax    
    148    zmin=MINVAL( trn(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_min(zmin) 
    149    zmax=MAXVAL( trn(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_max(zmax) 
    150    IF(lwp)WRITE(numout,*)"trctrp n ",kt,i,zmin,zmax    
    151    zmin=MINVAL( tra(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_min(zmin) 
    152    zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,1:jpk-1,1),mask=(tmask(2:jpi-1,2:jpj-1,1:jpk-1)==1)) ; CALL mpp_max(zmax) 
    153    IF(lwp)WRITE(numout,*)"trctrp a ",kt,i,zmin,zmax    
     142   zmin=MINVAL( tra(2:jpi-1,2:jpj-1,30,1),mask=(tmask(2:jpi-1,2:jpj-1,30)==1)) ; CALL mpp_min(zmin) 
     143   zmax=MAXVAL( tra(2:jpi-1,2:jpj-1,30,1),mask=(tmask(2:jpi-1,2:jpj-1,30)==1)) ; CALL mpp_max(zmax) 
    154144 
    155    IF(narea==267)WRITE(narea+5000,*)"tra(17,5,74,1) = ",kt,i,tra(17,5,74,1) 
    156  
    157    DO ji=1,jpi 
    158    DO jj=1,jpj 
    159    DO jk=1,jpk 
    160       IF( tra(ji,jj,jk,1) .NE.  tra(ji,jj,jk,1) )WRITE(narea+200,*)"BUG7 ",ji,jj,jk, tra(ji,jj,jk,1); CALL FLUSH(narea+200) 
    161    ENDDO 
    162    ENDDO 
    163    ENDDO 
    164     
    165145   END SUBROUTINE test 
    166146#else 
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf_crs.F90

    r5105 r5601  
    1919   USE trazdf_exp      ! vertical diffusion: explicit (tra_zdf_exp     routine) 
    2020   USE trazdf_imp_crs      ! vertical diffusion: implicit (tra_zdf_imp     routine) 
    21    USE trdmod_oce 
     21   USE trd_oce 
    2222   USE trdtra 
    2323   USE prtctl_trc      ! Print control 
     24   USE timing 
    2425 
    2526   IMPLICIT NONE 
     
    7273      ! 
    7374      IF( kt == nittrc000 )   CALL zdf_ctl          ! initialisation & control of options 
    74  
    75 #if ! defined key_pisces 
    76       IF( neuler == 0 .AND. kt == nittrc000 ) THEN     ! at nittrc000 
    77          r2dt(:) =  rdttrc(:)           ! = rdttrc (restarting with Euler time stepping) 
    78       ELSEIF( kt <= nittrc000 + 1 ) THEN          ! at nittrc000 or nittrc000+1 
    79          r2dt(:) = 2. * rdttrc(:)       ! = 2 rdttrc (leapfrog) 
     75!cbr bug 
     76!#if ! defined key_pisces 
     77!      IF( neuler == 0 .AND. kt == nittrc000 ) THEN     ! at nittrc000 
     78!         r2dt(:) =  rdttrc(:)           ! = rdttrc (restarting with Euler time stepping) 
     79!      ELSEIF( kt <= nittrc000 + 1 ) THEN          ! at nittrc000 or nittrc000+1 
     80!         r2dt(:) = 2. * rdttrc(:)       ! = 2 rdttrc (leapfrog) 
     81!      ENDIF 
     82!#else 
     83!      r2dt(:) =  rdttrc(:)              ! = rdttrc (for PISCES use Euler time stepping) 
     84!#endif 
     85      IF( ln_top_euler) THEN 
     86         r2dt(:) =  rdttrc(:)              ! = rdttrc (use Euler time stepping) 
     87      ELSE 
     88         IF( neuler == 0 .AND. kt == nittrc000 ) THEN     ! at nittrc000 
     89            r2dt(:) =  rdttrc(:)           ! = rdttrc (restarting with Euler time stepping) 
     90         ELSEIF( kt <= nittrc000 + 1 ) THEN          ! at nittrc000 or nittrc000+1 
     91            r2dt(:) = 2. * rdttrc(:)       ! = 2 rdttrc (leapfrog) 
     92         ENDIF 
    8093      ENDIF 
    81 #else 
    82       r2dt(:) =  rdttrc(:)              ! = rdttrc (for PISCES use Euler time stepping) 
    83 #endif 
    8494 
    8595      IF( l_trdtrc )  THEN 
     
    98108      CASE ( 0 ) ;  CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )    !   explicit scheme  
    99109      CASE ( 1 ) ;  CALL tra_zdf_imp_crs( kt, nittrc000, 'TRC', r2dt,                trb, tra, jptra )    !   implicit scheme           
    100  
    101110      END SELECT 
    102111 
     
    106115               ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn) 
    107116            END DO 
    108             CALL trd_tra( kt, 'TRC', jn, jptra_trd_zdf, ztrtrd(:,:,:,jn) ) 
     117            CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 
    109118         END DO 
    110119         CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrtrd ) 
Note: See TracChangeset for help on using the changeset viewer.