- Timestamp:
- 2018-10-29T15:55:40+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r10251 r10253 76 76 INTEGER :: ib_bdy, ii, ij, ik, igrd, ib, ir, iseg ! dummy loop indices 77 77 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 ! - - 79 79 INTEGER :: igrd_start, igrd_end, jpbdta ! - - 80 80 INTEGER :: jpbdtau, jpbdtas ! - - … … 105 105 !! 106 106 NAMELIST/nambdy_index/ ctypebdy, nbdyind, nbdybeg, nbdyend 107 108 109 ! ! JT 110 NAMELIST/nambdy_ssh/ ln_ssh_bdy 111 ! ! JT 107 112 INTEGER :: ios ! Local integer output status for namelist read 108 113 !!---------------------------------------------------------------------- … … 132 137 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 133 138 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) 142 905 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) 146 906 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 134 159 135 160 ! ----------------------------------------- … … 185 210 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_dyn2d' ) 186 211 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 187 228 IF( cn_dyn2d(ib_bdy) /= 'none' ) THEN 188 229 SELECT CASE( nn_dyn2d_dta(ib_bdy) ) ! … … 213 254 dta_bdy(ib_bdy)%ll_u3d = .true. 214 255 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. 215 264 CASE('zero') 216 265 IF(lwp) WRITE(numout,*) ' Zero baroclinic velocities (runoff case)' … … 777 826 ! is = mjg(1) + 1 ! if monotasking and no zoom, is=2 778 827 ! 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=2780 ie = mig(1) + nlci - jpizoom - 1 ! if monotasking and no zoom, ie=jpim1781 is = mjg(1) - jpjzoom + 2 ! if monotasking and no zoom, is=2782 in = mjg(1) + nlcj - jpjzoom - 1 ! if monotasking and no zoom, in=jpjm1828 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 783 832 784 833 ALLOCATE( nbondi_bdy(nb_bdy)) … … 853 902 ENDIF 854 903 ! 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) THEN904 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 857 906 ! 858 907 icount = icount + 1 … … 890 939 com_south_b = 0 891 940 com_north_b = 0 941 892 942 DO igrd = 1, jpbgrd 893 943 icount = 0 … … 896 946 DO ib = 1, nblendta(igrd,ib_bdy) 897 947 ! 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. & 900 950 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 901 951 ! … … 1086 1136 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 1087 1137 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 1089 1141 ! idx_bdy(ib_bdy)%nbw(ib,igrd) = (FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2. ! quadratic 1090 1142 ! idx_bdy(ib_bdy)%nbw(ib,igrd) = FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)) ! linear … … 1594 1646 ELSE 1595 1647 ! 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) 1597 1649 CALL bdy_ctl_corn(npckgw(ib), icornw(ib,1)) 1598 1650 itest=itest+1 … … 1608 1660 ELSE 1609 1661 ! 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) 1611 1663 CALL bdy_ctl_corn(npckgw(ib), icornw(ib,2)) 1612 1664 itest=itest+1 … … 1638 1690 ELSE 1639 1691 ! 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) 1641 1693 CALL bdy_ctl_corn(npckge(ib), icorne(ib,1)) 1642 1694 itest=itest+1 … … 1652 1704 ELSE 1653 1705 ! 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) 1655 1707 CALL bdy_ctl_corn(npckge(ib), icorne(ib,2)) 1656 1708 itest=itest+1
Note: See TracChangeset
for help on using the changeset viewer.