- Timestamp:
- 2013-08-28T10:10:35+02:00 (11 years ago)
- Location:
- branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90
r3991 r4007 109 109 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET :: bdyumask !: Mask defining computational domain at U-points 110 110 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET :: bdyvmask !: Mask defining computational domain at V-points 111 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), TARGET :: bdyfmask !: Mask defining computational domain at F-points112 111 113 112 REAL(wp) :: bdysurftot !: Lateral surface of unstructured open boundary … … 144 143 !!---------------------------------------------------------------------- 145 144 ! 146 ALLOCATE( bdytmask(jpi,jpj) , bdyumask(jpi,jpj), bdyvmask(jpi,jpj), bdyfmask(jpi,jpj),&145 ALLOCATE( bdytmask(jpi,jpj) , bdyumask(jpi,jpj), bdyvmask(jpi,jpj), & 147 146 & STAT=bdy_oce_alloc ) 148 147 ! -
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn2d.F90
r3994 r4007 220 220 igrd = 2 ! Orlanski bc on u-velocity; 221 221 ! 222 CALL bdy_orlanski_2d( idx, igrd, pub2d, pua2d, dta%u2d, umask(:,:,1),ll_npo )222 CALL bdy_orlanski_2d( idx, igrd, pub2d, pua2d, dta%u2d, ll_npo ) 223 223 224 224 igrd = 3 ! Orlanski bc on v-velocity 225 225 ! 226 CALL bdy_orlanski_2d( idx, igrd, pvb2d, pva2d, dta%v2d, vmask(:,:,1),ll_npo )226 CALL bdy_orlanski_2d( idx, igrd, pvb2d, pva2d, dta%v2d, ll_npo ) 227 227 ! 228 228 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn2d_orlanski') -
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn3d.F90
r3994 r4007 239 239 igrd = 2 ! Orlanski bc on u-velocity; 240 240 ! 241 CALL bdy_orlanski_3d( idx, igrd, ub, ua, dta%u3d, umask,ll_npo )241 CALL bdy_orlanski_3d( idx, igrd, ub, ua, dta%u3d, ll_npo ) 242 242 243 243 igrd = 3 ! Orlanski bc on v-velocity 244 244 ! 245 CALL bdy_orlanski_3d( idx, igrd, vb, va, dta%v3d, vmask,ll_npo )245 CALL bdy_orlanski_3d( idx, igrd, vb, va, dta%v3d, ll_npo ) 246 246 ! 247 247 CALL lbc_bdy_lnk( ua, 'U', -1., ib_bdy ) ! Boundary points should be updated -
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r3991 r4007 21 21 !! bdy_init : Initialization of unstructured open boundaries 22 22 !!---------------------------------------------------------------------- 23 USE wrk_nemo ! Memory Allocation 23 24 USE timing ! Timing 24 25 USE oce ! ocean dynamics and tracers variables … … 92 93 INTEGER :: com_east_b, com_west_b, com_south_b, com_north_b ! Flags for boundaries receiving 93 94 INTEGER :: iw_b(4), ie_b(4), is_b(4), in_b(4) ! Arrays for neighbours coordinates 95 REAL(wp), POINTER, DIMENSION(:,:) :: zfmask ! temporary fmask array excluding coastal boundary condition (shlat) 94 96 95 97 !! … … 1178 1180 ENDDO 1179 1181 1180 ! bdyfmask required for flagu, flagv calculations below even though F-points 1181 ! not defined for BDY grid. 1182 ! For the flagu/flagv calculation below we require a version of fmask without 1183 ! the land boundary condition (shlat) included: 1184 CALL wrk_alloc(jpi,jpj,zfmask) 1182 1185 DO ij = 2, jpjm1 1183 1186 DO ii = 2, jpim1 1184 bdyfmask(ii,ij) = bdytmask(ii,ij ) * bdytmask(ii+1,ij) &1185 & * bdytmask(ii,ij+1) * bdytmask(ii+1,ij+1)1187 zfmask(ii,ij) = tmask(ii,ij ,1) * tmask(ii+1,ij ,1) & 1188 & * tmask(ii,ij+1,1) * tmask(ii+1,ij+1,1) 1186 1189 END DO 1187 1190 END DO 1188 1191 1189 1192 ! Lateral boundary conditions 1193 CALL lbc_lnk( zfmask , 'F', 1. ) 1190 1194 CALL lbc_lnk( fmask , 'F', 1. ) ; CALL lbc_lnk( bdytmask(:,:), 'T', 1. ) 1191 1195 CALL lbc_lnk( bdyumask(:,:), 'U', 1. ) ; CALL lbc_lnk( bdyvmask(:,:), 'V', 1. ) … … 1205 1209 SELECT CASE( igrd ) 1206 1210 CASE( 1 ) 1207 cgrid = 'T'1208 1211 pmask => umask(:,:,1) 1209 1212 i_offset = 0 1210 1213 CASE( 2 ) 1211 cgrid = 'U'1212 1214 pmask => bdytmask 1213 1215 i_offset = 1 1214 1216 CASE( 3 ) 1215 cgrid = 'V' 1216 pmask => fmask(:,:,1) 1217 pmask => zfmask(:,:) 1217 1218 i_offset = 0 1218 1219 END SELECT … … 1223 1224 zefl = pmask(nbi+i_offset-1,nbj) 1224 1225 zwfl = pmask(nbi+i_offset,nbj) 1225 IF( zefl + zwfl == 2 * i_offset ) THEN 1226 ! This error check only works if you are using the bdyXmask arrays 1227 IF( i_offset == 1 .and. zefl + zwfl == 2 ) THEN 1226 1228 icount = icount + 1 1227 1229 IF(lwp) WRITE(numout,*) 'Problem with igrd = ',igrd,' at (global) nbi, nbj : ',mig(nbi),mjg(nbj) 1228 1230 ELSE 1229 idx_bdy(ib_bdy)%flagu(ib,igrd) =-zefl+zwfl1231 idx_bdy(ib_bdy)%flagu(ib,igrd) = -zefl + zwfl 1230 1232 ENDIF 1231 1233 END DO 1232 1234 IF( icount /= 0 ) THEN 1233 1235 IF(lwp) WRITE(numout,*) 1234 IF(lwp) WRITE(numout,*) ' E R R O R : Some ',cgrid ,' grid points,', &1236 IF(lwp) WRITE(numout,*) ' E R R O R : Some ',cgrid(igrd),' grid points,', & 1235 1237 ' are not boundary points (flagu calculation). Check nbi, nbj, indices for boundary set ',ib_bdy 1236 1238 IF(lwp) WRITE(numout,*) ' ========== ' … … 1241 1243 1242 1244 ! Calculate relationship of V direction to the local orientation of the boundary 1243 ! flagv = -1 : ucomponent is normal to the dynamical boundary but its direction is outward1244 ! flagv = 0 : uis tangential1245 ! flagv = 1 : uis normal to the boundary and is direction is inward1245 ! flagv = -1 : v component is normal to the dynamical boundary but its direction is outward 1246 ! flagv = 0 : v is tangential 1247 ! flagv = 1 : v is normal to the boundary and is direction is inward 1246 1248 1247 1249 DO igrd = 1,jpbgrd 1248 1250 SELECT CASE( igrd ) 1249 1251 CASE( 1 ) 1250 cgrid = 'T'1251 1252 pmask => vmask(:,:,1) 1252 1253 j_offset = 0 1253 1254 CASE( 2 ) 1254 cgrid = 'U' 1255 pmask => fmask(:,:,1) 1255 pmask => zfmask(:,:) 1256 1256 j_offset = 0 1257 1257 CASE( 3 ) 1258 cgrid = 'V'1259 1258 pmask => bdytmask 1260 1259 j_offset = 1 … … 1266 1265 znfl = pmask(nbi,nbj+j_offset-1 ) 1267 1266 zsfl = pmask(nbi,nbj+j_offset) 1268 IF( znfl + zsfl == 2 * j_offset ) THEN 1267 ! This error check only works if you are using the bdyXmask arrays 1268 IF( j_offset == 1 .and. znfl + zsfl == 2 ) THEN 1269 1269 IF(lwp) WRITE(numout,*) 'Problem with igrd = ',igrd,' at (global) nbi, nbj : ',mig(nbi),mjg(nbj) 1270 1270 icount = icount + 1 … … 1275 1275 IF( icount /= 0 ) THEN 1276 1276 IF(lwp) WRITE(numout,*) 1277 IF(lwp) WRITE(numout,*) ' E R R O R : Some ',cgrid ,' grid points,', &1277 IF(lwp) WRITE(numout,*) ' E R R O R : Some ',cgrid(igrd),' grid points,', & 1278 1278 ' are not boundary points (flagv calculation). Check nbi, nbj, indices for boundary set ',ib_bdy 1279 1279 IF(lwp) WRITE(numout,*) ' ========== ' … … 1324 1324 DEALLOCATE(nbidta, nbjdta, nbrdta) 1325 1325 ENDIF 1326 1327 CALL wrk_dealloc(jpi,jpj,zfmask) 1326 1328 1327 1329 IF( nn_timing == 1 ) CALL timing_stop('bdy_init') -
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdylib.F90
r3994 r4007 34 34 CONTAINS 35 35 36 SUBROUTINE bdy_orlanski_2d( idx, igrd, phib, phia, phi_ext, mask,ll_npo )36 SUBROUTINE bdy_orlanski_2d( idx, igrd, phib, phia, phi_ext, ll_npo ) 37 37 !!---------------------------------------------------------------------- 38 38 !! *** SUBROUTINE bdy_orlanski_2d *** … … 50 50 REAL(wp), DIMENSION(:,:), INTENT(inout) :: phia ! model after 2D field (to be updated) 51 51 REAL(wp), DIMENSION(:), INTENT(in) :: phi_ext ! external forcing data 52 REAL(wp), DIMENSION(:,:), INTENT(in) :: mask ! land/sea mask53 52 LOGICAL, INTENT(in) :: ll_npo ! switch for NPO version 54 53 … … 57 56 INTEGER :: iijm1, iijp1, ijjm1, ijjp1 ! 2D addresses 58 57 INTEGER :: iibm1jp1, iibm1jm1, ijbm1jp1, ijbm1jm1 ! 2D addresses 58 INTEGER :: ii_offset, ij_offset ! offsets for mask indices 59 59 INTEGER :: flagu, flagv ! short cuts 60 60 REAL(wp) :: zdt, zdx, zdy, znor2, zcx, zcy ! intermediate calculations 61 REAL(wp) :: zout, zwgt, zdy_centred, zsign_ups 61 REAL(wp) :: zout, zwgt, zdy_centred 62 REAL(wp) :: zdy_left, zdy_right, zsign_ups 63 REAL(wp), POINTER, DIMENSION(:,:) :: pmask ! land/sea mask for field 64 REAL(wp), POINTER, DIMENSION(:,:) :: pmask_xdiv ! land/sea mask for x-derivatives 65 REAL(wp), POINTER, DIMENSION(:,:) :: pmask_ydiv ! land/sea mask for y-derivatives 62 66 !!---------------------------------------------------------------------- 63 67 … … 68 72 ! ----------------------------------! 69 73 74 SELECT CASE(igrd) 75 CASE(1) 76 pmask => tmask(:,:,1) 77 pmask_xdiv => umask(:,:,1) 78 ii_offset = 0 79 pmask_ydiv => vmask(:,:,1) 80 ij_offset = 0 81 CASE(2) 82 pmask => umask(:,:,1) 83 pmask_xdiv => tmask(:,:,1) 84 ii_offset = 1 85 pmask_ydiv => fmask(:,:,1) 86 ij_offset = 0 87 CASE(3) 88 pmask => vmask(:,:,1) 89 pmask_xdiv => fmask(:,:,1) 90 ii_offset = 0 91 pmask_ydiv => tmask(:,:,1) 92 ij_offset = 1 93 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for igrd in bdy_orlanksi_2d' ) 94 END SELECT 70 95 ! 71 96 DO jb = 1, idx%nblenrim(igrd) … … 86 111 ijbm1jm1 = ij + flagv - abs(flagu) ; ijbm1jp1 = ij + flagv + abs(flagu) 87 112 ! 88 ! calculate normal (zcx) and tangential (zcy) components of radiation velocities: 113 ! Calculate normal (zcx) and tangential (zcy) components of radiation velocities. 114 ! Mask derivatives to ensure correct land boundary conditions for each variable. 115 ! Centred derivative is calculated as average of "left" and "right" derivatives for 116 ! this reason. 89 117 zdt = phia(iibm1,ijbm1) - phib(iibm1,ijbm1) 90 zdx = phia(iibm1,ijbm1) - phia(iibm2,ijbm2) 91 zdy_centred = phib(iibm1jp1,ijbm1jp1) - phib(iibm1jm1,ijbm1jm1) 118 zdx = ( phia(iibm1,ijbm1) - phia(iibm2,ijbm2) ) & 119 & * ( abs(iibm1-iibm2) * pmask_xdiv(iibm2+ii_offset,ijbm2 ) & 120 & + abs(ijbm1-ijbm2) * pmask_ydiv(iibm2 ,ijbm2+ij_offset) ) 121 zdy_left = phib(iibm1 ,ijbm1 ) - phib(iibm1jm1,ijbm1jm1) & 122 & * ( (iibm1-iibm1jm1) * pmask_xdiv(iibm1jm1+ii_offset,ijbm1jm1 ) & 123 & + (ijbm1-ijbm1jm1) * pmask_ydiv(iibm1jm1 ,ijbm1jm1+ij_offset) ) 124 zdy_right = phib(iibm1jp1,ijbm1jp1) - phib(iibm1 ,ijbm1) & 125 & * ( (iibm1jp1-iibm1) * pmask_xdiv(iibm1+ii_offset,ijbm1) & 126 & + (ijbm1jp1-ijbm1) * pmask_ydiv(iibm1 ,ijbm1+ij_offset) ) 127 zdy_centred = 0.5 * ( zdy_left + zdy_right ) 128 !!$ zdy_centred = phib(iibm1jp1,ijbm1jp1) - phib(iibm1jm1,ijbm1jm1) 92 129 ! upstream differencing for tangential derivatives 93 130 zsign_ups = sign( 1., zdt * zdy_centred ) 94 131 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 95 zdy = zsign_ups * ( phib(iibm1 ,ijbm1 ) - phib(iibm1jm1,ijbm1jm1) ) & 96 & + (1. - zsign_ups) * ( phib(iibm1jp1,ijbm1jp1) - phib(iibm1 ,ijbm1 ) ) 132 zdy = zsign_ups * zdy_left + (1. - zsign_ups) * zdy_right 97 133 znor2 = zdx * zdx + zdy * zdy 98 134 znor2 = max(znor2,rsmall) … … 106 142 ! only apply radiation on outflow points 107 143 if( ll_npo ) then !! NPO version !! 108 phia(ii,ij) = (1.-zout) * phi a(ii,ij) &144 phia(ii,ij) = (1.-zout) * phib(ii,ij) & 109 145 & + zout * ( phib(ii,ij) + zcx*phia(iibm1,ijbm1) ) / ( 1. + zcx ) 110 146 else !! full oblique radiation !! 111 147 zsign_ups = sign( 1., zcy ) 112 148 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 113 phia(ii,ij) = (1.-zout) * phi a(ii,ij) &149 phia(ii,ij) = (1.-zout) * phib(ii,ij) & 114 150 & + zout * ( phib(ii,ij) + zcx*phia(iibm1,ijbm1) & 115 151 & - zsign_ups * zcy * ( phib(ii ,ij ) - phib(iijm1,ijjm1 ) ) & 116 152 & - (1.-zsign_ups) * zcy * ( phib(iijp1,ijjp1) - phib(ii ,ij ) ) ) / ( 1. + zcx ) 117 153 end if 118 phia(ii,ij) = phia(ii,ij) + zwgt * ( phi_ext(jb) - phia(ii,ij) )119 phia(ii,ij) = phia(ii,ij) * mask(ii,ij)154 !!$ phia(ii,ij) = phia(ii,ij) + zwgt * ( phi_ext(jb) - phib(ii,ij) ) 155 phia(ii,ij) = phia(ii,ij) * pmask(ii,ij) 120 156 END DO 121 157 ! … … 125 161 126 162 127 SUBROUTINE bdy_orlanski_3d( idx, igrd, phib, phia, phi_ext, mask,ll_npo )163 SUBROUTINE bdy_orlanski_3d( idx, igrd, phib, phia, phi_ext, ll_npo ) 128 164 !!---------------------------------------------------------------------- 129 165 !! *** SUBROUTINE bdy_orlanski_3d *** … … 141 177 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: phia ! model after 3D field (to be updated) 142 178 REAL(wp), DIMENSION(:,:), INTENT(in) :: phi_ext ! external forcing data 143 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: mask ! land/sea mask144 179 LOGICAL, INTENT(in) :: ll_npo ! switch for NPO version 145 180 … … 148 183 INTEGER :: iijm1, iijp1, ijjm1, ijjp1 ! 2D addresses 149 184 INTEGER :: iibm1jp1, iibm1jm1, ijbm1jp1, ijbm1jm1 ! 2D addresses 185 INTEGER :: ii_offset, ij_offset ! offsets for mask indices 150 186 INTEGER :: flagu, flagv ! short cuts 151 187 REAL(wp) :: zdt, zdx, zdy, znor2, zcx, zcy ! intermediate calculations 152 REAL(wp) :: zout, zwgt, zdy_centred, zsign_ups 188 REAL(wp) :: zout, zwgt, zdy_centred 189 REAL(wp) :: zdy_left, zdy_right, zsign_ups 190 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask ! land/sea mask for field 191 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask_xdiv ! land/sea mask for x-derivatives 192 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask_ydiv ! land/sea mask for y-derivatives 153 193 !!---------------------------------------------------------------------- 154 194 … … 159 199 ! ----------------------------------! 160 200 201 SELECT CASE(igrd) 202 CASE(1) 203 pmask => tmask(:,:,:) 204 pmask_xdiv => umask(:,:,:) 205 ii_offset = 0 206 pmask_ydiv => vmask(:,:,:) 207 ij_offset = 0 208 CASE(2) 209 pmask => umask(:,:,:) 210 pmask_xdiv => tmask(:,:,:) 211 ii_offset = 1 212 pmask_ydiv => fmask(:,:,:) 213 ij_offset = 0 214 CASE(3) 215 pmask => vmask(:,:,:) 216 pmask_xdiv => fmask(:,:,:) 217 ii_offset = 0 218 pmask_ydiv => tmask(:,:,:) 219 ij_offset = 1 220 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for igrd in bdy_orlanksi_2d' ) 221 END SELECT 222 161 223 DO jk = 1, jpk 162 224 ! … … 178 240 ijbm1jm1 = ij + flagv - abs(flagu) ; ijbm1jp1 = ij + flagv + abs(flagu) 179 241 ! 180 ! calculate normal (zcx) and tangential (zcy) components of radiation velocities: 242 ! Calculate normal (zcx) and tangential (zcy) components of radiation velocities. 243 ! Mask derivatives to ensure correct land boundary conditions for each variable. 244 ! Centred derivative is calculated as average of "left" and "right" derivatives for 245 ! this reason. 181 246 zdt = phia(iibm1,ijbm1,jk) - phib(iibm1,ijbm1,jk) 182 zdx = phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) 183 zdy_centred = phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1jm1,ijbm1jm1,jk) 247 zdx = phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) & 248 & * ( (iibm1-iibm2) * pmask_xdiv(iibm2+ii_offset,ijbm2 ,jk) & 249 & + (ijbm1-ijbm2) * pmask_ydiv(iibm2 ,ijbm2+ij_offset,jk) ) 250 zdy_left = phib(iibm1 ,ijbm1 ,jk) - phib(iibm1jm1,ijbm1jm1,jk) & 251 & * ( (iibm1-iibm1jm1) * pmask_xdiv(iibm1jm1+ii_offset,ijbm1jm1 ,jk) & 252 & + (ijbm1-ijbm1jm1) * pmask_ydiv(iibm1jm1 ,ijbm1jm1+ij_offset,jk) ) 253 zdy_right = phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1 ,ijbm1 ,jk) & 254 & * ( (iibm1jp1-iibm1) * pmask_xdiv(iibm1+ii_offset,ijbm1 ,jk) & 255 & + (ijbm1jp1-ijbm1) * pmask_ydiv(iibm1 ,ijbm1+ij_offset,jk) ) 256 zdy_centred = 0.5 * ( zdy_left + zdy_right ) 257 !!$ zdy_centred = phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1jm1,ijbm1jm1,jk) 184 258 ! upstream differencing for tangential derivatives 185 259 zsign_ups = sign( 1., zdt * zdy_centred ) 186 260 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 187 zdy = zsign_ups * ( phib(iibm1 ,ijbm1 ,jk) - phib(iibm1jm1,ijbm1jm1,jk) ) & 188 & + (1. - zsign_ups) * ( phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1 ,ijbm1 ,jk) ) 261 zdy = zsign_ups * zdy_left + (1. - zsign_ups) * zdy_right 189 262 znor2 = zdx * zdx + zdy * zdy 190 263 znor2 = max(znor2,rsmall) … … 198 271 ! only apply radiation on outflow points 199 272 if( ll_npo ) then !! NPO version !! 200 phia(ii,ij,jk) = (1.-zout) * phi a(ii,ij,jk) &273 phia(ii,ij,jk) = (1.-zout) * phib(ii,ij,jk) & 201 274 & + zout * ( phib(ii,ij,jk) + zcx*phia(iibm1,ijbm1,jk) ) / ( 1. + zcx ) 202 275 else !! full oblique radiation !! 203 276 zsign_ups = sign( 1., zcy ) 204 277 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 205 phia(ii,ij,jk) = (1.-zout) * phi a(ii,ij,jk) &278 phia(ii,ij,jk) = (1.-zout) * phib(ii,ij,jk) & 206 279 & + zout * ( phib(ii,ij,jk) + zcx*phia(iibm1,ijbm1,jk) & 207 280 & - zsign_ups * zcy * ( phib(ii ,ij ,jk) - phib(iijm1,ijjm1,jk ) ) & 208 281 & - (1.-zsign_ups) * zcy * ( phib(iijp1,ijjp1,jk) - phib(ii ,ij ,jk ) ) ) / ( 1. + zcx ) 209 282 end if 210 phia(ii,ij,jk) = phia(ii,ij,jk) + zwgt * ( phi_ext(jb,jk) - phia(ii,ij,jk) )211 phia(ii,ij,jk) = phia(ii,ij,jk) * mask(ii,ij,jk)283 !!$ phia(ii,ij,jk) = phia(ii,ij,jk) + zwgt * ( phi_ext(jb,jk) - phib(ii,ij,jk) ) 284 phia(ii,ij,jk) = phia(ii,ij,jk) * pmask(ii,ij,jk) 212 285 END DO 213 286 ! -
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90
r3994 r4007 224 224 igrd = 1 ! Orlanski bc on temperature; 225 225 ! 226 CALL bdy_orlanski_3d( idx, igrd, tsb(:,:,:,jp_tem), tsa(:,:,:,jp_tem), dta%tem, tmask,ll_npo )226 CALL bdy_orlanski_3d( idx, igrd, tsb(:,:,:,jp_tem), tsa(:,:,:,jp_tem), dta%tem, ll_npo ) 227 227 228 228 igrd = 1 ! Orlanski bc on salinity; 229 229 ! 230 CALL bdy_orlanski_3d( idx, igrd, tsb(:,:,:,jp_sal), tsa(:,:,:,jp_sal), dta%sal, tmask,ll_npo )230 CALL bdy_orlanski_3d( idx, igrd, tsb(:,:,:,jp_sal), tsa(:,:,:,jp_sal), dta%sal, ll_npo ) 231 231 ! 232 232 IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_orlanski')
Note: See TracChangeset
for help on using the changeset viewer.