Changeset 10064 for branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC
- Timestamp:
- 2018-08-23T14:34:13+02:00 (6 years ago)
- 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 90 90 LOGICAL :: ln_mask_file !: =T read bdymask from file 91 91 LOGICAL :: ln_vol !: =T volume correction 92 LOGICAL, DIMENSION(jp_bdy) :: ln_sponge !: =T use sponge layer CEOD 92 93 ! 93 94 INTEGER :: nb_bdy !: number of open boundary sets 94 95 INTEGER, DIMENSION(jp_bdy) :: nn_rimwidth !: boundary rim width for Flow Relaxation Scheme 95 96 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 96 98 ! ! = 1 the volume will be constant during all the integration. 97 99 CHARACTER(len=20), DIMENSION(jp_bdy) :: cn_dyn2d ! Choice of boundary condition for barotropic variables (U,V,SSH) … … 130 132 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET :: bdyumask !: Mask defining computational domain at U-points 131 133 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 132 135 133 136 REAL(wp) :: bdysurftot !: Lateral surface of unstructured open boundary … … 160 163 ! 161 164 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 163 166 ! 164 167 ! Initialize masks -
branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r8790 r10064 95 95 REAL(wp), POINTER, DIMENSION(:,:) :: zfmask ! temporary fmask array excluding coastal boundary condition (shlat) 96 96 97 !! 97 !! CEOD sponge 98 98 NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file, & 99 99 & ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta, & … … 102 102 & cn_ice_lim, nn_ice_lim_dta, & 103 103 & 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 105 106 !! 106 107 NAMELIST/nambdy_index/ ctypebdy, nbdyind, nbdybeg, nbdyend … … 414 415 IF(lwp) WRITE(numout,*) ' Width of relaxation zone = ', nn_rimwidth(ib_bdy) 415 416 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 ! 417 427 ENDDO 418 428 … … 432 442 ENDIF 433 443 ENDIF 444 sponge_factor(:,:) = 1.0 !CEOD 434 445 435 446 ! ------------------------------------------------- … … 1136 1147 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 1137 1148 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=151140 ! 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 1141 1152 ! idx_bdy(ib_bdy)%nbw(ib,igrd) = (FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)))**2. ! quadratic 1142 1153 ! idx_bdy(ib_bdy)%nbw(ib,igrd) = FLOAT(nn_rimwidth(ib_bdy)+1-nbr)/FLOAT(nn_rimwidth(ib_bdy)) ! linear … … 1155 1166 END DO 1156 1167 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 1157 1181 1158 1182 ENDDO -
branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DIA/diaharmana.F90
r8059 r10064 659 659 END SUBROUTINE harm_ana_init 660 660 SUBROUTINE harm_ana( kt ) 661 END SUBROUTINE harm_ana _init661 END SUBROUTINE harm_ana 662 662 SUBROUTINE gelim (a,b,x,n) 663 END SUBROUTINE gelim (a,b,x,n)663 END SUBROUTINE gelim 664 664 665 665 #endif -
branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r8058 r10064 79 79 ! ! workspaces 80 80 REAL(wp), POINTER, DIMENSION(:,: ) :: zprt, zprw 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepu, zdepv 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepu, zdepv, zdepf !CEOD 82 82 !!---------------------------------------------------------------------- 83 83 ! … … 85 85 ! 86 86 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 88 88 ! 89 89 IF(lwp) WRITE(numout,*) … … 218 218 CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0, ktype = jp_r4 ) 219 219 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 221 242 IF( ln_zps ) THEN ! z-coordinate - partial steps 222 243 ! -
branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r8058 r10064 1973 1973 DO jj = 1, jpj 1974 1974 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 ) 1976 1976 hbatt(ji,jj) = rn_sbot_max * ztaper + hbatt(ji,jj) * ( 1._wp - ztaper ) 1977 1977 END DO -
branches/UKMO/CCRS_NUS_MC_STABLE/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r8058 r10064 211 211 ! 212 212 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) 215 215 tsb(:,:,jk,jp_tem) = tsn(:,:,jk,jp_tem) 216 216 END DO
Note: See TracChangeset
for help on using the changeset viewer.