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 3951 for branches/2013/dev_r3858_NOC_ZTC – NEMO

Ignore:
Timestamp:
2013-07-01T17:43:44+02:00 (11 years ago)
Author:
acc
Message:

Branch 2013/dev_r3858_NOC_ZTC, #863. Minor fix to dynspg_ts.F90 and introduction of an option to suppress ztilde coordinate in the equatorial band

Location:
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r3896 r3951  
    4848   LOGICAL , PUBLIC                                      :: ln_vvl_layer           = .FALSE.   ! level  vertical coordinate 
    4949   LOGICAL , PUBLIC                                      :: ln_vvl_ztilde_as_zstar = .FALSE.   ! ztilde vertical coordinate 
     50   LOGICAL , PUBLIC                                      :: ln_vvl_zstar_at_eqtor  = .FALSE.   ! ztilde vertical coordinate 
    5051   LOGICAL , PUBLIC                                      :: ln_vvl_kepe            = .FALSE.   ! kinetic/potential energy transfer 
    5152   !                                                                                           ! conservation: not used yet 
     
    5960   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: un_td, vn_td                       ! thickness diffusion transport 
    6061   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hdiv_lf                            ! low frequency part of hz divergence 
    61    REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tilde_e3t_b, tilde_e3t_n           ! baroclinic scale factors 
    62    REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tilde_e3t_a                        ! baroclinic scale factors 
     62   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tilde_e3t_b, tilde_e3t_n           ! baroclinic scale factors 
     63   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tilde_e3t_a                        ! baroclinic scale factors 
    6364   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:)   :: frq_rst_e3t                        ! retoring period for scale factors 
    6465   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:)   :: frq_rst_hdv                        ! retoring period for low freq. divergence 
     
    119120      !! Reference  : Leclair, M., and G. Madec, 2011, Ocean Modelling. 
    120121      !!---------------------------------------------------------------------- 
    121       USE phycst,  ONLY : rpi, rsmall 
     122      USE phycst,  ONLY : rpi, rsmall, rad 
    122123      !! * Local declarations 
    123       INTEGER ::   jk 
     124      INTEGER ::   ji,jj,jk 
     125      INTEGER ::   ii0, ii1, ij0, ij1 
    124126      !!---------------------------------------------------------------------- 
    125127      IF( nn_timing == 1 )  CALL timing_start('dom_vvl_init') 
     
    190192            frq_rst_hdv(:,:) = 1.0_wp / rdt 
    191193         ENDIF 
     194         IF ( ln_vvl_zstar_at_eqtor ) THEN 
     195            DO jj = 1, jpj 
     196               DO ji = 1, jpi 
     197                  IF( ABS(gphit(ji,jj)) >= 6.) THEN 
     198                     ! values outside the equatorial band and transition zone (ztilde) 
     199                     frq_rst_e3t(ji,jj) =  2.0_wp * rpi / ( MAX( rn_rst_e3t  , rsmall ) * 86400.e0_wp ) 
     200                     frq_rst_hdv(ji,jj) =  2.0_wp * rpi / ( MAX( rn_lf_cutoff, rsmall ) * 86400.e0_wp ) 
     201                  ELSEIF( ABS(gphit(ji,jj)) <= 2.5) THEN 
     202                     ! values inside the equatorial band (ztilde as zstar) 
     203                     frq_rst_e3t(ji,jj) =  0.0_wp 
     204                     frq_rst_hdv(ji,jj) =  1.0_wp / rdt 
     205                  ELSE 
     206                     ! values in the transition band (linearly vary from ztilde to ztilde as zstar values) 
     207                     frq_rst_e3t(ji,jj) = 0.0_wp + (frq_rst_e3t(ji,jj)-0.0_wp)*0.5_wp   & 
     208                        &            * (  1.0_wp - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
     209                        &                                          * 180._wp / 3.5_wp ) ) 
     210                     frq_rst_hdv(ji,jj) = (1.0_wp / rdt)                                & 
     211                        &            + (  frq_rst_hdv(ji,jj)-(1.e0_wp / rdt) )*0.5_wp   & 
     212                        &            * (  1._wp  - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
     213                        &                                          * 180._wp / 3.5_wp ) ) 
     214                  ENDIF 
     215               END DO 
     216            END DO 
     217            IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 
     218               ii0 = 103   ;   ii1 = 111        ! Suppress ztilde in the Foxe Basin for ORCA2 
     219               ij0 = 128   ;   ij1 = 135   ;    
     220               frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  0.0_wp 
     221               frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  1.e0_wp / rdt 
     222            ENDIF 
     223         ENDIF 
    192224      ENDIF 
    193225 
     
    420452            z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( zht(:,:) ) ) 
    421453            IF( lk_mpp ) CALL mpp_max( z_tmax )                             ! max over the global domain 
    422             IF( lwp    ) WRITE(numout, *) 'MAXVAL(abs(SUM(tilde_e3t_a))) =', z_tmax 
     454            IF( lwp    ) WRITE(numout, *) kt,' MAXVAL(abs(SUM(tilde_e3t_a))) =', z_tmax 
    423455         END IF 
    424456         ! 
     
    814846 
    815847      NAMELIST/nam_vvl/ ln_vvl_zstar, ln_vvl_ztilde, ln_vvl_layer, ln_vvl_ztilde_as_zstar, & 
    816                       &      rn_ahe3,    rn_rst_e3t, rn_lf_cutoff, rn_zdef_max            , & 
    817                       &   ln_vvl_dbg               ! not yet implemented: ln_vvl_kepe 
     848                      & ln_vvl_zstar_at_eqtor      , rn_ahe3     , rn_rst_e3t            , & 
     849                      & rn_lf_cutoff               , rn_zdef_max , ln_vvl_dbg                ! not yet implemented: ln_vvl_kepe 
    818850      !!----------------------------------------------------------------------  
    819851 
     
    830862         WRITE(numout,*) '              layer                      ln_vvl_layer   = ', ln_vvl_layer 
    831863         WRITE(numout,*) '              ztilde as zstar   ln_vvl_ztilde_as_zstar  = ', ln_vvl_ztilde_as_zstar 
     864         WRITE(numout,*) '      ztilde near the equator    ln_vvl_zstar_at_eqtor  = ', ln_vvl_zstar_at_eqtor 
    832865         ! WRITE(numout,*) '           Namelist nam_vvl : chose kinetic-to-potential energy conservation' 
    833866         ! WRITE(numout,*) '                                         ln_vvl_kepe    = ', ln_vvl_kepe 
     
    892925      INTEGER ::   ji, jj, jk                                          ! dummy loop indices 
    893926      INTEGER ::   ij0, ij1, ii0, ii1                                  ! dummy loop indices 
     927      !! acc 
     928      !! Hmm with the time splitting these "fixes" seem to do more harm than good. Temporarily disabled for 
     929      !! the ORCA2 tests (by changing jp_cfg test from 2 to 3) pending further investigations 
     930      !!  
    894931      !                                                ! ===================== 
    895       IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
     932      IF( cp_cfg == "orca" .AND. jp_cfg == 3 ) THEN    ! ORCA R2 configuration 
    896933         !                                             ! ===================== 
     934      !! acc 
    897935         IF( nn_cla == 0 ) THEN 
    898936            ! 
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r3870 r3951  
    754754                  DO jk = 1, jpkm1 
    755755                     DO ji = 1, jpij 
    756                         ub_b  (ji,1) = ub_b (ji,1) + fse3u_b(ji,1,jk) * ub   (ji,1,jk) 
    757                         vb_b  (ji,1) = vb_b (ji,1) + fse3v_b(ji,1,jk) * vb   (ji,1,jk) 
    758                         zzhu_b(ji,1) = zhu_b(ji,1) + fse3u_b(ji,1,jk) * umask(ji,1,jk) 
    759                         zzhv_b(ji,1) = zhv_b(ji,1) + fse3v_b(ji,1,jk) * vmask(ji,1,jk) 
     756                        ub_b  (ji,1) = ub_b (ji,1)  + fse3u_b(ji,1,jk) * ub   (ji,1,jk) 
     757                        vb_b  (ji,1) = vb_b (ji,1)  + fse3v_b(ji,1,jk) * vb   (ji,1,jk) 
     758                        zzhu_b(ji,1) = zzhu_b(ji,1) + fse3u_b(ji,1,jk) * umask(ji,1,jk) 
     759                        zzhv_b(ji,1) = zzhv_b(ji,1) + fse3v_b(ji,1,jk) * vmask(ji,1,jk) 
    760760                     END DO 
    761761                  END DO 
Note: See TracChangeset for help on using the changeset viewer.