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 4179 – NEMO

Changeset 4179


Ignore:
Timestamp:
2013-11-11T18:32:51+01:00 (10 years ago)
Author:
rfurner
Message:

changes from James Harle at NOC to ensure repoducability when using envelope bathymetry. Also change to date for AMM standard configuration to match new boundary files needed as a result of zenv change

Location:
branches/2013/dev_UKMO_NOC_reproducibililty_env_bathy/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_UKMO_NOC_reproducibililty_env_bathy/NEMOGCM/CONFIG/AMM12/EXP00/namelist

    r3948 r4179  
    2828   nn_it000    =       1   !  first time step 
    2929   nn_itend    =    2880   !  last  time step (std 1 day = 288) 
    30    nn_date0    =  20070101 !  date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 
     30   nn_date0    =  20120101 !  date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 
    3131   nn_leapy    =       1   !  Leap year calendar (1) or not (0) 
    3232   ln_rstart   =  .true.  !  start from rest (F) or from a restart file (T) 
     
    140140   nn_fsbc     = 1         !  frequency of surface boundary condition computation 
    141141                           !     (also = the frequency of sea-ice model call) 
    142    ln_ana      = .false    !  analytical formulation (T => fill namsbc_ana ) 
     142   ln_ana      = .false.   !  analytical formulation (T => fill namsbc_ana ) 
    143143   ln_flx      = .true.    !  flux formulation       (T => fill namsbc_flx ) 
    144144   ln_blk_clio = .false.   !  CLIO bulk formulation                     (T => fill namsbc_clio) 
     
    466466!              !   file name    ! frequency (hours) !  variable  ! time interpol. !  clim   ! 'yearly'/ ! weights  ! rotation ! 
    467467!              !                !  (if <0  months)  !    name    !    (logical)   !  (T/F)  ! 'monthly' ! filename ! pairing  ! 
    468    bn_ssh =     'amm12_bdyT_u2d' ,         24        , 'sossheig' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
    469    bn_u2d =     'amm12_bdyU_u2d' ,         24        , 'vobtcrtx' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
    470    bn_v2d =     'amm12_bdyV_u2d' ,         24        , 'vobtcrty' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
    471    bn_u3d  =    'amm12_bdyU_u3d' ,         24        , 'vozocrtx' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
    472    bn_v3d  =    'amm12_bdyV_u3d' ,         24        , 'vomecrty' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
     468   bn_ssh =     'amm12_bdyT_dyn2d' ,         24        , 'sossheig' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
     469   bn_u2d =     'amm12_bdyU_dyn2d' ,         24        , 'vobtcrtx' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
     470   bn_v2d =     'amm12_bdyV_dyn2d' ,         24        , 'vobtcrty' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
     471   bn_u3d  =    'amm12_bdyU_dyn3d' ,         24        , 'vozocrtx' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
     472   bn_v3d  =    'amm12_bdyV_dyn3d' ,         24        , 'vomecrty' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
    473473   bn_tem  =    'amm12_bdyT_tra' ,         24        , 'votemper' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
    474474   bn_sal  =    'amm12_bdyT_tra' ,         24        , 'vosaline' ,     .true.     , .false. ,  'daily'  ,    ''    ,   '' 
  • branches/2013/dev_UKMO_NOC_reproducibililty_env_bathy/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r3971 r4179  
    11631163      !                                        ! ============================= 
    11641164      ! use r-value to create hybrid coordinates 
    1165 !     DO jj = 1, jpj 
    1166 !        DO ji = 1, jpi 
    1167 !           zenv(ji,jj) = MAX( bathy(ji,jj), 0._wp ) 
    1168 !        END DO 
    1169 !     END DO 
    1170 !     CALL lbc_lnk( zenv, 'T', 1._wp ) 
    11711165      zenv(:,:) = bathy(:,:) 
     1166      ! 
     1167      ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 
     1168      DO jj = 1, jpj 
     1169         DO ji = 1, jpi 
     1170           IF( bathy(ji,jj) == 0._wp ) THEN 
     1171             iip1 = MIN( ji+1, jpi ) 
     1172             ijp1 = MIN( jj+1, jpj ) 
     1173             iim1 = MAX( ji-1, 1 ) 
     1174             ijm1 = MAX( jj-1, 1 ) 
     1175             IF( (bathy(iip1,jj) + bathy(iim1,jj) + bathy(ji,ijp1) + bathy(ji,ijm1) +              & 
     1176        &         bathy(iip1,ijp1) + bathy(iim1,ijm1) + bathy(iip1,ijp1) + bathy(iim1,ijm1)) > 0._wp ) THEN 
     1177               zenv(ji,jj) = rn_sbot_min 
     1178             ENDIF 
     1179           ENDIF 
     1180         END DO 
     1181      END DO 
     1182      ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
     1183      CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 
    11721184      !  
    1173       ! Smooth the bathymetry (if required) 
     1185      ! smooth the bathymetry (if required) 
    11741186      scosrf(:,:) = 0._wp             ! ocean surface depth (here zero: no under ice-shelf sea) 
    11751187      scobot(:,:) = bathy(:,:)        ! ocean bottom  depth 
     
    11951207         jl = jl + 1 
    11961208         zrmax = 0._wp 
    1197          ! we set zrmax from previous r-values (zri abd zrj) first 
     1209         ! we set zrmax from previous r-values (zri and zrj) first 
    11981210         ! if set after current r-value calculation (as previously) 
    11991211         ! we could exit DO WHILE prematurely before checking r-value 
     
    12311243            END DO 
    12321244         END DO 
    1233          ! 
    1234          CALL lbc_lnk( zenv, 'T', 1._wp ) 
     1245         ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
     1246         CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 
    12351247         !                                                  ! ================ ! 
    12361248      END DO                                                !     End loop     ! 
    12371249      !                                                     ! ================ ! 
    1238       ! 
    1239 !     DO jj = 1, jpj 
    1240 !        DO ji = 1, jpi 
    1241 !           zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale values 
    1242 !        END DO 
    1243 !     END DO 
     1250      DO jj = 1, jpj 
     1251         DO ji = 1, jpi 
     1252            zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale value warnings 
     1253         END DO 
     1254      END DO 
    12441255      ! 
    12451256      ! Envelope bathymetry saved in hbatt 
     
    12501261         DO jj = 1, jpj 
    12511262            DO ji = 1, jpi 
    1252                ztaper = EXP( -(gphit(ji,jj)/8._wp)**2 ) 
     1263               ztaper = EXP( -(gphit(ji,jj)/8._wp)**2._wp ) 
    12531264               hbatt(ji,jj) = rn_sbot_max * ztaper + hbatt(ji,jj) * ( 1._wp - ztaper ) 
    12541265            END DO 
     
    13651376      fsde3w(:,:,:) = gdep3w(:,:,:) 
    13661377      ! 
    1367       where (e3t   (:,:,:).eq.0.0)  e3t(:,:,:) = 1.0 
    1368       where (e3u   (:,:,:).eq.0.0)  e3u(:,:,:) = 1.0 
    1369       where (e3v   (:,:,:).eq.0.0)  e3v(:,:,:) = 1.0 
    1370       where (e3f   (:,:,:).eq.0.0)  e3f(:,:,:) = 1.0 
    1371       where (e3w   (:,:,:).eq.0.0)  e3w(:,:,:) = 1.0 
    1372       where (e3uw  (:,:,:).eq.0.0)  e3uw(:,:,:) = 1.0 
    1373       where (e3vw  (:,:,:).eq.0.0)  e3vw(:,:,:) = 1.0 
     1378      where (e3t   (:,:,:).eq.0.0)  e3t(:,:,:) = 1._wp 
     1379      where (e3u   (:,:,:).eq.0.0)  e3u(:,:,:) = 1._wp 
     1380      where (e3v   (:,:,:).eq.0.0)  e3v(:,:,:) = 1._wp 
     1381      where (e3f   (:,:,:).eq.0.0)  e3f(:,:,:) = 1._wp 
     1382      where (e3w   (:,:,:).eq.0.0)  e3w(:,:,:) = 1._wp 
     1383      where (e3uw  (:,:,:).eq.0.0)  e3uw(:,:,:) = 1._wp 
     1384      where (e3vw  (:,:,:).eq.0.0)  e3vw(:,:,:) = 1._wp 
    13741385 
    13751386#if defined key_agrif 
     
    17481759      ENDDO 
    17491760      ! 
    1750       CALL lbc_lnk(e3t ,'T',1.) ; CALL lbc_lnk(e3u ,'T',1.) 
    1751       CALL lbc_lnk(e3v ,'T',1.) ; CALL lbc_lnk(e3f ,'T',1.) 
    1752       CALL lbc_lnk(e3w ,'T',1.) 
    1753       CALL lbc_lnk(e3uw,'T',1.) ; CALL lbc_lnk(e3vw,'T',1.) 
    1754       ! 
    17551761      !                                               ! ============= 
    17561762 
     
    18491855      !!---------------------------------------------------------------------- 
    18501856      ! 
    1851       pf =   (   TANH( rn_theta * ( -(pk-0.5_wp) / REAL(jpkm1) + rn_thetb )  )   & 
     1857      pf =   (   TANH( rn_theta * ( -(pk-0.5_wp) / REAL(jpkm1,wp) + rn_thetb )  )   & 
    18521858         &     - TANH( rn_thetb * rn_theta                                )  )   & 
    18531859         & * (   COSH( rn_theta                           )                      & 
     
    18751881      ! 
    18761882      IF ( rn_theta == 0 ) then      ! uniform sigma 
    1877          pf1 = - ( pk1 - 0.5_wp ) / REAL( jpkm1 ) 
     1883         pf1 = - ( pk1 - 0.5_wp ) / REAL( jpkm1,wp ) 
    18781884      ELSE                        ! stretched sigma 
    1879          pf1 =   ( 1._wp - pbb ) * ( SINH( rn_theta*(-(pk1-0.5_wp)/REAL(jpkm1)) ) ) / SINH( rn_theta )              & 
    1880             &  + pbb * (  (TANH( rn_theta*( (-(pk1-0.5_wp)/REAL(jpkm1)) + 0.5_wp) ) - TANH( 0.5_wp * rn_theta )  )  & 
     1885         pf1 =   ( 1._wp - pbb ) * ( SINH( rn_theta*(-(pk1-0.5_wp)/REAL(jpkm1,wp)) ) ) / SINH( rn_theta )              & 
     1886            &  + pbb * (  (TANH( rn_theta*( (-(pk1-0.5_wp)/REAL(jpkm1,wp)) + 0.5_wp) ) - TANH( 0.5_wp * rn_theta )  )  & 
    18811887            &        / ( 2._wp * TANH( 0.5_wp * rn_theta ) )  ) 
    18821888      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.