Changeset 10064


Ignore:
Timestamp:
2018-08-23T14:34:13+02:00 (2 years ago)
Author:
csanchez
Message:

Added changes from Bijoy and Enda's for sponge layer, no tidal harm, and rimwidth=1

Location:
branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r8790 r10064  
    9090   LOGICAL                    ::   ln_mask_file             !: =T read bdymask from file 
    9191   LOGICAL                    ::   ln_vol                   !: =T volume correction              
     92   LOGICAL, DIMENSION(jp_bdy) ::   ln_sponge                !: =T use sponge layer  CEOD 
    9293   ! 
    9394   INTEGER                    ::   nb_bdy                   !: number of open boundary sets 
    9495   INTEGER, DIMENSION(jp_bdy) ::   nn_rimwidth              !: boundary rim width for Flow Relaxation Scheme 
    9596   INTEGER                    ::   nn_volctl                !: = 0 the total volume will have the variability of the surface Flux E-P  
     97   REAL(wp)                   ::   rn_sponge                !: multiplier of diffusion for sponge layer  CEOD 
    9698   !                                                        !  = 1 the volume will be constant during all the integration. 
    9799   CHARACTER(len=20), DIMENSION(jp_bdy) ::   cn_dyn2d       ! Choice of boundary condition for barotropic variables (U,V,SSH) 
     
    130132   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET ::   bdyumask   !: Mask defining computational domain at U-points 
    131133   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET ::   bdyvmask   !: Mask defining computational domain at V-points 
     134   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET ::   sponge_factor !:Multiplier for diffusion for sponge layer CEOD 
    132135 
    133136   REAL(wp)                                    ::   bdysurftot !: Lateral surface of unstructured open boundary 
     
    160163      ! 
    161164      ALLOCATE( bdytmask(jpi,jpj) , bdyumask(jpi,jpj), bdyvmask(jpi,jpj),     &   
    162          &      STAT=bdy_oce_alloc ) 
     165         &      sponge_factor(jpi,jpj), STAT=bdy_oce_alloc )   !CEOD 
    163166      ! 
    164167      ! Initialize masks  
  • branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r8790 r10064  
    9595      REAL(wp), POINTER, DIMENSION(:,:)       ::   zfmask  ! temporary fmask array excluding coastal boundary condition (shlat) 
    9696 
    97       !! 
     97      !! CEOD sponge 
    9898      NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file,                 & 
    9999         &             ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta,     & 
     
    102102         &             cn_ice_lim, nn_ice_lim_dta,                           & 
    103103         &             rn_ice_tem, rn_ice_sal, rn_ice_age,                 & 
    104          &             ln_vol, nn_volctl, nn_rimwidth 
     104         &             ln_vol, nn_volctl, nn_rimwidth,                      & 
     105         &             ln_sponge, rn_sponge !CEOD  
    105106      !! 
    106107      NAMELIST/nambdy_index/ ctypebdy, nbdyind, nbdybeg, nbdyend 
     
    414415        IF(lwp) WRITE(numout,*) '      Width of relaxation zone = ', nn_rimwidth(ib_bdy) 
    415416        IF(lwp) WRITE(numout,*) 
    416  
     417!CEOD 
     418        IF( ln_sponge(ib_bdy) ) THEN                     ! check sponge layer choice 
     419             IF(lwp) WRITE(numout,*) 'Sponge layer applied at open boundaries' 
     420             IF(lwp) WRITE(numout,*) 'Multiplier for diffusion in sponge layer :', rn_sponge 
     421             IF(lwp) WRITE(numout,*) 
     422           ELSE 
     423             IF(lwp) WRITE(numout,*) 'No volume correction applied at open boundaries' 
     424             IF(lwp) WRITE(numout,*) 
     425           ENDIF 
     426! 
    417427      ENDDO 
    418428 
     
    432442        ENDIF 
    433443     ENDIF 
     444     sponge_factor(:,:) = 1.0 !CEOD 
    434445 
    435446      ! ------------------------------------------------- 
     
    11361147            DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    11371148               nbr => idx_bdy(ib_bdy)%nbr(ib,igrd) 
    1138                idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) * 0.5 & 
    1139                                             &  *(10./ FLOAT(nn_rimwidth(ib_bdy))) ) ! JGraham:modified for rim=15 
    1140 !               idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) *0.5 )      ! tanh formulation 
     1149!               idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) *  0.5  &   
     1150!                                            &  *(10./ FLOAT(nn_rimwidth(ib_bdy))) ) ! JGraham:modified for rim=15 
     1151               idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) *0.5 )      ! tanh formulation !CBIJ MC config rim=1 
    11411152!               idx_bdy(ib_bdy)%nbw(ib,igrd) = (FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2.  ! quadratic 
    11421153!               idx_bdy(ib_bdy)%nbw(ib,igrd) =  FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy))       ! linear 
     
    11551166            END DO 
    11561167         END DO  
     1168      ! Compute multiplier for diffusion for sponge layer !CEOD 
     1169           ! ------------------------------------------------- 
     1170           IF( ln_sponge(ib_bdy) ) THEN 
     1171              igrd=1 
     1172              DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     1173                 nbi => idx_bdy(ib_bdy)%nbi(ib,igrd) 
     1174                 nbj => idx_bdy(ib_bdy)%nbj(ib,igrd) 
     1175                 nbr => idx_bdy(ib_bdy)%nbr(ib,igrd) 
     1176                 sponge_factor(nbi,nbj) = 1.0 + (rn_sponge-1.0) * ( 1.- TANH( FLOAT( nbr - 1 ) *0.5 ) ) 
     1177                 ! 0.5 factor says how fast tanh goes to 1 - reduce this to have 
     1178                 ! effect on more of the rimwidth 
     1179              END DO 
     1180           ENDIF 
    11571181 
    11581182      ENDDO 
  • branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DIA/diaharmana.F90

    r8059 r10064  
    659659           END SUBROUTINE harm_ana_init 
    660660           SUBROUTINE harm_ana( kt ) 
    661            END SUBROUTINE harm_ana_init 
     661           END SUBROUTINE harm_ana 
    662662           SUBROUTINE gelim (a,b,x,n) 
    663            END SUBROUTINE gelim (a,b,x,n) 
     663           END SUBROUTINE gelim 
    664664            
    665665#endif 
  • branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r8058 r10064  
    7979      !                                   !  workspaces 
    8080      REAL(wp), POINTER, DIMENSION(:,:  ) :: zprt, zprw  
    81       REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepu, zdepv 
     81      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepu, zdepv, zdepf  !CEOD  
    8282      !!---------------------------------------------------------------------- 
    8383      ! 
     
    8585      ! 
    8686      CALL wrk_alloc( jpi, jpj, zprt, zprw ) 
    87       CALL wrk_alloc( jpi, jpj, jpk, zdepu, zdepv ) 
     87      CALL wrk_alloc( jpi, jpj, jpk, zdepu, zdepv, zdepf ) !CEOD 
    8888      ! 
    8989      IF(lwp) WRITE(numout,*) 
     
    218218         CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0, ktype = jp_r4 )      
    219219      ENDIF 
    220        
     220            !CEOD Added for gdep uvf 
     221      IF( ln_sco ) THEN                                         ! s-coordinate 
     222 
     223         DO jk = 1,jpk 
     224            DO jj = 1, jpjm1 
     225               DO ji = 1, fs_jpim1   ! vector opt. 
     226                  zdepu(ji,jj,jk) = 0.5*(gdept_0(ji,jj,jk) + gdept_0(ji+1,jj,jk) ) 
     227                  zdepv(ji,jj,jk) = 0.5*(gdept_0(ji,jj,jk) + gdept_0(ji,jj+1,jk) ) 
     228 
     229                  zdepf(ji,jj,jk) = 0.25*(gdept_0(ji,jj,jk) + gdept_0(ji+1,jj+1,jk) +gdept_0(ji+1,jj  ,jk)  + gdept_0(ji  ,jj+1,jk) ) 
     230               END DO 
     231            END DO 
     232         END DO 
     233 
     234         CALL lbc_lnk( zdepu, 'U', 1. )   ;   CALL lbc_lnk( zdepv, 'V', 1. ) 
     235         CALL iom_rstput( 0, 0, inum4, 'gdepu', zdepu, ktype = jp_r4 ) 
     236         CALL iom_rstput( 0, 0, inum4, 'gdepv', zdepv, ktype = jp_r4 ) 
     237         CALL iom_rstput( 0, 0, inum4, 'gdepf', zdepf, ktype = jp_r4 ) 
     238         CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0, ktype = jp_r4 ) 
     239 
     240      END IF 
     241 
    221242      IF( ln_zps ) THEN                                         ! z-coordinate - partial steps 
    222243         ! 
  • branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r8058 r10064  
    19731973         DO jj = 1, jpj 
    19741974            DO ji = 1, jpi 
    1975                ztaper = EXP( -(gphit(ji,jj)/8._wp)**2._wp ) 
     1975               ztaper = 0 !CEOD ! EXP( -(gphit(ji,jj)/8._wp)**2._wp ) 
    19761976               hbatt(ji,jj) = rn_sbot_max * ztaper + hbatt(ji,jj) * ( 1._wp - ztaper ) 
    19771977            END DO 
  • branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r8058 r10064  
    211211      ! 
    212212      DO jk = 1, jpk 
    213          tsn(:,:,jk,jp_tem) = (  ( ( 7.5 - 0. * ABS( gphit(:,:) )/30. ) * ( 1.-TANH((fsdept(:,:,jk)-80.)/30.) )   & 
    214             &                + 10. * ( 5000. - fsdept(:,:,jk) ) /5000.)  ) * tmask(:,:,jk) 
     213         tsn(:,:,jk,jp_tem) = 10.0 !CEOD (  ( ( 7.5 - 0. * ABS( gphit(:,:) )/30. ) * ( 1.-TANH((fsdept(:,:,jk)-80.)/30.) )   & 
     214!            &                + 10. * ( 5000. - fsdept(:,:,jk) ) /5000.)  ) * tmask(:,:,jk) 
    215215         tsb(:,:,jk,jp_tem) = tsn(:,:,jk,jp_tem) 
    216216      END DO 
Note: See TracChangeset for help on using the changeset viewer.