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 10253 for branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90 – NEMO

Ignore:
Timestamp:
2018-10-29T15:55:40+01:00 (5 years ago)
Author:
kingr
Message:

Merged AMM15_v3_6_STABLE_package_collate@10237

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r10251 r10253  
    7676      INTEGER  ::   ib_bdy, ii, ij, ik, igrd, ib, ir, iseg ! dummy loop indices 
    7777      INTEGER  ::   icount, icountr, ibr_max, ilen1, ibm1  ! local integers 
    78       INTEGER  ::   iw, ie, is, in, inum, id_dummy         !   -       - 
     78      INTEGER  ::   iwe, ies, iso, ino, inum, id_dummy         !   -       - 
    7979      INTEGER  ::   igrd_start, igrd_end, jpbdta           !   -       - 
    8080      INTEGER  ::   jpbdtau, jpbdtas                       !   -       - 
     
    105105      !! 
    106106      NAMELIST/nambdy_index/ ctypebdy, nbdyind, nbdybeg, nbdyend 
     107       
     108       
     109!      ! JT 
     110      NAMELIST/nambdy_ssh/ ln_ssh_bdy 
     111!      ! JT 
    107112      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    108113      !!---------------------------------------------------------------------- 
     
    132137902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 
    133138      IF(lwm) WRITE ( numond, nambdy ) 
     139      !JT Read nambdy_ssh namelist  
     140      REWIND( numnam_ref )              ! Namelist nambdy in reference namelist :Unstructured open boundaries   
     141      READ  ( numnam_ref, nambdy_ssh, IOSTAT = ios, ERR = 905) 
     142905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_ssh in reference namelist', lwp ) 
     143 
     144      REWIND( numnam_cfg )              ! Namelist nambdy in configuration namelist :Unstructured open boundaries 
     145      READ  ( numnam_cfg, nambdy_ssh, IOSTAT = ios, ERR = 906) 
     146906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_ssh in configuration namelist', lwp ) 
     147      IF(lwm) WRITE ( numond, nambdy_ssh ) 
     148       
     149      IF(lwp) WRITE(numout,*) 
     150      IF(lwp) WRITE(numout,*) 'nambdy_ssh : use of ssh boundaries' 
     151      IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     152      IF(lwp) WRITE(numout,*) '      ln_ssh_bdy: ' 
     153      DO ib_bdy = 1,nb_bdy 
     154        IF(lwp) WRITE(numout,*) '      ln_ssh_bdy(',ib_bdy,'): ',ln_ssh_bdy(ib_bdy) 
     155      ENDDO 
     156      IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     157      IF(lwp) WRITE(numout,*)  
     158      !JT 
    134159 
    135160      ! ----------------------------------------- 
     
    185210          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for cn_dyn2d' ) 
    186211        END SELECT 
     212         
     213        !JT override dta_bdy(ib_bdy)%ll_ssh with namelist value (ln_ssh_bdy) 
     214        IF(lwp) WRITE(numout,*) 'nambdy_ssh : use of ssh boundaries' 
     215        IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     216        IF(lwp) WRITE(numout,*) '      ib_bdy: ',ib_bdy 
     217        IF(lwp) WRITE(numout,*) '      Prior to Implementation of nambdy_ssh' 
     218        IF(lwp) WRITE(numout,*) '      dta_bdy(ib_bdy)%ll_ssh: ',dta_bdy(ib_bdy)%ll_ssh 
     219         
     220        dta_bdy(ib_bdy)%ll_ssh = ln_ssh_bdy(ib_bdy) 
     221         
     222        IF(lwp) WRITE(numout,*) '      After to Implementation of nambdy_ssh' 
     223        IF(lwp) WRITE(numout,*) '      dta_bdy(ib_bdy)%ll_ssh: ',dta_bdy(ib_bdy)%ll_ssh 
     224        IF(lwp) WRITE(numout,*) '~~~~~~~~' 
     225         
     226        !JT          
     227         
    187228        IF( cn_dyn2d(ib_bdy) /= 'none' ) THEN 
    188229           SELECT CASE( nn_dyn2d_dta(ib_bdy) )                   !  
     
    213254             dta_bdy(ib_bdy)%ll_u3d = .true. 
    214255             dta_bdy(ib_bdy)%ll_v3d = .true. 
     256          CASE('neumann')  
     257             IF(lwp) WRITE(numout,*) '      Neumann conditions'  
     258             dta_bdy(ib_bdy)%ll_u3d = .false.  
     259             dta_bdy(ib_bdy)%ll_v3d = .false.  
     260          CASE('zerograd')  
     261             IF(lwp) WRITE(numout,*) '      Zero gradient for baroclinic velocities'  
     262             dta_bdy(ib_bdy)%ll_u3d = .false.  
     263             dta_bdy(ib_bdy)%ll_v3d = .false. 
    215264          CASE('zero') 
    216265             IF(lwp) WRITE(numout,*) '      Zero baroclinic velocities (runoff case)' 
     
    777826!      is = mjg(1) + 1            ! if monotasking and no zoom, is=2 
    778827!      in = mjg(1) + nlcj-1 - 1   ! if monotasking and no zoom, in=jpjm1       
    779       iw = mig(1) - jpizoom + 2         ! if monotasking and no zoom, iw=2 
    780       ie = mig(1) + nlci - jpizoom - 1  ! if monotasking and no zoom, ie=jpim1 
    781       is = mjg(1) - jpjzoom + 2         ! if monotasking and no zoom, is=2 
    782       in = mjg(1) + nlcj - jpjzoom - 1  ! if monotasking and no zoom, in=jpjm1 
     828      iwe = mig(1) - jpizoom + 2         ! if monotasking and no zoom, iw=2 
     829      ies = mig(1) + nlci - jpizoom - 1  ! if monotasking and no zoom, ie=jpim1 
     830      iso = mjg(1) - jpjzoom + 2         ! if monotasking and no zoom, is=2 
     831      ino = mjg(1) + nlcj - jpjzoom - 1  ! if monotasking and no zoom, in=jpjm1 
    783832 
    784833      ALLOCATE( nbondi_bdy(nb_bdy)) 
     
    853902               ENDIF 
    854903               ! check if point is in local domain 
    855                IF(  nbidta(ib,igrd,ib_bdy) >= iw .AND. nbidta(ib,igrd,ib_bdy) <= ie .AND.   & 
    856                   & nbjdta(ib,igrd,ib_bdy) >= is .AND. nbjdta(ib,igrd,ib_bdy) <= in       ) THEN 
     904               IF(  nbidta(ib,igrd,ib_bdy) >= iwe .AND. nbidta(ib,igrd,ib_bdy) <= ies .AND.   & 
     905                  & nbjdta(ib,igrd,ib_bdy) >= iso .AND. nbjdta(ib,igrd,ib_bdy) <= ino      ) THEN 
    857906                  ! 
    858907                  icount = icount  + 1 
     
    890939         com_south_b = 0 
    891940         com_north_b = 0 
     941 
    892942         DO igrd = 1, jpbgrd 
    893943            icount  = 0 
     
    896946               DO ib = 1, nblendta(igrd,ib_bdy) 
    897947                  ! check if point is in local domain and equals ir 
    898                   IF(  nbidta(ib,igrd,ib_bdy) >= iw .AND. nbidta(ib,igrd,ib_bdy) <= ie .AND.   & 
    899                      & nbjdta(ib,igrd,ib_bdy) >= is .AND. nbjdta(ib,igrd,ib_bdy) <= in .AND.   & 
     948                  IF(  nbidta(ib,igrd,ib_bdy) >= iwe .AND. nbidta(ib,igrd,ib_bdy) <= ies .AND.   & 
     949                     & nbjdta(ib,igrd,ib_bdy) >= iso .AND. nbjdta(ib,igrd,ib_bdy) <= ino .AND.   & 
    900950                     & nbrdta(ib,igrd,ib_bdy) == ir  ) THEN 
    901951                     ! 
     
    10861136            DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
    10871137               nbr => idx_bdy(ib_bdy)%nbr(ib,igrd) 
    1088                idx_bdy(ib_bdy)%nbw(ib,igrd) = 1.- TANH( FLOAT( nbr - 1 ) *0.5 )      ! tanh formulation 
     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 
    10891141!               idx_bdy(ib_bdy)%nbw(ib,igrd) = (FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2.  ! quadratic 
    10901142!               idx_bdy(ib_bdy)%nbw(ib,igrd) =  FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy))       ! linear 
     
    15941646            ELSE 
    15951647               ! This is a corner 
    1596                WRITE(numout,*) 'Found a South-West corner at (i,j): ', jpiwob(ib), jpjwdt(ib) 
     1648               IF(lwp) WRITE(numout,*) 'Found a South-West corner at (i,j): ', jpiwob(ib), jpjwdt(ib) 
    15971649               CALL bdy_ctl_corn(npckgw(ib), icornw(ib,1)) 
    15981650               itest=itest+1 
     
    16081660            ELSE 
    16091661               ! This is a corner 
    1610                WRITE(numout,*) 'Found a North-West corner at (i,j): ', jpiwob(ib), jpjwft(ib) 
     1662               IF(lwp) WRITE(numout,*) 'Found a North-West corner at (i,j): ', jpiwob(ib), jpjwft(ib) 
    16111663               CALL bdy_ctl_corn(npckgw(ib), icornw(ib,2)) 
    16121664               itest=itest+1 
     
    16381690            ELSE 
    16391691               ! This is a corner 
    1640                WRITE(numout,*) 'Found a South-East corner at (i,j): ', jpieob(ib)+1, jpjedt(ib) 
     1692               IF(lwp) WRITE(numout,*) 'Found a South-East corner at (i,j): ', jpieob(ib)+1, jpjedt(ib) 
    16411693               CALL bdy_ctl_corn(npckge(ib), icorne(ib,1)) 
    16421694               itest=itest+1 
     
    16521704            ELSE 
    16531705               ! This is a corner 
    1654                WRITE(numout,*) 'Found a North-East corner at (i,j): ', jpieob(ib)+1, jpjeft(ib) 
     1706               IF(lwp) WRITE(numout,*) 'Found a North-East corner at (i,j): ', jpieob(ib)+1, jpjeft(ib) 
    16551707               CALL bdy_ctl_corn(npckge(ib), icorne(ib,2)) 
    16561708               itest=itest+1 
Note: See TracChangeset for help on using the changeset viewer.